Software is a computer program or a collection of instructions with well-written documentation for a specific task in order to get use of a particular device. Software is built with a code base what we call the source code. The source code is a legal intellectual property. Therefore a software product has a financial value. Basically, there are two kinds of software by considering the availability of source code. Closed source software is distributed for free or with a cost for the license whereas others cannot view or modify the source code. Open source software is usually free and also their source code is publicly available for everyone.

Why open source?

Basically, open source is that source code is freely available for everyone. The code base is maintained in public and there is true transparency for the entire software architecture as well. Indeed, open source software is not just a project which has a public and open code base; A generic open source project has several common elements as per below.

Project Team – Project team consist of founders and project maintainers who take decisions about the project’s future. If someone is doing great contributions those contributors will be added to the project team frequently. Importantly, some projects were initiated by a single person. For an instance, Linus started his Linux kernel and Git projects by himself.

Community – Community has end users and contributors. The end user is the person who actually uses the product. Moreover, they may report bugs and submit new feature requests as well. Contributors usually help the project team in various ways to make the software product better. Perhaps contributors formerly behaved as end users.

Bug Tracker – Normally no software product comes with 100% bug-free label at first. But bugs can be identified by humans and fortunately they can be fixed as well. Each open source project normally has a database of bugs (aka issues or tickets). A bug tracker is an area to organize solved and unsolved tickets.

Communication Channel – Communication is the key to success in every collaborative work. Open source teams usually discuss things in the mailing lists(eg: Google forums, ezmlm and GNU Mailman) or via the real-time chat groups (eg: IRC, Slack, Gitter and Discourse).

Benefits of contributing open source

Contributing open source brings you a lot of benefits. Therefore many developers usually work on several open source projects during their spare time. See some highlighted benefits as per below.

– You will be able to gather a perfect tech experience

– Ability to improve technical writing skills and documentation skills

– Boost up your career route and add points to your dream job

– Ability to build up new business/tech related human connections to expand your network

Roadmap

M1. Build a good tech-related background

Software products are built with different kind of tech stacks and also by following different architectural patterns. Therefore it is better to study architectural patterns, design patterns and well-known technologies before you begin anything. If you have already worked with several software projects you can simply skip this milestone. If you already know such an architectural pattern or a design pattern used in a specific project it is very easy to get started.

Resources

📖 Software Architecture Patterns by Mark Richards – Free E-Book

📝 20 Subjects Every Software Engineer Should Know – Blog post

📝 10 Things Every Modern Web Developer Must Know by Will Little – Blog post

M2. Practice Git and Github fundamentals

When there is a collaborative work on a code base well-managed source code management is highly recommended. Most of the open source projects are using Git as the SCM(Source Code Management) tool and they use Github as the hosting service for Git repositories. Therefore Git experience and being familiar with Github are required skills to work with open source projects.

Resources

🎬 Learn Git in 20 Minutes on Youtube – Video

📝 Github Guides – Tutorial

M3. Learn open source basics

Every work has the best practices and standards which were initiated by experienced people and followed by many in order to maintain the quality of work. It applies to open source as well. It is better to go through things like best practices for commit messages, semantic versioning, open source licenses, contribution guidelines and the code of conduct for open source projects.

Resources

📝 How to Write a Git Commit Message by Chris Beams

📝 Choose an open source license

📝 Semantic Versioning 2.0.0

📝 A Code of Conduct for Open Source Projects

M4. Start contributing some projects

Select some interesting repositories and start working on those. The key thing is that before contributing a project it is always good to be familiar with it. In other words, use it before you help it. Therefore download the releases and try before you look at the bug tracker. If you face some problems you can raise an issue into bug tracker. Thereafter you may start submitting some patches for particular tickets.

M5. Become Apache contributor

Apache (aka Apache Software Foundation (ASF)) is a large open source software community which has thousands of people. They have their own working style which is known as “The Apache Way”. Every Apache project has well-designed architecture and a higher level of customizability. In fact, contributing Apache projects will improve your skills to work with large and complex software systems.

If you are contributing well, usually Apache project management team will invite you to become a committer or a PMC member. Being a PMC member or a committer of Apache project is obviously a good sign for your career profile as well. Becoming a committer or a PMC member in ASF is not hard. Select a project which matches with your interest and known technologies afterwards you will be able to do considerable contributions.

Resources

📝 ASF Project Directory

📝 Anyone Can Become A Committer

M6. Start your own open source projects

You may write your own libraries or frameworks or even simple code snippets for your own works or for your workplace tasks. Maybe someone like is you also looking for that kind of solutions, Do you like to help someone? Of course, you can share your work as an open source project just using steps as per below.

– Bring project stuff to one location and make a Git repository

– Select a proper license

– Push to a Github repository

– Improve the documentation and write a good Readme

For example, These two projects were initiated by me (with contributors),

⚙️ Neutralinojs – Portable and lightweight cross platform application development framework

⚙️ Jerverless – Turn anything into an on-premise serverless function

M7. Blog what you do and be more social

Blogging is a very good approach to build an audience for your open source projects. Introducing your projects and writing how-to type blog posts would be nice for your future community. Nowadays, the Medium platform is a very good choice for everyone since it gives you a blogging platform and also a considerable traffic source too. Also sharing your blog posts or documentation materials on social media, chat groups or via a youtube channel is also better to build your audience.

M8. Stay in the loop! Please

Open source is not really a fire and forget kind of thing. It is rising with time. For an instance, Nodejs was initially released in 2009. But it is still improving and collecting stars on Github along with the time. Therefore when your open source project is growing, you need to identify good contributors and give them write permission, it will motivate new contributors as well. Reviewing opened pull requests and merging those frequently and also responding tickets are the key signs of success.

Open source makes money. No lies

Someone may think contributing open source is like doing work for others for free with no return. It’s wrong. Open source really makes money in various sorts of ways. If your open source project is very close to the research category, companies will help you to continue your work by granting funds. Also if your open source projects are more related to enterprise level then open source business models can be used in order to build a successful business.

Resources

📝 4 successful open source business models to consider

📝 5 Ways to Make Money With Open Source Software

Conclusion

Open source is a collaborative approach to build or maintain software systems. Therefore a lot of people love to engage with open source projects since it brings awesome benefits to their profiles. Thus, it is a great way to show your tech skills to outside. Open source approach enables to you enjoy programming, learn, get more reputation, get jobs and also to make money too.

Happy Coding 😎