top of page
Search

The Evolution of FOSS Systems

  • Writer: Nadeeshani Nawarathne
    Nadeeshani Nawarathne
  • Jul 18, 2024
  • 5 min read

The Free and Open Source Software (FOSS) movement has revolutionized the software development landscape. Initiated by Richard M. Stallman with the GNU project in 1984, FOSS emphasizes both the freedom to modify and redistribute software and the accessibility to its source code. In this article, we explore the evolution of FOSS systems, highlight the differences from Closed Source Software (CSS) development, and have an insight into the Onion model of FOSS development structure.


ree
FLOSS Timeline (1980 -2000)

The Birth and Growth of FOSS


FOSS, also referred to as Free/Libre/Open Source Software (FLOSS), is characterized by its open availability and relaxed intellectual property restrictions. The movement began with Richard M. Stallman's GNU project and the establishment of the Free Software Foundation, promoting software freedom as a matter of liberty, not price.


Eric Raymond's influential essay, which then later became a book, "The Cathedral and the Bazaar," concisely documented the FOSS approach, contrasting it with traditional CSS development methods. The FOSS model is built on voluntary collaboration and the free exchange of code, fostering rapid innovation and widespread adoption.


ree
Visual Notes on Eric S. Raymond’s “The Cathedral and the Bazaar.” by Giulia Forsythe

Differences Between FOSS and CSS Evolution


FOSS and CSS differ significantly in their evolution concerning team structure, process, releases, and global factors.


Team Structure:


In FOSS, development is primarily driven by voluntary participation across diverse roles: from core developers and contributors to active and passive users. This decentralized structure contrasts sharply with the hierarchical teams typically found in CSS, where specialized groups manage software evolution within corporate frameworks.


Process:


FOSS development prioritizes flexibility and rapid iteration over formal documentation and stringent processes seen in CSS. The reliance on open collaboration through source code, supplemented by informal channels like mailing lists and online forums, fosters a dynamic environment conducive to innovation and rapid problem-solving. In contrast, CSS adheres to structured workflows encompassing rigorous requirement specifications, design documents, and formalized testing protocols.


Releases:


The FOSS mantra of "release early, release often" exemplifies its iterative approach to software deployment. This practice not only facilitates continuous feedback and improvement but also encourages transparency and community engagement throughout the development lifecycle. In contrast, CSS projects typically adhere to pre-defined release cycles with stringent quality control measures before each major release.


Global Factors:


The global nature of FOSS development enables collaboration across geographical and cultural boundaries, leveraging the Internet as a primary medium for communication and coordination. This diversity of perspectives and contributions enriches FOSS projects, fostering innovation through cross-cultural exchange and collective problem-solving. In contrast, CSS development, while increasingly globalized, often retains localized decision-making and operational frameworks within corporate entities.

The Onion Model of FOSS Development


The Onion Model describes the structure of FOSS communities, depicting various roles from the project leader at the core to passive users on the outermost layer.

ree
Onion model of FOSS development structure

1. Project Leader

The Project Leader is the central figure in a Free and Open Source Software (FOSS) project, often the originator or primary maintainer. This individual provides essential vision, direction, and leadership, steering the project’s overall strategy and development. The Project Leader is responsible for coordinating efforts among different contributors, ensuring that the project remains aligned with its goals and objectives. They make critical decisions regarding project direction and priorities and represent the project in public forums, discussions, and interactions with external stakeholders. Their leadership is pivotal in setting the tone for collaboration and guiding the project through various stages of development.


2. Core Members

Core Members are long-term contributors who play a crucial role in managing and steering the FOSS project. They are deeply invested in the project's success and stability, often having a significant impact on its ongoing development and evolution. Core Members oversee development activities, review and integrate contributions from other developers, and enforce coding standards to maintain high-quality code. Their responsibilities include ensuring the project's continuity, managing releases, and addressing any issues that arise. They often take on leadership roles within the community, helping to coordinate efforts and maintain the project's health and progress.


3. Active Developers

Active Developers are regular contributors who are actively involved in working on code enhancements, bug fixes, and new features for the FOSS project. They are instrumental in driving the project's technical progress and innovation. Their role involves submitting code changes, participating in peer reviews, and engaging in discussions about feature development and bug resolution. Active Developers are crucial for maintaining the project's momentum and ensuring that it continues to evolve in response to user needs and technological advancements. Their regular contributions and engagement are vital for the project’s ongoing development and improvement.


4. Peripheral Developers

Peripheral Developers are contributors who engage with the project on an intermittent basis. While their involvement may be less frequent than that of Active Developers, their contributions are still valuable to the project. Peripheral Developers may provide specific fixes, enhancements, or expertise as needed. They contribute to the project’s growth and improvement through occasional involvement, often bringing in specialized skills or perspectives. Their role is important in adding depth to the project’s development and supporting the core team with targeted contributions that address specific needs or challenges.


5. Bug Reporters and Fixers

Bug Reporters and Fixers play a crucial role in maintaining the quality and stability of the FOSS project. They are users who identify and report issues, as well as contribute to fixing bugs. Their responsibilities include reporting bugs, testing new releases, and providing patches or fixes to address reported issues. By actively participating in this process, Bug Reporters and Fixers help ensure that the software remains reliable and functional. Their involvement is essential for identifying and resolving problems that might otherwise impact the project’s usability and performance.


6. Readers

Readers are users who actively follow the development of the FOSS project but do not directly contribute code. They engage with project documentation, community discussions, and updates, staying informed about the project's progress and changes. While they may not contribute code, their feedback and engagement are valuable for shaping the project's direction and understanding user needs. Readers support the project through non-technical means, such as providing feedback on features or usability, which helps guide future development and improvements.


7. Passive Users

Passive Users represent the largest group within the FOSS community. They use the software as end-users but do not participate in its development or community activities. Their role involves benefiting from the project's outputs without direct involvement in its creation. While they do not contribute to the development process, their use of the software and feedback can influence the project's evolution indirectly. Passive Users are essential for understanding the broader impact of the software and ensuring that it meets the needs of its end-user base.





Empirical Studies on FOSS Evolution


Several studies have analyzed the evolution of FOSS systems, providing insights into their growth patterns and sustainability.


  • Godfrey and Tu (2000): Found that the Linux OS exhibited super-linear growth between 1994-1999, indicating rapid development and expansion.

  • Schach et al. (2002): Observed exponential growth in module coupling within Linux, suggesting potential maintenance challenges without intervention.

  • Robles et al.: Concluded that certain large-scale FOSS systems, such as Linux, do not fully align with Lehman’s laws of software evolution, particularly regarding organizational stability.


Conclusion


The evolution of FOSS systems showcases a unique, community-driven approach to software development. The Onion Model effectively represents the layered structure of FOSS communities, highlighting the various roles and contributions that drive these projects forward. Understanding these dynamics is crucial for appreciating the strengths and challenges of FOSS development.




References:

Tripathy, Priyadarshi, and Kshirasagar Naik. Software Evolution and Maintenance. Hoboken, NJ: John Wiley & Sons, Inc., 2015.

 
 
 

Comments


Join the mailing list

Thanks for subscribing!

© 2023 by Nadeeshani Nawarathne. Powered and secured by WIX

bottom of page