Thursday, April 23, 2009

Will Symbian OS flourish in the open source community?

Over at Stack Overflow there's an interesting discussion on whether releasing Symbian OS to the open source community will be a good thing for Symbian. This post is a re-working of my contribution to that discussion.

Personally I think it's too early to say whether Symbian going open source will be a good or bad thing for the OS. The debate over the branding selected for the Symbian Foundation website shows a degree of uncertainty of the role Symbian software will play in the future and who the target customers and contributors really are, other than the familiar mobile telecoms players.

Open source projects live or die not by how popular the products are to consumers, but first and foremost, by how popular the software is with the open source development community and how actively the community contributes to the project.

That doesn't sound like a big problem, there is, after all, a significant and active pool of developers writing software for Symbian OS already - often referred to as an ecosystem when considered in terms of the combined contribution of these developers and the companies they work for. However, while it's true to say that there is an entire ecosystem that knows about the specifics of developing for Symbian OS, that's pretty meaningless in its own right. The vast majority of the Symbian ecosystem are professional developers paid by their employers to produce proprietary code based on Symbian OS. In some cases, notably Nokia, a large amount of that proprietary software will now be opened up and contributed to the Symbian Foundation. But when you remove professional developers from the equation, the size of the ecosystem is much smaller.

When looking at the size of the Symbian developer ecosystem, you need to consider that Symbian OS has been around for over a decade and the software powers in excess of 100 million devices today. For a software platform that powers so many devices and is as mature as the Symbian platform is, the developer ecosystem is surprisingly small.

Consider then the rate of growth of the ecosystems surrounding the offerings from Google and Apple. Symbian never generated that level of excitement and never saw that sort of growth in developer interest. Of course, we're a decade down the line and you could argue Symbian did the hard work and created the landscape in which Google and Apple are now competing. But just because Symbian was first, doesn't make it best and doesn't give it any right to survive.

Symbian development seems to divide the developer community; some acknowledge the usefulness of the platform idioms, climb the steep learning curve and get on with it. Others consider the platform to be so far removed from other developer platforms and refuse to climb the learning curve.

It is true to state that the Symbian C++ idioms can be a barrier and can be a pain to learn. However, it is incorrect to suggest that there is no justification for getting rid of them. One justification is simply the persistent perception, 10 years on, that developing native code for Symbian OS is too hard. Most if not all these painful idioms were design decisions taken over a decade ago and, whilst still beneficial on the latest mobile devices, are no longer essential. Mobile hardware has moved on substantially in the last decade. As a native developer platform, Symbian OS has not fundamentally changed over the past decade.

Looking at alternative mobile platforms, consider Android and Maemo. Both are linux based systems. Both use more developer focussed, standard development approaches which are immediately appealing and recognisable to developers while simultaneously leaving Symbian OS looking like it's come from another age.

That in itself is not necessarily a problem for developers using rather than contributing to the platform because Symbian OS supports several runtime environments that make development for devices running Symbian OS much more approachable for the average developer.

Yet taking the runtime support to its natural conclusion, the underlying OS becomes irrelevant. The OS selection is just another choice made by the device manufacturer based on cost, time to market, quality etc. But the end user doesn't care and in many cases doesn't know what the OS is. Developers then develop for their preferred runtime, rather than write native code and can therefore access a much wider pool of devices than they could by writing native code for a specific OS.

Symbian OS has worked very well over the past decade as a proprietary platform, but it is by no means certain that the platform will flourish as an open source project.