I've mentioned fragmentation several times in this BLOG. The idea behind fragmentation is that it becomes increasingly difficult to develop for a particular platform as the number of variants increase. When there is one version of a platform you only need to make your code work properly on it, say for instance the original iPhone when it first came out. As each successive iteration and variation on a theme is added there are more and more variables that need to be test for and dealt with. Processor speeds steadily ramp up as does memory and graphics capabilities. Problems in the graphics area can be somewhat mitigated by maintaining a consistent aspect ratio.
The real problem though is that fragmentation is much less important than the fact that from an application developers perspective platforms matter less and less. What matters is getting your application in front of as many customers as possible as frequently as possible and increasingly that means supporting a wide variety of underlying operating systems and platforms. Apple has been moving in the direction of supplying a more unified user experience across their MacOS and iOS products for a while now and there are signs that Microsoft is moving in the same direction. In the future companies are going to need to be able to port their applications to many different platforms quickly if they want to maximize their odds of success in a world where customers are going to expect a consistent experience across a large number of very dissimilar underlying platforms.
Java, HTML 5 & Flash all offer potential solutions to this problem. Each technology offers a standard platform that can run the same "binary" across a wide range of platforms. I'm not an applications developer so I'm not going to try to pretend to have an in depth knowledge of any of these platforms. What I do know however is that in the case of mobile computing platforms battery life is important. While platform independent solutions provide the advantage of minimal or no porting between platforms they do have a downside. There is essentially an additional layer of software between the application and the underlying hardware. This extra layer comes at a significant cost in terms of performance and battery life. This is in part why Apple has been so strenuous in their resistance to having flash on iOS based devices. Apple has very strong feelings about managing the customer experience and discouraging developers from using API's that are inefficient and may compromise the visual look and feel of their user interface is very much in line with that desire. Whether it's legal or not is a different question.
As hardware companies find ways to wring additional performance out of components, including batteries this will be less of an issue. There will likely still be applications that need significant porting between platforms to get reasonable performance but I suspect they will be few and far between.
One final thought for this entry. In the second decade of the 21st century there isn't just one platform. There are many. And I'm not talking about iOS or Android here, I'm talking about Facebook, Twitter, NetfFlix, Google and similar big players that provide functionality that a large segment of the Internet community find useful and desire to be ubiquitous. Applications have always been an important part of a platforms success. Word Processing and spreadsheet applications sold millions of DOS and later Microsoft Windows based PC's. Desktop publishing and other multimedia applications have sold a lot of Mac's over the years. The difference today is that many of the applications driving growth are essentially cloud based and hardware/OS independent. Where the hardware and OS used to be foundational they are now just gateways into the places where the real action is.
All of which explains why I don't see fragmentations as a big deal, at least in the sense most people use that word.
Image via Wikipedia
No comments:
Post a Comment