Open source v.s. Closed source

Working with closed source products (Microsoft Visual Studio, .NET, ASP.NET, SQL server, and Oracle) while at the same time experimenting with open source products (Eclipse, Java, MySql, and Spring) I am constantly baffled by the persistance of closed source developers and business people in their handling of second grade support, bad information, and lacking products.

Below you’ll find listed a few examples of the difference between closed source and open source, and not just the source in itself but the feeling of working with each set of products.

Where’s that IF-clause

Microsoft SQL Server

While working with MS T-SQL I found that I was not writing my IF-clauses correctly so I went out to a lot of places to try and find the correct syntax.  My query was:

ms sql server if-clause syntax

Which gave a few interesting links, but opening them yields… discussions, discussions, discussions… not a syntax description as far as the eye can see.  The same went for these searches, both on google and msdn.

ms sql server +syntax of the "if-clause"
how do i write an "if-clause" in microsoft sql server

Finally I tried the following search:

T-sql  if-clause syntax

…and got a hit on Google (Add IF THEN clause to SELECT statement, the second result from the top), and MSDN shone with one single hit (SQL Server/Office Integration: Programming SQL Server Security) and no, there’s no IF-clause syntax description there…

Oracle

The search:

oracle  if-clause syntax

Gave a “kind-of” good result in Oracle Tips – IF/THEN/ELSIF/ELSE, but only on place 7, three places below the MySQL syntax description.  Using the much more “knowlegable” search:

PL/SQL  if-clause syntax

Gave the following result halfway down the list on the first page: Using PL/SQL, and just as the name implies, it is a huge page with lots of PL/SQL info… you have to search again in order to find the if-clause syntax, but “if-clause” per se is not on the page…

MySQL

In comparison, while doing a similar search for MySQL the following link was on first place on google: MySQL AB :: MySQL 5.0 Reference Manual :: 11.3 Control Flow Functions the search was:

mysql syntax of the "if-clause"

That simple, and in one fell swoop, we’re home…

Conclusion

The open source scores one point for presence on the internet.  (And it wont be the first either).  Huge corporations like Oracle and Microsoft could need some SEO (search engine optimization) consulting, or is it that everybody has an opinion on how to do this?

Where’s that license?

Today was very productive for some of my colleagues… NOT!  They had gotten to the point where it was impossible to do any more .NET programming without Visual Studio… and lo and behold.. we’re out of licenses…

They had, in good faith, tried one of the “CDs” and everything was bright and shiny until that pesky question for a “product key” came up.

“Surely,” some of my colleagues said, “Microsoft has a partner license where we get our products for free…”  We are indeed partners… “Some dude told me he had free licenses.”

Other colleagues laughed scornfully.

“Hey,” someone said, “how about downloading something for free while we wait for a new license?  How about SharpDevelop, or Visual Studio Express.”

The colleagues without licenses started to plan their vacations… despondently.

Perhaps… perhaps… we’ll have better luck tomorrow.  And one of these days those guys will surely be able to do some programming as well…  Unless we go down town and purchase a few licenses tomorrow (they’re just €900 or so… each).

I guess I don’t have to tell you how this situation had evolved had we been using open source products? Sure we would still have had the problems with installs, and set up for those new guys, but we would have had our tools a download away…

Conclusion

While closed source, proprietary products spend large amounts of energy and money on licensing handling, and these efforts spill over to their customers forcing them to take part in the handling while trying to get licenses in place and so on, the open source equivalents skips the whole problem and have you working on installs and configurations from step 1 instead.

Badly coded/Jumpability…

I’ve refrained from using this argument for the longest time since it has always seemed an irrelevant argument, but the fact that people use proprietary products like Microsoft Office, inspite the fact that it does not work, or in the cases it does, does so poorly, with bad usability and questionable performance, seems to indicate there are a bondage thing going on between manufacturer and buyer of proprietary software. (No, not a sexual bondage thing, you get me if you try… o:)

Okay, we all knew this.  Why else would Microsoft wait the longest time to make the .doc-format public (have they yet?)  While the OS/FS world would easily be able to jump ship from OOo to KOffice to any other of the plethora of applications that support the OASIS OpenDocument format.

This inability to jump is the main reason proprietary software represents a digital prison.  If you don’t have the ability to make the manufacturer of your software know you dislike their design decisions by changing to the competition, how could you then tell them you don’t like what they’re up to?  Send a letter?  Stop writing documents?  Go fishing?

And if you decide to change application, in the OS/FS world you would most likely have alternatives that can read your data, while in the proprietary world you would have to try to convert you data to the new format… Most users in that predicament decides to “wait and see”…

Conclusion

It is in the business interest of a closed source/proprietary system developer to keep formats, source code, etc a secret. If your algorithms and formats becomes public knowledge you’re not able to charge for them as easily anymore, your business goes out the window…

In the open source society this is the reason why open source exists. To make things transparent, to open up code for public scrutiny, and use. There is no need or business purpose for an open source developer to hide their algorithms and formats, in fact, for an open source developer to get to the point where they can make money, their ideas and formats need to gain as widespread acceptance as possible – then perhaps they can start earning money on support and other bi products of the main product.

Where’s that expert?

Being in the position to compare the .NET and Java world I’ve found a rather peculiar phenomenon.  When searching for answers to .NET problems the chance is much higher of getting a wrong answer than when searching in the Java world.

I can see a number of possible explanations to this.  Basically I think the level of noise is the culprit.

Perhaps Microsoft is bad at or has a low budget for SEO, making the hits bad or worthless?

More likely though, Microsoft has a problem because the company is too big.  When you search for information related to MySql, Ubuntu, Sun Java, etc you won’t get more than a few possible alleys to go down.  For instance the chance that you’ll get hits on word processing or instant chatting, when including “MySql” in your search is far lower than if you use “Microsoft SQL” instead.

Another problem is the fact that while MS developers usually get paid, and well paid at that, people in the open source/java/etc world might not.  If you do your programming/homepage/tips&tricks writing on paid time your number one priority is getting paid, while if you do it on your spare time, chances are you have a reputation to protect, and your priority isn’t so much at impressing your boss or customer as impressing your fellow system developers… and there’s a difference in those two priorities!

A problem touched upon above is that the world of .NET is much larger than that of Java (197 million pages on Google matched, Feb 9 2008, the search “.NET”, compared to 30 million pages matching “Java”).  Even though our measurement of size may be quite imprecise, the impression is that a lot more people write about .NET than they do about Java, and most of the information is rather bad as well.

Conclusion

If it’s that proprietary developers (and their managers) get paid to do their job, or if it’s that Microsoft being one of the big players in the closed source arena and thus bringing their size in the OS market with them into the programming market, the closed source products seems to have less reliable sources for information than the open source equivalents.

On the other hand, this argument only goes for mature open source projects. If you browse sourceforge or github you’ll find thousands upon thousands of projects where the only thing you get is the source code, not even a quick intro to what the program does, more than the name. If you’re lucky you get a reference manual, and I’ve seen projects actually selling well commented code as a competitive argument.

However, and this is a big however, working with Open source gives you access to the code. And having the code, while not the same as having a manual, gives you the opportunity to figure out for yourself what this or that part of the system or program does. You don’t have to wonder if there’s some hidden or secret function calls that might have solved your problem (as in one of my more recent projects where the use of one proprietary Microsoft developed system actually failed completely – we were unable to reuse the system at all and fell back to hard coding everything – perhaps there was a way to solve our problems, had we been able to see the code… We’ll never know…)