Landlab: Sustainable Software Development in Practice
Sustainable software development has traditionally been measured by a product’s longevity within a given field. However, with advances in high performance computing, more scientists are trained in coding and are developing their own software frameworks more quickly. This has led to significant market overcrowding, duplicated development efforts, and wasted opportunities as multiple codes are developed that cannot be integrated. Sustainable software will require more cooperation, leading to fewer, but more sustainable, pieces of software. The National Science Foundation has stated that sustainably designed software will “enhance productivity and accelerate innovation” by emphasizing manageability, usability and education. We propose that sustainable software will not only follow these guidelines, but also emphasize developer accountability, code manageability and community. Software that is designed for ease of use, to address the needs of the scientific community, while maintaining developer accountability will likely be sustainable over time. These characteristics have led to past software successes in the Earth sciences, such as the Channel Hillslope Integrated Landscape Development (CHILD) model. The development team of Landlab, an interdisciplinary component-based Earth surface process software written in Python, is drawing from the past successes of the CHILD model to create an open-source, accessible, and long-lasting software framework with minimal barriers for entry. The main goal of Landlab is to provide an open-source, sustainable Earth science software framework that can be adopted by both experienced and novice programmers. Providing an interdisciplinary framework will minimize model development time and allow for scientists to focus on hypothesis-building and not coding. Additionally, by coding in Python, we think that people will be more inclined to use and add to Landlab, due to Python's similarities with other high-level interpretive languages (e.g. Matlab) and the wide availability of GUI environments for Python programming. Landlab development will also include several tie-ins to existing cyberinfrastructure, including data repositories, across the Earth sciences. Landlab is part of the Community Surface Dynamics Modeling System (CSDMS) which is a community that brings together modelers and open-source models dealing with the Earth's surface. Importantly, Landlab is compliant with the CSDMS Basic Model Interface (BMI) such that it can be readily coupled with other models within the CSDMS repository that also adopt BMI. Finally, we propose that sustainable projects need to place emphasis on different levels of education; undergraduate coursework, online tutorials and documentation, and workshops and/or clinics held at scientific conferences. Sustainable software developers must focus not only on the potential longevity of the project and developer accountability, but also the needs of the user community. Eliminating duplicated development efforts, along with the strong emphasis on education and training programs are fundamental parts of the Landlab development plan. We propose that this development plan can be shared as a standard template for other future scientific developers to follow.