Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Your own project

Pro: You can decide on everything:

  • programming language
  • technology stack
  • architecture
  • code layout
  • testing

Contra: You have to do everything yourself.

  • programming
  • documentation
  • examples
  • design
  • logo
  • web site for the project

Drawbacks:

  • No users.
  • No cooperation from others (at least at the beginning).
  • No community.

Advice:

  • Something like that probably already exists. Maybe better finding it and contributing to that project.
  • Take an existing proprietary product and implement an Open Source alternative

Should you start your own open source project or should you contribute to an existing one?

When talking about Open Source or contributing to Open Source many people immediately think of developing something new on their own and "making it Open Source", that is, publishing it under and an Open Source license.

Writing your own project is really nice. It lets you make all the decisions in the world. It is also much easier to get started on a new green-field project than to contribute to an existing code-base written by someone else or even just finishing the one you have started earlier.

We all start projects in the hope that many people will use it, but the reality is that most projects have very few users. I personally started a lot of open source projects and most of them were never used by anyone. Some I have not even used myself. I think the 80/20 rule applies here even more to the extreme. 1% of the open source libraries are used by 99% of the projects and the a huge percentage of projects are not used by anyone. Not even the author.

As a practice to gain experience it is great to write your own project, but unless your project somehow hits that sweet-spot that makes it popular the impact will be small. Writing your own project, unless it becomes popular, also means you don't learn how to read other peoples code, you don't need to interact with users and developers who want to contribute to your project.

I don't want to discourage you from starting your own project, but I'd like to encourage you to also contribute to existing projects.

Here is an idea:

If you have an idea for a project start writing it. As you pull in dependencies check those dependencies and try to contribute to them and to their dependencies as well. This will give you the opportunity to experience both working on your own and having all the freedom to make decisions on one hand and working with other people within the constraints of their projects.