3. Implementation

In order to allow the various elements of the LoaMA architecture to interoperate by exchanging data simply and effectively, a suitable object model had to be chosen to represent data internally. The object model had to be general enough to represent feeds, but also playlists, filters, categories, selections, etc.

Since most components manipulate RSS feeds, an object representation for RSS seemed appropriate. However, the RSS format is too limited, since it only allows a single channel in a feed and there is no provision for nesting. Nesting is required to represent for instance playlists arranged into hierarchical categories. Hence we designed an extension to the object model for feeds, allowing multiple channels and channels within channels.

The object model has been implemented as an extension of RSS.NET [5], an open source class library for RSS feeds. While the RSS format is meant to be extensible through the mechanism of namespaces, RSS.NET still does not support this feature, so we extended the RSS.NET parser and added special attributes required for LoaMA in the loama namespace. These extensions remain transparent to other RSS applications which will just discard the unknown attributes.

Other libraries used in the projects are: the NBT library [4] for the BitTorrent module, that we have extended and modified and the Skype API library [5] to implement the phone calls.

Even if an essential task of a media aggregator like LoaMA is to present various media to the user, in particular audio and video streaming, LoaMA could be implemented without developing any player or renderer (except for the mobile phone version which implements its own players).

For the PC version of LoaMA in fact we adopted a software component architecture, integrating components such as Windows Media Player to handle audio/video content and the Internet Explorer browser for HTML rendering. This architectural requirement was one of the main reasons for choosing C# as programming language and .Net as platform, since this provides an easier mean to integrate software components. A Linux port based on Mono [7] is being considered.

The Mobile Media Aggregator instead has been implemented in Java because of its wider availability on cellular phones.

4. Development Methodology

The project was developed as the term project of a university course. About seventy students have been involved in programming the application.

The design has been done after an initial analysis phase to identify the requirements and the overall architecture.

The development is carried out by applying Extreme Programming practices. Students are encouraged to work in pairs, frequent release cycles are planned as well as sessions for revising requirements, code refactoring is encouraged as new insights are gained on the system desired behavior.

The development of the project, during the semester, has been split and assigned to several group teams. Coordination among the groups is ensured by using several means of communications among the teams (forum, mail, announcements, and meetings) as well as by performing join points at each incremental release.

Every second week meetings were held to perform checkpoints and to integrate the various modules, under the teachersí supervision. Such meetings helped us to fix bugs and to create reliable and stable software.

The code for the project is held on a CVS server, where all developers are allowed to perform both updates and commit. This speeds up development avoiding waits for authorizations for other members. Proper use of an online forum has been sufficient to coordinate with other developers by notifying them immediately of important changes. The developers have learned to properly use the CVS ensuring that it always contains a properly working version of the application.

The site for the project (http://loa3.cli.di.unipi.it) contains working documents, reference material and discussion forums among the participants. The full source code for the application has been released on SourceForge [10].

5. Conclusions

We presented the architecture of LoaMA, a personal media aggregator that provides several innovative features, in particular customization capabilities by composing transformers on RSS feeds.

A first version of LoaMA has been completed and is available for download from SourceForge [10].

Work is focusing on data persistence, improving the user interface and providing OPML [12] support for importing/exporting RSS feeds subscriptions.