LAMMPS: A Case Study For Applying Modern Software Engineering to an Established Research Software Package
Axel Kohlmeyer, Richard Berger
TL;DR
The paper analyzes how applying modern software engineering practices to the established LAMMPS molecular dynamics package has improved maintainability, code quality, and collaboration across a 30-year development history. It documents a shift from Fortran origins to a C++-based architecture, a GitHub-driven collaboration model, and extensive automated testing, static analysis, and documentation evolution. Core contributions include a plugin system, a CMake-driven build, modern C++ interfaces (Python, Fortran, C), and the LAMMPS GUI, all enabling broader participation by researchers with limited software training. The work demonstrates that disciplined development workflows, comprehensive testing, and accessible interfaces are essential to sustain a long-lived scientific software project amid evolving hardware, user needs, and contributor communities.
Abstract
We review various changes made in recent years to the software development process of the LAMMPS simulation software package and the software itself. We discuss how those changes have impacted the effort and workflow required to develop and maintain a software package that has been in existence for more than 30 years and where a significant part of the code base is contributed by external developers. We also look into how those changes have affected the code quality and ease of modifying and extending the software while at the same time its audience has changed from a cohort with a generally strong software development background to a group containing many researchers with limited software development skills. We explore how this contributes to LAMMPS' significant growth in popularity in that time. We close with an outlook on future steps.
