Electronic Structure Software Development: Best Practices and Tools
CECAM-HQ-EPFL, Lausanne, Switzerland
The electronic structure community has evolved significantly in the last decade. There are now a sizable number of mature electronic-structure codes, still under very active development, becoming increasingly more complex as new methods emerge and existing methods evolve, and paying renewed attention to issues of interoperability and the development of sophisticated workflows for materials properties. At the same time, the relentless advance in the development of novel computer architectures is putting added pressure on the developers to provide performance portability in addition to new functionalities. It has become increasingly clear that the model of closed development around a given code is not sustainable, and new, more open, paradigms for collaborative development have emerged. The most successful so far has been the push for the provision of standard libraries (e.g. [LibXC] and [PETSc]) and APIs that can be used as flexible software components in several codes, and more easily optimized and ported. Apart from the obvious benefits, this shift has contributed to dilute the former silo mentality, both at a scientific level (one research group, one code) as well as at the business model level (libre software vs. open-source vs. proprietary), allowing collaborations between communities and making new public-private partnerships possible.
In this context, an essential piece is the Electronic Structure Library initiative [esl, esl-gitlab]; an electronic structure community that promotes the development of standardized libraries and their release in a bundled fashion for ease of use. This bundle solves various installation issues for end users and enables a smoother integration of the shipped libraries into external codes. In order to maintain the compatibility of the bundle with the main electronic-structure codes on the long run, its development has been accompanied by the creation of the ESL Steering Committee, which includes representatives of both the individual ESL component libraries and of the codes using them. As a consequence, the visibility of the ESL expands and the developers are exposed to an increasing amount of feedback, as well as requests from third-party applications.
Other initiatives and projects sharing this outlook are the Molecular Sciences Software Institute [MolSSI] and the MaX Center of Excellence [MaX]. At a broader level, the European Materials Modelling Council (EMMC) has sought to establish guidelines and roadmaps to meet challenges in modelling and its economic sustainability, including career paths for software developers [EMMC1,EMMC2].
The ESL initiative has been on-going for 7 years and has been very successful in its goals . Up till now the ESL has focused on content and usability of the libraries. However, with the growth in the number of contributed libraries and users, it has become clear that a minimum set of requirements is needed to sustain the quality and usability of the components. At the same time has come the realization that in the electronic structure community there is still a lot of effort required to sustain paradigms for developing software using best practices. A continuous improvement and building of software requires an efficient coordination of skills from a software perspective:
- Ensuring that the library and codes are sufficiently tested and correct by providing tests that check functionality and correctness.
- Automating infrastructure for testing, building and addressing compiler compatibility issues.
- Allowing researchers with non-software backgrounds to employ best-practice methods when developing code, such as for performance critical aspects as well as for maintainability and interface issues.
- Providing sufficient documentation, both for developers interfacing libraries in a hosting code, and for users who require knowledge of the functionality provided.
A workshop promoting best practices would be a good way to sustain the current trend of standardizing paradigms and usable libraries for the electronic structure community.
Nick Papior (Technical University of Denmark) - Organiser
Micael Oliveira (Max Planck Institute for the Structure and Dynamics of Matter) - Organiser
Yann Pouillon (Simune Atomistics) - Organiser
Emilio Artacho (University of Cambridge) - Organiser
Alin Elena (Daresbury Laboratory) - Organiser
Volker Blum (Duke University) - Organiser