Friday, November 04, 2005

Software as Language

Jon Udell notes that hackability is a key concept behind so-called Web 2.0 applications (such as Google Maps and Flickr). But he also recognises that the term has some unfortunate connotations. In the mainstream, it's associated with illegal hacking into systems, and in general the term implies a workaround, which doesn't really capture what's going on with hackable applications. He suggests the term Democratizing Innovation (which is the title of a recent book).

I think there's an alternative way to conceptualise hackability. To me, the concept underlying hackable applications, and the democratization of innovation that can enable, is software as language.

A programming language provides building blocks -- a set of functions, including those for managing control flow, and a grammar that says how they can be combined -- and when you write a program you create a higher-level set of building blocks which you organise in a specific arrangement.

The idea of software as language is to not just provide the user with the software system as the fixed, specific arrangment, but to give them access to the building blocks so they can use them in their own arrangements and as something to build upon.

In other words, rather than giving them a program, you're giving them a language that they can use to compose their own programs and solutions.

Naturally, you want to design things to facilitiate composition using the building blocks. Such as with the idea, that Jon mentions in the article, of user-innovation toolkits.

No comments:

Post a Comment