I came across this article which articulates some of the challenges of having a great, easy to use product, and an open platform where other can innovate on top of your technology (enabling all sorts of useful applications and if you monetize it correctly additional revenue streams).
When I was at Windows this was one of the problems in developing Windows 2000. We had opened up our platform to allow hardware vendors to write software and hardware. They were supposed to use our finite set of APIs to access things (such as writing to the registry), however since APIs were limited in early versions of windows, people would muck around the code and figure out how to achieve what they needed with their application (or sometimes were even given those instructions from Microsoft employees so we would have more hardware that was compatible with our operating system). This later lead to lets of problems because applications built on top of the OS could overwrite bits, leak memory, and other bad things all of which could cause things like the blue screen of death. Microsoft took control of this situation by creating more APIs, more documentation, and creating “trusted”software programs that assured a user the software they were about to install was a trusted application. At the time I worked in Windows (many years ago), one of the selling points (say above a Macintosh) was that it was compatible with so much software and hardware. This was because Windows (whether it meant to be or not) was largely an open platform.
Apple on the other hand is the King of User Experience. I use an Apple Powerbook and it seldom ever gets restarted. I rarely have a problem with any application I run. Apple is known for being a closed platform. Apple gives developers a finite set of APIs to work with–APIs that are well protected so they can ensure applications don’t affect the over all Apple experience. They are doing this with the iPhone now too. Developers sometimes complain that they are limited with what is possible on the Apple platform, but as a user I like the simplicity and consistency between applications I use and install.
In my opinion, web services are the crux of the next generation of software–where you never install anything and everything runs seamlessly through your broadband connection. With this new technology and new paradigm for building software the whole open platform idea has a whole new life of its own. Amazon AWS opens up the basic things: computation power, storage, and messaging–what you need to build any web application. Increasingly more and more companies are building their software on services. Using Flex (the technology we use at my company for our front end development) one of the primary ways to power an application is web services based. So then as a business if your software is built this way, when do you open it up for innovation? How do you let users build on top of your platform so that is controlled and you still have a great user experience?
Facebook got lots of hype and developer fanfare over their open platform, but most of the applications annoy me–when I logon and see a bunch of junk. While I have a bunch of them installed on my profile, it was more because of apathy for removing them than the fact I actually use them. Facebook is a great distraction and I like the entertaining aspect of social networks, but I do not find the rate your friends, vote for who is most popular (maybe because I never was?), or kick your friends in the head applications all my friends seem to have installed. But with each of these applications people are spending more time on Facebook, and increased engagement means more money. So are they really wrong here?
So how do you get it right? I think the jury is still out. The debate is interesting though and definitely something I am thinking about a lot.