The CECAM electronic structure library and the modular software development paradigm
Authors: Oliveira Micael J. T. , Papior Nick , Pouillon Yann , Blum Volker , Artacho Emilio , Caliste Damien , Corsetti Fabiano , de Gironcoli Stefano , Elena Alin M. , García Alberto , García-Suárez Víctor M. , Genovese Luigi , Huhn William P. , Huhs Georg , Kokott Sebastian , Küçükbenli Emine , Larsen Ask H. , Lazzaro Alfio , Lebedeva Irina V. , Li Yingzhou , López-Durán David , López-Tarifa Pablo , Lüders Martin , Marques Miguel A. L. , Minar Jan , Mohr Stephan , Mostofi Arash A. , O’Cais Alan , Payne Mike C. , Ruh Thomas , Smith Daniel G. A. , Soler José M. , Strubbe David A. , Tancogne-Dejean Nicolas , Tildesley Dominic , Torrent Marc , Yu Victor Wen-zhe 
Published: July 2020

First-principles electronic structure calculations are now accessible to a very large community of users across many disciplines, thanks to many successful software packages, some of which are described in this special issue. The traditional coding paradigm for such packages is monolithic, i.e., regardless of how modular its internal structure may be, the code is built independently from others, essentially from the compiler up, possibly with the exception of linear-algebra and message-passing libraries. This model has endured and been quite successful for decades. The successful evolution of the electronic structure methodology itself, however, has resulted in an increasing complexity and an ever longer list of features expected within all software packages, which implies a growing amount of replication between different packages, not only in the initial coding but, more importantly, every time a code needs to be re-engineered to adapt to the evolution of computer hardware architecture. The Electronic Structure Library (ESL) was initiated by CECAM (the European Centre for Atomic and Molecular Calculations) to catalyze a paradigm shift away from the monolithic model and promote modularization, with the ambition to extract common tasks from electronic structure codes and redesign them as open-source libraries available to everybody. Such libraries include “heavy-duty” ones that have the potential for a high degree of parallelization and adaptation to novel hardware within them, thereby separating the sophisticated computer science aspects of performance optimization and re-engineering from the computational science done by, e.g., physicists and chemists when implementing new ideas. We envisage that this modular paradigm will improve overall coding efficiency and enable specialists (whether they be computer scientists or computational scientists) to use their skills more effectively and will lead to a more dynamic evolution of software in the community as well as lower barriers to entry for new developers. The model comes with new challenges, though. The building and compilation of a code based on many interdependent libraries (and their versions) is a much more complex task than that of a code delivered in a single self-contained package. Here, we describe the state of the ESL, the different libraries it now contains, the short- and mid-term plans for further libraries, and the way the new challenges are faced. The ESL is a community initiative into which several pre-existing codes and their developers have contributed with their software and efforts, from which several codes are already benefiting, and which remains open to the community.