Why Open Source is Better for Your Business than Microsoft

I think everyone in the technology field knows Microsoft, you either love them or you hate them.  It seems there are more haters these days than those that love them and it is often times their own fault.

Commerce Server

My problems with Microsoft have been rooted around a project I had done for a client many years ago based on Commerce Server.  For those of you that don’t know, Commerce Server is a product which allows users to setup a complete commerce system based on the Microsoft platform.  It also allows developers to heavily customize it to meet the client’s needs.  Oh, and it is expensive.

This version of Commerce Server relied heavily on XML and XSLT for rendering pages.  Microsoft was high on XML at the time as it was the technology to solve all of our problems.

Along came .NET and the next version of Commerce Server was all based on .NET and XML was not the hotness any longer so they re-wrote from scratch with all the bells and whistles of .NET.  What did this mean for the client wanting to upgrade to the new version of Commerece Server?  It meant, there was no upgrade.  It meant their entire code base was garbage and had to be rewritten from scratch.

This was certainly a dilemma.  Do they reinvest in Commerce Server and build their site from scratch, hoping a future version of Commerce Server would not require the same rewrite?  My recommendation to them was to toss out what they had and rewrite their system in plain old ASP.NET and C# at the time.

I think this worked out well for them as they don’t have to rely on something that Microsoft could drastically change down the road and leave them in a bind.  Sure, Microsoft could change ASP.NET but at this point it is a safer bet it won’t change that drastically.  It is at this point I really became suspect of Microsoft and buying into what they tell developers is the next great invention that we should use.

Enter Silverlight

Microsoft has been all about Silverlight for the last couple years as their solution for cross-browser, cross-platform rich Internet application development platform.  The idea is we write it once, we run it everywhere.  I think we’ve heard this one before (Java, I am looking at you).

The Microsoft Professional Developer’s Conference is happening now (or just ended) and news coming out of Redmond is they are pulling back on Silverlight and HTML5 is the way to go.  An interview by MaryJo Foley with Bob Muglia from Microsoft tells the tale:

Silverlight is our development platform for Windows Phone,” he said. Silverlight also has some “sweet spots” in media and line-of-business applications, he said.

But when it comes to touting Silverlight as Microsoft’s vehicle for delivering a cross-platform runtime, “our strategy has shifted,” Muglia told me.

So what happens to all of those Line of Business applications these companies have been working on?  I don’t think I would bet my business on any continued development of this platform in the way it was originally sold to developers.

It leaves some folks wondering:

silverlighttweet

This appears to be another dead-end for developers.  Even if it’s not, the waffling about its future would be enough for me not to use it.

Open Source to the Rescue

I was a Microsoft developer for more years than I care to admit and I have been bitten by their change in direction more times than I can count.

The real solution is to control your own destiny and build solutions with open source components.  Speaking as a developer who leverages Ruby and Ruby on Rails, I feel much better about supporting a client and knowing the technology decisions I make for them are safe.   Since it is all open source, I am free to make changes to the framework as I need now or down the road.  The open source community is vibrant and even the smallest projects are active, but even if they die out..you still have the source to do with as you see fit.

Microsoft rolled off projects involving IronRuby and IronPython to the Mono folks and now these projects will live to see another day.

I really don’t care if Microsoft dumps products (or changes strategic direction, same thing) but don’t leave users in a bind.  These projects should be given to the community to move forward and to support.  Silverlight could easily be moved down this path, given to a community to evolve and keep those developers who put so much time and effort into.  Developers would have a way to leverage their codebase and not be left to explain to product owners how they have invested in a dead-end product.

This might start to build trust again in Microsoft by those that lost confidence.  But, open source puts the power and the future of the frameworks and tools we use in our own hands.

Where Are We Without Community?

communityI came across a really interesting blog post yesterday with a recurring theme.  It was by developer Dave Newman titled, Leaving .net.  Does it sound familiar?  It does to me and after reading Dave’s post, the reasons are a familiar sound.

So many .NET shops have their heads buried in the sand, developing mounds of software with antiquated principles:

A company I worked at once had been operating for years under the assumption that it was OK for software to take months to integrate and deploy; they had never heard of continuous integration. They thought it was normal to rewrite your application from scratch every 2 years; they had never heard of Test Driven Development or iterative development. These techniques have been proven to significantly raise the bar on quality, cost of development, cost of maintenance and general morale. Turns out you can still find, in this day and age, software practitioners who haven’t even heard the terms.

