To paraphrase an observation by our new Scientific Director: from the perspective of most of our users, arXiv runs on magic. With the exception of a small handful of hiccups, arXiv has just worked for over 25 years. Since I joined the arXiv IT team as lead software architect in June, I’ve been working hard to pull back the proverbial curtain and take stock of how the sausage is made, and to synthesize the team’s aspirations and expertise for the arXiv Next Generation (arXiv-NG) project. We’ve done a considerable amount of research and soul-searching, and an architecture for NG has emerged.
Over the coming weeks and months I’ll discuss the highlights of the NG architecture on this blog, and keep you up to date on development progress. This post is a brief 30,000-foot view of where we’re going over the next two years.
The arXiv leadership team has explored a wide range of strategies for the NG process, ranging from greenfield redevelopment, evolutionary development, to adoption off-the-shelf (OTS) solutions. Recognizing the unique business processes surrounding the arXiv.org system, as well as the advanced state of the existing system (notwithstanding its limitations), and after careful review of possible OTS products in the e-print and repository space, we decided to pursue an incremental in-house re-development of the existing system. We’re calling that process Classic Renewal.
The existing arXiv system is highly stable, in that it provides a consistent set of core services with high availability. The codebase that supports that system has grown organically over a long period of time, with varying and sometimes unclear architectural visions. The technology on which arXiv is built is variously antiquated or (due to cultural changes) obscure. As a result, it is exceedingly expensive to develop the existing codebase to fix bugs, address feature requests, and keep pace with end-user expectations of quality, usability, and security. The principal challenge of the Classic Renewal process will be to progressively evolve arXiv into a modern and architecturally sound software system while maintaining the level of consistency and availability of the system as a whole.
By virtue of its history and high-level design, arXiv has three notable advantages that are unique in the current e-print space and that directly inform our solution strategy:
- The arXiv user base is highly satisfied with the existing service, despite (and, in some cases, because of) its dated UI and austere data model. If little or no user-facing changes were made to the core services, a substantial portion of the user base would remain highly satisfied.
- There already exists a large ecosystem of researchers and web developers who are generating online tools based on arXiv content. This includes recommender systems, search tools, text mining, social media “alt metrics”, etc. This relieves pressure to add trendy bells and whistles to arXiv itself. At the same time, the popularity of arXiv motivates external groups to collaborate on integrations that add value for users.
- The separation of submission/moderation processes and discovery/access, both in time and in the way that data are stored, transformed, and accessed, impart many features associated with modern distributed software systems. Although the current implementation of the system is extremely complicated (poor separation of concerns, breakdown of abstractions), the quasi-distributed nature of the current system lends itself to incremental re-development.
These observations suggest that we can maximize the impact of the NG project by incrementally re-engineering existing core systems around modern technology with a consistently-applied modular architecture, and prioritizing the availability of high-quality data and services for programmatic consumption via well-documented APIs.
In future blog posts I’ll dive into more detail about what the architectural transition from Classic to NG entails. In my next post, I’ll talk about what it means to migrate from a monolith to an evolutionary architecture deployed in Amazon Web Services, and how we’re using Docker to get there. I’ll also discuss the team’s transition from Perl to Python, and how we’re using the Flask “microframework” to develop lightweight and scalable web services.