After using and contributing to open-source libraries, I have high expectations: I find myself itching to fork the projects I use every day. Imagine all the little tweaks I could make to help software suck less.
Everyone gets this feeling at some point. Whatever library you’re using isn’t doing quite what you want so you fork it and make the change you want. If you’re a nice person you’ll post the changes online and submit a pull request or send an email with a patch.
I started dreaming about a world where I had the opportunity to change every product I touched. In this world there would be three core principles:
- Everyone can contribute.
- Everyone can make good contributions.
- Everyone is incentivized to contribute.
The four freedoms that make a program “free [/open source] software”:
- The freedom to run the program, for any purpose (freedom 0).
- The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor (freedom 2).
- The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
The freedom to run the program for any purpose is assumed in Lloyd’s core principles, I think.
The freedom to study how a program works is required so that Lloyd’s principles can work at all. How can you contribute if you can’t see the code?
The freedom to redistribute copies and distribute modified versions to others is sort of embedded in principles 1 and 2. Redistribution is how you can share your contributions and test them out and collaborate with others on them. Helping your neighbour is also a great incentive (which is part of principle 3).
I really think the four freedoms should be included in his blog post as many developers may not be aware of their existence.