Overview
Open Source has been quite a buzzword in the tech industry for years and with good reason. This system of development has helped so many large communities of people to collaborate on projects, making it more flexible, robust, and reliable.
But what exactly does "Open Source" mean, and the question that comes to a curious mind is - Why is it so important? and What is its real purpose? 🤔
History of Open Source
To fully understand Open Source, let's just talk a bit about the History of Open Source.
The concept of Open Source was also used in the early days of computer programming. In the 1960s, when computers were still a new technology and the internet did not yet exist, most software was written by researchers working in universities and government labs. They shared their code, as a way to collaborate and learn from each other.
Now you will think, How is it Open Source? Well, let me give you the answer!
Open Source does not always means we need to use Git or GitHub or other Version Control Systems, Open Source is "a way to collaborate on something by sharing it with others and anyone can work on it and see the code".
The term "Open Source" itself was coined in the late 1990s, as a way to describe this type of collaborative development model. The term was popularized by the Open Source Initiative (OSI), a non-profit organization that was founded in 1998.
The OSI created the Open Source Definition, which shares the requirements that must be met for a License to be considered Open Source.
The oldest example of Open Source is the Unix operating system, which was first developed at Bell Labs in the 1970s. Unix was widely used in academics and research, and its source code was openly shared and modified by researchers. This led to the development of many different versions of Unix, known as "flavors," such as Linux, which is widely used today.
Even today Linux is Open Source and has different "Flavors" or you can say Distros/Distributions such as Arch Linux, Ubuntu, Fedora, Redhat and more.
Open Source allowed different communities to create these distros by collaborating and working together.
Logo of Open Source -
Benefits of Open Source
Open-source software has tons of benefits.
It allows for a large community of developers to collaborate on a project.
It allows everyone to contribute and work no matter what age.
In modern days we use Version control systems like Git and GitHub which allow us to contribute to Open Source from any place in the world. All you need is the Internet and a Device like a Computer or a Smartphone.
Since anyone can contribute from anywhere in the world, this can lead to faster development, more robust and reliable software and a wider range of contributions and collaborations.
It allows smaller developers and non-profit organizations who would otherwise not be able to afford expensive proprietary software.
It gives users the freedom to use the software for any purpose, you want to know how the software works? You can open it and read the code easily, You want to make changes to the software and make it better? Yes, you can, This allows for a high level of customization and flexibility that is simply not possible with proprietary software.
A most important benefit is that open-source software often comes with a strong focus on security and privacy. Because the code is "open", it can be reviewed by many people, which helps to identify and fix any potential vulnerabilities.
Let's talk about Open Source Licenses
An Open Source license is a legal agreement that allows others to use, modify, and distribute software. The main principle of open-source licenses is that the source code of the software is freely available to the public, which means anyone can use, modify, and distribute the software for any purpose, as long as they follow the terms and conditions of the license. Some common open-source licenses include the GPL, MIT, Apache and CC.
GPL Licence- One of the most widely used open-source licenses. It is considered a "copyleft" license, which means that it requires that any derivative works, or software that is based on GPL-licensed software, must also be released under the GPL.
GPL allows you to use, modify and distribute the software.
If you distribute the software or any derivatives you create, you must also share the source code.
Any changes you make to the software must be shared under the same GPL license.
GPL does not restrict the use of the software for commercial or non-commercial purposes.
Apache Licence - Apache License does not require software that is based on Apache-licensed software to be released under the same license.
The Apache License allows you to use, modify and distribute the software freely.
You don't need to share the source code of the software unless you distribute it.
You can use the software for commercial or non-commercial purposes.
Any changes you make to the software do not need to be shared under the Apache License, but it is expected that you will contribute back any changes if possible.
You must include the Apache License and copyright notice in any distribution of the software.
MIT Licence - It's important to note that, like the Apache license, the MIT license is also compatible with many other open-source licenses, which means that it can be used in combination with other open-source software. Also, it is widely used and has a widely recognized license.
MIT License allows you to use, modify, and distribute the software freely.
You don't need to share the source code of the software unless you distribute it.
You can use the software for commercial or non-commercial purposes.
You must include the MIT License and copyright notice in any distribution of the software.
CC Licence - Creative Commons (CC) licenses are a set of licenses that can be applied to various types of creative works, such as text, images, music and other creative works, rather than just software. These licenses provide creators with a way to communicate how others can use their work, and to make it clear what rights they retain and what rights they are granting to others. There are several different types of Creative Commons licenses, each with different terms and conditions, but in general, Creative Commons licenses allow others to use, share, and build upon a work, as long as they give credit to the original creator.
Is Open Source only for Programmers?
Open Source projects welcome a wide range of contributions, including changes to documentation, running tests, changes in design and code reviews. Even I started my journey with the documentation changes and reviews as well.
Documentation changes are important for ensuring that the software is easy to use and understand. Having accurate and up-to-date documentation can help new users get started with a project, and it can also help experienced users to learn new features.
Running tests is another important aspect of open-source development. It helps to ensure that the software is stable and reliable. By running tests, developers can identify and fix bugs and other issues before they are released to the public.
Changes in design are also welcomed, as they can make the software more user-friendly and visually appealing. Well-designed software can make it easier for users to navigate and understand the functionality of the software. These designs can be anything from the UI design of a website or a webpage to the UI design of a smartphone application.
Code reviews are also an important part of open-source development. They help to ensure that the code is well-written, maintainable, and free of errors.
Open-source development also provides a great learning opportunity, whether you're new to programming or an experienced developer. The opportunity to learn from the repository, where you can look into the codebase, understand how the software works, and see how other developers approach different problems. It's a great way to learn new skills, techniques and best practices.
How I got into Open Source
This journey started when I started watching Kunal Kushwaha on YouTube and he encouraged every student to contribute to Open Source.
I watched many videos of Kunal and realized his life changed because of his dedication to hard work and Open Source. I was really interested in Open Source and the opportunities it gives to students and people of every age.
I was clueless about where to start, and where to contribute but one day I saw this tweet by Eddie Jaoude about LinkFree and saw this opportunity to contribute to this project by creating my profile using a .json file
I opened the documentation and started following it, the documentation was really easy to follow and start.
I did whatever was asked in the documentation, and raised a PR and later my PR got merged. The next day I raised a new PR to fix a documentation spelling error, 2 days later I was literally working on the project to fix any issues that I can find.
Start small -> Keep Consistency -> Build Discipline -> Achieve your Goals
Opportunities for Students
Open Source can provide several opportunities for students, such as:
Learning new skills: Open Source projects can be a great way for students to learn new technologies, programming languages, and real-life development scenarios.
Building a portfolio: Participating in open source projects can help students build a portfolio of work that demonstrates their skills and experience to potential employers.
Networking: Open Source projects can provide students with the opportunities to network with other developers and professionals in the field.
Giving back to the community: Open Source projects allow students to contribute to projects that can have a real impact on the world.
Open Source projects also allow students to access a wide variety of resources, like tutorials, and documentation that helps students to get the mentorship they need.
Participating in Open Source communities can also enhance problem-solving skills, communication skills and teamwork skills which are crucial for any profession.
How to get started in Open Source?
You can check out this amazing Open Source community by Eddie Jaoude - https://www.eddiehub.org/ and Open Source project - https://linkfree.eddiehub.io/ to get started. This is where it all started for me - EddieHub Community
All you need to do is read the Documentation and get started with the Open Source Contributions. 🥂 Cheers!!!
If you need any help related to this project, feel free to message me at twitter.com/code_shubh
Conclusion
Open Source is a beautiful thing because it represents that knowledge and technology can be available for free to everyone. Anyone, regardless of their background, resources or age has the power to contribute to the development of software that shapes our world.
The idea is that groups of individuals from all over the world, can come together and collaborate to create something that benefits everyone. It is proof that by working together, we can achieve great things.
Open Source is more than just code, it's a way of life, a philosophy. It's about sharing knowledge and resources for the betterment of all.
It's about community, collaboration, and a better future for everyone. Using technology as a tool to empower people, not just as a way to make a profit.
It's a reminder that together we can achieve so so much more than we ever could alone.
Alright, with that we have covered all the basics you would need, to start off with your Open Source. It’s not possible to cover everything in one single article, however, if you are serious about Open Source, and you are interested in learning more, I have added a few resources below, which I found useful. Happy Learning :)