Open Science Resources

CZI Open Science Program

open science for biomedical research

View the Project on GitHub chanzuckerberg/open-science

Search this site

Collaborative research software engineering projects

Topics in this section:

This topic page provides support to open source software engineering projects developed by teams of researchers. The information is appropriate for projects that would like to develop better processes for operating as a team and/or develop inclusive communities around their projects.

Research software as a subset of open source software

There are many resources for topics presented on this page that speak to open source projects in general. For example, the following resources are useful for thinking about open source development in general:

However, this page is specifically focused on open source projects supporting biomedical research. Such software is referred to as scientific or research software, and represents the following general characteristics:

While these characteristics are not absolute across scientific research software, they do present certain challenges, and may render more general resources for open source software inapplicable. Such caveats are referenced when resources listed may not be specifically catered towards research software engineering.

For more information on how scientific (academic) software fits into the landscape of open source, please see Sectoring contributions to open source software (OSS) on GitHub. For a general overview of considerations in developing research software, please see Ten Simple Rules for the Open Development of Scientific Software.

Project management for research software

Project management in a general sense refers to planning and organizing a project. Additionall, there are multiple formal project management frameworks, such as Agile, Waterfall, and Scrum, that provide structure and language around both team interactions and the software development process.

This section will focus on project management in a more general sense, including specific approaches that support open science projects throughout their life cycles.

Planning for sustainability

The Software Sustainability Institute (SSI) has a number of resources specifically catered to planning and assessing longevity in scientific software:

The success of general open source tools reveals the following ideas about monetization, though the caveats about scientific software mentioned above are especially applicable here:

There are three main sources of funding commonly used to support academic/scientific research software:

Governance

Governance refers to the rules and policies that dictate how decisions are made and power controlled within a group. The larger a community, the more important clearly stated governance is to cultivating and maintaining cohesiveness among programs.

The following resources provide a general overview of themes within governance and leadership that members of the scientific open source community recommend for background information and to highlight the importance of governance:

These resources are useful for developing and applying models of governance for your own project:

Finally, here are some examples of governance documentation in open source communities. These were selected because they represent a variety of projects and structures:

Team management

Under construction

While governance refers to how an entire project operates, team management refers to coordination among the core members working on a project. For an overview of working in a team for scientific projects, see Strategies for Team Science Success.

For an example of public documentation about an open source project, view the 2i2c Team Compass.

Code review

Under construction

Community development

The rest of the content on this page focuses on developing communities of researchers involved in your project, which includes both contributors to and users of your software. The following resources provide an overview of communities related to open source software, including ways to consider cultivating a community:

This 1.5 hour video was recorded during a workshop at the CZI Open Science 2021 Annual Meeting, and explores building community for open source projects. It is also available on our channel, with the slides available here.

Diverse, equitable, and inclusive communities

An assumption for all resources presented here is that the communities are diverse, representing a wide variety of demographics among many different axes of variation, equitable, meaning everyone has the opportunity to participate, and inclusive, in that everyone feels welcome to participate. While this assumption is implicit for all sections of this informational website, the following sections in other parts of this site explicitly discuss resources related to inclusive software and community development:

The following resources discuss specific efforts on the part of open source projects to address such issues:

Code of conduct

A Code of Conduct (CoC) clearly identifies expectations of behavior associated with a project and/or event. In addition to stating what is (and is not) allowed, CoCs inform participants how to report violations of behavior, as well as identify the process associated with handling such reports.

The Contributor Covenant is a CoC that has been adopted and applied by many open source projects. The most recent version includes standard processes for enforcing CoCs.

Additional examples of CoCs include:

For more information about how CoCs are used in open source, see Code of Conduct Conversations in Open Source Software Projects on Github.

Contribution guidelines

Inviting and recruiting individuals to contribute to an open source project is challenging yet critical for the long-term success of the project. Contribution guidelines provide the basic information such individuals require to consider, and hopefully even follow through, with sharing work.

These resources provide guidance on developing contribution guidelines for open source projects:

The resources above are for traditional open source projects. It is likely that individuals interested in contributing to a project may not have the technical expertise or amount of time available to commit as described. The following table is adapted from Call for Code, and identifies different types of contributions possible with variable amounts of time:

Time commitment Documentation Design Advocacy Community
Hours Flag documentation errors or questions Design logo Share project in communities Attend community event
Days Document new features Conduct user research Speak at conference Organize community event
Weeks Create onboarding guides Update UI Be a project champion Lead regional chapter

Examples of contribution guidelines include:

Tutorials and other user support

Basic user documentation is described in the Documentation section of the Code development page. User support can also include a variety of tutorials and other types of training support. The following resources are useful starting points for anyone interested in developing training materials associated with their open source projects:

Tracking project metrics

Collecting and sharing information about an open source project is another important part of the growth and development of software engineering, as it demonstrates the community support (and therefore longevity) of a project. The following resources describe the types of information appropriate to collect for open source projects:

If you are interested in tracking the demographics of participants in your project and are unsure how to approach questions related to diversity, equity, and inclusion, please see Open Demographics.