Should every app be a platform?
Monday, September 10, 2007 by Dave Winer.
I've been pushing the idea that every app should be a platform for a long time, that in addition to a user interface, every app should have a programmatic interface. For me the idea came from growing up using Unix in the 70s, where every app is a toolkit and the operating system is a scripting language. Wiring things together is an integral part of being a Unix user. It's why programmers like Unix so much.
The idea then came up again with the push to integrated software in the early 80s. Mitch Kapor and Lotus were selling the idea of an all-in-one package, Symphony, which was a word processor, database, spreadsheet, graphics and communication program, with a macro language tying it all together. Bill Gates proposed a different approach, let each app stand alone and share its data with other apps through a common scripting language. This idea was so good that I started a company in 1988, UserLand Software, to create such a scripting language for the Mac, which then had a rich user interface and a totally underdeveloped scripting interface. Today, the Macintosh has a rich tradition of interapplication communication, made possible by this simple idea that every app should have an API.
This led to XML-RPC, the Internet version of apps with APIs, which led to SOAP, and then REST, which imho, will eventually lead back to XML-RPC (as people realize that standardized marshalling formats have value). However you express the API, today you can write scripts that combine the features of scriptable Internet apps such as Twitter, Flickr and various blogging platforms.
And at least one VC, Fred Wilson, has caught the bug, and is investing in companies that build net-scale technology with APIs. His companies will have the kind of lock-in that will be the envy of the VC world, because when other developers build on your platform, it's mighty hard to replace what's underneath. Imagine moving a coral reef from one ocean to another and you get an idea of how strong a lock platforms have.