Skip to main content

Making open source work for everyone

The power of free and open source software comes down to how it is shared. Users can pick up and modify the source code, usually at no cost, as long as they adhere to the terms of its licenses, which range from permissive (do what you like) to more restrictive (if you make modifications, you've got to distribute them under the same license). The popularity of the model has led to a transformation in the way software is built; it's not an exaggeration to say that the current tech industry couldn't exist without it. Collaborative software drives the industry.

(If you're not familiar with the concept or its nuances, I wrote a history and guide to the underlying ideas, including how it relates to projects like Linux, a few years ago, which might help.)

In my work, I've generally veered towards permissive licenses. Elgg, my first open source project, was originally released under the GPL, and then subsequently dual-released under the more permissive MIT license. Known and its plugins were released under the Apache license. While GPL is a little more restrictive, both the MIT and Apache licenses say little more than, "this software is provided as-is".

If I was to start another open source project, I'd take a different approach and use a very restrictive license. For example, the Affero GNU Public License requires that you make the source code to any modifications available even if they're just running on a server (i.e., even if you're not distributing the modified code in any other way). This means that if someone starts a web service with the code as a starting point, they must make the source code of that service available under the AGPL.

Then I'd dual-license it. If you want to use the software for free, that's great: you've just got to make sure that if you're using it to build a web service, the source code of your web service must be available for free, too. On the other hand, if you want to restrict access to your web service's source code because it forms the basis of a commercial venture, then you need to pay me for the commercial license. Everybody wins: free and open source communities can operate without commercial considerations, while I see an upside if my open source work is used in a commercial venture. The commercial license could include provisions to allow non-profits and educational institutions to use the software for free or at a low cost; the point is, it would be at my discretion.

I love free software. The utopian vision of the movement is truly empowering, and has empowered communities that would not ordinarily be able to tailor their own software platforms. But allowing commercial entities to take advantage of people who provide their work for the love of it as a bug. There's no reason in the world that a VC-funded business with millions of dollars under its belt should avoid paying people its company value integrally depends on. It's taken me a long time to come around to the idea, but restrictive licenses like the AGPL align everyone in the ecosystem and allow individual developers and well-funded startups alike to thrive.

More than that, it's a model that allows me to think I might, one day, dive head-first into free software at least one more time.