a project by
Sign in to your account.

Under the Hood

About the Software

Juxta Commons is powered by the Juxta Web Service, an API that allows users to leverage the various microservices involved in textual collation for their own projects. The Juxta Web Service (Juxta WS) was developed by NINES and Performant Software, with generous support from Gregor Middell and Ronald Dekker.

The Commons is made up of three major pieces: the Juxta WS, a MySQL database, and the Commons interface itself, all of which are described in detail below, along with some history and theory behind the project's development. Many thanks are due to Lou Foster of Performant Software Solutions, for his work compiling this documentation.

The Gothenburg Model

In May of 2009, members of the Juxta Research and Development team met with developers of CollateX and Interedition at a COST Action 32 conference in Gothenburg, Sweden. They theorized a collation web service model, now referred to as the Gothenburg Model, which breaks down the collation process into microservices: tokenizing, collation and alignment, and visualization. This web service could be used as a standalone installation for those interested in collation only, or it could implemented within a broader suite of online tools created for textual analysis. For example, within a platform such as Bamboo Corpora Space, or Islandora, a text-mining algorithm could benefit from the tokenization performed by the Juxta Web Service.

The Juxta Web Service

The Juxta WS is a server-side Java application that exposes a RESTful API to the collation services determined by the Gothenburg Model. It was built upon standard open source frameworks such as Spring and Restlet. The code (and relevant documentation) can be found on GitHub.

Collation is based on the Gothenburg Model, which breaks collation in this pipeline of steps:

MySQL Database

All of the data for the Commons and the Juxta WS is stored on a MySQL database. As much as possible, content is streamed to and from the database to reduce memory requirements, and to ensure database response and scalability, connections are pooled using BoneCP.

A snapshot of the database is taken every day at 2 AM (EST). A rolling set of 5 such backups are kept, in an effort to ensure content can be restored to within one day of usage in the event of failure.

Juxta Commons

The Commons is a Ruby on Rails application that provides the user interface and authentication features of the system. It has no collation logic in itself, but is powered by the Juxta WS, with which it communicates by exchanging JSON data over RESTful API calls. The Commons relies heavily upon jQuery, jQuery UI and Raphael to drive the user interface.

The XML editors offered for source and witness editing are powered by CodeMirror.