You've probably heard about open-source software before. But do you know where is this idea coming from? Why is it such a positive buzzword? Who and how actually can contribute to open-source projects and where to find them? Today I will try to unveil some of these secrets for you.
A little bit of history
In the early days of computing, 60's and 70', software was usually bundled with hardware which gave users the ability to modify it. The rise of proprietary software models restricted access to source code, limiting this freedom. Of course, for money.
Father of open-source
The idea is often attributed to Richard Stallman. He advocated for software freedom, emphasizing the importance of users having the rights to view, modify, and distribute source code, which was introduced in 1985 as the GNU General Public License (GPL). Soon after that, he founded the Free Software Foundation, and the license ensured that software released under it remained free and open.
The rise of Linux
In 1991, using the GNU's development tools, Linus Torvalds produced the free monolithic Linux kernel and released it under GPL. The combination of the Linux kernel with GNU software led to the development of the Linux operating system. Later on, he will create a distributed version control system- Git.
Golden era of the 90's
90's are the beginning of the web development boom. Netscape Navigator's source code release marked a shift, and the Open Source Initiative (OSI) was founded to promote open-source principles. From now on the term gained popularity. Companies started adopting open-source as a viable development model. Projects like Apache, MySQL, and PHP will soon become foundational components of web development.
The influence
Open-source projects play a crucial role in shaping the software development industry by promoting collaboration, knowledge sharing, rapid evolution, and innovation. The principles of openness and community-driven development have become integral to the modern software development landscape. Contributing to open source provides developers with valuable experience. They can enhance their skills, build a portfolio, and collaborate with experienced developers, contributing to their professional growth. Frameworks, libraries, and tools built on open-source principles become building blocks for a wide range of applications nowadays.
Is it really open?
The openness of open-source software is characterized by transparency, collaboration, and community-driven development. However, the term "open" should be understood in the context of access to the source code and the freedoms granted to users, rather than implying absolute openness in all aspects. Other aspects of a project, such as decision-making processes, governance, or documentation, might vary and are not implied by the term "open source" alone. While it provides freedoms, it is governed by licenses. Users must comply with the terms of the chosen license, which can vary (e.g., GPL, MIT, Apache). You can read about licensing software on GitHub licensing page
Where to start?
What is funny, you don't need to code if you don't feel ready yet. You can contribute as a technical writer, content creator, tester, etc. What you will need is basic knowledge of Git and Github. I can recommend at least the first few lessons from learn git branching. The next step would be to choose the right project. Here comes the issues labeling system on GitHub to the rescue. Issues are tasks to be done in a certain project. They come with labels like 'bug', 'help-wanted', and the one we are looking for right now: 'good-first-issue'. Where to find them? You can browse GitHub on your own, but for starters, I would suggest using this page: good first issue. What is the next step? Read CONTRIBUTING.md, README.md, and code of conduct files. There is everything you need to know about the project, conventions, naming, linting, and making pull requests. After that, the only thing left is to fork a repo, and start making your first changes. If you still feel lost, check this guideout.
Summary
I hope I succeeded in outlining how contributing to open source can benefit your growth by enhancing your skills and providing valuable experience. It is a way to give back to the community and gain some acknowledgment and experience. It is, after all, the foundation of modern software development and the source of ideas for collaboration, innovation, and evolution.
