Last time: “Platforms – The New Application-Centric Product Positioning,” in which I encouraged thinking about platforms communities rather than language technologies or standards.
Now: How does a single vendor create a platform community?
[This is an excerpt from a Lisp conference talk I gave in 2002.]
We might not want to create a new platform. If we can relate our software products to an existing platform like J2EE, then that’s certainly the way to go. Riding an existing community’s energy is much quicker than creating our own “chi”. Maybe we eventually expand our scope to the point where there is a separately recognizable platform.
A particular example is to go back to the embedded specialized language model. Paul Graham has some great stories of Viaweb doing this. (www.paulgraham.com) You can be very successful creating applications that include languages that no one ever sees externally. It also works for “applications” that act as tools or libraries within an existing platform. One key to this is to make sure that all the publicly visible parts of your application or tool look exactly like a component in the established platform for the given application domain. For example, Paul made his Web store generator run as an ordinary Unix process and used the Unix file system for storage. No one could see it had a Lisp system inside. He rode the Unix-as-Web-application-server platform.
Developing our own platform from scratch can be prohibitively expensive. And if we charge too much for the common platform functionality, then we discourage community growth.
Hypothesis: “The cost of creating and promulgating an infrastructure platform is rarely recouped.”
Some companies have been lucky (or ruthless) enough to produce annuities from the licensing of their proprietary platform. Examples are MS Windows, or IBM System 360. But I think that in the long run, it is more common to not directly make back the development and promotion costs just from intellectual property ownership. I’m thinking about Sun and Java, AT&T and Unix, BBN and the Internet, and Xerox and everything else.
Suggestion: Reduce costs and grow community by offering platform as open source.
The idea is to reduce the platform to the minimum architecture that can be used to produce the results required for the intended class of application. This is the hardest part to get right, and the hardest to produce revenue on without killing the goose. These are the conditions in which Open Source is supposed to excel. It supposedly reduces development costs and increases reliability and performance. It also grows the community in a very direct way by involving other people in the platform’s success. Finally, open source platforms are a magnet for other developers to come and build more tools that enhance the value of the platform.
Unix, Gnu, Linux
Note that commercial versions of the open platform may well be appropriate. Examples are Sun Solaris for Unix, and J2EE application servers such as IBM Websphere and BEA Weblogic. But the idea is still that at least pilot projects can be developed and deployed with zero licensing fees, and that there is a choice of platform suppliers for mission-critical commercial applications.
I want to be very clear that I am not suggesting that Lisp vendors should open source their traditional Lisp offerings. Franz has weathered many storms with their licensing strategies, and I don’t think they’ll gain anything by giving away Lisp. CMUCL has been available as open source for a long time, and it hasn’t lead to any mass adoption of Common Lisp. Instead, the idea here is to think in terms of platforms for a class of application, not in terms of languages. I’d like for people to think about the kinds of applications for which their language experience gives them useful insight. Then define a minimal open platform that can host those applications. That open platform is not necessarily going to be isomorphic to a Common Lisp top-level.