| Literature DB >> 32365137 |
Julia Koehler Leman1,2, Brian D Weitzner3,4,5,6, P Douglas Renfrew1, Steven M Lewis7,8,9, Rocco Moretti10, Andrew M Watkins11, Vikram Khipple Mulligan1,4,5, Sergey Lyskov3, Jared Adolf-Bryfogle12, Jason W Labonte3,13, Justyna Krys14, Christopher Bystroff15, William Schief12, Dominik Gront14, Ora Schueler-Furman16, David Baker4,5, Philip Bradley17, Roland Dunbrack18, Tanja Kortemme19, Andrew Leaver-Fay7, Charlie E M Strauss20, Jens Meiler21,22,23,24, Brian Kuhlman7, Jeffrey J Gray3, Richard Bonneau1,2,25,26.
Abstract
Many scientific disciplines rely on computational methods for data analysis, model generation, and prediction. Implementing these methods is often accomplished by researchers with domain expertise but without formal training in software engineering or computer science. This arrangement has led to underappreciation of sustainability and maintainability of scientific software tools developed in academic environments. Some software tools have avoided this fate, including the scientific library Rosetta. We use this software and its community as a case study to show how modern software development can be accomplished successfully, irrespective of subject area. Rosetta is one of the largest software suites for macromolecular modeling, with 3.1 million lines of code and many state-of-the-art applications. Since the mid 1990s, the software has been developed collaboratively by the RosettaCommons, a community of academics from over 60 institutions worldwide with diverse backgrounds including chemistry, biology, physiology, physics, engineering, mathematics, and computer science. Developing this software suite has provided us with more than two decades of experience in how to effectively develop advanced scientific software in a global community with hundreds of contributors. Here we illustrate the functioning of this development community by addressing technical aspects (like version control, testing, and maintenance), community-building strategies, diversity efforts, software dissemination, and user support. We demonstrate how modern computational research can thrive in a distributed collaborative community. The practices described here are independent of subject area and can be readily adopted by other software development communities.Entities:
Mesh:
Year: 2020 PMID: 32365137 PMCID: PMC7197760 DOI: 10.1371/journal.pcbi.1007507
Source DB: PubMed Journal: PLoS Comput Biol ISSN: 1553-734X Impact factor: 4.475
Fig 1RosettaCommons facts.
Main laboratories and institutions in the RosettaCommons and basic facts about our software in 2019.
Fig 2Pillars of success in the development of scientific software.
Technical aspects are in blue, social aspects in red and dissemination and user interaction in yellow. This figure was created with icons from The Noun Project[13].
Fig 3Rosetta history.
Major milestones in the history of Rosetta development.
Fig 4Software testing.
Testing is essential to ensure stability and correctness of software. This is a view of our testing server dashboard for a specific merge into the master branch of Rosetta. We continuously run a large number of tests, such as build tests, unit tests, integration tests, performance tests, code analysis tests, and scientific benchmarks. Tags in green, red, and yellow denote test pass, failure, and currently running.
Fig 5Meetings.
Developers meet at our annual summer conference (RosettaCon). Pictures from our second RosettaCon in 2004 (left) and the conference in 2017 (right) reflect the community’s drastic growth and increase in diversity.
Fig 6Hackathons.
Organizing regular hackathons can drastically improve code maintainability, generalizability, documentation, and interaction in the community. Our eXtreme Rosetta Workshops (XRWs) are organized annually and have had a drastic positive impact on our software and community.