Get started with contributions - Openverse documentation
Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Django API
Automations
Airflow Catalog
Toggle navigation of Airflow Catalog
Guides
Toggle navigation of Guides
Catalog quickstart guide
Openverse Providers
Running DAGs locally
Reference
Toggle navigation of Reference
DAGs
Changelogs
Toggle navigation of Changelogs
API changelogs
Toggle navigation of API changelogs
2025.04.11.13.47.14
2025.03.10.04.14.33
2025.02.05.11.12.38
2025.01.24.17.16.29
2025.01.15.17.59.21
2025.01.14.14.57.35
2025.01.12.10.55.21
2025.01.11.11.22.59
2024.12.27.21.22.28
2024.12.20.09.55.14
2024.12.16.15.25.57
2024.12.11.14.44.17
2024.12.07.04.18.28
2024.12.02.20.27.17
2024.11.28.17.33.15
2024.11.25.17.45.37
2024.11.18.15.59.41
2024.11.17.18.36.17
2024.11.08.08.05.37
2024.11.04.06.41.58
2024.10.21.09.19.16
2024.10.14.15.38.39
2024.09.16.09.52.36
2024.09.09.05.40.22
2024.09.06.08.57.05
2024.08.16.21.27.09
2024.08.14.16.29.10
2024.08.14.10.34.40
2024.08.12.17.31.11
2024.08.05.16.42.20
2024.07.30.17.36.41
2024.07.23.07.16.35
2024.07.20.10.58.11
2024.07.15.03.59.12
2024.07.01.20.35.48
2024.06.24.18.01.42
2024.06.17.15.33.56
2024.06.07.17.19.06
2024.06.03.15.35.02
2024.05.28.21.25.54
2024.05.27.15.21.38
2024.05.23.15.02.00
2024.05.20.15.14.53
2024.05.13.15.19.42
2024.05.07.23.56.36
2024.05.06.19.44.35
2024.05.01.13.59.00
2024.04.22.15.11.09
2024.04.15.17.18.29
2024.04.09.03.50.11
2024.04.02.05.06.52
2024.04.01.17.07.10
2024.03.25.15.22.26
2024.03.18.15.51.25
2024.03.13.17.10.22
2024.03.11.15.26.16
2024.03.04.15.15.13
2024.02.28.16.32.28
2024.02.20.22.54.08
2024.02.13.05.45.50
2024.02.05.20.34.01
2024.01.29.19.36.26
2024.01.16.17.28.14
2024.01.08.20.06.53
2024.01.01.19.52.14
2023.12.26.05.11.22
2023.12.18.17.56.24
2023.12.11.19.20.45
2023.12.04.19.51.23
2023.11.29.22.20.31
2023.11.27.05.10.48
2023.11.20.09.32.25
2023.11.14.23.44.01
2023.11.13.22.18.21
2023.11.01.21.27.09
2023.10.30.16.26.21
2023.10.23.11.40.59
2023.10.18.15.25.27
2023.10.11.04.49.20
2023.10.10.21.08.33
2023.10.10.18.42.39
2023.10.06.17.13.36
2023.09.30.00.15.32
2023.09.28.00.26.34
2023.09.25.21.34.44
2023.09.20.11.16.51
2023.09.20.07.37.52
2023.09.19.08.13.24
2023.09.15.19.15.58
2023.09.11.16.56.52
2023.09.04.19.52.19
2023.08.28.20.43.01
2023.08.22.04.57.04
2023.08.14.16.35.15
2023.08.08.22.22.02
2023.07.24.20.47.04
2023.07.17.21.05.23
2023.07.10.08.44.19
2023.07.03.17.52.00
2023.06.28.19.49.58
2023.06.28.02.17.04
2023.06.26.20.33.46
2023.06.19.17.48.39
2023.06.13.00.21.51
2023.06.05.15.04.02
2023.06.01.01.50.43
2023.05.30.17.57.04
2023.05.30.12.02.04
2023.05.19.22.08.07
2023.05.19.18.58.25
2023.05.19.17.16.50
2023.05.15.21.51.49
2023.05.02.21.26.28
2023.04.27.07.29.23
2023.04.23.23.22.14
2023.04.19.00.01.39
2023.04.18.15.27.15
2023.04.12.23.29.59
Catalog changelogs
Toggle navigation of Catalog changelogs
2025.01.07.04.34.46
2024.11.19.16.03.49
2024.10.17.13.59.15
2024.09.09.23.00.57
2024.09.04.19.31.19
2024.08.22.20.53.01
2024.08.15.16.49.58
2024.07.19.17.07.23
2024.06.17.15.33.56
2024.04.18.23.30.21
2024.03.22.17.45.11
2024.03.06.16.40.36
2024.01.25.17.42.59
2024.01.04.20.39.50
2023.12.20.22.19.13
2023.11.29.15.35.59
2023.11.14.18.24.16
2023.10.06.18.29.33
2023.08.30.17.30.22
2023.07.20.15.07.11
2023.06.19.17.21.41
2023.06.08.16.52.36
2023.05.16.22.14.49
2023.04.27.02.43.13
Frontend changelogs
Toggle navigation of Frontend changelogs
2025.07.03.14.31.53
2025.05.26.14.11.17
2025.04.11.13.47.15
2025.02.05.11.32.04
2025.01.24.17.16.28
2025.01.16.15.54.08
2024.12.27.21.22.28
2024.12.19.05.42.40
2024.12.19.03.36.42
2024.12.17.14.37.03
2024.12.16.15.26.01
2024.12.10.14.47.56
2024.12.07.04.18.28
2024.12.02.17.23.30
2024.11.08.08.05.38
2024.11.04.06.42.01
2024.10.28.15.42.58
2024.10.24.04.16.14
2024.10.19.14.45.06
2024.10.14.15.38.39
2024.09.25.05.33.23
2024.09.16.09.52.36
2024.09.09.05.40.19
2024.09.05.07.51.39
2024.09.04.18.01.14
2024.09.01.19.19.29
2024.08.26.14.55.41
2024.08.16.21.27.06
2024.08.12.10.29.09
2024.08.06.13.48.44
2024.07.30.16.33.18
2024.07.30.12.38.56
2024.07.26.14.38.19
2024.07.20.10.58.11
2024.07.15.03.59.13
2024.07.01.20.35.48
2024.06.26.17.18.17
2024.06.24.18.01.44
2024.06.17.15.33.55
2024.06.07.17.19.06
2024.06.03.15.35.03
2024.05.27.15.21.40
2024.05.20.15.14.53
2024.05.13.17.18.44
2024.05.07.16.44.22
2024.04.25.15.32.08
2024.04.24.12.19.32
2024.04.22.15.11.07
2024.04.15.15.20.23
2024.04.13.16.19.50
2024.04.09.03.50.12
2024.04.01.17.07.11
2024.03.25.15.22.24
2024.03.18.15.51.41
2024.03.11.15.25.54
2024.03.04.15.15.07
2024.02.26.18.58.35
2024.02.19.15.45.00
2024.02.12.23.34.43
2024.02.05.18.10.41
2024.01.29.19.41.17
2024.01.08.19.12.18
2024.01.01.19.52.49
2023.12.11.19.44.28
2023.12.04.19.35.53
2023.11.27.19.20.44
2023.11.20.09.09.57
2023.11.14.19.30.29
2023.11.06.20.32.30
2023.11.01.00.18.44
2023.10.30.16.27.33
2023.10.09.17.18.13
2023.09.25.22.11.48
2023.09.18.10.25.25
2023.09.11.17.34.23
2023.09.05.17.09.13
2023.09.04.20.20.34
2023.08.28.19.38.22
2023.08.22.06.04.39
2023.08.14.16.26.44
2023.08.08.21.19.44
2023.07.28.23.42.26
2023.07.24.21.23.45
2023.07.20.17.25.42
2023.07.19.19.15.39
2023.07.17.21.49.20
2023.07.10.08.29.25
2023.07.06.14.52.49
2023.07.05.17.56.39
2023.07.03.18.19.32
2023.06.26.20.22.48
2023.06.19.17.31.24
2023.06.13.00.28.40
2023.06.05.14.48.06
2023.05.23.17.02.26
2023.05.22.15.55.57
2023.05.15.22.13.27
2023.05.02.19.17.32
2023.04.23.23.07.51
Ingestion server changelogs
Toggle navigation of Ingestion server changelogs
2025.01.29.17.31.09
2024.10.18.03.31.56
2024.09.09.05.40.20
2024.08.15.17.06.40
2024.07.19.17.07.25
2024.06.28.20.22.20
2024.06.13.17.07.56
2024.05.27.13.36.10
2024.05.20.19.47.22
2024.05.10.03.01.22
2024.04.18.16.49.08
2024.04.04.14.33.24
2024.03.06.16.40.36
2024.02.28.18.32.08
2024.02.07.18.41.16
2024.01.18.18.31.08
2023.12.12.17.23.14
2023.12.06.19.13.35
2023.11.14.18.39.29
2023.10.25.06.38.07
2023.10.19.06.08.15
2023.10.06.18.02.20
2023.09.29.17.40.50
2023.09.05.18.56.18
2023.08.29.17.36.35
2023.07.21.20.19.21
2023.07.05.17.46.34
2023.06.13.00.25.04
2023.06.07.17.56.30
2023.05.17.22.57.37
2023.05.03.22.29.52
Nuxt frontend
Toggle navigation of Nuxt frontend
Guides
Toggle navigation of Guides
Frontend quickstart guide
Running frontend tests
Analytics
SVG Icon Sprites in Openverse Frontend
Translate
Reference
Toggle navigation of Reference
Internationalization
Feature flags
Testing Guidelines
Miscellaneous notes on the frontend
Nuxt Healthcheck
Frontend reverse proxy
General development guidelines
Toggle navigation of General development guidelines
Get started with contributions
Toggle navigation of Get started with contributions
GitHub contribution practices
Development workflow
Current maintainers
Communication aliases
Becoming a Committer
Regular maintainer tasks
Codespell Configuration : spellcheck pre-commit hook
Maintainer guidelines for “Good first” and “Help wanted” issues
General setup guide
Toggle navigation of General setup guide
Frontend quickstart guide
API quickstart guide
Catalog quickstart guide
Ingestion server quickstart guide
Run
Test
Zero Downtime and Database Management
Logging
Stack
Using workspaces
Ingestion server
Toggle navigation of Ingestion server
Guides
Toggle navigation of Guides
Ingestion server quickstart guide
Configuration
Mapping database tables to Elasticsearch
Testing guide
Index migration runbook
Manual index upgrade runbook
Troubleshooting
Reference
Toggle navigation of Reference
Elasticsearch and Indexing
Safety and Security Considerations
Notifications
Data Refresh Limit
Ingestion server API
Managing the Openverse
Toggle navigation of Managing the Openverse
Brand assets
Responding to Incidents
Toggle navigation of Responding to Incidents
Runbooks
Toggle navigation of Runbooks
Incident Response Runbook
Project boards
Toggle navigation of Project boards
Issues project: Openverse Backlog
PR project: Openverse PRs
Project project: Openverse Project Tracker
Discussion project: Openverse Discussions
CI + CD workflow
Toggle navigation of CI + CD workflow
Actions
Jobs
Toggle navigation of Jobs
Preparation jobs
Frontend jobs
Packages jobs
Docker jobs
Catalog jobs
Ingestion server jobs
API jobs
Documentation jobs
Deployment jobs
Notification jobs
Flow
Proof-of-functionality
Artifacts
Openverse decision-making process
Toggle navigation of Openverse decision-making process
Process description
How to follow the process in different settings
Additional practices
Documentation
Toggle navigation of Documentation
Quickstart guide
Documentation guidelines
Adding a new documentation page
Sphinx extensions
Documentation proofreading and review
Monitoring the Openverse
Toggle navigation of Monitoring the Openverse
Traffic Management
Toggle navigation of Traffic Management
Identifying and Blocking Traffic Anomalies in Cloudflare
Log querying
Runbooks
Toggle navigation of Runbooks
Run Book: API Production HTTP 2XX responses count under threshold
Run Book: API Production HTTP 5XX responses count above threshold
Run Book: API Production Average Response Time above threshold
Run Book: API Production Average Response Time anomaly
Run Book: API Production P99 Response Time above threshold
Run Book: API Production P99 Response Time anomaly
Run Book: API Production Request Count anomalously high
Run Book: Nuxt 2XX responses count under threshold
Run Book: Nuxt 5XX responses count above threshold
Run Book: Nuxt Production Average Response Time above threshold
Run Book: Nuxt Production Average Response Time anomalously high
Run Book: Nuxt Production P99 Response Time above threshold
Run Book: Nuxt Production P99 Response Time anomalously high
Run Book: Nuxt Request Count anomalously high
Run Book: Unhealthy hosts for ECS service
Openverse Infrastructure Maintenance
Toggle navigation of Openverse Infrastructure Maintenance
Elasticsearch cluster maintenance
Media properties
Toggle navigation of Media properties
Catalog Media Properties
API Media Properties
Frontend Media Properties
Extract-Transform-Load flows
Releasing and deploying code
Toggle navigation of Releasing and deploying code
API deployment runbook
Catalog deployment runbook
Frontend deployment runbook
Ingestion server deployment runbook
Subpackages
Toggle navigation of Subpackages
@openverse/api-client
@openverse/eslint-plugin
Toggle navigation of @openverse/eslint-plugin
analytics-configuration
no-unexplained-disabled-test
openverse-attribution
Projects
Toggle navigation of Projects
Project Planning
Template: Implementation Plan
Template: Project Directory
index.md
Template: Project Proposal
Yearly Planning
Toggle navigation of Yearly Planning
Yearly Planning: Process Outline
Project Themes
3D Model Support
Toggle navigation of 3D Model Support
2022-02-21 Project Proposal: 3D model support
Additional Search Views
Toggle navigation of Additional Search Views
2023-04-24 Project Proposal: Additional search views
2023-07-20 Implementation Plan: Additional Search Views
SUPERSEDED 2023-07-20 Implementation Plan: Additional Search Views
Analytics
Toggle navigation of Analytics
2022-10-06 Implementation Plan: Frontend event tracking
2023-03-07 Implementation Plan: Analytics backend and visualisation service
Core User Interface Improvements
Toggle navigation of Core User Interface Improvements
2023-03-14 Project Proposal: Core UI Improvement
Dark Mode
Toggle navigation of Dark Mode
2024-03-13 Project Proposal
2024-03-25 Implementation Plan: Dark Mode
Data Normalization
Toggle navigation of Data Normalization
2024-02-27 Implementation Plan: Catalog Data Cleaning
Document all media properties
Toggle navigation of Document all media properties
2023-03-07 Project proposal for Document all media properties
2023-04-26 Implementation Plan: Document all media properties in the catalog
2024-03-25 Implementation Plan: Document all media properties in the API
Samples
Toggle navigation of Samples
Openverse Media Properties
sample_media_properties.md
sample_postamble.md
sample_preamble.md
Samples
Toggle navigation of Samples
Openverse Media Properties
sample_media_properties.md
sample_postamble.md
sample_preamble.md
Feature Flags
Toggle navigation of Feature Flags
2022-03-09 Project Proposal: Feature flags
Frontend UI State Cookie
Toggle navigation of Frontend UI State Cookie
2022-02-18 Project Propsal: Frontend UI State Cookie
Openverse Infrastructure
Toggle navigation of Openverse Infrastructure
2024-01-05 Implementation Plan: Finish moving all services to
openverse.org
Ingestion server removal
Toggle navigation of Ingestion server removal
2024-03-19 Project Proposal: Removal of the Ingestion Server
2024-03-28 Implementation Plan: Ingestion Server Removal
Monitoring
Toggle navigation of Monitoring
2022-03-07 Project Proposal: Monitoring
2023-06-06 Implementation Plan: Baseline Alarms for ECS Services
Toggle navigation of 2023-06-06 Implementation Plan: Baseline Alarms for ECS Services
Stable Run Book Sample
Unstable Run Book Sample
Monorepo
Toggle navigation of Monorepo
2022-11-24 Project Proposal: Monorepo
Nuxt 3 Migration
Toggle navigation of Nuxt 3 Migration
2023-06-02 Project Proposal
Popularity Calculation Optimizations
Toggle navigation of Popularity Calculation Optimizations
2023-04-06 Project Proposal: Popularity Calculation Optimizations
Implementation Plan: Decoupling Popularity Calculations from the Data Refresh
Project board improvements
Toggle navigation of Project board improvements
2023-09-13 Project proposal: Project board improvements
2023-09-14 Implementation plan: Project automations
Providing and maintaining an Openverse image dataset
Toggle navigation of Providing and maintaining an Openverse image dataset
2023-07-06 Project Proposal: Providing and maintaining an Openverse image dataset
Python packaging and code sharing
Toggle navigation of Python packaging and code sharing
2024-04-12 Implementation Plan: Switching to a new Python package manager
Rekognition Data Incorporation
Toggle navigation of Rekognition Data Incorporation
2024-03-20 Project Proposal: Incorporate Rekognition data into the Catalog
2024-04-23 Implementation Plan: Machine-generated tags in the API
2024-05-08 Implementation Plan: Machine-generated tags in the frontend
2024-05-30 Implementation Plan: Augment the catalog database with suitable Rekognition tags
Appendix
Toggle navigation of Appendix
Rekognition Labels
Relicensing
Toggle navigation of Relicensing
2024-10-28 Implementation Plan: Relicensing
2024-10-28 Project Proposal: Relicensing
Search Relevancy Sandbox
Toggle navigation of Search Relevancy Sandbox
2023-03-31 Project Proposal: Search relevancy sandbox
2023-04-06 Implementation Plan: Update Staging Database
2023-05-18 Implementation Plan: Rapid iteration of ingestion server index configuration
2023-06-08 Implementation Plan: Staging Elasticsearch Reindex DAGs
Sensitive Content Report Moderation Initial Practices
Toggle navigation of Sensitive Content Report Moderation Initial Practices
2023-04-11 Project Proposal: Sensitive content report moderation: initial practices
2023-05-17 Implementation Plan: Copy updates
mature
->
sensitive
2023-12-08 Implementation Plan: Django admin tools and access control for moderators
2024-01-22 Implementation Plan: Bulk Moderation Actions
2024-01-22 Implementation Plan: Moderation response times
Detecting and Blurring Sensitive Textual Content
Toggle navigation of Detecting and Blurring Sensitive Textual Content
2023-03-09 Implementation Plan: Sensitive Terms List
2023-03-09 Project Proposal: Detecting sensitive textual content and blurring all sensitive results
2023-03-30 Implementation Plan: Filtering and designating results with sensitive textual content
2023-05-06 Implementation Plan: Fetching, blurring sensitive results
2024-09-03 Implementation Plan: Undo the split indices for filtered textual sensitivity
Trust and Safety
Toggle navigation of Trust and Safety
2023-01-09 Initial Overview and User Stories
Sensitive Content Report Moderation Initial Practices
Toggle navigation of Sensitive Content Report Moderation Initial Practices
2023-04-11 Project Proposal: Sensitive content report moderation: initial practices
2023-05-17 Implementation Plan: Copy updates
mature
->
sensitive
2023-12-08 Implementation Plan: Django admin tools and access control for moderators
2024-01-22 Implementation Plan: Bulk Moderation Actions
2024-01-22 Implementation Plan: Moderation response times
Detecting and Blurring Sensitive Textual Content
Toggle navigation of Detecting and Blurring Sensitive Textual Content
2023-03-09 Implementation Plan: Sensitive Terms List
2023-03-09 Project Proposal: Detecting sensitive textual content and blurring all sensitive results
2023-03-30 Implementation Plan: Filtering and designating results with sensitive textual content
2023-05-06 Implementation Plan: Fetching, blurring sensitive results
2024-09-03 Implementation Plan: Undo the split indices for filtered textual sensitivity
Visual Regression Testing
Toggle navigation of Visual Regression Testing
2022-02-17 Implementation Plan: Visual regression testing
Pinia Conversion
Toggle navigation of Pinia Conversion
2022-02-23 Project Proposal: Vuex to Pinia conversion
Openverse Terms of Service
External links
Openverse
GitHub
View this page
Edit this page
Toggle table of contents sidebar
Get started with contributions
Thank you for your interest in Openverse! We’re so excited to introduce new
contributors to Openverse, WordPress and free and open-source software (FOSS) in
general. This document is a set of guidelines to help you contribute to this
project.
The documents below provide more exhaustive information about contributing
beyond the basics.
GitHub contribution practices
Development workflow
Current maintainers
Communication aliases
Becoming a Committer
Regular maintainer tasks
Codespell Configuration : spellcheck pre-commit hook
Maintainer guidelines for “Good first” and “Help wanted” issues
Code of Conduct
You should read and agree to abide by the
code of conduct
before contributing to WordPress projects. This applies to all Openverse
repositories because Openverse is a WordPress Foundation project.
Keep in touch
Don’t hesitate to ask for help; if you’re stuck, we’re here for you! You can
ping us via any of our
communication channels
Code and code-related contributions
Get started
Detailed help for contributing code can be found in the
developer documentation
, which also includes the
following subfolders.
The following resources are preferred reading for starting your Openverse
contribution journey in the code and code-related space.
GitHub contribution practices
Dev flow
General setup guide
Friendly notes
It’s totally acceptable to work on more than one
“good first issue”
On GitHub, you can ping us on any issue you would like to work on or triaging
and on PRs that you’ve opened or are giving feedback on. You can ping a specific
person using their GitHub handle, or even the entire Openverse team using
@WordPress/openverse-maintainers
Text and documentation
Our documentation and copy text could always use improvement. If you spot any
scope for improvement, from the smallest punctuation error to the largest
factual inaccuracy, you can file an issue or fix an already open one.
Good first issues with the “📄 aspect: text” label
Issues wanting help with the “📄 aspect: text” label
Bug reproduction & triage
Openverse has a large list of open bugs. In many cases these bugs can be out of
date, or their reproduction criteria may no longer be accurate. It is useful
information for maintainers to know whether the issue mentioned can still be
reproduced on recent versions of the code or if the issue can no longer be
replicated.
Issues with the “🛠 goal: fix” label
See also
the section below on issue backlog maintenance for related ways to help
Pull request review
New contributors are welcome and invited to provide feedback on pull requests.
You can start by just asking questions! It’s great to get to know the project
and helps PR authors by uncovering unspoken or undocumented assumptions that
exist about the project. It is frequently folks who know the least about and are
newest to a project that ask the most helpful questions in this regard.
Non-draft open PRs
Programming
Any issues labeled as “good first issue” or “help wanted” in our repositories
are all up for grabs. Just add a comment tagging the maintainers using
@WordPress/openverse-maintainers
on the issue with questions or requesting the
issue be assigned to you when you’re ready to work on it.
Good first issues
Issues wanting help
Non-code contributions
If programming is not your cup of tea, there are ways to contribute to Openverse
that do not involve working with code at all. Some of them are listed below.
Design
If you’d like to contribute to the design, feel free to propose a solution to an
existing problem labeled with
Needs Design
or share an idea if you think it meets Openverse’s goals.
The
WordPress Design team
uses
Figma
to collaborate and share work for all WordPress
projects. If you are not familiar with designing for WordPress, please carefully
read the
design handbook
. Once
you have a
WordPress Slack
account, join the
#design channel
and ask the team
to set you up with a free Figma account.
This will give you access to
all projects and files
used in WordPress.
Before designing a proposal, browse the
Design Library
file to understand how Openverse has been built, and take a look at the
created work
to get a glance at how design ideas are made. As the design onboarding section
in the design library file is constantly being added to and improved, some
documentation may be missing. If you have doubts, ask on
#design channel
for
clarification. If you discover new information that is yet to be documented,
contributing this information back to the documentation is deeply appreciated.
Once you are done and ready to share your idea,
create an issue with the
design
label and fill in the template
Please be as specific and concise as possible and feel free to add mockups,
prototypes, videos, sketches, and anything that makes your idea easier to
understand.
After creating the issue, it will be labeled with
aspect:
design
. Please
reference
existing design issues
as a guide for how to describe your solution and to understand how the
discussion evolves before implementation begins.
Translations
You can also contribute to Openverse by translating it.
An overview of Openverse translations is here:
A getting started guide for translating on GlotPress (the software behind
) is here:
Providers
Openverse is powered by upstream providers of openly licensed media. You can
help expand Openverse by identifying sources of Creative Commons licensed
media - we’re always looking to broaden our dataset.
Our currently list of providers which have been identified but are not yet being ingested can be found here
You can use the
New Source Suggestion for Openverse
issue template to submit whatever sources you find.
Feedback
Feedback like reporting bugs and missing features is big help for Openverse. We
want Openverse to be a bug-free app with great user experience and providing
feedback is a way to put any shortcomings on our radar and get them resolved.
You can report bugs, request features and see all other forms of feedback we
would like to receive by
submitting a new issue
on GitHub. All are welcome to write issues and the Openverse maintainers have
deep gratitude for those who do. Note that you will need a GitHub account to
create new issues.
You can also provide feedback via any of our other
communication channels
Referrals
If you know folks who have expertise in any of the above areas who you think
might be interested in contributing to open source, send them our way! We’re
happy to help onboard folks to the project itself, as well as the tools and
technologies we use.
Issue backlog maintenance
The
Openverse issue backlog
requires regular maintenance and upkeep. Issues can become stale or unworkable
for a variety of reasons. For example, they can:
be duplicates of other issues
have been silently fixed
have been explicitly fixed but accidentally left open
require additional context before they can be worked on
refer to implementation details that are no longer relevant due to
infrastructural or design changes
require changes in prioritisation
These conditions cannot be easily identified automatically and require regular,
ongoing work from contributors. Additionally, important issues can be
accidentally ignored due to the breadth of our backlog and it is critical for
maintainers to dig through the oldest issues to ensure that issue prioritisation
still makes sense.
The following sections give hints on how to manage certain common scenarios.
Generally speaking, for any scenario where an issue is being closed, it is good
to ping at least one other maintainer for advice or to corroborate your
understanding of the situation. If you find issues that don’t seem right for any
reason,
ping any of the communication aliases
and someone will help clear up any doubts.
Useful issue query links
Ticket work required
see
the section below
for actionability
Medium and low priority sorted by oldest first
see
the section below
for actionability
All issues sorted by oldest first
Issues that need more information
Issues may not have all the context required for them to be worked on. This can
be caused by someone opening issues in a hurry, by the context around an issue
changing over time, by outdated or broken links, and other myriad reasons. If
you identify an issue that needs more context, there are two options:
You can research and add the context yourself. In this case, it is a good
idea to ping the person who originally opened the issue or other folks
discussing the issue to confirm that the additional information you’ve added
is accurate.
If for any reason you do not have the ability to research the issue yourself,
you should add the
“ticket work required”
label.
Building off the second option, the
ticket work required label
identifies issues that require research or explanation before they can be worked
on. If you are able to clarify any of these issues, please do so and ping a
relevant maintainer to confirm the changes and remove the ticket work required
label.
Additionally, if you find issues that you’re able to contribute context towards
such that they would be good candidates for “good first issue” or “help wanted”,
please add those labels as well after you make your changes. This especially
helps the new contributor experience as issues with clear instructions and good
context are the most pleasant to work on when you first contribute to a project.
In the course of this work, you may find issues that should be
closed because they are no longer valid
Please see the linked section for how to handle those issues and
keep in mind the important caveat with regard to reproducibility covered in that section
See also
bug reproduction and triage
above.
Merging issues
Clicking through a few pages of the issue backlog and scanning titles can
sometimes reveal issues that are either duplicative or so closely related that
they could be merged into a single issue. When doing so, always close the newer
issues and copy any relevant information from the newer issues into the older
issues. The reason to keep the oldest issue open is to accurately reflect the
age of the issue. This is especially relevant for bugs as if we closed the
oldest issues in favour of the newest ones, we wouldn’t have accurate, easily
queryable information about bug age.
If you identify issues that appear to be duplicates or closely related such that
they should be fixed at the same time, ping the folks who opened or have
discussed the issues to confirm that before merging the issues.
Closing no longer valid issues
Issues may become invalid for many reasons. The most common are:
The issue refers to a feature which no longer exists. For example, a bug issue
for an endpoint or a page that no longer exists or is deprecated
The issue is no longer reproducible, i.e., the issue identified has been fixed
The work is no longer desired, either because it is part of an abandoned
project or because it contradicts other decisions that have been made since
the issue was opened
In all of these cases it is important to ping the author of the issue and the
people discussing it. For clarification on whether an issue is still desired, it
is especially helpful to ping the
communication alias
relevant
for the part of the stack in question.
Warning
Reproducibility
Keep in mind that some issues may appear like they are no longer valid due to
irreproducibility. Take care when approaching these issues to confirm absolutely
that the environment reported in the issue (if one is reported) is not relevant.
Always ping the original author of the issue to confirm irreproducibility before
jumping to the conclusion that the issue should be closed. Additionally, after
pinging the author of the issue, add the “ticket work required” label.
Openverse does not close issues strictly due to age
. Issues should only be
closed if they meet the criteria described above, not merely because they are
old. Old issues should be treated
following the prioritisation update guidelines described below
Updating prioritisation
Issues are often prioritised at the moment or within the week that they are
opened. Therefore, the priority labels for issues must be considered relevant to
their age. Issues opened with a medium or low priority are not necessarily
issues that can go forever without being addressed. These prioritisations merely
indicate issues that do not need to be
immediately
addressed. With that in
mind, the oldest issues in our backlog, even if they have a low priority
designation, should be re-evaluated on a regular basis to ensure that it doesn’t
make sense to start implementing them. Old issues are often overlooked for a
variety of reasons:
They don’t appear in our regular scans of the backlog because they’re on the
final pages
They can sometimes be tricky or ambiguous issues and have been avoided by even
by contributors who are looking through old issues in favour of more
straight-forward ones
If you find an old issue that looks like it could be worked on, if you are sure
that it can be immediately worked on, add it to the
weekly dev chat agenda
for prioritisation. Maintainers will discuss the issue and decide whether it
should be assigned for the following week or if can continue to be delayed.
Leave a comment on the issue if you add it to the agenda document.
Alternatively, if you are unsure whether it makes sense to start working on the
issue, ping the author or
relevant communication alias
for help making a decision.
On this page
Get started with contributions
Code of Conduct
Keep in touch
Code and code-related contributions
Get started
Friendly notes
Text and documentation
Bug reproduction & triage
Pull request review
Programming
Non-code contributions
Design
Translations
Providers
Feedback
Referrals
Issue backlog maintenance
Useful issue query links
Issues that need more information
Merging issues
Closing no longer valid issues
Updating prioritisation