Siena (Scalable Internet Event
Notification Architecture) is a research project aimed
at designing and constructing a generic scalable event
notification service. For full details on the Siena
project follow this link. This page
contains source and binary packages as well as user documentation for
the implementation of Siena. Other Siena software is available
from the Siena contrib page.
- 17 May 2015
- Released version 2.0.4 of the Siena API
and router implementation. This version includes bugfixes and
improvements. Please, see the change
log for details. Binary, source, and documentation packages
are available for download here. The
source-code repository for Siena 2.0 is also readable with:
git clone http://www.inf.usi.ch/carzaniga/siena/software/siena.git
If you are a Siena user, or even if you are
just evaluating or studying Siena, please consider registering with us
by submitting a Siena User Registration Form
License and Credits
Copyright © 1998-2004 University of Colorado.
Copyright © 2005-2015 Antonio Carzaniga.
Siena is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Siena is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
is primarily the work of Antonio Carzaniga
Alexander L. Wolf
Significant contributions to the implementation and improvement of
Siena are also due to Mauro Caporuscio, Jing Deng, John Giacomoni,
Cyrus Hall, Giovanni Toffetti Carughi, and Amir Malekpour.
If you are using Siena
, you may want to submit a
Siena User Registration Form
. Any sort of
feedback is much appreciated. Bug reports and/or technical questions
should be directed to Antonio Carzaniga (firstname.lastname@example.org
We thank David S. Rosenblum for his foundational contribution to this
This implementation of Siena
consists of two classes of
- Siena servers (or routers), and
- client-level interfaces (or API).
The current prototype includes three variants of servers and two
variants of interfaces. The interfaces are for Java and C++. The Java
language interface also works as a server, and implements both a
hierarchical architecture and a general network
. The other server, which at this point should be
considered obsolete, implements a peer-to-peer architecture and is
programmed in C++. Notice that the two server and API implementations
are not mutually compatible.
In summary, there are two implementations that, for lack of better
terms, I will call Current and Old respectively.
These include the following components:
- Current Version
- a Siena router capable of supporting a
general network topology plus an application programming
interface for Java. This implementation also includes the
previous Siena router which is based on a hierarchical network.
- Old Version
- a peer-to-peer server implemented in C++ and a
Unless you intend to experiment with the "Old" implementation, you
should download and use the "Current" version.
Installation instructions are available in each package.
- Siena 2.x
- Siena 1.x
- C++ API
- C++ API
- C++ server