I’m working on a new fedi app, and I’ve started to think about the best license to use. I see that big apps like Pleroma and Mastodon opted to choose an AGPL-3.0 license, which I think this is a great step in the right direction.
However, the AGPL-3.0 feels a little counterproductive to ActivityPub and the spirit of a free and open internet overall. As I understand it, it doesn’t seem to prevent these big corps from committing EEE by forking one of these apps, closing the source, then using their money and big engineering teams to modify it to be a crushing competitor. This would mean that the Fediverse will always be subpar to more mainstream alternatives.
Would it make more sense for these apps (and mine) to use a license that would prevent derivatives from being closed-source software? If not, I’d love to hear your thoughts on why. If so, what would be your recommendation of a better license to use? Thanks for any feedback!
Hintjens wrote some good stuff about this. Earlier in the text he explains that by BSD he means the class of non-copyleft licenses.
When BSD projects fork, they cannot easily merge again. Indeed, one-way forking of BSD projects is quite systematic: every time BSD code ends up in a commercial project, this is what’s happened. When GPL projects fork, however, re-merging is trivial.
The GPL’s story is relevant here. Though communities of programmers sharing their code openly were already significant by the 1980’s, they tended to use minimal licenses that worked as long as no real money got involved. There was an important language stack called Emacs, originally built in Lisp by Richard Stallman. Another programmer, James Gosling (who later gave us Java), rewrote Emacs in C with the help of many contributors, on the assumption that it would be open. Stallman got that code and used it as the basis for his own C version. Gosling then sold the code to a firm which turned around and blocked anyone distributing a competing product. Stallman found this sale of the common work hugely unethical, and began developing a reusable license that would protect communities from this. What eventually emerged was the GNU General Public License, which used traditional copyright to force remixability. It was a neat hack that spread to other domains, for instance the Creative Commons for photography and music. In 2007, we saw version 3 of the license, which was a response to belated attacks from Microsoft and others on the concept. It has become a long and complex document but corporate copyright lawyers have become familiar with it and in my experience, few companies mind using GPL software and libraries, so long as the boundaries are clearly defined.
Hintjens, Pieter. Social Architecture: Building On-line Communities (p. 61). Pieter Hintjens. Kindle Edition.
What I am more concerned about in terms of EEE is that basically all of the FOSS fedi apps that exist are like the R&D input to any corporation that wants to make a big splash entry to the Fediverse.
Does it matter if a project is AGPL if it was created from years of dev by a single person, where a corporation inspired by the project might dedicate a 50 person team full-time to recreating its innovative aspects, and then put another big team on productizing and marketing it?
I think the only real protections are in those features and technical aspects (e.g. hard-to-scale) that are by nature less interesting to corporations and as unattractive as possible for monetization.
If you want to retain control of your software and force future users to contribute their modified code, then you probably want something like AGPL. Sure, people can fork it, but they have to make their code available so you can use it.
The downside of using something like AGPL is that it does not play well with proprietary licenses and permissive licenses like the MIT License. For example, many of my projects are MIT Licensed and we cannot use any code that is GPL or AGPL licensed. This will stop some people from using your code in their projects.
On the other hand, if your goal is that the technology propagates, and you don’t care who propagates that technology, then you want a permissive license like MIT license or Apache. Since there are less restrictions, your app can be mixed and matched with any other license.
The downside is that, other than requiring people to give you credit, you have no control of what people do with the code after they download it.
So, basically, it comes down to how much control you want, and whether you want to make it easier to propagate. Are you creating a project where you want to control it, or are you creating a technology that you want everyone to adopt?
This all depends on perspective. With permissive licenses the individual has more freedoms, such as the freedom to continue proprietary and not propagate your changes. With copyleft the software has more guarantees for its freedom, and to be always available to anyone, in its latest form.
For me, I only use two license types: permissive and proprietary. Either I give away the software or I don’t. Copyleft is not really suitable for the projects that I work on because the whole purpose of the software projects I work on is to empower the individual.
I actually want people to use my software, make money, and be able to quit their job. I do not want people to be dependent on some retail or corporate job. So if people make money with my software and free themselves from being corporate slaves, I have accomplished my mission. It’s why I wrote the software and made it MIT licensed. I want to empower individuals.
And for software I do not want to give away, I will create a proprietary license with my terms. Perhaps people and companies who make under $1 million per year can use it for free, and everyone else has to pay a license. Whatever seems appropriate for the project.
If someone else’s project has different priorities, then a different license might be more appropriate.
Copyleft is perfect for infrastructure projects and operating systems, and projects where the creators want to retain control. So it has its place.
As I said, it all comes down to priorities. My priority is empowering individuals, so I license my software with that in mind. There is no right and wrong here. It is whatever license serves the goals of the creators of the project.