Package License

Here’s what I wrote on a Hacker News post about Light Table’s licence some years ago:

“Permissive” licenses like MIT and BSD literally permit you do more things with the software. In particular, it is not legal to combine GPL software with GPL-incompatible software (e.g. anything proprietary) and redistribute the result. This is why we cannot distribute a version of Julia pre-built with Intel’s MKL even though we have MKL developer licenses that were generously donated by Intel. The fact that we use some GPL libraries makes the combination illegal to distribute. With permissive licenses like MIT and BSD, that isn’t a problem.

In terms of choosing a license for an open source project, I think you should choose the most permissive license that will sufficiently encourage people not to make proprietary forks. The GPL was designed on the premise that it would be necessary to legally force people to contribute changes back, but the success of so many projects with MIT and BSD licenses shows this often isn’t necessary. I think the choice depends on how “infrastructurey” or “producty” the project is. For projects like libraries, compilers or programming languages, it turns out that proprietary forks don’t happen because of simple economics. Why would anyone pay for a forked proprietary version of a library when the original open source project is available? And if no one wants to directly pay for a forked version of some library, why would any company bother maintaining a fork when they can just contribute their improvements back and let the open source community maintain them for free?

With a self-contained product like Light Table, on the other hand, there’s a very real danger that some company could come along, fork the code base, make a bunch of improvements and start selling their version. Using a viral open source license like the GPL makes this illegal, ensuring that only the original author can sell forks of the product.

tl;dr – GPLv3 is a great choice of license for Light Table because it is a product, but it’s overkill for most open source projects which provide much lower level functionality.

Since most Julia libraries are very much infrastructure and not products, the technical pain of maintaining a fork of an active project seems more than sufficient to prevent proprietary forks. Unless you think that someone would be able to sell a modified version of an open source library by itself, there’s no real need to use GPL and a permissive license like MIT, ISC or BSD should (imo) be preferred.

20 Likes