Developing and deploying scientific software can be challenging; in the future it shall not be so. The Electronic Structure Library initiative [1] (ESL) is a volunteer-run project and supported by CECAM (Centre Européen de Calcul Atomique et Moléculaire) which now enters its 10th year. It concentrates on best practices in scientific software design and development for the electronic structure community and comprises developers from all the major open source electronic structure codes. The collective meets annually for a set of informal and formal talks followed by a hands on hackathon.
While the purpose of the hackathon is not to develop software per se, we curate a collection of core libraries that can be, and are used in other projects, for example, libxc and wannier90. The complete list of packages included in the ESL Bundle is available in ref. [2]. Another outcome of these hackathons is to share knowledge of software engineering and development between codes. For instance, projects like wannier90 pushed their librarification as an outcome of one of these meetings. Incidentally, in this case the work itself was carried out by my CoSeC colleagues in support of the Collaborative Computational Project CCP9. Another outcome was that DFTB+, which is a code for simulations using Density Functional-based Tight Binding method, moved to cmake as their build system. A lively monthly seminar on modern Fortran stemmed from this ESL initiative too. If you are interested to know more, have a look at this paper [3].
Image above: Comparison of the traditional monolithic and emerging modular paradigms in electronic structure coding. One of today's electronic structure codes — large blue box in panel (a) — thins down into the higher-level electronic structure driver that defines the particular code — blue box in panel (b), allowing for a more specialized and sustainable development of the different parts of the software. Full information is available in ref. [3].
ESL is spurring a paradigm change in the software development for electronic structure calculations. The ambition of ESL is to segregate layers of functionality within modules which are general, standardised and efficient. In this way, new ideas, and new science, can be coded by scientists without needing to rewrite functionalities that are already well-established, and without needing to know more software engineering or computer science than science. In other words, we want to separate the coding effort for cutting-edge research from the software infrastructure it rests on top of, which needs maintaining and rewriting at every step of the hardware race. This has been noticed by many people, even though not everybody embraces it. We see however, that new generations are increasingly more aware of the importance of solid scientific software development.