Ampify is a flexible social interaction and publishing system. Users can message other users in single, group, or broadcast fashion, in either public or private spaces. They may also create special kinds of messages called items which can then be annotated to do things within the system. For example, a user may create a ‘Proposal’ item which can then be voted on by other members of a group. When this is combined with other facilities such as attachments, renderers, links, and transclusions, the simple but well chosen basics of the system become potentially very customisable.
Group communication is enabled using Spaces, which are akin to IRC channels or Twitter hashtags. They're identified by hashes in front of their names: for example one may refer to the #ampify space. Users can create global or personal spaces, which can then be subscribed to and sent to by others. Spaces to which subscribing and publishing is private are called Lockers. These are identified by plus signs in front of their names: for example the +secrets locker. At the most simple level, then, ampify works much like IRC or Twitter, or any other web based messaging system.
Users have their own profiles in the system. When sending a message to a user, you address them using an at-sign, so one could talk to the user ‘sbp’ by addressing him as @sbp. Users can also create the aforementioned special kind of messages called Items. They must do this in their own personal kind of folder called a namespace, which is referred to using the tilde sign, ‘~’. The user ‘sbp’ could, for example, create a proposal item at ~sbp/proposal and others could then refer to the proposal in their own messages.
To enable items to be useful, Ampify uses a mechanism called Aspects. An aspect of an item is simply some kind of attribute or quality that it has. Aspects are generally invoked using slash commands. To rate the proposal ~sbp/proposal as being a three star proposal, for example, one may issue the following aspect command:
/rate ~sbp/proposal ***
In order to make the most of aspects, the values that aspects are given can be instances of a certain set of enumerated datatypes. So for example, we've already seen that stars can be used for ratings, but one can also use such things as numbers, sets, dates, currency, and links:
/when ~sbp/party 2010-01-06 20:00
/cost ~sbp/camera £199.99
/feed ~tav/ampify http://ampify.it/feed
As well as sending plain messages and items, users can attach files to them. Such files could be anything from music files to webpages and spreadsheets.
Users can link to all kinds of things in messages: spaces, other users, items, attachments, and of course other pages on the web. As well as doing this, people can transclude messages into other messages to keep content fresh. Let's say for example that the ~vatican/pop item represents the current population of the Vatican City, which at the moment is 826. Then by sending the following message:
Vatican City is the world's smallest country, with just {{~vatican/pop}} people
Subscribers would see the following:
Vatican City is the world's smallest country, with just 826 people
Whenever ~vatican/pop gets updated, the message would be updated too. Wikipedia employs a similar mechanism by using template transclusion to keep multiple articles updated from a single source.
Ampify is being built by Metanational Commons, a free software and cultural innovation initiative founded in the United Kingdom but with members in several countries around the world. If you'd like to help, or even just want to know more, then feel free to stop by the #esp IRC channel on the Freenode network.
This document was written by Sean B. Palmer.