Posterous theme by Cory Watilo

Tom Samplonius

Tom Samplonius


The two best things about open source...

There are just two exclusive advantages of open source software.  Many advocates mention security, costs, and lock-in avoidance as big advantages, but those aren't exclusive advantages.  Some open source software definitely has better security, costs less, and avoids lock-in.  But some open source software definitely has worse security, or higher costs.  And if you have a 10TB open source MySQL InnoDB production database, you are just as locked in by the sheer magnitude of the effort to migrate as if you were moving from commercial MS-SQL to DB2.

1. Commercial software company's are always building "solutions"...

All commercial software company's do this.  Every piece of software ties in some way to the other pieces they sell.

In fact, it has become generally accepted practice by IT executives that you should always buy a complete solution, rather than piece meal solutions.  "Get a complete solution" has been the mantra for the past decade or two.  Commercial software vendors created this demand, by suggesting their products wouldn't work together with anything else.  Also many company's didn't consider IT to be a core competency, so they didn't want to know how it worked (though they would find out later, they'd have too).

You don't see this in open source.  The PostgreSQL team is not assembling an application server.  The MySQL team is not building a web server.  Heaven help us if they did, because it would definite harm their area of specialty.

Open source software is focused on a specific area, as there is no commercial demand to create a "solution".

2.  Commercial software vendors have to release a "compelling" release every cycle...

There has been to a release every 12 to 24 months, and it has to have a New Thing.  The New Thing will be driven purely by marketing, not by technology.  Marketing will create demand for something that didn't exist before, by convincing you that you must have it, whether you actually need it or not.

A good example is Microsoft and database access layers.  They have so many.  And when the new layer comes out, all of the development tools need to be updated, requiring another Visual Studio release.  The database is still SQL, but the layers and tools keep changing.  Microsoft will release a new version of the .NET Framework with "WizardDataObjects++", and then have to release Visual Studio 2020, "Now with WizardDataObjects++ Support!".

Just how bad is the release cycle problem?  Take a look at the ".NET Framework Client Profile" feature added to the .NET framework in SP1 for .NET 3.5 (try to forget for a minute, the fact that features are being added in Service Packs).  This feature limits the amount of .NET code loaded on clients by 85%.  Yes, you got that right, Microsoft created a feature that blocks loading of all of the other features that you don't need on client computers.  Ellison-Taylor, who said on the client: ".NET got a little big - it was a victim of its own success".  Not really.  Microsoft just a lot of release cycles to fill with New Things.

When Visual Studio 2010 was released, it took several reboots to install.  It has so many pieces jammed together, it isn't even a single coherent piece of software anymore.

While each New Thing is tied together somehow, it doesn't always make strategic sense.  Microsoft has now promoted HTML5 for web applications over Silverlight, but Microsoft is just now getting ready to release a (plugin for Visual Studio to push Silverlight applications to Azure.