- Published on
Open Source Software Development: Linux for Developers
Table of Contents
- Introduction
- What is OSS?
- Licensing
- Proprietary Software
- Why use OSS?
- Collaborative Development
- Security
- OSS Licensing and Legal Issues
- Restrictive vs Permissive Licensing
- Rights in copyright
- Choosing a License
- How to Work in OSS Projects
- Contributing properly
- Leadership vs Control
- Continuous Integration, Delivery and Deployment
https://learning.edx.org/course/course-v1:LinuxFoundationX+LFD107x+1T2022/home
Introduction
What is OSS?
-
OSS means source code is made available with a license that provides rights to examine, modify and redistribute, without restriction on the user's identity or purpose
-
Two different philosphical strains:
- Idealistic -> "Free" as in freedom.
- Pragmatic -> Primary considerations are technical, including faster and better development
Licensing
- Permissive (such as BSD-licensed software)
- Restrictive (such as GPL-licensed software)
Proprietary Software
-
Only the owners of the software have full legal access to the source code involved. Access may also be granted to trusted partners who have signed NDAs (closed source)
-
Usually authors are working under a contract
Why use OSS?
Collaborative Development
-
Shared progress means not everyone has to solve the same problems and make the same mistakes.
-
More eyes reviewing code can lead to stronger, and more secure code, although not always the case as OSS is usually underfunded
Security
-
Published code is usually cleaner as it can be embarrassing to show ugly code + coding standards are more prevalent + others need to look at the code
-
No security through obscurity
-
No "Just trust me"
-
Potentially faster bug repair
OSS Licensing and Legal Issues
Restrictive vs Permissive Licensing
-
Restrictive -> Software must remain open (GPL, a copyleft license)
-
Permissive -> Modifications/enhancements do not need to be avaliable publicly.
Rights in copyright
| Public Domain | Non-Protective FOSS License | Protective FOSS License | Proprietary License | Trade Secret |
|---|---|---|---|---|
| All rights relinquished | More rights granted | Neutral | More rights retained | All rights retained |
Choosing a License
-
Switching licenses during the life of the project can be difficult
-
Projects can sometimes mix and match licenses.
- Certain sections of code can also contain additional provisions
How to Work in OSS Projects
Contributing properly
-
Before contributing, you should:
- Read the mailing list for the project (if any)
- Study archives
- Join a IRC if there is one
- Understand how contributions are submitted
- Study previous history
-
Could start off by contributing by testing, finding bugs
-
Questions to ask:
- Why does this project exist, and why was it started?
- Has it diverged from its original purpose?
- Is the community large or small?
- Any collective or singular governance structure?
- What kind of license does it adopt, and is there a contributor license agreement before you can start?
-
Contribute small unit-sized bites, not large code dumps
- Hard to review
Leadership vs Control
- Projects can fail because:
- There is insufficient interest
- Competition from more established projects
- Poor leadership
- Not enough developers
- Insufficient funding
Continuous Integration, Delivery and Deployment
-
Continuous Integration -> Changes are merged into the main branch as soon as possible. Automated builds are run on as many variations of software and hardware as possible
-
Continuous Delivery -> The release process is automated and projects are ready to be delivered to consumers of the build
-
Continuous Deployment -> The product is released to consumers