Open-source software is the foundation of the tech world today. Developers rely on countless popular programming languages, frameworks, and libraries. Yet, behind every open-source project is a person or a team dedicating their time to maintaining it.
Today, we have
(Engineering Beans) to share his journey of maintaining an open-source project. He highlights five reasons why he dedicates himself to it. If you've ever considered contributing to open source (or wondered why others do), I definitely encourage you to give it a read!Let’s Start
Team dinners are a great way to get to know your colleagues outside of work. You can learn about their hobbies, what books they read, what motivates them, and what personal projects they are working on.
At such an event, I shared with my team that I maintain an open-source project and how proud I am of it, even though it’s not that popular.
But when I was asked why I was doing it, my mind blanked. I’m a why-driven person, but for some reason, I never actually considered this rationally; it was more of an emotionally driven decision.
So the question stands: Who in their right mind would spend their time, energy, and money on developing software for others to use for free?
Well, it turns out that a lot of people do.
In 2023, GitHub alone had over 284 million public repositories and 4.5 billion contributors, and the numbers are growing. As I said, there are a lot of people.
I’m just a tiny fish in the big ocean.
What follows are five rational reasons that drive my inner motivation to maintain an open-source project.
1. Speed Up the Development Process
When I was an iOS app developer, part of my work required implementing user forms and validating the user data.
The first time I had to write the validation module in my apps, I had a lot of fun. The second time, I had ideas about how to do it better, but the third time, I was already reinventing the wheel.
So, I’ve extracted the whole functionality into a package and imported it into all my projects.
Afterward, every time I needed data validation into an app, I could simply import my package and, instead of having to write the validation module once again, I could focus on the features that were unique to that application.
Then, I decided to publish my package on github—I named it Peppermint—and made it available for others like me, might be tired of reimplementing the same validation logic again and again.
The same is true for scaffolding new projects. While it’s nice to start clean and set up the project from time to time, it becomes daunting when you have to do it all the time.
The idea is to stop wasting time on repetitive tasks and focus on implementing the real deal—features that bring value to our users.
2. Practice the Best Practices
Talking about scaffolding new projects.
When you implement the same kind of project over and over, patterns and best practices start to emerge.
One way I use open source projects is to create scaffolding projects. They serve as a starting point whenever I begin a new project
With every lesson I learn and every time I find a better way of doing something, I update my repos to reflect that knowledge. Thus, the next time I have to start from scratch, I will have an advantage.
These projects are different from frameworks and libraries. If the framework has an opinionated approach to doing things, the scaffold project provides only a starting point, allowing the project to evolve and adapt to the business needs. The advantage is that it removes the hassle when setting up the project: architecture and design guidelines, unit testing and acceptance testing, linting and code guidelines, base entities and data structures, templates, and many more.
I like to call them seed projects because once they are planted, they grow and adapt to the business requirements.
One such project is the API-seed that I use to start new API based services.
3. Keep My Knowledge Up-to-Date
Programming languages, frameworks, and libraries of all sorts continuously evolve. New ones appear; once the shiny new toy, now gathering dust on the shelf.
If not continuously, at least once per year, new tech, new capabilities, or new features are released by software manufacturers all over the world.
That’s also the case for Swift, the backbone for app development in the Apple ecosystem, and the language I chose to write the Peppermint, the data validation package.
When I moved away from mobile app development, I decided I wanted to keep up with the technological advancements in Swift. So, every year, I learned about new language features and integrated them into the framework.
Instead of creating playground projects to test out the new language capabilities, I could implement them into a project that is used in real applications.
Over the years, I extended Peppermint with declarative API and support for modern asynchronous features.
4. Use It as a Resume Extension
Maybe this is not the case for you or me, but it’s clearly a phenomenon in today’s culture.
University graduates find it difficult to get jobs because they lack real-life experience. I believe that starting an open-source project can compensate for this lack of experience.
In case you don’t have any idea where to start, you can find a project that you resonate with or that you already use in your projects and might benefit from your contribution. In exchange, you build your reputation and extend your resume with solid experience.
Adler makes a strong case for starting to contribute to open-source software and how to find projects that resonate with you.
Maintaining or contributing to open-source projects is also a great way to develop new technical and human skills. The newly acquired skill can then be used in the projects you work on or mentioned in your resume.
When you contribute to existing projects, you’ll receive feedback on the code that you submit and that helps you sharpen your technical skills. Every pull request that you open has the potential to become a positive-feedback loop for you to improve your low-level hard skills, such as programming language features or frameworks best practices, to broader skills such as design patterns or clean code.
Beyond the technical benefits, contributing to open-source can also be a great way to improve collaboration skills. Popular open-source projects often have high standards for code quality, with strict processes like CI, linter checks, and well-defined PR guidelines. New contributors might find it challenging at first, but over time, they learn to navigate structured workflows and best practices for team collaboration.
Of course, this varies—while large projects have rigorous standards, smaller or personal open-source projects tend to be more flexible.
5. Give Back to the Community
It is no secret that startups use open-source software to accelerate innovation and agility in a highly competitive market.
Not only startups use open-source, but even the more established companies use it to grow their business. Take, for example, Things, the iOS and macOS personal task manager, which uses Sparkle to enable the in-app update feature.
But maybe Cultured Code, the company behind the Things app, is not that big. How about Microsoft? They built their Visual Studio Code editor on top of Electron, an open-source solution for building cross-platform desktop apps.
Isn’t it amazing how open-source enables great software to be built?
I also use open-source software in my projects to gain a competitive advantage. However, I consider it my duty to give back to the community and help it thrive.
There are many ways to achieve this. One is to publish your open-source software so others can benefit from it. The other is to contribute to existing software by fixing open issues or providing improvements.
Last Words
Really appreciate Alex for sharing his experience. Remember to check out his newsletter Engineering Beans!
And thank you for reading the post!
❤️ Click the like button if you like this article.
🔁 Share this post to help others find it.
Resources
Tokyo Tech Lead is a blog/newsletter for engineering leaders. Check out this overview guide for all resources it provides.
Contact
You can find me on LinkedIn or Substack.
If you want more content like this, consider subscribing to my newsletter.
See you in the next post!
Hi Adler, Apologies for writing this here. I understand this might not be the best place.
I'm working on a product called Quri, a specialised voice agent for newsletter consumption and would love to share about it with you and get your thoughts on it given your expertise.
If it helps I can share the product walkthrough video as well. But yeah, your support would be really valuable and I'd be super grateful. Kindly let me know if we could chat. 😊🤌🏻