Wednesday, December 4, 2013

What Open Source is (and isn't) and why you should use it?

Youth beach party
Open Source software plays a big role in the Java ecosystem (just think Maven, all the libraries in Maven Central, Gradle, OpenJDK, Ant, Ivy, Eclipse, Ant and so on). There is also a periodic "oh sh*t" moment when people deride OSS and declare it unreliable, risky and other things (perhaps the most recent one being the discontinuation of GlassFish by Oracle).
Because of this I decided to write this post to show how Open Source is a great idea (if you keep your expectations in check) and why you should use it.
First, lets quickly run trough what Free/Libre or Open Source Software is and then delve into each of the points and see why they are important:
  1. You have access to the source code and you can build the functional end-product yourself
  2. Accepting the license gives the user some rights usually not granted by proprietary software
  3. There is a community around the software which accepts contributions (bug reports/fixes, documentation, new features) and all the processes (like bugtracker, discussions, etc) are in the open, accessible to every user
Note how I didn't say anything about money there: F/LOSS is about freedom ("Libre") not price. It is perfectly fine (and legal and in the spirit of the license) to sell a F/LOS software for money - although it is rarely done.
1. Access to the source code and a way to build the final product
This is what most developers think when they hear "open source" and the advantages are clear to all of us: looking at the source code makes it easy to understand the functionality and debug problems. Yes, you get documentation, but that can be outdated, hard to understand, plain wrong or missing your use-case. Also, you can debug any software using tools like decompilers or system-level debuggers, but the effort to do so without the source is much greater.
Compare this to proprietary software: you get documentation (which may or may not be usable) and some support which usually has a 24 hours turn-around time and needs a couple of back-and-forths until they can solve your problem (if that can at all - and yes, I'm talking from experience here using tens-of-thousands of dollars worth of "enterprise" software).
Also, in the 60's and 70's (until the paranoia of "intellectual property" set in) much of proprietary software was distributed as source code exactly for this reason - to lower the support costs and make customers happier.
Note: the a way to build the final product part is important (and codified in the F/LOSS licenses). Otherwise companies could just give you a bunch of source files without the Makefile / build.xml / pom or even worse: say "sorry, we compile this with our in-house compiler which you can't get", circumventing the spirit of the license.
2. Using F/LOSS products grants some rights not found in proprietary software
But first talk about your obligations: as with proprietary software you have some obligations if you use the software - you accept not to hold the producer of the software liable for any damages and usually you wove not to sue the producer for patent infringements.
Compare this to proprietary software: you still accept such (or even more draconian) terms and you must do so before even taking a look at the software and before knowing if the software is fit for your usecase at all. Look up shrink-wrap license.
In addition to these restrictions F/LOSS licenses give you some freedoms not present in proprietary licenses:
  • To use it for any purpose (some proprietary vendors prohibit you from doing benchmarks of their products for example!)
  • To study how it works (the most important for developers)
  • To redistribute it and
  • To redistribute modified versions
3. Transparent community
This is the final part of the puzzle. A project which doesn't accept changes and the discussions are not done in the open is not truly open-source. Conversely, for really open projects you have a vibrant community and a very good chance that someone else already encountered and solved your problem (no, we are not unique snowflakes - probably someone else has already struggled with our usecsae).
Final words
So we've seen what open source is. Now let me say a couple of words about it being capitalistic / market friendly: you can pay for the level of service you desire. You can even get support form different, competing companies (something which is not really possible with commercial software).
And what happens if the main entity (developer or company) behind the project stops supporting it (like it happened with GlassFish)? It is unfortunate, but if the project is valuable to the users, somebody else will come along and continue it. If it isn't - it isn't.
Compare this to proprietary software: if the company stops developing it, you're out of luck and there isn't even the hope for somebody continuing the development.

Meta: this post is part of the Java Advent Calendar and is licensed under the Creative Commons 3.0 Attribution license. If you like it, please spread the word by sharing, tweeting, FB, G+ and so on!

5 comments:

  1. I'd like to show a quite opposite opinion:

    - open source is fine for everybody EXCEPT the software developers of open source.
    - earning from support is a myth. Big companies bundle and resell os software. THEY make the money, they earn doing
    support, even worse: by providing free software, developers reduce demand for software development => less jobs
    - there are many big companies running 90% of their infrastructure on OS products. Do they give back ? No. For them its a way of software development cost reduction while making millions of $

    ReplyDelete
    Replies
    1. Let the flame begin :-)

      - In what way isn't OSS good for the people developing it? As I see it they (a) work on something they are excited about (as opposed to a random outsourcing project your company threw into your lap :-)) and (b) if they're lucky they earn money doing it.

      - RedHat runs entirely on support and they are doing very well. Other companies having the same model which come to mind: EnterpriseDB (PostgreSQL), MariaDB & Percona (MySQL). I'm sure there are more I don't know of.

      - We can have the "social fairness" discussion about companies giving back (I agree that companies could give back more - and some already are). I just wanted to point out with the article that choosing OSS is rarely more risky (and many times it is *less* risky) than choosing proprietary software.

      Delete
    2. 1) oss probably is contributing to the fact there are mostly random outsurcing projects avaiable if one prefers to get paid :-)
      2) RedHat resells software written by others. I am sure most of the original authors do not profit.
      3) i would not bet on "social fairness" of companies ever. A company exists to make money

      Don't get me wrong, I enjoy creating and using os myself (i am not a money driven person ..).
      However I frequently miss the 'negative' sideeffects section in os articles. Another one coming to my mind is the fact, that superior commercial products are abandonned as soon a mediocre "free" os solution becomes available. This leads to a situation where new products aren't even started, because there is some third class oss solution (no profit => no funding).

      Delete
    3. 1) If I understand you correctly, you mean that "hacking on OSS doesn't pay the bills". This is true at the moment. I also think though that (a) we can change this if we just keep pushing and (b) it is already possible to get paid for OSS. This is what I'm doing currently. How it works: the company has certain goals and selected certain OS software products to attain those goals. I adapt those software so that the company can attain the goals and in parallel try to contribute everything back upstream. This is a nice way (IMHO) to get paid for hacking on OSS.

      2) Sure, RH sells "software written by others", but this is in accordance with the wishes of those others (expressed trough the license they released the software under)

      3) agreed

      I don't see any downsides to free/libre open source software (I'm basically a zealot :-)). The examples you give are actually positive outcomes in my opinion: if the "market" doesn't want to pay for the high-end solution and is ok with a project on which a few people hack in the weekend, than that's what the market will bear (and the producers of the high-end solution misjudged the market).

      F/LOSS is the ultimate capitalistic solution: it is completely transparent about what you're getting (compare this to some commercial vendors "you can't benchmark our product" policy) and the rights are neatly separated out (so for example you can get support from somebody else, it doesn't have to be from the producer of the software).

      As we spread OSS further and further we'll arrive at a more "fair" price for software. Now I believe that that price will be lower than the one charged by proprietary vendors (and it can be a blow to some people who measure their worth by saying "I'm working on an $X billion product") but it will allow access to better software to a wider audience of people.

      Sidenote: I think there is a rampant "not invented here" syndrome in the software industry which hurts us and F/LOSS is the best solution for it (not that it is a universal cure - see the forking going on in such projects - but it's our best bet for now).

      Delete
    4. 1) That's nice. However companies compete. This will work for common uncritical tasks only. Software solutions which give a company a competitive advantage is unlikely to be released as open source.
      2) agreed. However some of the authors might have been hype-brainwashed or are naive enough to underestimate the value of software.

      "if the "market" doesn't want to pay for the high-end solution and is ok with a project on which a few people hack in the weekend, than that's what the market will bear (and the producers of the high-end solution misjudged the market)."

      Well, that's a valid poitn you bring up there. However I still think in a market where there are no free products, the provider of the best solution will also sell to companies which actually would not need it. With free solutions avaiable an innovator must be able to finance development from some few companies, which actually require the advanced solution. Well, you are probably right, but my bad gut feeling about this persists ;) ..

      "Sidenote: I think there is a rampant "not invented here" syndrome in the software industry which hurts us and F/LOSS is the best solution for it (not that it is a universal cure - see the forking going on in such projects - but it's our best bet for now)."

      Because a company won't feed its competition for free, only non-critical parts of their systems get released to open source. Because commercial software libraries have gotten rare, companies implement the performance or throughput critical parts of their systems on their own. I cannot see how this will change in the future.

      Delete