Open Source Software Paradigms PDF
Document Details
Uploaded by GleefulSetting
Addis Ababa Science and Technology University
2024
Biniam Behailu
Tags
Summary
This document is an introduction to open-source software engineering from Addis Ababa Science and Technology University. It explains the concept of open-source software and provides details on paradigms of software engineering. It also includes a history of open source and discussions about how to contribute to open source.
Full Transcript
OPEN SOURCE SOFTWARE PARADIGMS Course Code: SWEG5109 Target Group: 5th Year Software Engineering Instructor: Biniam Behailu Oct, 2024 Outline CHAPTER 1 01 Open source paradigm Introduction...
OPEN SOURCE SOFTWARE PARADIGMS Course Code: SWEG5109 Target Group: 5th Year Software Engineering Instructor: Biniam Behailu Oct, 2024 Outline CHAPTER 1 01 Open source paradigm Introduction to Open Source Software Engineering 02 Open Source Software in Practice 03 Benefits of Open Source 04 Economics of Open Source 05 Open Source Business Models 06 Open-Source Software Criteria Introduction Software engineering is an engineering based approach for the design, development, testing and maintenance of a software product. Its goal is to develop software applications for improving quality, budget, and time efficiency. It ensures that the software that has to be built should be consistent, correct also on budget, on time, and within the required requirements. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 3 Introduction Software engineering paradigms define the fundamental principles, methodologies, and practices used to develop high-quality software systems. It defines how programmers view a problem, structure their solution, and organize the code. Different paradigms contributed to the growth and maturity of SWEng. Procedural, OOP, Functional, Agile, DevOps, SaaS (Features, Practical applications, Strength, Weakness) Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 4 Introduction The chosen paradigm significantly influences how developers design, write, and maintain software. It affects aspects like code readability, maintainability, and the overall structure of the program. Factors to choose the right paradigm o Problem domain o Complexity o Performance o Developer familiarity Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 5 What is Open Source Software? Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 6 What is Open Source Software? Open source software (OSS) refers to software that is released with a license that allows anyone to view, modify, and distribute the source code. This model promotes collaboration and transparency, enabling developers worldwide to contribute to projects. The open-source movement has revolutionized the software industry by encouraging innovation and reducing the cost of software development. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 7 What is Open Source Software? Open Source software represents a new way of dealing with intellectual property. Transparency: Anyone can inspect the code. Collaboration: Community-driven development. Licensing: Governed by open-source licenses (e.g., MIT, GPL). Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 8 What is Open Source Software? At its core, open source is an idea. It’s a concept that revolves around access. You can access someone else’s source code (or even a company’s). This way, you can customize it for your use case, find bugs, and fix them too. Better still, you can share your “version” of the source code with others in addition to the original. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 9 What is Open Source Software? Open source can also be seen as a movement. Yes, initially, open source was a “rebellion” against closed source (proprietary software whose source code is “owned” by a certain company or organization and therefore is not accessible). Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 10 What is Open Source Software? In fact, open source is what powers the internet. For example, 60% of the world’s websites run on Apache and Nginx, the most popular web servers. And yes, even Fortune 500 companies use Nginx. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 11 History of Open source Early Days of Computing (1950s-1970s) Free Software Movement: Figures like Richard Stallman began advocating for software freedom, emphasizing the importance of users having the ability to modify and share software. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 12 History of Open source The Birth of Free Software (1983) GNU Project: Richard Stallman launched the GNU Project to create a free Unix-like operating system. He introduced the concept of copyleft, allowing software to be freely used and modified as long as derivative works remained open. Free Software Foundation (nonprofit) Promoting the development and use of free software, particularly the GNU Operating System GNU General Public License (GPL): Released in 1989, the GPL became a foundational license for free software, ensuring users' rights. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 13 History of Open source The Open Source Initiative (1998) Open Source Movement: The term "open source" was popularized to appeal to businesses and mainstream developers. The Open Source Initiative (OSI) was founded to promote and certify open-source software licenses. Netscape Navigator: The release of Netscape's source code in 1998 marked a significant moment, leading to the formation of the Mozilla Project. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 14 History of Open source The Open Source Initiative (1998) The term open source was coined in 1998 when Eric Raymond published the Cathedral and Bazaar model. Cathedral: centralized planning with less frequent updates controlled by a small team Bazaar: rapid releases and public study by a large, collaborative community lead to faster bug fixing and innovation Raymond_Eric_S_The_Cathedral_and_the_Bazaar_rev_ed.pdf Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 15 History of Open source Growth and Adoption (2000s) Linux: The Linux operating system, created by Linus Torvalds in 1991, became a prominent example of open-source software, gaining widespread adoption in servers and desktops. Apache Web Server: The Apache HTTP Server became one of the most popular web servers, showcasing the viability of open-source solutions in enterprise environments. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 16 History of Open source Corporate Involvement (2000s-Present) Big Tech Embrace: Companies like IBM, Google, and Microsoft began to embrace open-source software, contributing to projects and creating their own open-source initiatives. Cloud Computing: The rise of cloud technologies led to increased interest in open-source solutions, such as OpenStack and Kubernetes, which facilitate scalable infrastructure. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 17 History of Open source Community and Collaboration Git and GitHub: The introduction of Git (by Linus Torvalds in 2005) and GitHub (launched in 2008) transformed how developers collaborate on open-source projects, making version control and contribution easier. Diversity of Projects: Open-source projects expanded beyond operating systems to include applications, libraries, and frameworks (e.g., Python, Ruby on Rails). Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 18 History of Open source Current Trends and Future (2020s) Continued Growth: Open-source software continues to thrive, with a strong community-driven model that fosters innovation and collaboration. Focus on Security: As open-source becomes more mainstream, concerns about security and sustainability have led to increased efforts in securing open-source projects and maintaining their health. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 19 History of Open source(Advancements) Linux released to the public along with its source code (1991) The publication of the Python interpreter source code (1991) The launch of the Apache HTTP Server (1995) The coining of the term “open source” (1998) The release of the Netscape browser’s source code (1998) The release of Open Office’s source code, the free software counterpart to Microsoft Office (2000) The 20th century laid a strong foundation for OSS Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 20 Characteristics of Open Source Accessibility of Source Code: The source code is freely available for anyone to view, modify, and distribute. Free Redistribution: Users can freely share the software with others without restrictions. Modification: Users have the right to modify the software to suit their needs, which encourages innovation and customization. Community Collaboration: Open source projects often involve a community of developers and users who collaborate, contribute, and provide support. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 21 Characteristics of Open Source Transparency: The open nature of the source code allows for greater scrutiny, which can lead to improved security and quality through peer review. Licensing: Open source software is released under licenses that comply with the Open Source Definition, such as the GNU General Public License (GPL) or the MIT License. No Vendor Lock-in: Users are not tied to a specific vendor, allowing for flexibility in usage and support. Continuous Improvement: The collaborative nature of open source encourages ongoing enhancements and updates from the community. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 22 Open Source Paradigm The open-source software paradigm refers to the entire approach to software development where the source code is open and collaboration is encouraged. Source code must be open and readable for practical reasons It's a collaborative development paradigm or model Technically, OOS (Open Source Software) is defined in terms of distribution licenses not developmental methods Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 23 Open Source Paradigm Programmers who have access to a computer program's source code can improve that program by adding features to it or fixing parts that don't always work correctly. Users must have freedom (characteristics) to run the program/software for any purpose to study how the program works and modify it to suit their needs to redistribute copies freely to improve the program and release their improvements to the public Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 24 Open Source Paradigm Sharing and collaboration is a key of open source Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 25 Why do developers contribute to Open Source Projects? Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 26 Why do developers contribute to Open Source Projects? Learning and skill development (to learn a new technology and challenges, to work on new codebases, collaboration and mentorship) A hobby to contribute for the larger community Sense of community and purpose Personal satisfaction by solving a problem To make a positive impact on the technological landscape Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 27 Why do developers contribute to Open Source Projects? Career advancement, to show their coding skills and experience that will be used for applying jobs. Gaining new opportunity by Collaboration To generate income through support or by any means of funding after completion and use by someone Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 28 How to Contribute to Open Source Projects? Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 29 How to Contribute to Open Source Projects? 1. Find a Project Identify Interests: Choose a project that aligns with your interests or skills, whether it's coding, documentation, design, or testing. Explore Platforms: Use platforms like GitHub, GitLab, or Bitbucket to discover projects. Websites like Open Source Guides and CodeTriage can help you find projects looking for contributors. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 30 How to Contribute to Open Source Projects? 2. Understand the Project Read Documentation: Familiarize yourself with the project’s README, contribution guidelines, and code of conduct. Explore Issues: Look for open issues labeled with tags like "good first issue," "help wanted," or "beginner-friendly" to find tasks suitable for new contributors. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 31 How to Contribute to Open Source Projects? 3. Set Up Your Environment Fork the Repository: Create a personal copy of the project by forking the repository on GitHub or similar platforms. Clone the Repository: Download your forked version to your local machine using Git git clone https://github.com/your-username/project-name.git Install Dependencies: Follow the project’s installation instructions to set up your development environment. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 32 How to Contribute to Open Source Projects? 4. Make Your Changes Create a Branch: Before making changes, create a new branch to keep your work organized git checkout -b your-feature-branch Develop: Implement your changes or fixes, and ensure to follow the project's coding style and practices. Test: Run any tests to verify your changes work as intended. Add new tests if necessary. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 33 How to Contribute to Open Source Projects? 5. Commit and Push Changes Commit Your Changes: Write clear and concise commit messages git commit -m "Brief description of changes" Push to Your Fork: Upload your changes to your forked repository git push origin your-feature-branch Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 34 How to Contribute to Open Source Projects? 6. Create a Pull Request (PR) Open a Pull Request: Go to the original repository and navigate to the "Pull Requests" tab. Click "New Pull Request" and select your branch. Provide Context: Write a summary of your changes and any relevant information for the maintainers. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 35 How to Contribute to Open Source Projects? 7. Engage with the Community Respond to Feedback: Be open to suggestions and constructive criticism from project maintainers and other contributors. Make necessary changes and update your PR accordingly. Participate in Discussions: Engage with the community through discussions, forums, or chat channels (e.g., Slack, Discord). Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 36 How to Contribute to Open Source Projects? 8. Stay Involved Monitor Your PR: Keep track of your pull request for feedback or additional requests for changes. Explore More Opportunities: Continue to contribute by tackling more complex issues, improving documentation, or participating in community events. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 37 Where is Open Source succeed and Fail? Successful Domains Unsuccessful Domains Community Collaboration Sustainability of Projects Flexibility and Customization Fragmentation Cost-Effectiveness Quality Control Security and Transparency Complexity of Contribution Adoption in Enterprises Commercial Competition Innovation in Emerging Technologies Security Risks Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 38 Why to use Open Source? (User Vs Developer) Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 39 Why to use Open Source? (User Vs Developer) From an end-user perspective Reduces the cost of software acquisition Security Flexibility and customization Wider choice and innovation Community and support Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 40 Why to use Open Source? (User Vs Developer) From a software process and productivity perspective Enlarging the user community, Collaboration and recognition Scalable division of labor Short feedback loops Greater opportunity for analysis Learning and skill development Improved Software Openness and transparency Vender lock-in avoidance Faster development cycle Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 41 Economics of Open Source Software Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 42 Economics of Open Source Software 1. Cost Structure Free to Use: OSS is typically available at no cost, allowing users to download, use, and modify the software without licensing fees. This reduces barriers to entry, especially for startups and small businesses. Support Costs: While the software itself may be free, organizations often incur costs related to support, maintenance, and training. Some companies charge for premium support services. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 43 Economics of Open Source Software 2. Business Models Freemium Model: Many OSS projects adopt a freemium approach, offering basic features for free while charging for advanced features, support, or services (e.g., Red Hat). Dual Licensing: Some projects are offered under both open source and proprietary licenses, allowing the developers to monetize the software in specific contexts (e.g., MySQL). Consulting and Services: Companies can generate revenue by providing consulting, implementation, and customization services for open source software. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 44 Economics of Open Source Software 3. Value Creation Community Contributions: Open source relies on a community of developers who contribute to the software. This collaborative model can lead to rapid innovation and improvement without the costs associated with traditional development. Network Effects: The value of OSS increases with the number of users. As more people use and contribute to a project, its robustness and feature set improve, attracting even more users. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 45 Economics of Open Source Software 4. Market Dynamics Competition with Proprietary Software: OSS often competes directly with proprietary software, leading to lower prices and improved quality in the market. This competition can drive innovation, benefiting end-users. Vendor Lock-in: OSS reduces vendor lock-in, allowing users to switch providers or modify the software to meet their needs. This flexibility can be economically advantageous for businesses. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 46 Economics of Open Source Software 5. Investment and Funding Crowdfunding and Donations: Many open source projects rely on crowdfunding, donations, or sponsorship to support development. Platforms like Kickstarter, Patreon or Open Collective facilitate financial support from users and organizations. Corporate Sponsorship: Large companies often sponsor open source projects or contribute to their development to align with their business interests, ensuring the sustainability of key tools they rely on. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 47 Economics of Open Source Software 6. Economic Impact Job Creation: The growth of the open source ecosystem has created jobs in development, support, and consultancy. Companies often seek professionals with expertise in specific open source technologies. Boosting Innovation: Open source fosters innovation by allowing developers to build upon existing projects, leading to new applications and technologies that can drive economic growth. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 48 Economics of Open Source Software 7. Challenges and Risks Sustainability: Many open source projects struggle with funding and long-term sustainability, which can affect their viability and the ecosystem as a whole. Quality Assurance: The varying levels of quality in open source projects can pose risks for organizations that rely on them, potentially leading to increased costs for support and troubleshooting. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 49 Business Models of Open Source Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 50 Business Models of Open Source Business model: how an organization creates value Major organizations base their business on OSS Red Hat, SUSE, Canonical, Apache Foundation, Mozilla Other organizations use OSS without having it as a main business IBM, Google, Apple, Oracle Actually, open source is designed not for making money. So, money is not the only or even most important incentivization. There are several business models built around open source software Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 51 Business Models of Open Source 1. Freemium Model The software is offered for free with basic features, while advanced features, additional services, or premium support are available for a fee. Example: Companies like Atlassian (with products like Trello) and Slack offer free tiers with optional paid upgrades for enhanced functionality. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 52 Business Models of Open Source 2. Dual Licensing The software is available under both an open source license and a proprietary license. Users can choose between the free version (with certain limitations) and a paid version with added features or support. Example: MySQL allows users to access the database under the GPL for free or purchase a proprietary license for additional privileges. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 53 Business Models of Open Source 3. Subscription Model Users pay a recurring subscription fee for access to the software, which may include updates, support, and additional features. Example: Red Hat offers its enterprise Linux distribution through a subscription model, providing support and services to businesses. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 54 Business Models of Open Source 4. Consulting and Services Companies provide consulting, implementation, customization, and training services for open source software. This model focuses on expertise rather than the software itself. Example: Canonical, the company behind Ubuntu, provides consulting and support services for organizations adopting its open source operating system. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 55 Business Models of Open Source 5. Support and Maintenance Offering paid support, maintenance, and training for open source software. This model is often used by organizations that require reliable assistance and expertise. Example: SUSE provides enterprise-level support for its open source Linux distribution, catering to businesses that need assurance and stability. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 56 Business Models of Open Source 6. Crowdfunding and Donations Developers and projects seek funding through crowdfunding platforms or direct donations from users and organizations that benefit from the software. Example: Projects like GIMP and Blender have successfully used crowdfunding campaigns to support ongoing development. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 57 Business Models of Open Source 7. Sponsorship and Grants Organizations or individuals sponsor open source projects, providing financial support in exchange for influence over project direction or to ensure its sustainability. Example: Large tech companies, such as Google and Microsoft, often sponsor open source initiatives that align with their business goals. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 58 Business Models of Open Source 8. Open Core Model The core functionality of the software is open source, while additional features or components are offered as proprietary add-ons. Example: GitLab provides a free open source version of its platform, with premium features available in commercial editions. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 59 Business Models of Open Source 9. Marketplace Model Creating a marketplace where third-party developers can sell their extensions, plugins, or services related to the open source software. Example: Platforms like WordPress allow developers to create and sell themes and plugins while maintaining an open source core. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 60 Open Source Software Criteria Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 61 Open Source Software Criteria Open Source License: The software must be distributed under an approved open source license, such as the MIT License, GNU General Public License (GPL), or Apache License. These licenses ensure that users have the right to use, modify, and distribute the software. Availability: The source code must be publicly accessible, allowing users to view, modify, and audit it. This transparency is fundamental to open source principles. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 62 Open Source Software Criteria Freedom to modify: Users should have the ability to modify the software to fit their needs. This includes the ability to create derivative works based on the original software. Sharing/ Redistribution: The software must allow for redistribution of both the original and modified versions. This promotes collaboration and sharing within the community. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 63 Open Source Software Criteria Comprehensive Documentation: Good open source software should come with thorough documentation that covers installation, usage, and contribution guidelines. This helps users and developers understand and effectively utilize the software. Code Quality: The software should follow best practices for coding and testing, ensuring reliability and performance. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 64 Open Source Software Criteria Regular Updates: Active maintenance, including regular updates and bug fixes, indicates a healthy project and commitment from contributors. Security Audits: The project should have processes in place for identifying and resolving security vulnerabilities. Open source software benefits from collective scrutiny, but effective management is crucial. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 65 Open Source Software Criteria Compatibility and Interoperability: The software should be compatible with other systems and tools, allowing for easy integration into existing workflows or environments. Support Channels: Availability of support channels, such as forums, chat rooms, or documentation, can enhance the user experience and help resolve issues. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 66 Open Source Software Criteria Criteria to choose from 1. Does the software offer the functionalities you need? (Features) 2. Will the software be able to handle your project's size and potential growth? (Scalability) 3. How secure is the software? This is crucial for projects dealing with sensitive data. (Security) 4. Is the software actively maintained by a healthy developer community? Regular updates and bug fixes are essential for long-term use. (Active Development) 5. Is there an active user community where you can find help and answers to your questions? Community Support Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 67 Open Source Software Criteria 6. Does the software have clear, comprehensive documentation that's easy to understand? Good documentation makes learning and using the software smoother. (Documentation) 7. Does your team have the necessary skills to use and maintain the software? (Skillset) 8. Review the software's license to understand its terms and conditions. Some open-source licenses have restrictions on use or modification. (License) 9. While not always the best indicator, popular open-source software often has a larger community and more resources available. (Popularity) Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 68 Open Source Contributions types Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 69 Open Source Contributions types Code Contributions Bug Fixes: Identifying and fixing bugs in the software. Feature Development: Implementing new features or enhancements to existing functionality. Refactoring: Improving the code structure and readability without changing its external behavior. Documentation User Manuals: Writing or editing user guides and manuals to help users understand how to use the software. API Documentation: Providing clear and comprehensive documentation for APIs to assist developers in integrating with the software. Contribution Guidelines: Creating or updating guidelines for how others can contribute to the project. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 70 Open Source Contributions types Testing Unit Testing: Writing tests to verify that individual components of the software work as expected. Bug Reporting: Identifying and reporting bugs or issues in the software, along with detailed descriptions and steps to reproduce them. Quality Assurance: Participating in testing phases to ensure the software is stable and reliable before releases. Design User Interface (UI) Design: Contributing to the visual design of the software, including layout, color schemes, and user experience (UX) improvements. Graphic Design: Creating logos, icons, and other visual assets for the project. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 71 Open Source Contributions types Translation and Localization Language Translation: Translating documentation, user interfaces, and other materials into different languages to make the software accessible to a wider audience. Cultural Adaptation: Adapting content to suit cultural norms and preferences in different regions. Community Engagement Support: Answering questions and providing support to other users through forums, chat rooms, or issue trackers. Mentorship: Guiding new contributors by helping them understand the project and how to get involved. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 72 Open Source Contributions types Project Management Maintaining Issues: Organizing and triaging issues in the project’s issue tracker to identify priorities and assign tasks. Release Management: Coordinating and managing the release process, including versioning and changelogs. Advocacy and Promotion Blogging and Writing: Writing articles, blog posts, or tutorials about the software to promote it and share knowledge with the community. Speaking Engagements: Representing the project at conferences or meetups to raise awareness and attract new contributors. Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 73 Open Source Programs and Projects Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 74 Open Source Programs and Projects Google Summer of Code (GSoC) Season of KDE https://summerofcode.withgoogle.com/ https://mentorship.kde.org/sok/ Outreachy https://www.outreachy.org/ Digital Ocean Hacktoberfest MLH Felowship https://hacktoberfest.com/ https://fellowship.mlh.io/ Free Software Foundation internship program GirlScript Summer of Code (GSSoC) https://www.fsf.org/volunteer/internships https://gssoc.girlscript.tech/ Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 75 Open Source Programs and Projects Web Dev Projects: Cloud Related Projects: Freecodecamp: Envoy: https://github.com/freeCodeCamp/freeC... https://github.com/envoyproxy/envoy Moment: https://github.com/moment/moment Docker: https://github.com/docker React: https://github.com/facebook/react Kubernetes: Gatsby: https://github.com/gatsbyjs/gatsby https://github.com/kubernetes/kubernetes Material UI: https://github.com/mui-org/material-ui Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 76 Open Source Programs and Projects Machine Learning Projects: Scikit Learn: https://github.com/freeCodeCamp/freeCodeCamp Tensorflow: https://github.com/tensorflow/tensorflow PyTorch: https://github.com/pytorch/pytorch OpenCV: https://github.com/opencv/opencv Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 77 THANK YOU ? "Open source software is a testament to the power of collaboration; it transforms ideas into innovations, empowering individuals and communities to build a better future together." Introduction to Software Engineering Introduction to Open Source Software Engineering | Compiled by : Biniam Behailu 78