My project: gatorcat is in some ways an activist project.
I created it in reaction to the existing closed system of industrial controls.
Industrial controls is plagued with closed, ancient tooling. If you want to be productive, you need to pay an existing manufacturer (like Rockwell Automation, Allen Bradley, Beckhoff, Siemens…) 10s of thousands of dollars to purchase a license for their IDE.
The IDE will store the code you write as a single binary blob. You will have to pay extra for a half-baked git plugin (that outputs your code as JSON riddled with UUIDs).
The IDE/compiler will only run on windows. You won’t be able to integrate it into your CI pipelines.
You won’t be able to write unit tests. You won’t be able to write a simulator. You won’t be able to collaborate with other engineers because of the binary blob. You won’t be able to review the code with others.
And the code you compile will only run on the manufacturers licensed hardware, which will be 10+ years old.
And then your choice of programming language will be IEC 61131-3, which includes graphical programming languages and structured text (similar to pascal), or purchasing a C++ 11 SDK for an additional 10s of thousands of dollars.
You will do this because the manufacturers provide you with excellent hardware. Hardware that will last for decades and can be replaced with next-day lead times. Hardware that enables you to get your work done and not worry about the complexities of electrical engineering. Hardware that adheres to safety standards you might not even know about and survives for 10 years at 55C beneath 3 layers of oil and sawdust.
So anyway… I hated this status quo and decided to download the EtherCAT standard from the IEC (because you have to register an LLC to get one from the EtherCAT technology group…), and set about writing my own implementation of this simultaneously stupidly underdefined, complex, and purpose-built highly efficient protocol. Collecting wiresharks of other implementations to see what they do, reading way too much 20 year old C code from another implementation.
I would like to choose a license. The existing license is MIT, I have written all the code, but there is a lot left to do. I would like to contribute to a more open industrial ecosystem. What license should I chose?
Some examples of what I am considering:
-
remain MIT (zig is MIT, rust core utils is MIT)
-
Apache 2.0 (zenoh is this, and I really admire what zenoh has accomplished, tigerbeetle)
-
LGPL (software freedom includes the ability to make money sometimes?)
-
GPLv3 (need I say more?)too restrictive for commercial users -
Unlicense
-
Eclipse Public License 2.0 (I also admire a lot of the projects from the Eclipse Software Foundation, see the real-time stuff coming out of software defined vehicle…)
And no, I will not be putting the license at the top of every file because screw that noise.