Tools and Practices

Incubating and curating methodologies

Development and dissemination of best practices is a fundamental requirement for improving developer productivity and software sustainability. The IDEAS team has many years of collective experience in producing and maintaining high-quality HPC scientific software. Much of this knowledge is gathered from the broader software engineering community and customized for specific needs of scientific software on topics such as agile processes, collaboration via revision control workflows, reproducibility, scientific software design, refactoring, and testing. A key focus is promoting continuous technology refreshment.

Fostering software communities

Since its inception, the IDEAS project has prioritized bringing together software teams to share knowledge and coordinate activities in a way that encourages communities to self-organize. This work has been particularly important for teams who are developing software ecosystems, where interoperability and compatibility are essential, yet it is not common practice for developers and users of related technologies to collaborate closely across independent projects at the community level. Each product community has different characteristics and needs, so the activities within communities vary accordingly. The results are often embodied in a “software development kit” (SDK).

Disseminating knowledge

A central IDEAS goal is to establish a community-driven cycle in which widespread awareness of the importance of software quality and related issues in turn promotes sharing, discussion, and refinement of practices and resources for producing better scientific software. Key activities include producing several webinar and panel discussion series, developing and delivering training, and providing recognition to leaders and advocates of high-quality scientific software. In addition, we create opportunities for informal cross-institutional dialogue and mechanisms to build community by sharing lessons learned.