Building an End to End Press & Journal Platform
It’s not easy.
Over the last year I’ve been working almost non stop on a Press and Journal platform at Ubiquity Press. Originally just an Open Access Publisher, Ubiquity branched out (explicitly not using the word “pivot” here) and now offer our platform to other publishers. There are a few:
- University of California Press (Collabra & Luminos)
- Stockholm University Press
- University of Westminster Press
- Utrecht University Library (uopen)
- Open Library of Humanities
- Full list at the Ubiquity Press website
The platform includes four major components that were built at different times and by different people — so making the components work together can be difficult.
- Press Portal (Zipper)
- Journal Site and Management System
- Core System (Jura)
We make use of a heavily customised version of PKP’s Open Journal Systems for our Journal Management System, but the surrounding systems (including our Journal Websites) are built in Django/Python, allowing us to build, test and deploy new features and fixes rapidly.
Working alongside Serious Fox on design we built our press portal platform, initially just to run our own website, but then also to host portals for all of our partner presses. Kudos goes to Luke Skibinski and Ankoor Patel for their work on this project, most of which is still in the repo today. The portal system is a single Django site managing multiple domains through a forked version of Django Dynamic sites.
We call this project “Zipper” internally, because it zips all of the press sites into a single application. It is probably the most straight forward of the applications we’ve developed. It handles customisation by providing a template over-ride folder for each press:
Django’s template system will look first for a template in a given press’ template folder before rendering the global version if it can’t be found.
The Journal Site is a Django/Python wrapper for the OJS database utilising an open source package we wrote called OJS-SQLA. It’s an SQL Alchemy mapping of the OJS database allowing us to easily pull data out via ORM queries.
OJS is a great tool for Journal Management but doesn’t provide for the rapid development process and branding we required. Our team mainly concentrates on Django apps, so it made sense to spend some time building a wrapper infrastructure so that, once complete, we’d be able to add new functions easily.
The development team are currently working on a new round of updates for this journal site and, once released, will be the first minor version: 1.1.
Rua is currently in beta phase, it’s Ubiquity Press’ Open Source book management system. Rua began life as an experiment, simply to see if I could build a book management platform and, after showing it to the management team at Ubiquity Press, became an official project.
Rua covers the entire book production process starting with proposals (or direct submissions of full monographs) through editing, typesetting and production. Rua is a modular system, architected to integrate with other systems via a RESTful API. This means that books can be fed in from other submission and review platforms for production and publication.
We recently completed a UI facelift with help from Linnea Strid, which makes the system easier to use and looks awesome. Rua will be phased in over the next month or so and OMP will be phased out.
Core System (Jura)
Jura (named after the Whisky) is Ubiquity Press’ core platform. It pulls data together from all sections of the site and allows staff and editors to manage settings, thumbnails, CMS pages and other fun features.
Jura is perhaps the most complex of our systems. It pulls data together from the journal, press and other third party systems like Twitter and Google Analytics together.
Jura will soon have some of its advanced features rolled out to press and journal users, allowing them to have access to change settings across their journals without having to login to multiple systems or navigate annoying menus and screens.
Bringing together in-house and community-curated code into a single, easily deployed system has been hard. But now we have an excellent framework that allows us to deploy presses and journals quickly with lots of optional features. The next step is to allow Editorial staff to setup journals without technical input…
A platform like Ubiquity’s can only be built by a dedicated team. A lot of the success for our systems comes down to Mauro Sanchez, who joined the UP team almost a year ago and brings an enthusiasm to software development that I wish I had.
Andy Byers — Lead Developer
Mauro Sanchez — Developer
Ioannis Cleary — Junior Developer