Image Source :https : mend.io
"The open source nature of the Internet is both a blessing and a curse because just as much as we can watch what's happening around the world, we can also be watched." ∼Alicia Garza
What is Open Source?
Open Source, referred to as Open Source Software, is a kind of software whose Source Code is publicly available and allows users to use, alter, redistribute, modify or contribute for free. Open Source Software is a collaborative community where you are free to give and take to the community by submitting submissions or suggesting modifications.
Open Source has been an important part of the Tech Industry today. So if you are someone new to Tech World, First of all, Welcome ! to the techie's Community. You are in the right place. Here, you will get A-Z about Open Source Communities with opportunities around you.
What is the difference between Open Source and Free Source Software?
Both terms, Open Source and Free source, overlap but are not interchangeable.
Open Source Software emphasizes Licensing and Security, whereas Free Source (also referred to as freeware ) opts for Open Source, but Open Software is not necessary to be free.
Free Source Software allows you to run the program, study its working and modify its computation according to us. Thus, it holds a precondition for holding access to source code.
So if you are unsure if the software is open source or not, you can check its API at opensource.org/licenses/category
Some terms to describe these ideologies for software projects are :
FOSS: Free [and] Open Source Software
FLOSS: Free / Libre [no cost] / Open Source Software
Why should you choose Open Source?
Open source is considered an essential part of Software Development as an end user, developer, or manager. Open Source sets the instance that profit and gain are not goals of programming, but contributing it worldwide and collaborating matters.
Some factors that show why to choose and use Open Source -
There is typically no cost or less cost (some projects may have low distribution fees).
There is no contractual license issued.
Bugs and Security issues can be quickly resolved.
Public Forums and Documentation is supported as the software is customized.
Some popular Open Source licenses and Technologies.
GNU General Public License: Any source code written under this license must be released as open source.
LibreOffice: A real open-source alternative to Microsoft Office.
Rave: For a private open-source browsing experience.
Apache License 2.0: On issuing an Apache license, you can run, modify, and share software code for free as long as it follows the Apache licensing rules.
MIT license: There are no restrictions to the MIT license, and it can be re-licensed under other licenses.
Swift programming language: Apple created this replacement for Objective C and released it as an open-source technology.
Kubernetes: This DevOps technology popularized the use of container orchestration using open source principles.
Flutter: Google’s open-source solution to building native UIs has made it easier for developers everywhere to make amazing applications.
TensorFlow: This end-to-end open-source platform is now an essential part of the machine learning toolkit. It was the work of the community that made this software useful.
Linux: This open-source platform is what gave us global web searching and access to OS technologies.
Android: This operating system is popular due to its open-source nature, opening up access to Google services.
WordPress: One of the largest offering self-hosting blogging tool, an open source commercial market that collaborates and provides free software with paid services.
What is the importance of collaboration in Open Source ?
Getting Real Time Experience
If you are new to the world of programming and want hands-on experience in the Software Development lifecycle, then start contributing to Open Source projects It is better than closed projects, as open-source projects offer a lot of learning from active people contributing. You can easily learn Git flow, Issue tracking, Code reviews, modification, or Software Development Lifecycle(SDLC).
Validation and Earn Recognition
Working with Open Source helps make you a professional or Expert in your domain without any professional experience. If you include your open source contribution in your resume, it helps you to stand out from other candidates. Tech companies often hire people who are comfortable with codebase and workflow. Some organization organizes events and hackathons and rewards you for your contribution.
When you are working on an Open Source project, it makes you technically sound and brushes up your technical skills. Hence, you will get insight into your program's basic and even minute issues. Thus, making you a better programmer.
Helping the Community
It's time to give back to the community whatever you have gained knowingly or not knowingly from the community. Thus, contributing to the communities gives a wide range of opportunities for networking with people and local communities.
*"The free sharing and teaching of open source are incompatible with the notion of the solitary genius."
∼Golan Levin *
Some common Key Open Source terms That every Programmer should know -
Image Source: zesium.com
1. Maintainers: They are called the Engineers who are builders and manage the open source system.
2. Repository: The place where your codebase is stored. Here you will get the gist of history and whatever progress you store in the form of files.
3. Issue: Termed for a modification or fixed error in the source code. Contributors work to fix the issue.
4. Fork: Used for creating a repository copy under your username. Used to make changes in code when you are working on certain issues.
5. Commit: This is organized by commit messages used for a saved version of code to keep track of changes and know the recent version.
6. Pull request (PR): When you submit a submission of your changes, Instead of modifying in the original, it gets saved to a forked repository. This is the preferred way to contribute until they are peer-reviewed and merged.
7. Merge: It imports the list of suggested PRs to the original open-source repository. This is done with the help of a maintainer.
8. Git: Known to be a Version Control System for saving all code versions. For instance, you can think of it as a storage cell or bank.
9.GitHub: A most popular site for hosting Git repositories.
How to get started with Open Source?
To start up with Open Source, you just need to follow the flowchart, and Then you can kickstart it.
1. Organizing your ideas and skills
Before getting started, just think about what you want to work on. Do some research, and find your interests. Start with the programming language you know well. What frameworks do you like in them the most? What issues have you encountered?
Once you know the language you are working on, you should narrow down the project. Then hop into Github, Github showcases the project. Just browse for the top you want to work in. In case you are new, don't hop on a large project. Some projects have labels like "easy" or "first-timers only."
2. Get familiar with Git and Github
Create an account and get familiar with basics like how to Clone a repository, Send pull requests (PRs), Review changes, and Assigning Commits.
Here is a video you can visit to learn about Git and Github : youtube.com/watch?v=apGV9Kg7ics
3. Join a Community
After learning GitHub and done with deciding about a project, you can now join a community that suits you. The easiest way to join is to subscribe to the mailing list on Github so you will get accepted to join the team. Now you can start communicating with the members.
I have listed some of the communities of which I am a part and which deeply impacted my Tech journey and helped me develop other core skills.
- Coding Minutes : (Discord) - discord.gg/p7AnfRNAvf
- EddieHub : Discord and Github org link) - discord.gg/3s45nGZn
- MLH : discord.mlh.io
- Community Classroom : (Discord) - discord.gg/wAkJHPyy
- 4C : (Discord) - discord.com/invite/TcmA2kbJeA
- Devstrons : (Discord) - discord.gg/A7jkAnWU
- Devsnest : (discord)- discord.gg/mJx8BpwQ**
4. Time for mentoring Once you have become a member and seasoned contributor, now it's time to give back to the community. You should need to be helpful and welcome newcomers to be part of contributors. Reply to doubts, guide, and spread knowledge worldwide through your projects. You too can create your own projects and offer assistance in case the developed ones don't offer the required solution.
Some of the Ongoing Open Source Programs by Tech Companies:
Image Source: geeksforgeeks.org/(GeeksforGeeks)
Google Summer of Code (GSoC):The program invites all to contribute to open-source software development for people above 18 or above. It provides you with mentors from the organization. It is not related to emolument or work for Google or by Google. Depending upon the project, you get a paid stipend in this program ranging from 1500 to 3000 USD in India.
Apply and read Here: summerofcode.withgoogle.com
Linux Foundation Mentorship Program (LFX):Linux Foundation organizes a remote learning opportunity contributing to open-source software development. You can apply for up to 3 projects at a time. You get paid for the program from $3000 - $6600 stipend.
Apply and read Here: lfx.linuxfoundation.org/tools/mentorship
MLH Fellowship:A 12-week work-from-home program involves students in 2 different programs: open source, where students contribute to companies like Meta, Facebook, and Adobe, and Software Engineering, where students contribute under the Github organization. If you complete the 12-week program, you are offered a stipend of $1000 (applicable for Indian students), and for 4 weeks, you don't get a stipend as it is a short-term program focusing on preparation.
Apply and read Here: fellowship.mlh.io
Google Season of Docs (GSoD):The program involves a lot of documentation. It is an open-source program applicable for students who are 18 or above to get registered. In this program, many open-source organizations and technical writers work together. Technical writers write documentation for these open-source organizations and get paid well.
Apply and read Here: developers.google.com/season-of-docs
Outreachy:It is an internship opportunity for 3 months; getting into it is quite tough as only a handful of students get selected. The program mainly focuses on programming, project marketing, and documentation. It is also a paid internship where you get paid 5500 USD.
Apply and read Here: outreachy.org
Season of KDE:It is powered by KDE, an international free software development community contributor who can contribute into only to open-source software but also to Integrated systems, KDE applications, documentation, and other things.
Read and Apply Here: season.kde.org
Hyperledger Mentorship ProgramIf you are into Blockchain Technology, then this program is for you. It provides mentorship and exposure to the practical learning environment of open-source development. You can mentor students by submitting your niche and project proposals.
Read and Apply Here: wiki.hyperledger.org/display/INTERN
FOSSASIA Codeheat:FOSSASIA is a non-profit organization that supports developers to contribute to open-source projects and technology. Codeheat is a coding contest, and the program comprises mentors, developers, professors, or contributors who contribute and be part of the open-source community. It is a 2 monthly program, and winners are announced each month.
Read and Apply Here: codeheat.org
Girlscript Summer of Code:Image Source: Girlscriptsummerofcode It is 3 monthly long program conducted in the summer for beginners to start with open-source software development. You get exciting opportunities as well as goodies. it gives new developers more exposure to real-world software development( like - software licensing, testing, and more).
Read and Apply Here: gssoc.girlscript.tech
Free Software Foundation (FSF) Internship:This internship program is a prerequisite to having knowledge in web development, networking, software testing, and licensing. It has good opportunities to collaborate with free software foundation members in the software development niche.
Read and Apply Here: fsf.org/volunteer/internships
Linux Kernel Mentorship Program:The Linux Kernel Mentorship Program offers remote opportunities for people who aspire to become Linux Kernel Developers. To get involved in it you can learn and complete some courses in same.
Read and Apply Here: wiki.linuxfoundation.org/lkmp
Segment Open Fellowship:It is 3 monthly long program focussing on 3 to 5 open source developers providing them with $8k with a full-time opportunity to focus on the full-time projects.
Read and Apply Here: segment.com/opensource
Open Mainframe Project Mentorship Program:Mainframe Project is an open-source program to expand your knowledge of mainframe technology. you will help contribute to open-source projects involving infrastructure applications to run on the mainframe. The timeline of this program is from February to September.
Read and Apply Here: openmainframeproject.org
Open Summer of CodeOpen Knowledge Belgium organizes the program. It is also an Open Source project that allows students to work in teams and on innovative projects from different partner organizations. It is not necessary to stay in Belgium to apply for it, but it is necessary to work as a student under the Belgium rules and regulations.
Read and Apply Here: osoc.be
Some Bonus Opportunities:
CNCF Mentoring Initiatives: github.com/cncf/mentoring
Endless Vacation of Code: EVoC: x.org/wiki/XorgEVoC
Julia Seasons of Contributions (JSoC): julialangblogmirror.netlify.app/jsoc
Summer of Haskell: summer.haskell.org
Linux Foundation Networking (LFN) Mentorship Program: wiki.lfnetworking.org/display/LN/LFN+Mentor..
Red Hat Open Source Contest: research.redhat.com
24 Pull Requests: 24pullrequests.com/about
Thank You for reading the article. I hope this post will be helpful for you.
With love from Kriti Nigam ❤********