Jangle Specification Version 1.0

Introduction and Background to Jangle

Jangle is a specification for applying the Atom Publishing Protocol (AtomPub) to library resources and for exposing these resources simply and RESTfully.

There are three basic principles that define Jangle:

  • The library information model is broken up into four discrete concepts or entities: Actors, Resources, Items and Collections.
  • The Jangle architecture is divided into two components, the Jangle core: the public facing AtomPub interface; and one or many connectors: applications that contain the business logic for translating specific systems into Jangle.
  • The Jangle core and connectors communicate via an HTTP REST API using a defined JSON syntax.

Welcome to Project Jangle

Jangle (Just Another Next Generation Library Environment) is an open source project designed to facilitate API access to Library Systems. If you build, use, manage or just want simple access to a library system and would like to get involved, join the Google Group or visit the project pages and become part of the project.

Getting Started with Writing Jangle Connectors

So you have a service that you like to set up a Jangle API for. You look at the spec. You skim the mailing list. Perhaps you check out some of the frameworks from the Google Code site. Unfortunately, despite the Jangle community's best intentions you probably only see this:

  1. Find a library-domain application.
  2. ???
  3. Jangle!!!

AtomPub: Not Just For Blogs Anymore, Now Also Good For Blog Powered OPACs!

As I mentioned previously, the primary use case for Jangle at this stage is discovery systems. Not that it wouldn't be useful for other kinds of applications, but the lack of specification around Create, Update or Delete limit the immediate usefulness in certain situations. Also, the OPAC replacement is not only an immediate need for many libraries, it's also a pretty good demonstration of much of Jangle's functionality.

Jangle as Django Dongle via KoChief

Now that the Jangle spec has been released, I've been looking for small, simple projects to show off how easy Jangle makes it to incorporate into your applications. The general approach to the projects I have chosen for the proofs-of-concept for Jangle have been to target applications that get the point across but don't require a ton of overhead on my part to either get running or keep running.

Jangle Podcast Available

On Halloween, I had the privilege of being the guest for the return of Dan Chudnov's podcast series, Library Geeks.

It's long. Really long. And kind of messy.

But it's chock full of Jangle information and Dan leads some very good questions that get at the heart of how Jangle can be used to very easily provide library data integration into local development projects.

Anyway, it was great to be back on Library Geeks and to talk to Dan.

Jangle Vocabulary

The Jangle Vocabulary is intended to provide unambiguous identifiers and definitions to provide pointers to Jangle implementers and developers to understand what data is being provided by a Jangle service.

Record formats registry (http://jangle.org/vocab/formats#)

Entity registry (http://jangle.org/vocab/Entity#)

Registry of other URIs, for use in categories, etc. (http://jangle.org/vocab/terms#)

Format Registry

This registry is intended to help define authoritative identifiers for negotiating requests for specific metadata types in standards such as Jangle or unAPI.

The identifiers themselves arbitrary; while consistency is helpful, it's not mandated.  Also using a term that makes sense for a given format (such as the explicit mime-type or namespace) will be more intuitive.  The important part is to have agreement on exactly what a given identifier stands for.

Connector API

HOWTO build a Jangle connector

Note, everything here is negotiable.  If you have a better idea for anything, please provide comments!

All GET requests should return a JSON object with the following keys:

time, string
UTC timestamp of request

request, string
returns the path and query string of the incoming request,

data, array
an array of objects,

Anatomy of the Jangle core

While the simpler of the two architectural components (core and connector), the Jangle core has the distinction of being public face of Jangle and therefore the only part of Jangle that most people should ever have to see.

The core, in essence, is an Atom Publishing Protocol proxy to the registered backend connectors. It routes the HTTP requests to the connectors, and serializes the JSON responses to Atom feeds.

Syndicate content