Source:
https://xscode.com/583/5-things-i-learned-about-open-source-developers/
I’ve spent the past 12 months working intensely with open source developers. In previous ventures I worked on, my teams and I used open-source libraries, but this was the first time I actually crossed the lines from just another faceless person git cloning some code, to actually meeting the people behind the repository. It’s been (and still is) an enlightening journey.
Strictly speaking, I’m not a developer myself. I can write code, but trust me – you wouldn’t want to read it, let alone run it. I feel more comfortable on the product side. As a product manager and entrepreneur, I worked with a lot of software developers over the years. During that time, I’ve developed a deep appreciation to the trade and its unique craftsmanship. But open source developers, mainly those who start their projects from scratch and the developers that help maintaining them over long periods of time, have always been a mystery to me. Kept being amazed by how those developers created intricate pieces of software, spending countless hours of their spare time, over months and years – solely out of their own volition.
I Can’t think of anything remotely similar happening in other industries, and the past year really caught me off guard. I wasn’t sure what types of people I’d find behind the projects, but let me tell you – it was worth it.
They’re not JUST smart
Developers are smart. They have to be. Writing code is an incredibly complicated task. The sheer brain power required to perform even some of the most basic tasks that from a users’ perspective seem obvious to non-programmers, would blow your mind if you’re not accustomed to it. I always say that working with developers is both extremely rewarding and extremely tough, because you need to deal with the smartest 1% on the planet. As such, they are demanding, and sometimes just trying to keep up with a developer trying to explain some complex concept, would cause my head to spin.
But open source developers have something extra. A lot of software developers spend most of their time working on tasks that are handed down in hierarchy. In many cases the developer has little say about the why. Developers have a lot of leeway on how to perform a task, but rarely do they have the chance to partake in the why they are doing it.
Open source developers not only have the skills to code, but also have the foresight and systematic point of view to decide the what, the how – and most importantly, the why. It might seem trivial, but the why is the most important part of any software project. If the why is week, the entire project might be useless. Open source developers who start projects from scratch, usually have a highly developed sense of why that burns so hard, they just cannot sit back. They have to do it. They have to code. This sense of purpose, of knowing the why, combined with extreme technical prowess and curiosity – is a rare quality possessed by few.
They have more than passion
The burning sensation I just mentioned is something that a lot of us feel sometimes. We all have ideas we’re sure are great, but only a handful are willing to actually grind and put in the time and effort to execute them. It takes an extreme amount of passion to keep an open source project going for years. Only those who have a true passion for solving a problem, can go through the long and tedious process of creating and maintaining a useful, stable, production-grade project.
This problem solving passion is what drives many of the open source developers I’ve spoken to. Both the developers who created the projects, and the developers who help maintain them. It usually starts with an issue they encountered in their day job, that made them wonder “why isn’t there a solution to this problem?”. There is a wide chasm that stretches between “there’s a problem” to “I’ll solve this problem so everyone else can use my solution”, and only a select few cross it. When the problem they started with is solved, it’s their passion that drives them to continue exploring, develop more features and push the envelope further. There’s no boss. No JIRA tasks. No deadlines or clients waiting for builds. It’s pure passion.
They keep going
I was born in Israel. Many call it the Start-up nation, since Israel has the highest ratio of startups per capita in the world outside of silicon valley. I think it has something to do with the entrepreneurial spirit Israelis are instilled with from birth. But along with success stories like Waze, Wix, Fiverr and Mobileye, there are a lot of ‘want-epreneurs’ around. It’s probably not unique to Israel, but as a local I can tell you I’ve met quite a few. People who think they have a great idea and can ‘talk the talk’, but lack the persistence to ‘walk the walk’ and actually put in the work to make it happen. Making a great product takes time. A lot of time. An idea is not enough, you need persistence to push things through.
Open source developers and maintainers have the unique ability to persist working on a project for a long time. No project is perfect at version 0.0.0.1. It takes time, work and discipline to continue working on something and make it actually usable. When I sat with some developers, going over their earliest versions made them laugh. Persistence is what made them go from a few messy functions, to complex projects, used in thousands of commercial applications.
They are the unsung heroes of code
I was going through some early commits with a developer, trying to understand how his project went from about 100 lines of code, to a massive library of Vue components he’s been developing for more than 3 years. Turns out many of the features and components he developed, came from requests some of his early users sent him. He told me that he was so happy others were using his code, he felt obligated to help them out and develop what they had asked for.
Try comparing this to any other profession. Other than volunteers doing charity work, I cannot think of one professional lending his hard earned expertise, and little spare time, to help others working on commercial projects that are none his concern. True, the developer I mentioned was helping fellow developers who were not directly making money off of his code – they were working for the companies who did, but have you seen any lawyers drafting contracts for free for other lawyers who are not sure what to write?
This pure selflessness and capacity to share their knowledge is something I am hoping humanity will find in other places, not just programming. If we could save the world with code, I’m pretty sure open source developers would be leading the way.
They are under-compensated
Open source developers are not in it for the money. Clearly, right now, there isn’t any. They do what they do thanks to the reasons I wrote above. Lucky us! But having interviewed dozens of open source developers, I started seeing cracks in the wall. Overworked, under-appreciated and sometimes even overlooked, open source developers are slowly realizing the harsh reality of under-compensation for their efforts.
Open source became so common, we rarely stop to think about the people behind it. Working in commercial software companies, we use open source components for almost everything. They are truly everywhere. I’ve read that 90% of commercial software developed today has some reliance on open source components or systems. These components became so common, you don’t even think twice before using them.
If you worked on any commercial software and used an open source component – have you ever thought about the countless hours and sleepless nights that person or team had to pull so you’ll have this incredible piece of software that just saved you months of work? True, some of us contribute back, but only a handful actually develop code from scratch for others to use.
If we want open source to keep growing, we need to understand that the good people behind it are not compensated enough. Actually, they are not compensated at all. When a developer takes the time to handle bug fixes, work on new features, support new framework versions and more – without ANY form of compensation, it might not last. I’ve seen numerous open source projects get abandoned by their developers because they just didn’t have the time or resources to continue working on them. Too many bug reports, too much work to continue developing more features, handling security issue, adapting to new technologies coming out. Open source developers never asked for money, but if they don’t get the resources they need to keep developing – we all stand to lose.
Conclusion
Open source is an incredible thing. Sometimes it feels like electricity. We all use it, but rarely think about what would happen if it were gone. The people with the rare traits described above, along with a unique combination of conditions, made open source what it is today. Ubiquitous. Free. Plentiful.
It seems to me the software industry needs to take a long, hard look at open source usage, and start thinking about how we can make sure open source developers have an incentive to maintain their projects, and make sure the next generation of developers will create the next generation of open source projects – for all of us. If we don’t make sure to provide developers with the best conditions to keep going, even the smartest, most passionate, persistent and selfless of them all, would just might stop. Or just make their repositories private.
Top comments (15)
Really great article. As an open source developer let me do some code review 🙂. The article is quite long and will look way shorter if you list out the five point, I mean the title has a number attached. Also consider using gifs and images where possible to keep the article interesting you know how inpatient devs can be at times especially when it comes to reading. Nice piece man
Great article, as an open source developer myself, I totally agree with the compensation thing, I have made around negative 400 USD on my projects and I am testing it on a ROMed S4. to be fair no big corporations use my project and it isn't in a stable release (yet). but I have a feeling that if big corporations do end up using my project there not going to care that some dude in Oregon is trying to make an open source project for anyone to use without ads. To be clear I am not asking that any normal average user give any money and I don't want to force anyone to give money, I just wished 'they' had an idea of the effort put in to the software they get for free.
At my previous job the company owner was surprised JetBrains dared to ask for money to use their IDEs.
When I asked for the company to pay for the license I'll use (only) while I work there I was rejected in a terrible way. It felt like my superiors were screaming "why the hell can't you use notepad, you lazy developer... Why do we even pay you?".
Again, I'm talking about IDE I thought it would be the best choice for me to develop the code my boss requested.
(for what is worth, I ended up buying my own license from my first salary and then resigned).
My point is that some companies can't even understand why some tools cost money, let alone the hard work, sacrifices, time, money and all the rest open source devs put up to produce those beautiful lines of code... (all code is beautiful, regardless if it works or not.)
👏👏👏
Thanks, but we're not really that smart... I mean, plenty of other occupations require at least as much or more brain power - doctors, mathematics, astro-physics, the list goes on and on... Writing a program is just like writing in any language - designing code is harder but still no where near what you describe (top 1%).
Anyway, good article, thanks!
Writing code is in no way like writing in a natural language. Programming has much more rigor, both in it's design and in it's implementation. It is more akin to writing a mathematical or logical proof.
Well, yes and no. True, the rules are more rigid and there's very little room to play compared to a natural lanugage, but still, the code writing is not the hard part, which was my main point (though admittedly, not so clear in hindsight)
Having evaluated a lot of open source code as well as closed source, I also have a few observations. Open source code tends to be more poorly engineered, poorly planned and poorly maintained. I blame some of this on the abominable practice of tdd as well as agile development.
5 Things you learned but you didn't give numbering bullet ._.
This article is soo well written that it made me feel bad for the critique it received.
Maybe the title suggested something you didn't find whe you first open it(bullet points), but if it caught your eye you should read it in order to figure out what it is actually about.
I skim some articles that are long and did not saw 5 things he learned. Not an intuitive to read.
He used subtitles for each thing he learned
Great writing, you're are right. I've been there as an open source person, I did get a few compliments but that was it. Oh yeah worked on it for years 😣
The article was helpful, The article is quite long and will look way shorter if you list out points
Great article, thanks for sharing..