If your are like me you most probably have created some pet projects to help you learn new skills, try new technologies, create that product that you need or just keep your brain entertained with some new hot stuff... I think it's also called procrastination.
But if you haven't yet created any pet project then I really encourage you to do it. I personally have learnt a lot and that has helped me take my team into the next level. Man... that weekend learning about Kubernetes really paid off!
Truth is, like many others projects at some point yours will also become outdated, obsolete and most probably abandoned.
So why not give it another chance?
Open source your project!
Some of the benefits of open sourcing your projects:
- Help others learn from your experience
- Learn how to receive feedback on your
- Get other point of views and different opinions
- Become a mentor
- Learn how to build and foster a community
- Give the community real-world examples of real applications
How to open source a project
Steps to open source a project
Choose the project
Choose the project you want to open source.
Remove sensitive data
It is important to remove all sensitive data like passwords, credentials, keys... because once the project is published it will be available to anyone on the Internet.
Find the right license
Having the right license for the project it is really important as it will dictate how other can modify and distribute your work. A good place to start is https://choosealicense.com/licenses/mit/.
- Publish it to a repository hosting service
- Share it with the world
Build a community
Time to start building a community around your project so you can get other people to collaborate with you.
Why I think is a good idea?
There are a lot of technical books on how to write good code and how to refactor legacy code, however I find the code examples on some of those books too pre-fabricated and not aligned with what a real project might look like. Especially when several pieces need to work together e.g: caching, background jobs, services, API calls... all in one application.
I personally believe that is a good idea to show other developers not only how to write awesome code but to show them how bad code can look like, how to detect code smells, why it is not a good idea to take certain decisions at certain point of the project lifetime or simply just to learn how to refactor legacy code and apply design patterns to different architectures. All of that in a real production-ready application.
Feel free to share and contribute!