Open Source is an excellent idea. It proved itself to create large and complex products with a shared workforce. It also allows products to follow the input and guidance from several players. Products don't have to follow the demands of one company or their stakeholders. We build for the platform and the community, not for the next financial quarter.
Open source is a win for companies
For companies, open-sourcing their products means throwing them out to the scrutiny of the masses. People can contribute and build functionality the company hasn't considered as it didn't have that need. It is also an amazing opportunity for recruitment. Hiring people is hard and expensive. Cutting down on the time you need to ramp up a new employee is a real business benefit. Contributors are potential hires that already come with expert knowledge. It also is a way of ensuring quality. It is much harder to hide flawed code in plain sight than in a company internal repository.
Open source was my way in
I owe a lot of my career to Open Source and similar ideas like Creative Commons. That's why I keep contributing and publishing. Without shared, open, free knowledge I wouldn't have started working in web development. I couldn't afford Frontpage and couldn't find a cracked version. Instead, I downloaded the HTML and CSS spec from htmlhelp.com, opened a text editor and got on with it. This was a time where I didn't have any connection at home, so I needed the docs offline.
Starting with this, I always felt that being open from the get-go is the right thing to do. To pay forward what I enjoyed, so to say.
When I started, releasing open source and using open source products was not the norm. As a professional, you had to use professional tools, and why give away for free when you could make people pay for it?
Open source is now front and center
Now, things look different. Open Source has become a household phenomenon and it is not a small group of enthusiasts any longer. It proved its value and the size of communities and open source releases exploded.
The problem with open source is the same problem with many other things: people. Communication is hard and considering what you say and do before doing it seems too much to ask. I was pretty naive about this in the beginning, too. I thought that people who share things would be nice and open people. I assumed a lot of them would also be in on my liberal views on other topics. I was wrong. People are people and they come with their flaws and ideas, biases and prejudices. They also come with their own issues they deal with. Those influence how they communicate with others.
And communication is the life blood of open source. It is not about writing some code, throwing it out there and letting people deal with it. It is about building a community around your code. It is about triaging requests and features to other people. This ensures the product can grow and prosper when you are bored of it or your company stops sponsoring it. It is about making it easy to share, to contribute, to use and to tweak to your needs.
This doesn't gel with the image of the 10x developer and the drive for constant change and growth in the market. With lots of money and opportunity comes a lot of greed and arrogance. And thus, I keep hearing open source horror stories:
- The lone, burned out OSS developer crushed by millions of requests without empathy for his time.
- The arrogant coder who doesn't bother with documentation and rejects any contribution. Giving anyone the feeling of not being good enough to use the code as they don't understand it.
- The first time contributor drowning in an avalanche of negative feedback.
- The willing contributor shut out by overzealous code style and contribution guidelines
- Possible contributors failing to help out because the product's build process.
- Fierce competition amongst contributors with personal attacks and automated rejection of pull requests.
The problem reaches far. Open Source is getting a reputation for being arrogant, aggressive, hard to get into. In its most extreme way it gets as far as recommending OSS being a Code of Conduct violation.
Disregarding the questionable argument in this case, there is a problem. It is frustrating to see that an open, collaborative idea like Open Source is getting a bad reputation. One of being exclusive and discouraging, no less. The very thing it set out to disrupt and change.
Open Source should bring a positive experience
I've worked in OSS for a long time, and I have on the whole had a great experience. I also am a white man who comes with a lot of credibility because of what I have done in the past. So my personal experience isn't a universal one - by a long shot. I also had bad experiences. I've seen bigotry, arrogance and straight up malice. I've seen a lot of "play by those rules or leave the sandbox". I've experienced far too much "are you better than this other person?". I have experienced blocking by association and acts of other people affecting my reputation.
To a degree, things were much better before social media and the cult of the "persona". Things were better before we compared each other by our number of products. And before our online presence became a way to land a job or get sponsorship.
It might be time to move away from releasing for the sake of visibility and go back to the more human and collaborative ideas of OSS. Hiring a person who shows great communication skills and empathy in their OSS dealings is a great investment for your company. These are the people who will power long-term growth and stability. Hiring the loudest, most active and aggressive people is a good short-term boost. The tech press and shareholders love a "go-getter" and "innovative and disruptive" story. Keeping those people happy in a company is a different task though companies often fail at.
The same applies to open source rockstars taking their product to the next level by starting a company around it. I'd love to see great stories around that. Instead I see explosive growth with a rushed human side of an employment relationship . It is tough moving from coder to employer and company owner. You need to deal with a lot of human issues and being all about the "hustle" is counterproductive to that.
Disregarding OSS as an amazing evolution of software development and great idea based on the actions of individuals is unfair and makes no sense. The very fact that the human interaction is part of the process is what makes open source interesting to me. Consider the opportunities:
- You can learn a lot by contributing to open source
- You can build on the work of others and learn a lot by seeing what they do
- You can contribute from whereever and whenever
- You can contribute in many ways: code, documentation, bugfixing, testing...
- You learn about tools of the trade by contributing (build processes, linters, compilers...)
Of course, this comes with a flipside:
- You work for free. This shouldn't be a thing only for people who can afford to work for free. Open Source should be the thing to choose because you want to, not because you can afford to.
- Your contributions' currency is impact and feedback. If what you spent a lot of time on and effort results in a "this is not good enough" or "we don't work this way here" you feel short-changed.
- The quality of OSS products is so high, it can be daunting. It doesn't help to feel inadequate when you look into contributing.
- The sheer amount of contributions and length of communications around products is overwhelming.
That means we have to play by rules that run any human interaction. If we do that, Open Source might get a better reputation again.
- Assuming that people know what you know is never a winning move. Explaining what you did to others makes you learn a lot. You learn by teaching. So, instead of throwing out code and hoping it prospers, taking an extra step and documenting it is a big winner. You can collaborate on that.
- Moving our stance from "here is the solution for this" to a "here is a way to solve this, what do you think" invites participation.
- It is OK not to have time for people's contributions. It is not OK to snap at them or leave them hanging. A simple "sorry, I am not available right now" and asking for people to help you out with that is much better.
- We should consider the setups of possible contributors. Adding to a JavaScript package shouldn't mean downloading gigabytes of files or having a $3000 computer.
- Personal attacks are never OK. This is about people working together. You have no idea what's happening in the life of the person you try to "win" against. We all felt down and horrible at one time, remember that time and how you would feel is someone attacked you personally then.
- Just because it is easy to contact someone, doesn't mean it is OK to. Especially not when why you contact them isn't related to the project.
- Just because someone releases some code, they don't automatically become your help desk. They put a lot of effort into releasing this, it is fair that you are expected to put some into using it. Instead of demanding better docs, why not document your journey and contribute it?
- We all have different levels of skill. If someone isn't as "good" as you are, doesn't mean that person couldn't become a great contributor with time. That won't happen if you discourage them upfront. Yes, they may do things "wrong" from your point of view, but having someone else explain the why is more helpful than you venting.
I'd hate something that impactful and great being taken down by the actions of a few bad or deluded actors.
Top comments (6)
Great write up @codepo8 ! As a contributor and maintainer in OSS, this is spot on.
One good thing about the bad seeds is their comments are public in repos, so seeing that in the open is a free red flag not to hire those people.
Also, when people complain about a repo, the easiest response is "PRs are welcome!" ๐
On the good side of things though, I love OSS as a way to help others and share knowledge (as you mention in your post).
#
Great work everyone.๐
Keep being awesome and looking forward to your next post.
Really great read!
Yes, it's sad. I love OSS since I installed my first Linux distribution in '98.
I can relate to the horror stories you mentioned. I've tried to contribute to some Linux distributions (not important pointing out which one), and I left after few days in the mailing list. I just can't tolerate elitism and unfounded insults. Some things are more rotten than it looks from outside, sadly.
This is the article we have needed on this subject for a very long time. Thank you so much for writing it!
I have repeatedly been told how important contributing to open source projects is to my career in computer programming. In interviews, it has not been uncommon for me to be asked if I have worked on anything that is open source so the interviewer might observe how I write code in the context of a large project with multiple contributors. I have always had to admit, with some sense of shame, that I have not done so.
I was always intimidated by the complexity of FOSS projects as well as the semming level of expertise of all of the other participants. Whether it was reading pull request notes in Github, or posts on Open Source discussion boards and subreddits, I felt way out of my depth. There was no way that I would be able to contribute anything of value to those people. I expected any comments I made would be ignored, and if I dared to submit a pull request, the review of my proposed changes would read like a character assassination. Happily, I want to assure you that while there are some out there who seem to make a sport out of swatting down n00bs, most folks in the FOSS community are welcoming, helpful and patient. There is plenty of work to go around, and even the most rank beginner's efforts will be appreciated somewhere!
So, for anyone else out there that is interested in becoming involved with an Open Source project but doesn't know where to start, here are a few links I have collected that are for Open Source beginners. I cannot personally vouch for every project or contact you might find on these sites, but I will say that overall, these sites will provide you an easy entry into the Open Source world! Good luck!
firsttimersonly.com/
up-for-grabs.net/#/
gauger.io/contrib/#/language/javas...
(You are not limited to JS either. Select the language drop-down menu at the top of the left-hand column to choose from ~ 30 different programming languages!)
issuehub.io/
codetriage.com/
And finally, a good guide to best practices from the Linux Foundation:
linuxfoundation.org/resources/open...
Writing great code doesn't require good communication skills. But building a welcoming community does. Unfortunately a CoC does rarely help here. It can even worsen the situation, as seen in Katie's example - because it makes people with low communication skills think that their communication is good as soon as their point can be proven by written rules like a CoC. That's not what a CoC is for.
OSS should be a welcoming place, where we can learn from each other. Sad to see this kind of reputation ๐.
I'm currently volunteering in a citizen science project that involves a lot of data collection and there are similar issues with experts vs amateurs. Many noobs told me they are too intimidated to participate. Subject matter experts aren't always interpersonally gifted or even data savvy. Things improved after a motivated leader helped build subteams w/experts coaching the noobs, using each person's best skills appropriately, choosing weekly goals & focusing on those as a team. We have been crushing the targets, everybody's got a special interest, having fun, teaming up 1-on-1 for short term efforts, eager for the next challenge. "Maintainer" is still top dog setting the rules. But 2nd tier lieutenants who mobilize contributors & foster teamwork/respect keep quality & momentum going.