It's about the people
People who build the open source software have varied skills like writing, testing, designing and programming etc. They form a tight-knit community to support both the software and its users. To contribute to open source software, we must understand the underlying social constructs and philosophies that are common to all free and open source software projects.
Why learn about the philosophies underpinning free and open source software?
Understanding the philosophies underlying open source software will allow us to better understand the motivations behind many of the actions we'll see taken in open source projects. Understanding them will also help you find out which projects you are a best fit for your own values and belief systems.
Examples of how free and open source software is everywhere
- Linux might power your car, tv, your operating system or even your lightbulbs.
- Swift might be the language underpinning the apps you use.
- Blender may have been used to create movies with its 3D rendering suite.
- Movies might have been converted with ffmpeg
- Firefox to power your browser
- Open Broadcaster Software for live streaming.
- Wordpress, Drupal or Joomla for building websites
- OpenSSL for making sure your financial system will stay secure etc.
Examples of other open movements
There are lots of open movements that are not about software. These movements are all dedicated to sharing, transparency and collaboration.
- Wikipedia - Anyone in the world is encouraged to contribute to it's every growing knowledge base.
- Open knowledge international empowers society through open data.
- Internet archive aims to provide free and open access to all the worlds knowledge.
- The open source seed initiative maintains open access to plant genetic resources that might otherwise be locked behind patents.
What are the origins of free software?
In the early days of software, all software was free to acquire, use, inspect, modify and share. At the time, the profits were in the hardware sold, not in the software that ran on it. The software written for one model would not run on another.
Manufacturers realised that it took a lot of effort to develop software, and that value could be translated to profit and so they turned software development into its own industry. Some devs who were used to using and sharing software freely started to resent the fact that they could no longer modify the code for their own needs or share the code with others.
Richard M Stallman in 1983 created the GNU project because he was frustrated that he was no longer free to inspec, modify and share software. The GNU project was dedicated to creating a UNIX-compatible operating system built of components that are entirely free to use, modify and distribute. Two years later, the GNU manifesto followed, declaring four freedoms:
The freedom to run the software however you wish and for whatever reason you wish.
The freedom to study the software source code and make whatever changes you wish.
- The freedom to copy and distribute the software (modified or not) however you wish.
- The freedom to make improvements to the software and then share the improved software however you wish.
These freedoms underpin software licenses that ensure that software can never violate the four freedoms, which paved the way for the open source movement.
What are the origins of open source?
The "free software" movement was popular but put lots of businesses off as being too strongly political, philosophical and activist in nature, so they rebranded to "open source" instead, whilst at the same time creating the Open Source Initiative (OSI) as a focal point for their efforts.
Open source definition:
What is the difference between free software and open source?
There's usually very little difference between the two, except for strength of philosophy.
Free software supporters believe that all software should be free from any restrictions of use, reuse and distribution. Otherwise we limit the potential of the software and the people who use it.
Whilst open source supporters believe that open source logically enables levels of innovation that would be impossible with closed software.
Free software sees software freedom as a moral issue whilst open source sees it as a practical one.
What to know about copyright and licensing?
When you create something, by default you own the copyright over that thing, though in some countries, you have to register something to get copyright.
As the copyright owner, you have the right to control how that thing can be used. This control comes through licensing the work.
A license is a legal document used to give people or entities permission to use copyrighted material. A creator can apply "All Rights Reserved" to their work to indicate that they don't want anyone to reuse or repurpose their work in any way; the creator has reserved the reuse or repursoing rights for themselves alone.
If you program a piece of software, you have copyright over the code you wrote for it. If someone writes a test for your software, they have the copyright over the code they wrote for that test.
Free and open source software licenses help when there are multiple copyright holders, like requiring contributions to be released under the same license as the original work.
Unless you agree to assign your copyright elsewhere, you retain copyright over your contribution and if the project is released under and OSI approved licensce - your contributions are publicly available. So you can build your portfolio without breaking copyright law.
Whereas by default, the copyright on any work you contribute to a work for hire situation belongs to the organization paying you. Once you contribute that work to the organization, you no longer have any rights over it at all, and you may not share it in any form without express and very written permission.
What are the types of free and open source software licenses?
The best place to learn about free and open source licenses is the Open Source Initiative Licenses list.
There are two basic types of Free Open Source (FOSS) licenses:
- Copyleft: Protect a work from being relicensed under what may end up being a more restrictive set of terms and conditions. This work, once free, will forever be free. Any works made from them and distributed must also be released under the same terms and conditions.
- Permissive: Anyone who makes a change to or redistributes the software is permitted to change the terms and conditions under which someone can use the new distribution. The Apache and MIT licenses are good examples of this.
MIT is the most permissive, GPL is one of the most reciprocal. All other licenses fall somewhere along the spectrum between these two.