This free course introduces developers to the key concepts in developing open source software. It covers the who (successful projects and communities), what (definition), why (benefits), where (Git) and how (licensing, compliance, collaboration tips, managing diversity and continuous development & integration).
This course is addressed to software developers seeking to understand the ‘rules of the road’ of creating open source software, either as a newbie or as someone with experience primarily in creating proprietary code.
This course will teach you the key concepts involved in developing open source software (OSS), the benefits of using OSS as compared with using proprietary products, which open source projects form the foundations of today’s worldwide technology infrastructure, how to behave properly while engaging in OSS projects, OSS licensing issues, how to make use of projects such as FOSSology and SPDX to foster compliance, best practices for long term sustainability of projects, including how to respect and encourage diversity, and the importance of GitHub and other hosting providers and advanced interfaces, such as Gerrit.
The course will prepare you to leverage open source software in development activities in a sustainable, compliant manner.
Course Outline Chapter 1. Course Introduction
Chapter 2. Open Source Software (OSS)
Chapter 3. Why Use Open Source Software?
Chapter 4. Examples of Successful OSS Projects
Chapter 5. Developing an OSS Strategy
Chapter 6. The ToDo Group
Chapter 7. The OpenChain Project
Chapter 8. How to Work in OSS Projects
Chapter 9. Continuous Integration
Chapter 10. OSS Licensing and Legal Issues
Chapter 11. Compliance Projects: Fossology, SPDX, CHAOSS
Chapter 12. Leadership vs Control and Why Projects Fail
Chapter 13. Respecting and Encouraging Diversity in OSS
Chapter 14. GitHub and Other Hosting Providers
Chapter 15. Advanced Git Interfaces: Gerrit
Lab exercises in this course are designed to work either on native hardware, or using a virtual machine (VM), under a hypervisor, such as those in the KVM, VMWare, or Virtual Box families. Detailed instructions to set up your lab environment are provided in the course.