We are not ready for Open Source
I am in the mobile business, more specifically in the iOS and web industry since 2007 (as fully employee, I started little before with small contracts), soon it would be a decade that I am doing this for living. My personal opinion about Open Source software never evolved, I always thought and still think that Open Source is just amazing, it doesn’t really matter to me the type, goal, spec or target of a project, of course as long as the intent is not to hurt or offend (virus, malware, etc…).
In the last couple of months, instead, I started changing idea about how people deal with Open Source software and how they deal with it, in the past I was probably really naive and blind on some aspects of Open Source and how the community deals with it and I had a very sad conclusion: we are not (still) ready for Open Source.
Ok, time to have context, because saying this without an example is like throwing a stone then hiding the hand (classic Italian slang).
Earlier last week, Kapeli released Dash for iOS after all the storm that involved him and the app removed from the Apple App Store for alleged review manipulation, which I still find extremely weird as reason because this is a niche product, but I don’t want to discuss this here.
Of course, the announcement this app would be Open Source went viral in the iOS community and people started to look inside the code that powered one of the most loved apps for developers. It did not take too long for the first comment appear and disrupt the event:
Disclaimer: I know Patrick personally very well.
The result of this tweet went far beyond any expectation with extremely and negative effects. The purpose of this tweet was to show and start a discussion about a misusage of the
if statement that seems pretty clear here. Long
if don’t scale, are hard to maintain and they literally scare newcomers. There are plenty of different ways to handle the same thing, but this is production code and sometimes hacks are the best and fastest way to get the product done and shipped on time. I think I saw, wrote and agreed on similar things many times in the last decade to comply with milestones and timelines.
Right after a retweet storm, some people started to reply, here’s few examples:
@BalestraPatrick this is why people are afraid of open sourcing their code, already 200 RTs 😢— Felix Krause 🚀 (@KrauseFx) November 15, 2016
@BalestraPatrick the person who wrote that is likely still alive. We should find them, and remove their fingers to prevent any more of this— Mark aka Zoe (@nuintari) November 15, 2016
We have a big range of reactions, I let you deal with it because comments here are worthless.
The general level of the discussion went from a single tweet about a long (probably generated)
if statement, to the current social status of Open Source empowering the lovely politically correctness which appears to pop-up when people have different opinions and don’t have a strong reputation to shield themselves.
Patrick wrote that tweet with the sole intent to show that special case and point out that it can be improved, in fact I was expecting most of the replies to be about potential solutions to solve the very same problem in a more elegant(?) and scalable(?) way, instead the outcome was that it generated 3 kind of groups:
- people discussing the issue and proposing solutions
- people making fun of Kapeli’s code and pointing to Dash as bad resource, even suggesting extreme and crazy acts
- people criticising Patrick for pointing out a special case in the app and suggesting/recommending for a PR instead of discussing this on Twitter
Let’s make this clear: the last 2 groups are extremely toxic and unfortunately they seem to be the ones highly populated. Everyone has the right to disagree with the post and explain why that code is/was a necessary hack, I am pretty sure Kapeli had more than a good reason to use that code in his app and, reading the comments he posted in Github, he was also aware of the problem.
Unfortunately for Patrick and Kapeli they don’t seem to have the same reputation and background of some others that keep bad mouthing out in the wild on Twitter without receiving the same amount of criticism and offences they received. To be honest I am feeling confused to be part of a community that doesn’t know how to handle with criticism and that naively tries to raise the politically correct flag as soon as someone has an opinion that goes slightly out of the not-written bounds.
Unfortunately all this mess changed my opinion about how people deal with Open Source. Criticism is part of the the process to improve, we learn by failing, not by getting it right at the very first time and critiques, as long as they are constructive, are part of the process. We are humans, we make mistakes and criticism is a way to understand it and to improve.
Open sourcing a project is a big step, open sourcing a production code that was monetizing only few weeks ago makes the whole thing even more extraordinary, but this doesn’t mean we can’t express opinion about it and that we can’t talk about parts that according to us can be improved. If we follow this path, we will go simply nowhere.
At the end, I really encourage all of you who criticized either Kapeli or Patrick to read what the former wrote about this case:
I am encouraging people to discuss/criticise parts of my code that aren’t so great, while keeping it civilised. I’m not encouraging anyone to make fun of my work as a whole or of my programming skills, just individual pieces of code. Bad code needs to be discussed. We can do that kindly and without insulting someone. Trolls will always be around on the Internet, we should not suppress our discussions because of them.
Also: discussing on Twitter vs GitHub has the advantage of reaching more people which can learn from it. This does have the drawback of trolls insulting, but we should shame the trolls and not the person that started the conversation.
I also encourage all the ones who replied to Patrick to do a PR instead of posting this on Twitter to just think about how many times you made a PR for similar things on open source projects instead of opening an issue and wait for the fix to magically appear. I want to conclude this post with the following quote of Evelyn Beatrice Hall (which most of the times is wrongly attributed to Voltaire):
I disapprove of what you say, but I will defend to the death your right to say it.
We can disapprove of someone, but we have to defend his right to say it and lifting a critique about a single statement as general critique to the Open Source movement is totally unfair and strips away everyone right to have an opinion about something that is publicly available.