Posted by jheyse on August 12th, 2009
In the past I have used my blog as a medium to post code examples, frameworks, and solutions to common programming issues. My posts have always been heavily focused on the code with short summarization paragraphs. These types of posts are the easiest for me to write and they just flow. I guess the reason is that through my 12 years of development I have become more comfortable writing C#, and other programming languages, than English. Yes, I said it, I find it easier to communicate with a computer than with other people. I’m a geek!
I plan to continue to post code snippets, solutions to encountered problems, and new frameworks; but I will also start posting about some of my thoughts on the future of our technical industry. I’ve been making statements about the direction of our industry through discussions with my peer’s offline for years, but I have never brought these ideas to the online community. The quickly approaching future of our industry has made me realize that if it’s not online, it doesn’t exist (or won’t for long).
Over the last several years we have been inundated with buzz terms like Web 2.0, rich internet applications (RIA), and cloud operating systems. These are not new concepts just the next iteration in the cycle of technology. People were predicating the death of the personal computer operating system back when Netscape 4.0 was released. They weren’t wrong just a little a head of their time. Software has been headed that way for years, but we’ve been waiting for the hardware folks to catch up. Over the past two years we have finally gotten the internet connectivity (in a majority of the US) necessary to make online feasible over offline. With WiMax being adopted across the United States, in 2-4 years if you are in a location that has power and indoor pluming, you will probably be able to get a 2Mb+ connection. Those catch phrases aren’t just marketing propaganda any longer, they are 1st class citizens in our technical world.
Since everything is moving to an online world it makes sense that our operating systems will follow. But what does an operating system mean in the context of an online desktop? Is it the file system? Process & CPU management? Application integration points? To the end user it boils down to common data & applications across all devices. And to simplify it even more, if our applications are common, the data can become part of the application. It is not necessary to split our executable apart from our data files, the two can just co-exist in the same corner of the internet. After this simplification is made it is much easier for us to move the entire mess into the cloud, instead of worrying about which portions are stored locally as opposed to remotely, and how to synchronizes the changes between the application and data between those stores. This is even compounded when you think about all of the different devices we interact with on a daily basis, PCs at home and work, laptops, MP3 players, mobile phones, netbooks, e-Books, etc… The user is feed up with the disparity between these devices and wants a simpler solution. We as an industry of developers and consumers are dreaming of a ubiquitous environment where data and applications seamlessly follow us around. Where we can leave the office at the end of the day and open our phones on the train home, and have our RSS readers remember the location of the article we were last reading or have our media players continue playing your favorite song at the spot you paused it on the PC at work.
It is up to us as developers to make this happen. So what do we need to do as an industry to make this happen? Well the big players (Apple, Google, and Microsoft) in the game are doing everything they can to be the first and best to the destination. What is the destination you ask? RUA or Rich Ubiquitous Applications not just Rich Internet Applications, but applications that exist everywhere! It is the holy grail of applications and something we have been chasing after for almost a decade. The platforms are getting closer and we are approaching the browser wars of the current technical generation. So let’s spend some time looking at the big three, where they are currently, how they are entering the RUA space, what is at stake for them, and how they can help us succeed.
Apple is a hardware company. Their business model is to sell hardware devices. Mac OS X, iTunes, the app store, are all complimentary products and services to help sell more Apple devices. Apple does an excellent job creating an ecosystem of Apple devices and services that when paired together solve many complicated issues for the typical consumer. iPod and iTunes are the best example in this case, it just works. But try to integrate a non Apple product with Apple services or software, good luck! When was the last time you saw Mac OS X running on a Dell PC or a non iPhone synching with iTunes. Oh wait, the Palm Pre worked, sorta, well, kinda… doh Apple killed it.
Apple currently has the will of the consumer. They are dominating the mobile space, the iPhone’s trendiness and ease of use has made it the most popular smart phone in the world. The addition of the mobile application store and developer APIs pushed them out of the consumer gadget space and into the platform space. Their next big push towards RUA would be to modify the Apple platform to allow those same applications to easily exist on the Mac OS as well. Think about it, as a crossword game or Twitter Client developer, it would be great to be able to develop the application once to work seamlessly on both the, iPhone, iTouch, and Mac Book Pro. Data could then be stored and shared through the cloud or an apple synch service. What would this take? I’m not sure, I’m not an iPhone or Mac developer, but even if you had to emulate the iPhone on Mac OS, you’d still be headed in the right direction. Jason Calicanis pointed out in a recent email that the “Apple Tablet” may be the intermediary step.
Apple’s other option, and one they should have recognized over 2 years ago, is to utilize their strong relationship with Adobe. Apple should have, and still could, work closely with Adobe to improve Flash/AIR and make it the default application platform for the iPhone. I can only guess numbers, but at the time of the iPhone’s app store release there had to be at least 20 Flash developers for every objective C developer. Not to mention the existing tool support, training courses, and communities already dedicated to the Flash platform. It isn’t too late for Apple to enter the RUA space from this angle, but it would involve screwing over their developers once again, but like the x86 switch, the end goal would be Apple’s best bet.
Previously I had mentioned that Apple had the will of the consumer. Their consumer base is huge and the appStore is hip. For the average consumer the iPhone and app store are the only players in the game. But as technologists and developers we have begun to turn on Apple. Apple’s recent political actions have left many resilient, bitter, and even broke. Apple’s closed platform has made it easy for consumers but shunned developers. While having never been rejected by the app store, developed a single iPhone app, or even own an iPhone, it is easy to relate with developers who have labored hundreds or thousands of hours over their pride and joy just to get rejected because of a business reason. If Apple is to make it in the RUA space, they have more than technical challenges to overcome. They have to get over themselves, let their egos go, and share their toys with the other kids on the playground, or they just might get beat.
Google is an advertising company. Their business model is to sell advertisements to companies and deliver high success rates for those ads. Since day 1, Google’s main objective has been to collect as much information about you as possible and use that data to deliver the most targeted advertising to you anywhere, anytime. They have expanded their advertising empire beyond search into every corner of the web: maps, images, email, instant messaging, the list goes on… All in an effort to capture more information about your interests and keep your eye balls on their web pages allowing them to display a greater number of ads to you. Google will partner with developers and other companies if it gives them additional data on consumer habits or keeps your eyes on their pages longer.
What was Google to do? Release their own browser of course. They have marketed it as the fast, standards compliant browser that it is, but it is also something else very important. Chrome is Google’s leverage to deliver richer applications on the web and the desktop. Google can now push new browser features (standards compliant or otherwise) forward instead of waiting for the current browsers to deliver new functionality. Google has it sights set on one major web technology, HTML5. Why is HTML5 so important too Google? It is their channel into the RUA space. HTML5 will allow Google’s Apps to run on your desktop in an occasionally connected manor. Google has had their eye on HTML5 for a while and it’s obvious when you look at the the working draft of the HTML5 Spec on W3C. Ian Hickson, a Google employee, is the lead editor. With the lead editor on the HTML5 Spec and a new browser, Google can drive “web standards “ to suit them best. HTML5 is Google’s RUA Space and when implemented by browsers, desktops & mobile phones will be a compelling choice once again.
Microsoft is a software company. While Microsoft does seem to get involved in every possible technical space their primary object and source of revenue is still based on the number of Windows, Office, and server product licenses sold. As everyone knows they have grown to be the big player, and with that are also regarded as the bad guy, the monopolist, the Borg, etc… Heck, ever seen Antitrust? A movie was even made taking shots and Microsoft. All of which was at some point justified. Microsoft grew to large for it own good, and did some very uncompetitive things. As a teenager I was one of those kids with a website, bashing MS with a head shot of Bill Gates altered to look like a Borg member, been there done that. But recently Microsoft has been learning. Leaders within the company such as Ray Ozzie and Scott Guthrie have been promoting openness.
Microsoft has the will of the business developer. As a full time developer, Microsoft appeals to us because of their incredible development tools, easy to implement APIs and continued innovation in the way we develop software. Microsoft’s has hundreds, possibly thousands, of developers whose sole purpose is to make it easier for other developers to develop and deliver software on the Microsoft platform. Every MS product has an API, documentation, and Microsoft managed message forums all to help the developer succeed. Microsoft’s platform sweet spot is .NET development the Windows operating system. Thousands of internal business development teams use Visual Studio to create applications which run the software of our lives. Insurance agencies, hospitals, your bank, etc…
Microsoft also sees the day were applications will move beyond the desktop. Their approach is to embrace the desktop development experience they are so good at and expand it unto other devices. Silverlight is just that. Silverlight allows .NET developers to deliver stateful, rich, data driven interactive applications on the web and the desktop. Silverlight 3 uses the same languages, similar APIs, and class libraries that the .NET & WPF developer is used to seeing. It is designed with security upfront to mitigate risks we encounter every day with browsers, cross site scripting, and ActiveX controls. People say that Silverlight is a Flash competitor but it is more than that, it is in the infancy of a platform that will compete with HTML, Windows desktop applications and mobile applications.
Silverlight is a media, graphics, and application platform which will continue to grow and provide additional features as fast as Microsoft can deliver and developers can implement them. Silverlight is on a one year development cycle for the foreseeable future. With the initial release of Silverlight in September 2007 and Silverlight 3 releasing in July 2009, they are even beating that target. Microsoft is investing many resources into making Silverlight the dominate RUA platform. They are making strategic partnerships with Netflix, Blockbuster, NBC, MLB, and the International Olympic Committee. They are working with Nokai to include Silverlight on the Symbian phone and Novell to create a release for Linux. (Silverlight is already supported by Microsoft on the Mac.)
Silverlight is not only a platform development tool intended for us developers, but Microsoft’s go-to platform for delivering their own software and services in the future. They are improving on and rewriting their online services using Silverlight. Recently they’ve announced brining Office to the web using Silverlight, which is one of the best strategic moves possible to ensure Silverlight’s platform success and to maintain Office’s dominance as the productivity suite. The final goal should be one where they could replace the native Office implementation for a Silverlight only version. Reducing costs, maintenance, and helping to deliver a cohesive product across all platforms.
Silverlight 3 introduced offline & disconnected applications which allows users to install the Silverlight application to their local machines and run them while offline. This was a big step towards a RUA platform. They are missing one key component though and it may be their greatest mistake, even greater than Vista’s poor release. That is Silverlight on the mobile. Microsoft must release Silverlight to the mobile platform within the next 8 months, or risks losing the market entirely to Apple and Google. Silverlight on the Mobile phone isn’t the fault of the Silverlight team, but the Windows mobile team.
Microsoft’s entire mobile platform is a mess. Too many devices, poor implementations on many of those devices, partners rebranding and drastically changing the functionality of the device, etc… The current Windows Mobile 6.1 release is terribly slow on most devices, and developed for user experiences envisioned 10+ years ago. Windows Mobile 7 which was initially scheduled to be released in 2009 has been pushed back into 2010. Because of this Microsoft frantically tried to add some incremental updates to 6.1 by releasing 6.5, which is yet to see any production devices available in the US. Maybe it’s time for Steven Sinofsky, previously in charge of Office and current President of the Windows Division, to make his mark on the Windows Mobile 7 team.
*Side note: Sinofsky saved Windows 7 from Vista, he was widely regarded within Microsoft as someone who delivers products and for 7 years he delivered Office products on time and with high levels of customer satisfaction. With Windows 7, he maintained that same reputation, and delivered an amazing product ahead of schedule.
Once Silverlight is available on the mobile phone Microsoft has to add some fairly important incremental features quickly. The first being integrated support for sensors, location services, and other similar devices. The most important being GPS functionality, followed by access to digital cameras, microphones, accelerometers, light sensors, etc… The Silverlight sandbox is a great technological improvement over .NET’s security model, but it is constraining developers from delivery highly integrated apps on a single cohesive platform.
The big 3 in the game each have several large obstacles to tackle, before they are positioned to dominate. But before one stands out as victor the playing field will approach equality. Each will have a browser, an operating system and a mobile device to deliver applications through. They will all be using different development tools, languages, and APIs to deliver those experiences, but the end goal is the same. The ubiquitous application.
The players are laying down the chips, digging in and preparing for the next great technical war, following the operating system wars of the 80’s, the browser war of the 90’s and mobile device wars of the new millennium. As independent developers, we act as mercenaries in the upcoming battles helping to acquire market share with the applications and services we chose to deliver, and encouraging our users to embrace the platforms we have chosen to deliver through. Have you chosen a platform? Why?
Overall, I am anxious for the next generation of applications and where they will go. The future is a better more connected platform to deliver the applications we depend on now. But the road won’t be easy and with most battles those that suffer most are the civilians, or in our case the users. There will have to make choices and with those choices will come unexplained consequences. All because they are caught in the next futile battle for world supremacy.
There is a solution though. It’s one of my favorites and one we have revisited many times, it is a adaptation of David Wheeler’s famous quote, “All problems in computer science can be solved by another level of [abstraction]”. We need to develop a new SIMPLE standard which allows for RUA type platforms to be easily implemented on different consumer devices, regardless of form factor, operating system or connectivity. We need to embrace Silverlight, HTML5, and Flash/Flex, and Apples platform of choice as equal first class citizens in the next generation of the browser. The browser should be the new abstraction layer between the HTTP protocol, the file system, and devices connected or integrated on the local machine. A standard that allows users to seamlessly view and integrate an application written in Silverlight with one that was developed in objective C designed to run on the Mac. Such a standard would be a great undertaking, but a necessary one to provide the experience our consumers deserve.
So, I guess it wasn’t that hard to express some of my less concrete technical thoughts. Too bad I can’t compile the post and run a few unit tests to ensure it communicates my ideas as intended. I guess I will have to revert to a simpler mechanism and hope for feedback from others.