What is a Platform?
Tuesday, August 22, 1995 by Dave Winer.
I first heard the word "platform" used at an Esther Dyson conference in the mid 80s. The word was showing up everywhere, in cocktail conversation, on stage, in Esther's talk, and in every other sentence from virtually every speaker.
Phrases and concepts run thru those conferences every year. They can be very ephemeral, lasting one year, like "object oriented" and "convergence," or sometimes they show up year after year. Platform has stuck. Ten years later we're still talking about platforms. It's a valuble concept.
We're even refining the concept -- yesterday I talked about a "consensus platform" without realizing that the base term had never been defined.
There are two interesting dictionary definitions: "a raised horizontal surface of wood, stone or metal;" or "a statement of principals and policies, especially of a political party."
I think both definitions contain elements of what makes something a platform.
"Raised" is important. It implies that there's something below that isn't raised. I think there's also an implication of "flat." Maybe what's below is very rough and uneven, and the service provided by the platform is to simplify or flatten the concepts to make it easier to work with. Does this mean that platform is a recursive concept? I think so. Platforms build on platforms. But it's (hopefully) not a house of cards. More like those 3D chess games they play on Star Trek. Elegant, but a bit of a klooge.
Also, the "raised horizontal surface" phrase calls up an image of a party for me. Not a political one, but a celebration party. If I'm the only partygoer, it's not much of a platform. I want dancing, singing and lovemaking at my celebrations. It takes two to tango. Let's have fun!
The second definition adds an element of morality and judgement. The author of the platform is making a biased statement. "This is how it should be done," the platform author is saying. It's also a self-interested statement because the author of a successful platform has the right to evolve it, or at least try to. This is where a software company's PE ratio comes from.
But neither definition really covers what we mean in the software business, so it looks like I'm going to have to step out and offer my own definition, a third one, one that matches the way I use the term, and I think the way the industry uses the term.
Every platform must contain an API.
An operating system has an API. For Macintosh it's documented in a shelf full of books called Inside Macintosh. Although I've never written software for Windows, I understand that Charles Petzold's books are the backbone of the platform for developers. For the IBM PC platform, the character-based one, before Windows, it was Peter Norton's series of books, probably the best docs a platform ever had or IMHO ever will. For the Apple II it was pure folklore, information passed on from developer to developer. Sample code is OK for docs.
To be a platform at a theoretic level, you can stop there. Even an undocumented API with no developers, no users and no potential is a platform. But, to be interesting, a platform must have these other other things.
Users are very important. Lots of them. Interesting ones. People who are doing cooool things. Sometimes popular software or hardware doesn't become a platform until lots of people use them. An example: Lotus published APIs for their spreadsheet long after the product became popular. The Lotus platform had an installed base of users right from day 1. Lotus learned a lot from this experience; Notes was conceived as a development platform right from the beginning.
Just as important as users: other developers. There's strength in numbers. No one can solve every problem. Even competitors can be helpful. No product can be all things to all people. I could probably write a whole essay about this. Gotta have someone to bounce ideas off of. Competitors can be your best friend. No one understands you as well as your competitor, especially if the race has been running for a few years. But I digress.
A committment from the API author is also very important. How stable is the API? Will the API change in some major way, forcing developers to choose between the old way and the new way? In evaluating the stability of an API, a developer will probe the API, crawl inside it, and on the other side of it, imagining how it's implemented, to see how completely it solves the problem. If the solution is only partial, it may make sense to wait until it's more complete. No one wants to waste time implementing on top of an API that's going to change substantially.
A platform must have potential, or open space. I call this blue sky. The platform's API must show thru enough power so you can do *anything* on top of it. That's a very elusive idea, hard to define. You want an API to put limits on the problems it deals with, but you also want to leave open the possibility that any developer could pervert the API to make it solve problems that the inventor couldn't imagine. The author of an API is offering a challenge, saying "blow my mind," to everyone who might take a stab at implementing something on top of the API.
Here's my proposal for a dictionary definition.
A platform is "a blueprint for the evolution of a popular software interface or specification."
I've said that a platform is a Chinese household. This implies a hierarchy. One platform vendor, often a company (at least in the PC software biz) and many developers. But in an ideal world, each developer is also a platform vendor, publishing an API for their product and supporting other developers, perhaps even the original platform vendor, in selling new technology to their customers. So a platform relationship can be very complex, not a simple hierarchy. To miss that point is to miss a lot of potential.
Want to understand the Internet? Once you understand the platform concept, you now have all the concepts you need to understand the Internet. It's just a system for inventing new platforms. You could call the Internet a meta-platform, or a platform machine, because it contains all the collaboration tools a platform proponent needs to define and deploy new platforms. Got an idea that no one has thought of yet? Put out a RFC paper. Boom. It's a platform!
PS: API stands for Application Programming Interface.
PPS: IMHO stands for In My Humble Opinion.
PPPS: RFC stands for Request For Comment.
PPPPS: Pet peeve time. When you see the word "klooge" in print, it's often spelled "kludge," which gets mispronounced as rhyming with "judge." I think this makes uninitiated geeks look silly, and we should change the official spelling to the phonetic one to avoid unnecessary embarassment.
PPPPPS: I heard that Esther Dyson is moving from NY to Palo Alto. Coooool!
PPPPPPS: I've been getting a lot of email about a company claiming a patent on extending the worldwide web using helper apps or embedded scripts. If there's any legitimacy to this claim, it's a very big deal and a very big problem.