
In the previous blog, I talked about program to program design versus program to people design. Google does this well. For each type, they create platforms for third parties to develop applications (serving the long tail in the process) and allow for customization.
Take mashups (see the network figure). This is clearly applications to applications design.First of all, notice that many companies unbundle their functionality and provide them as separate components (googleMaps, GoogleSearch, Blogger etc.). They provide platforms to make it easy for developers to use these components via APIs and toolkits.
On the program to people front, Google allows users to customize their homepage using pre-fabricated components that are availabe on Google. This allows third parties to develop widgets and make them available on Google. To encourage this, Google provides toolkits and promotes these widgets on thier website. Finally, through the magic of AJAX, Google allows endusers to customize their homepage by moving and adding widgets to suit thier needs.
Couple of highlights. First, encourage third party development of funtionality. Support this through APIs and toolkits. Second, allow for customization and user control.