It has been shown that Test Driven Development (TDD) improves code but it seems the .NET community fails fully embrace the concept.  I have been part of many .NET projects where stakeholders simply refused to spend the time doing TDD, not when deadlines need to be met.  They were simply too naive to know that deadlines would still have been met but with better code.

My last .NET project was led by a developer who was the master of “not invented here” syndrome.  The project was a unique eCommerce application originally architected 5 years earlier and consisted of some complicated code.  The developer, who didn’t want to spend the time to learn the system, wanted to rewrite the code his-way so he could understand it.  His way was easily worse and did not take into account all the side effects his way may have introduced.  I am glad I am not the only one to witness this:

I have also seen on numerous occasions developers build their own libraries and frameworks to solve well understood problems in curiously terrible ways. The endless rebuilding of data mappers, logging code, object resolution mechanisms, messaging systems and web frameworks adds up to a massive waste of time, effort and potential. I’m not talking about public collaborative efforts, I’m talking about in house “Not invented here” syndrome. This is what happens when you have a community cut off from the world. A community that doesn’t talk to each other and work together. This is what the .net community is.

Communities exist everywhere but none stronger than those in the open source world.  I can’t think of a more diverse and deep group of developers than those using Ruby.   Developers in this community rally around each other, support each other and the projects they create.  If there is no support, no community development the project simply dies off.  One can use Ruby on Rails as a great example, go ready it 1600 contributors.  This is project done for the community by the community, not reinventing the while but improving it.

Has Microsoft ever done anything like this?  No. The closest I can think of is IronRuby and they have since turned their back on that project.   Microsoft tends to treat developers as something to be fed, who pushes out updates as fast as possible to get the pack on to the next thing.  If you look at Silverlight going from v1.0 to 4.0 in a blaze or WCF moving fast to its current state, developers can keep up.  Most of the time we can’t keep up because we are fed and are not allowed to also cook, like in the Ruby community.

This is the same with ASP.NET MVC:

Last year Microsoft released a new web framework called MVC. It’s not new by web standards, it’s not even new by .net standards as the Monorail project had been alive for years before. Yet people were waiting for it. People were waiting for Microsoft to deliver it to them. There were already open source MVC web frameworks and an army of .net developers who could have collaborated to make them great but nothing much happened. It took a handful of developers at Microsoft to make their own framework and now MVC is the hot new thing.

But they did not:

This new web framework is better than the previous one and is quickly becoming the de-facto. Microsoft released the source. Someone created a github repository. This repository is being watched by 30 people and 5commits have been made to it. 5 commits! Why is this number so horrendously low? Because Microsoft don’t take patches. They’ll release a new version of MVC without anyone’s commits. Worse than that, everyone will start using their new version and the github repo will just start again.

The little community that exists for Microsoft wants to see success but Microsoft won’t let them.  Microsoft doesn’t believe in community, they may say they do but actions speak louder than words.  In the end, they are only hurting themselves.

Microsoft has been touting open source for a while now, not because they want to but because they think it will improve their bottom line.  Isn’t that what they’re all about?

Imagine if Microsoft would have opened up ASP.NET MVC completely and let the community create it?  Yes, I know they released the source, but that does not make the project open source.  Open source means they take contributions from the community and the code is created and owned by the community.  Big difference.

Why Leave .NET?

Well, for one, to make a statement.  If all .NET developers accept the status quo, nothing will change.  Secondly, to see what it looks like from outside the .NET world, how other developers live and breath.

You don’t have to actually leave the technology, maybe explore others and gain some experience.  The experience could make you a better developer and bring back something to .NET, possibly to help Microsoft become aware of a better way.

Where to go?

Well, almost anywhere else.  I like the Ruby community but I have heard Python has a great community.  I would bet almost any open source community will welcome you.

What’s the answer?

I developed C# code since it’s inception and wrote many lines of C++ using Microsoft Visual C++ before that.  These are really good technologies and we can’t just write them off.

I hear developer’s stories all the time, how they dropped .NET and moved to technology X.  The Ruby community itself contains many ex-.NET developers who have seen the light.  How can we make Microsoft see the light?  I don’t know we can, they need to be looking.

It comes down to this, Microsoft is losing without a community.  I am referring to the passionate community, like the 1600 who created Ruby on Rails.  I think as more and more developers gain experience and see how other communities function, they will leave and move on.  It won’t be overnight but it will happen unless Microsoft is willing to change.

So to answer the question, where are we without a community?  The answer is no where.