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.
|