Types of Contributions

Question: What types of contributions are being made?

Description

Multiple, varied contributions make an open source project healthy. Many projects have community members who do not write code but contribute in equally valuable ways by managing the community, triaging bugs, evangelizing the project, supporting users, or helping in other ways.

Objectives

A variety of contribution types can demonstrate that a project is mature and well-rounded with sufficient activity to support all aspects of the project, and enable paths to leadership that are supportive of a variety of contribution types and people with varying expertise beyond coding.

Implementation

The usage and dissemination of health metrics may lead to privacy violations. Organizations may be exposed to risks. These risks may flow from compliance with the GDPR in the EU, with state law in the US, or with other law. There may also be contractual risks flowing from terms of service for data providers such as GitHub and GitLab. The usage of metrics must be examined for risk and potential data ethics problems. Please see CHAOSS Data Ethics document for additional guidance.

How contributions are defined, quantified, tracked and made public is a challenging question. Answers may be unique to each project and the following suggestions are a starting point. As a general guideline, it is difficult to compare different contribution types with each other and they might better be recognized independently.

  • The following list can help with identifying contribution types:
    • Writing Code
    • Reviewing Code
    • Bug Triaging
    • Quality Assurance and Testing
    • Security-Related Activities
    • Localization/L10N and Translation
    • Event Organization
    • Documentation Authorship
    • Community Building and Management
    • Teaching and Tutorial Building
    • Troubleshooting and Support
    • Creative Work and Design
    • User Interface, User Experience, and Accessibility
    • Social Media Management
    • User Support and Answering Questions
    • Writing Articles
    • Public Relations - Interviews with Technical Press
    • Speaking at Events
    • Marketing and Campaign Advocacy
    • Website Development
    • Legal Council
    • Financial Management

Data Collection Strategies

  • Interview or Survey: Ask community members to recognize others for their contributions to recognize contribution types that have previously not been considered.

    • Who in the project would you like to recognize for their contributions? What did they contribute?
  • Observe project: Identify and recognize leads of different parts of the project.

    • What leaders are listed on the project website or in a repository?
  • Capture Non-code Contributions: Track contributions through a dedicated system, e.g., an issue tracker.

    • Logging can include custom information a project wants to know about non-code contributions to recognize efforts.
    • Proxy contributions through communication channel activity. For example, If quality assurance members (QA) have their own mailing list, then activity around QA contributions can be measured by proxy from mailing list activity.
  • Collect Trace Data: Measure contributions through collaboration tool log data.

    • For example, code contributions can be counted from a source code repository, wiki contributions can be counted from a wiki edit history, and email messages can be counted from an email archive
  • Automate Classification: Train an artificial intelligence (AI) bot to detect and classify contributions.
    • An AI bot can assist in categorizing contributions, for example, help requests vs. support provided, or feature request vs. bug reporting, especially if these are all done in the same issue tracker.

Other considerations:

  • Especially with automated reports, allow community members to opt-out and not appear on the contribution reports.
  • Acknowledge imperfect capture of contribution types and be explicit about what types of contributions are included.
  • As a project evolves, methods for collecting types of contributions will need to adapt. For example, when an internationalization library is replaced with a different one, project activity around localization conceivably produces different metrics before and after the change.
  • Account for activity from bots when mining contribution types at large scale.

References