[OPEN-ILS-DEV] Software architecture ?

Mike Rylander mrylander at gmail.com
Fri Feb 29 20:41:35 EST 2008

On Fri, Feb 29, 2008 at 10:43 AM, Reuben Pasquini <rdp0004 at auburn.edu> wrote:
> Hello!
>  I'm installing Evergreen-ILS-,
>  and in the process trying to get a grip on how the software is put
>  together.
>  The following is what I came up with so far - can someone verify if
>  this
>  is right, or straighten me out if it's wrong ?
>  *. Evergreen-OpenILs consists of several OpenSrf modules
>      (separate applications that plug into an OpenSrf setup
>         to communicate with each other)
>       and a shared postgres database.

RIght on.

>  *. OpenSRF is a distributed computing framework characterized by:
>      o. The use of a central jabber server to manage communication

One or more jabber servers, but, yes.  You can configure multiple
jabber domains for access separation, and you can load-balance the
jabber servers in one domain.  Then, there's an OpenSRF Router per
jabber domain, with which the services (that you mention below)
register -- services can register with multiple Routers on separate

>      o. WSDL/SOAP-like procedure-call mechanisms where a component
>             publishes its interface with OpenSRF via an XML-spec,
>             and remote-procedure call is implemented via exchange
>             of XML messages via jabber.

Well, there are several interfaces.

- The native transport is JSON-over-XMPP (jabber) -- all OpenSRF-level
messages are JSON encoded, and wrapped in Jabber XML
- A ReST-ish HTTP gateway which can consume and produce both JSON and
XML -- this is not OpenSRF proper, but rather a Web Service like
- An XML-RPC gateway built on top of the RPC::XML Perl module
- A true port of the OpenSRF message passing syntax from XMPP to HTTP,
based on the spec I put together here(1).   Bill Erickson has created
a Python reference implementation.

Then there are the client flavors.  There's a new JavaScript package
for interacting with the OpenSRF-over-HTTP translator, as well as the
existing JSON gateway JavaScript package.  There are XMPP client
libraries for JavaScript (only supported in Mozilla as an extension),
Perl, Python, C and Java, as well as support for any language with
XML-RPC bindings.

One other interesting feature is the introspection API.  Whenever a
method is registered, an entry in an introspection table is created
within the OpenSRF server. Using the XML gateway and some XSLT, we've
built a simple web app for exploring the in-line documentation from a
running instance of the OpenSRF application.  You can check that out

I hope that helps shed some more light on how these things work
together, and please don't hesitate if you have any more questions.

 (1) http://open-ils.org/dokuwiki/doku.php?id=opensrf_over_http
 (2) http://dev.gapines.org/opac/extras/docgen.xsl?service=open-ils.actor&all=on&offset=0&limit=25

Mike Rylander
 | VP, Research and Design
 | Equinox Software, Inc. / The Evergreen Experts
 | phone:  1-877-OPEN-ILS (673-6457)
 | email:  miker at esilibrary.com
 | web:  http://www.esilibrary.com

More information about the Open-ils-dev mailing list