There's been a lot of talk recently in the blogosphere and the twitterverse about the future relevance of Silverlight. Many people are questioning or debating whether or not it's a 'dead' technology considering how important HTML5 is going to become in the next couple of years. I don't think it's going to be 'dead' anytime soon, but i do think there are some very important factors you need to keep in mind before committing to develop new products in Silverlight.
I'd like to make it very clear that i'm not anti-Silverlight. A year ago i wrote a post called "5 Reasons Why Silverlight Is My Preferred Web Development Platform", which i hope will prevent the Silverlight fanbois from labeling me as an uninformed Silverlight basher. I've also never been a HTML/CSS/Javascript enthusiast so the things that i will say below aren't based on any preference for a certain technology or language. If anything, my current opinion on building Silverlight vs HTML apps is strictly based on observations of what's been going on on the web in the past couple of years, and how i've seen the software development community change gradually over the past few years.
One of the most important factors in your decision to use Silverlight or HTML/CSS/JavaScript for new products is the long-term strategic importance of the product. If the product you're going to build is not going to define the future of your company, your organization or your endeavor, then there's nothing wrong with going for Silverlight. There are a lot of benefits that come with choosing Silverlight and as long as none of the downsides are a problem for your situation, then it might very well make a lot of sense for you to build your product with Silverlight.
If however, your product is supposed to become the basis of your long-term success, then the choice of Silverlight over HTML/CSS/JavaScript is short-sighted and ultimately flawed for a number of reasons. The first of which is that Silverlight is a proprietary technology in the worst possible way. Its future will be determined by a single company who naturally hold their own best interest at heart, and not yours. As long as it makes sense for them to keep improving Silverlight, they will and you can benefit from that. As soon as it no longer makes sense for them, the technology will become increasingly irrelevant. Obviously, that is a risk that you face with any kind of technology. Sticking with open standards and open source software might very well result in the same outcome but there is one tremendously important difference here: with Silverlight, you have no migration path.
With Silverlight, your product runs in a browser plug in. It doesn't look like a normal website nor does it behave like one. You are forever tied to Silverlight in your client-side code. If you want to migrate to other technologies, which is not as uncommon or unlikely as you may think it is now, your only option on the client-side is to rewrite from scratch in a different technology. Depending on how much functionality your product offers, this might be a very large undertaking and it could take quite a while before you'll get any financial benefit of the large investment that this will no doubt require.
You might be thinking: well, i'm surely not expecting to migrate to other technologies, so your first point is moot to me. But consider this: over the past few years, we've seen an ever increasing popularity of a variety of open (as in: non-proprietary) technologies. I don't think anyone can reasonably argue that there's little or no truth to that statement. But i will make the following claim, which is something i'm sure many of you will disagree with: non-proprietary technologies tend to innovate and improve faster based on real-world requirements from developers who are using those technologies. Proprietary technology only improves and innovates when its proprietor has an incentive to do so. And what a proprietor considers to be an incentive to further improve a technology might not always correspond with what its real-world users truly need or are asking for. I hope i don't need to point out that Microsoft has a history of halting improvements/innovation in their products if they feel secure enough about a certain product's ability to generate recurring income.
By now i'm sure i've lost quite a few of you already. But i will go even further: a lot of developers are increasingly moving away from these proprietary technologies in favor of open technologies. Well, at least the developers that truly matter. They yearn for continuous improvement in not only their own skills but in the technologies that they choose to use as well. I obviously expect more and more developers to start looking at non-proprietary technologies for exactly that reason. I'm not saying that will happen this year, or next year or even the one after that. But i do think that there will be a strong shift towards non-proprietary technology about 5 years from now. And again, keep in mind that i said that it's important to consider all of this when your product is your basis for success in the long-term. And again, there is no migration path when you choose Silverlight and i don't expect that there ever will be one.
There are two more important things to keep in mind. How many success stories have you seen in the past couple of years that were based on proprietary technology outside of the enterprise systems space? There are only 2 that i can think of. The first is iPhone/iPad development. Objective-C might not be truly proprietary, though in practice it does turn out to be so. The operating system is also proprietary. Yet neither of these has prevented or had a noticeable effect on the success of iPhone/iPad development. The second example is YouTube which is (or at least was for a long time) dependent on the proprietary flash plug in. If you have other examples, please leave a comment to mention them because i'd really like to know. On the other hand, i think we can all name quite a few really successful sites and products that are based on non-proprietary technology, no? This is inherently related to what i mentioned earlier about developers that matter moving increasingly to non-proprietary technology.
And last but not least, you need to think in terms of 'devices'. The success of the iPad is a fantastic example of how important the 'device'-story of your product is, or at least will surely become. Websites built in Silverlight or Flash don't work on the iPad. Yet, the iPad is a hit. People love using it and are using it for a variety of things. Products that were based on HTML/CSS/JavaScript worked on the iPad without their creators even having to think about supporting a device like the iPad. They just work. And they work on smartphones as well. Gone are the days were the internet is solely used from computers and laptops. Mobile devices will become an increasingly important market and it would be unwise for anyone to base their long-term success on a technology that has such hard limits as to what kind of device the user must use in order to be able to use your product.
If you're going to build a product for the long term, you're undertaking a journey. And in any journey, it's important to keep your eyes on the road because you can never know for sure what will or what won't happen during that journey. You do not want to be forced to a sudden standstill because you weren't paying attention. Nor do you want your vehicle at some point in the future to prevent you from following the direction you need to follow.
Pingback: 5 Reasons Why Silverlight Is My Preferred Web Development Platform | The Inquisitive Coder – Davy Brion's Blog
Pingback: Tweets that mention Keep Your Eyes On The Road « The Inquisitive Coder – Davy Brion's Blog -- Topsy.com
Pingback: igorbrejc.net » Fresh Catch For October 4th