Utopia |juːˈtəʊpɪə| noun
An imagined place or state of things in which everything is perfect. The word was first used in the book Utopia (1516) by Sir Thomas More.
ORIGIN based on Greek ou ‘not’ + topos ‘place.’
Utopia is a modular library for the creation of networked music applications, and builds upon the work of the Republic Quark and other existing network systems in SuperCollider. It aims to be modular (features available largely 'à la carte'), secure (provides methods for authentication and encryption), and flexible (to the extent possible, it tries not to impose a particular design or architecture). It provides functionality for synchronisation, communication, code sharing, and data sharing.
The central class of Utopia is AddrBook. This is essentially a dictionary of Peer instances, which represent participants or nodes in a networked music system. AddrBook is not a singleton, and a given system could use multiple instances of it to represent different subgroups, etc. It provides methods for looking up and communicating with one or more members. Most objects in Utopia take an AddrBook as an argument, and respond to changes in it when appropriate. An AddrBook is generally used as a (possibly dynamic) collection of intended recipients for one or more types of communication, and where possible the use of broadcast messages is avoided to allow for precise managing of information flow.
Similarly, most classes allow you to specify an OSC path, which allows for things like multiple simultaneous chat networks (e.g. one for general chat, one for 'shouting'), or to further control membership in particular activities. In general objects signal change via Object's dependancy mechanism (see Object: Dependancy and http://en.wikipedia.org/wiki/Observer_pattern), which keeps the classes lightweight and loosely coupled, and makes the creation of custom GUIs etc., straightforward and quick.
Utopia provides multiple ways of populating an AddrBook, depending on the desired system design:
Utopia provides a variety of classes for communicating different sorts of information between Peers:
The discovery classes described above can take an authenticator object as an argument, to test whether joining Peers have permission to join an AddrBook. Currently Utopia supplies two types:
GroupPasswordAuthenticator takes an encryptor as an argument, to prevent passwords being sent in plaintext. Encryptors can also be used by Utopia's chat, code-sharing, and data-sharing classes. There are currently two types:
Utopia is currently an alpha release. It is an open source project and welcomes contibutions or suggestions. It is hosted at https://github.com/muellmusik/Utopia. Please file any requests or issues there.