Now it seems to me that releasing code you wrote for free under a permissive open-source license is somewhere between ill-advised and unethical. On one hand it will not benefit you in any way, on the other, it will be incorporated in a company's proprietary project thus lowering the expenses necessary to develop it. In the end, you've contributed to closed source and on top of that you got nothing in return... And that is the best case, as we saw with log4j, you can be held responsible in the court of public opinion in case the project you developed and maintain for free (with no warranty or liability as per license) causes an issue...
Large Corps won't use your code if its AGPL? Thats a feature, code away without worrying about breaking anything!
Sorry but I don't consider letting Lucy set up the football and giving it a solid go to be kind and equitable. It's called "being a mark."
I also recently found the European Union Public License (EUPL, e.g. [0]), which seems similar to the AGPL. Might be interesting to Europeans. The translations being available in multiple languages is really nice. It being a less often used license could also be a feature.
What you shouldn't do is have unrealistic expectations about the software you release. If you give stuff away for free, expect that you're giving it away for free. If people ask for free support, and you don't want to give it, be prepared to tell them so. Also, don't expect that there is any unwritten expectation for anything in return.
Your license is your agreement with your users. If it doesn't outline what you want, you picked the wrong one.
I'd use GPL if I wanted to expend the effort trying to force people to contribute to my projects. But that isn't always the case.
The latest GPL lawsuit I saw was only possible due to a large grant from amateur radio hobbyists.
https://sfconservancy.org/copyleft-compliance/vizio.html https://sfconservancy.org/press/qanda.html
Offer two licenses. One GPL and the other commercial. Make the commercial license as costly as possible, even Oracle grade by charging per core. Include language stating that the licensing agreement falls back to the commercial license if the GPL is violated and the violation is not remedied according to the provisions set in the GPL.
Any licensing fees collected get poured back into the open source project.
If another company is stupid enough to ignore these terms, I'm sure you can find someone willing to sue on your behalf for a fraction of the damages owed to you.
People with money (corporations) were always the ones to benefit most from permissive open source, they're best placed for it.
Permissive open source only really makes sense as charity[1], or for libraries you as a developer want to be able to use at future companies[2] or as a component for a corporation's grand strategy.
[1] "Here, have this, I built it and I want to share it so that it doesn't go to waste sitting on my storage."
[2] Only the case if you accept outside contributions with no copyright assignment, since otherwise you have the power to relicense your own code.
I mean, the line between a useful idiot and a scab is so thin it barely exists.
> Permissive open source only really makes sense as charity[1], or for libraries you as a developer want to be able to use at future companies[2] or as a component for a corporation's grand strategy.
Edit: nah, I think "as charity" it's bad (takes away from others, corporations don't need your charity), case 2 is at best misguided (just charge them, don't do this for free, please), and only 3 makes sense, as in "language bindings for our product are permissive."
At any point you can decide to pursue or stop maintaining the code and anyone can decide to fork and take over. It is just naive to think you will always find fun in working on it or pretend you might make a living out of it unless you have a strong business plan.
And that's the problem.
Many people like the idea of 'helping' other people for free, even if these users never 'give something back' (because they can't program, don't have the time to translate something, ...). But helping other people (companies) make money for free that already have not only enough but way more than you, and you even do the less rewarding work like fixing bugs is not what moste people thought of when making OSS.
Getting a high adoption OSS project takes more than putting a repo on GitHub. In some cases like this one, it’s possible that the underlying cost of these activities is much closer to the licensed proprietary software than the OSS variant (aka free)
> In the end, you've contributed to closed source
yes, that's exactly what using the GPL is supposed to prevent
Without necessarily taking a position on the ethics, I would point to macOS and its derivatives as a clear example of this. Apple invested significant resources into a successor to System 7 called Copland, abandoning it in 1996. While the purchase of NeXT in 1997 hugely influenced the design of OS X, look at all of the free and open source projects that accelerated its development: Mach, Clang/LLVM (and GCC before it), KHTML, KJS, CUPS, much of the BSD and GNU userland, and the list goes on.
macOS, and by extension iOS, would not be where it is today without its open source core. Put a little spit and polish on it (no small thing, of course), add a kernel extension named Don't Steal Mac OS X.kext, and voila: new O/S.
- Mach's primary architect, Avie Tevanian, was hired by NeXT to productize it, and he continued that work at Apple with XNU and the OS X strategy to replace the classic MacOS
- Apple hired Chris Lattner after he finished his PhD (where LLVM was started) and then created Clang and open-sourced it, as well as other LLVM tools like libcxx
- Apple hired Michael Sweet (creator and maintainer of CUPS) and paid him to maintain it for several years
As you say, Apple's software wouldn't be where it is today without open source. But major open source projects either wouldn't exist at all (e.g., Clang) or would have needed someone else to pay for their maintenance (e.g., CUPS) without Apple.
>for free
How much open source code is actually written by hobbyists working for free? Most of the Linux code is written by paid engineers employed by big tech companies.
Linux is used by whole planet, but it's not a burden for Linus Torvalds.
Same for KHTML -> WebKit/WebCore -> Blink (LGPL), which is used even by such GPL haters as Apple and M$.
Initially, almost all of it.
> Most of the Linux code is written by paid engineers employed by big tech companies.
Nowadays. It didn't start this way.
I would really like to see home appliance manufacturers extend their products with a simple 2.n IO pin interface at the back. Absolutely minimal. For example: a kettle could have an input pin to turn it on/off and an output pin that just writes whether it is on or not. A simple 4-pin interface on the back in this case. An ice-machine that has three size options and an on/off switch. The classic case of the bean-to-cup coffee machine.
Does anyone know if there is a standard (for manufactures) for this sort of thing? If this was a standard that added a dollar or 3 to appliances one could plug-in some IOT board that allows for Home-assistant or similar integration.
Of course I've completely ignored the question of whether or not a market exists.
Also, nobody wants a wiring loom for their kitchen. If you have to do it, do it over zigbee or something.
So you have a standard analog temperature sensor that outputs 4-20ma on its pins. With IO-Link, it still does that, but if you hook it up to an io-link master, you can just read the temperature directly in C/F on the same pins. Or adjust the calibration. Or …
It's not a perfect match, mind you, but i think it's pretty close.
Enter AS/NZS 4755 which uses a RJ-45 connector - if you pull the DRM1 pin to ground, the device turns off.
https://staceyoniot.com/will-a-new-standard-for-smart-applia...
What is this about? The government forcibly closes companies that lose money?
https://www.irs.gov/newsroom/earning-side-income-is-it-a-hob...
"No license costs, no restrictive licenses. Being open source, PLC4X is free of charge. Start experimenting without worrying about license costs or shady license agreements. The Apache 2.0 is one of the worlds most trusted and adopted open source licenses out there."
Big companies need to grow up and start contributing with serious amounts. I wonder how this could get regulated with a law, for example that any company with more than x in revenue must pay y percent to an open software foundation. Maybe one needs to be created, one which monitors the space and ranks the projects on some metric like pull requests or issues closed. Then the rank is a ratio of the amount they get.
1. "Regulate". Create an official body that charges a flat fee for any use of any OSS and then pays a % to developers based on some obscure metric. This would likely lead to corruption within the newly created body
2. "Ads". Display ads on every platform that distributes software. Then, pay part of the revenue to each software based on # of downloads/etc (this is similar to how Youtube pays content creators). This would require cooperation from distributors (Github, NPM, etc). In my opinion, it would be good for both devs and platforms, as devs would prefer platforms that pay fairly over platforms that make them give stuff up for free. But it will never happen because it would hurt capital and the platforms are controlled by capital
3. "Become unionized". Collectively remove content from traditional platforms and move it to a cooperative platform that charges $ and fairly distributes it
I think #3 is the most realistic one. There is a "museum of the working class" (forget the name now) in Manchester where they have the banners of the first industrial revolution secret guilds and societies. The new tradesmen were being abused by capital so they organised under secret oaths such as "never help a tradesman that doesn't belong to the society" or "never undercut a fellow's price". Capital will always try to make workers work for less, the only way to stop this is to get organised
It would be better to have the FAANGs of the world being forced to pay into a bucket which gets distributed specifically to OSS projects.
I started a poll [1] asking if devs could get their employers to pay. Almost nobody answered. I'm not sure it would be possible to get companies to pay without regulation, as you say.
Reading the blog it seems like the age old story of having a superior product (drastically cut cost, better performance, etc.). However getting managers at customers to stick their neck out for it is hard. Because they know (and to a degree I can't say I blame them) changing such a critical piece of core infrastructure is going to be stressful. And what's in it for them if the company saves some money it is currently happy to spend? If it fails they sure do know what's in it for them... So big chance they'll just stick with the properietary solution they already have.
EDIT: I should add I think there is also another dimension to this. Things that currently work and "only" cost money are a problem solved for a company. If they have to change it they have to spend their "intelectual budget" on it. Meaning resources like technical people which are probably already scarce and working on other project need to be assigned to it.
I have never seen a proprietary software product that "only" cost money.
The costs associated with procuring the existing, proprietary solution are understood and accepted. If it goes wrong, it's a risk that the organization has collectively selected together.
Advocating for doing something cheaper doesn't gain any individual person that much necessarily, and incurs outsized risk. It also incurs a lot of explicit, poorly-understood costs outside of those already accepted and recurring costs.
For example, many companies want (and sometimes require) the ability to have a support contract with developers for things this critical. The people making these decisions may not even be technical and close to the system within the management structure.
Companies also may have rules and requirements that govern who they can pay and how. For example, just donating money to a developer some developers in their company like or use the software of isn't going to fly. In some countries it may not even be legal. Sometimes you need to run things as a business and jump through some hoops to make it all work financially and without burn out.
Some of this is just how the business world works. With so many businesses in so many different legal jurisdictions there's almost no way to change the system.
Skilled trades people who strike out on their own have to learn enough business to operate. It's not just about doing their skill. There's a fair amount of mentoring that happens to help people learn that stuff. Maybe we need more of that in software.
This is on the mark. This is why "upgrading" anything is hard. Stuff already implemented and being used has an inertia, which is very hard to overcome.
1. "Do you mean we will pay money to develop software for our competitors? Murder!"
2. The OSS donations are not seen as business expense but as charity. "We don't do charity."
What we found effective so far is an OSS project, a consulting company and a consulting arrangement where any modifications to the core project will be upstreamed. This way, the company pays money to solve their problem (and not competitors') and it's not seen as charity (it's consulting), while an OSS project goes on. Moreover, the OSS project is itself used as a selling point for the consulting services, as a proof that we will not lock the customer in with some proprietary framework.
geee ... a friend pointed me here and I have to admit that I'm quite overwhelmed by the wave my post generated. But very happy it seeded some good discussions.
However I should point out that only I said that I would stop providing free community support. I am only one of the contributors. Even if I am probalby one of the most active ones, there are still others probably going to step up and tackle the one or the other issue someone might come up with.
If the project was just me, Apache would probably have already moved the project into the atic, which is far from happening :-)
Now I'll continue reading all of this ... but I had to set this straight first.
Chris
- If you're big enough to make real money and you need my attention then pay me this much please
- If you're some rando with a toy project, then we have a github issue tracker
A project this size and age should always have a lawyer at hand just in case, and they should be able to walk the maintainers through the process of dual-licensing everything.Dual licensing means that there are two licenses that the user can choose from at their discretion. This is why GPL may work together with a commercial license but not MIT, as businesses have reasons to avoid GPL.
I only had brief exposure to this domain years ago, working on a single Siemens PLC control project. The whole software stack was utter garbage (GUI only tooling, binary blobs that don't work well with version control, weird custom subset of VB for the computer UI scripting, ...) that made me wish for some interface like PLC4X so I could just bypass all of it.
The device manufacturer side of the industry probably wouldn't back it. The people who do the integration work would though. They're the ones who actually benefit from it.
One possible reason: to "commoditize your complement" (https://www.gwern.net/Complement). These industries make hardware, making the software side better makes that hardware more useful.
OPC UA is a protocol to interact with an object-oriented information model. Basically CORBA done right to use object-oriented principles and reuse software components in industrial automation.
Since OPC UA is a protocol, its performance depends mostly on the implementation. Some PLCs may be crappy. But that doesn't translate into bad performance overall. My experience goes to the exact contrary.
Full disclosure, I lead-develop and maintain an open source OPC UA implementation that sees quite a bit of use by the big guys in the automation domain. We use C for performance. And we do have funding from the industry.
https://github.com/open62541/open62541
But yes, it is hard to break into this world. Especially since solutions have to be maintained for 20+ years. A solo developer usually cannot ensure that this will still be usable some years down the line.
I think the biggest issue I encountered with OPC-UA is the rather random nature of implementations from vendors.
For example, I had S7-1500 PLC deployed on a project, and we used OPC-UA to talk to it as well as to expose internals of the program that was talking to it.
We also had WinCC HMI, and while it could do basic read-write access to OPC-UA, we couldn't attempt to go for Method Calls, which would have considerably simplified a bunch of things for us.
Meanwhile, FreeOPC-UA (python) turned out to be a bit buggy ;)
It's a quite nice system, and I really like the object-oriented nature of it and support for modeling instead of random soup of PLC tags that appears to be the norm. Standard industry models for various components help extra there.
Currently I'm looking into implementing a wrapper around open62541 for Common Lisp and Ada, and possibly a CORBA & DDS translator for it. Originally I missed PLC4X completely, and we needed to talk to S7-1500 as soon as possible and kinda got stuck with Python, now I wish I could do it in Lisp or Ada and get it done probably much faster :)
Ahh, that's you! I came in to say hi on the channel whn you announced. But the channel was rather unresponsive. Will do that again with a bouncer to keep the connection open over night.
Ada and Lisp are both really nice languages. Much success with that!
To me, this seems like the inconvenient truth of this latest ML wave. There's lots of activity around using various ML libraies and tools, but they all assume you have input in the right format, that someone is collecting the data you need in the first place, etc.
Real jobs like that simply don't exist. Not that there aren't thousands of bootcamps and trade schools that will take your money to train you for imaginary low-effort high-prestige fantasy jobs that you'll never actually find.
You are confusing cost and value. The cost of software might approach 0, but the value of software depends only on how useful it is to its users. One could even argue that a consequence of OSS is increasing the value of software in general, due to an ever growing collection of easily-obtainable useful software.
I also think it's crazy that the government forces businesses to be profitable.
https://www.irs.gov/pub/irs-utl/irc183activitiesnotengagedin...
Uber lost 20 billion dollars in the last decade. Where's IRS?
Getting back to the blog, he says the comms piece is his unique selling point. OK, so people don't want to support the open part but yet it's missing a rather important piece. Is that correct? The whole thing just left me a bit confused.
After that I started really getting involved with Apache and all sorts of projects.
5 years after my first attempt I started a new attempt, this time open-source and that worked from a project perspective.
I wrote it in my own blog, because I am stopping free commmunity support for myself. It's not the project stoping this. Apache is a non-profit charity and it's dangerous for it to be accused of having monetary interests in what it does.
In order to separate what I had to say from the project I published it on my blog and not even on the mailinglist (I sent a link though explaining why I'll be less active).
Hope that explains things. The title of this thread however was a bit mis-leading.
Another industry funded FIX. It is just a bit less of the same.
Looking around at the website and the GitHub repository, I can't find a single place to get community support either, it seems to only be commercial support now, so it seems Apache PLC4X is indeed no longer offering community support.
The alternative would be to hire one or two developers on our own for support, and then the cost savings would be out the door. Maybe this library is more performant, but it's a (relatively) small piece of the industrial control scheme. A massive shift like this is just not something companies will take a risk on.
Don’t open source unless you can afford to. Invest in non-technical bits of your organisation. Avoid making choices and then hating the consequences.
This is a key lesson. Open Source has not won in this part of the technology world, and it's a HUGE walled garden.
There's Inxton, TcOpen and few guys doing it in Beckhoff TwinCAT3 space.
This has caused me quite a lot of frustration over the years because I like to make tools and solve problems. But often building a tool or coming up with a framework for solving a problem, even if it's technically really challenging, is only a fraction of the battle. It's getting any of the sheep to pay attention, notice, or decide your solution can benefit them in their sheep power struggles that is actually the biggest challenge.
Sorry to hear it didn't work out, Chris - looking forward to your article. PLC4X was definitely one of the more interesting projects at codecentric.
Instead of being hurt by how ungrateful the world is, maybe it would be better to find a way to make the rich pay and let the poor (like me) still get the software for free.
It's not like it's unheard of in the open source world.
Shame it's not worked out for him, but when it's voluntary most businesses hear "free tool"
People in favor of the Apache license are people who like to "pay you in exposure".
Turns out you can't eat exposure.
Well you wrote that code, you want people to use it, right? Then attach no strings!
Turns out I also need to pay rent and and buy food.
Best