The Dark Side of Open Source

A friend writes:

David [her boyfriend, not his name] learned some of the new languages (Android being one ). He says that any programming involving Open Source software requires wading through undocumented code, sloppily written by guys who de facto require one to email them, asking for technical support.

And without the cooperation of these people, one has no chance in hell of figuring out what the next command syntax should be. And a lot of the guys who wrote the code are reluctant to cooperate, because their knowledge of how their own code is supposed to be written and how to run it is their only job security.

Coding for very simple operations, such as connecting an external camera to an Android cell phone, has been proving impossible. He’s been working on it for 10 days now.

David has tried several flavors of Linux kernels and also several brands of smartphone drivers. But it always comes to the same thing. The software won’t run, and there are maybe one or two wrong characters in 20,000 lines of code that made it break, and you don’t know where to start looking. Because the error message doesn’t tell you anything other than it won’t run.

To be fair, I use R (which is open source) many times every day. It has far fewer bugs than the S-plus software it replaced. That it’s free is a huge plus.

15 thoughts on “The Dark Side of Open Source

  1. Also to be fair, you can get those same kinds of problems (sloppy code, useless error codes, and small syntax errors – sometimes involving invisible characters) with just about any code that you’re working on.

  2. Hi,

    Couldn’t help but smile at this one – as Jill suggests above. none of these characteristics are particular to Open Source, and this seems to me to be a case where correlation does not imply causation! Equally in tune with the spirit of your blog, I’d suggest that your own daily experience is of more value than the assertions of a 3rd party…

    ;-)

    On a serious note, I use Open Source s/w for preference where I can, because the support is so much better, I think because people who have shared a problem enjoy sharing the solution. I also have to say that the assertion that “a lot of the guys who wrote the code are reluctant to cooperate, because their knowledge of how their own code is supposed to be written and how to run it is their only job security” is not true of any Open Source community that I’m involved with.

    Cheers,

    PhilK

  3. “Coding for very simple operations, such as connecting an external camera to an Android cell phone, has been proving impossible. He’s been working on it for 10 days now.”

    With closed source software such as the iPhone the task is also impossible: https://stackoverflow.com/questions/12037169/is-it-possible-to-connect-an-external-camera-module-to-an-iphone-audio-jack

    There no reason to expect this task to be easy. Smartphones aren’t designed to make it easy extend them with external cameras.

    “The software won’t run, and there are maybe one or two wrong characters in 20,000 lines of code that made it break, and you don’t know where to start looking. Because the error message doesn’t tell you anything other than it won’t run.”
    That’s a silly proposition. There’s a debugger that you can run to see where a program crashes. In Android you also have a log that provides you plenty of information about your program.

    David’s girlfriend doesn’t seem to understand much about programming and is maybe not the best person to fairly describe the downsides of open source.

  4. Just think how amazing it is that you can write a program that can interact with a freaking camera on a phone! That you even have a chance of trying to do it outside a corporate laboratory… and for almost no money down… is amazing.

    The argument that open source people obfuscate and hide their knowledge on purpose to keep their “knowledge” valuable is absurd. Yes, things can be complicated sometimes and issues can be undocumented, but that is not “on purpose”. It is just that life is complicated in general.

    Obviously, if Linux crashes and you email Linus Torvalds, he is not going to get back to you and explain how to fix the problem. But this just says that resources are limited while problems are plentiful and hard.

    There is much evidence that the authors of successful open source software go out of their way to help. What the author of these lines lack is perspective. Documentation? Go to Amazon.com: there is probably more books on programming with open source software than on any proprietary software (except maybe for the Windows stack).

    I am not saying that open source is always the best model. Sometimes, in practice, proprietary software works better. And there are evil people involved with open source software, I am quite certain of that.

    But the values behind open source are nothing like what is being described here. The programmers who pursue open source have motivations similar to the wikipedians. Sometimes they screw up, but they are very much motivated by the common good and by the hope that if they help people enough, their own status will rise up. Reputation is almost everything in open source and people care very much about it. They don’t obfuscate their work on purpose, and they try their best to produce the very best software they can (given the resources they have).

  5. Sounds like the dark side of embedded hardware to me. Not unique to open source.

    There’s a community of Android modders who flash their phones to upgrade the Android OS a lot. When a new mod comes out, it’s common to see a bug list like, camera and MMS don’t work yet.

    Open source really is amazing in the macro but depending where you are in the open source world, your experience might be better or worse.

    Android’s relationship with the upstream Linux Kernel, for instance, has been a lot worse in the past. https://lwn.net/Articles/514901/

    I think your friend was very unlucky to end up in a bad spot. If he had been trying to build a web site with open source software he might have felt differently.

  6. One thing I like about open source software is that it has the potential to be better than commercial software due to purer motives.

    The purpose commercial software is to make money. Ideally the developers do this by providing the best software they can, but inevitably design choices will be influenced by the need to sell it (i.e. adding features vs. fixing bugs, flashy vs. useful interface, advertisements embedded, etc.). Anyone who has used software with the word “Enterprise” in the title knows what I’m talking about.

    The purpose of open source software–it’s only reason to exist–is to be good at its task. So the developers don’t have any motivation besides making the best software they can. It removes 1 layer of obfuscation between design and implementation.

  7. Another point about Open Source software: Sure, the developer may have moved on to other things, or doesn’t provide support, but at least they provide *source*, so you (in theory) should be able to figure it out.

    Try *that* with proprietary software.

    As most other posts have said, it’s usually a matter of complexity, and familiarity. Any large source base is going to be pretty opaque unless you’ve worked with it quite a bit.

  8. “Coding for very simple operations, such as connecting an external camera to an Android cell phone, has been proving impossible. He’s been working on it for 10 days now.”

    That’s not a simple operation at all, it’s a hard project for a domain expert. I am not that domain expert, but I can see the overview, and it’s likely that David’s in *way* over his head.

    Android didn’t support USB host mode at all before version 4, and a lot of hardware still doesn’t (for electrical and power supply reasons, not just software reasons). Notice that this is the most recent version – ie, it hasn’t been iterated on at all yet. Then you not only need to write a USB camera driver, against brand-new and therefore buggy APIs, none of the userspace camera libraries or apps support hot-swapping either, so you need to spin up in two more project contexts (a total of three distinct codebases to modify).

    It’s not a documentation problem, a syntax problem, or a needle-in-a-haystack problem. It’s mostly a domain knowledge problem: you need to know kernel development, and to have done it on a well-trodden path in a more forgiving context. Implying that developers are skipping documentation because it gives them job security is highly implausible. (It’s because they’re busy making things, they’re not good at writing, they’re not good at modeling what other people don’t know, and/or they’re lazy.)

  9. That is just silly. Consider the motivation of the developers of any significant open source code base? It is pride and glory. You don’t get that from submitting crappy software to github and then living life defensively over it. Just doesn’t make sense. Some devs can be condescending because, frankly, they are just that damn smart but most find a sense of purpose and worth in helping others with their software and most open source projects are a hell of a lot better documented than most closed source projects because a lack of documentation or bad docs is considered a character flaw, countering the motive for publishing open source to begin with, glory. My guess is this individual has been raised on the idea that things should be easy versus simple.

    Seth: Are you saying your experience with open source has been different? Lots of predictions about human behavior based on theories about “motivation” have turned out to be wrong.

  10. My best guess that for a lot of people, writing programs is more fun than designing good interfaces and doing user support.

    If you’re lucky, the open source writer does care about the interface.

    Even so, programmers probably only want to answer interesting questions if they’re not getting paid. Again, this is a problem if they also want open source to rule the world.

    However, I doubt very many programmers are deliberately hiding how to get good use out of their programs.

  11. Also, just to add a bit of salt in the wound, Android is far from typical open source. It (at least Googles version of Android) is mainly being developed by one huge company who makes money on it, just like iOS, Windows. Google makes more money if Android is easy on the developers, just like Apple.

  12. The internet runs in large part on Open Source. Just take Apache as one example. The fact is that Open Source software that gets a lot of use will be stable, but as you get down to much smaller projects they won’t have gotten the attention and scrutiny to be as good. Similar to the way the accuracy of wiki articles increases with the number of contributors.

Leave a Reply

Your email address will not be published. Required fields are marked *