Matthew Lincoln, PhD Cultural Heritage Data & Info Architecture

Dealing with Django: ETHOS and the CMU Library Publishing Service

When I interviewed for this job, I made clear that web development was the least developed corner of my programming skills. In fact, one of the main reasons the CMU position was so appealing to me was that it was a chance to build a broader foundation of skills. Between my dissertation work and the Getty, I’d had nearly 5 years of data transformation work; but had never once really set up a web server or had to deal with things like object-relational-mappers or routing or views, and so on and so on.

So my first major web project, the Encyclopedia for the History of Science, or ETHOS (General editor: Christopher Phillips), was like getting tossed into the lake and told to swim (except, like, way less abusive.)

Screenshot of the front page of the Encyclopedia of the History of Science

Luckily, this wasn’t a project done totally from scratch. The team had already settled on using the open source journal platform Janeway because it was based in plain simple Django, which meant it was far easier to build custom modules for behavior like creating versioned articles or using Pandoc to convert MS Word manuscripts into display-ready HTML without needing to touch the core software itself.

The reason this was so crucial is that our installation of Janeway would not just be dedicated to ETHOS, but would in fact become a core service for the nascent CMU Library Publishing Service, with plans to support the production and publishing of several CMU-affiliated journals. Because we were keeping an eye on this several years down the road, it was a priority for our platform to be relatively modular, letting us build out custom capabilities for select publications while still keeping our core deployment of Janeway up to date with new code coming in from the hardworking team at Birkbeck CTP.

This was also one of the roughly 50% of projects (so far) where I had fellow collaborators contributing code, rather than being the sole dev for a project. For ETHOS, it was actually quite the team: not only did we have the core Janeway developers actively updating the core system, as well as my predecessors at CMU Dan Evans and Drew Stimson, but we also had just hired a new staff programmer at CMU Libraries, Jonathan Kiritharan, who had the immense task of joining the project and coming up to speed just three months before its soft launch. Jonathan is taking responsibility for supporting the service in production for future journals as well. Beyond even that, as a marker of how much work is really needed to create the polished sites that you enjoy on a daily basis, we contracted a crack front-end developer here in Pittsburgh, Patrick Fulton, to render Heidi Bartlett’s designs into the styled website you see now.

While I picked up a lot of new Django skills working on this project, much of my work became coordinating the efforts of our core back- and front-end developers, and helping to manage the expectations of our PI and librarians who would be taking ownership of the service when our development sprint was done. In a primarily solo-dev shop, trying to both conceptualize as well as execute every single piece of code in a project can be an exhausting and isolating affair. While these larger projects can certainly bring their own kinds of chaos, it’s a refreshing shift to be able to entrust segments of a project to your teammates, and offers moments of immense pride to watch them succeed.

Comments are enabled via

Cite this post:

Lincoln, Matthew D. "Dealing with Django: ETHOS and the CMU Library Publishing Service." Matthew Lincoln, PhD (blog), 05 Dec 2019,

Tagged in: CMU DHCodePublishingLAM