Contributing to Resonance

Welcome! We’re thrilled you’re interested in contributing to Resonance. Whether you’re a designer or an engineer, it’d be great to have you involved. After all, Resonance grows, adapts, and changes to meet the needs of our products, and of the people who make those products—that’s you.

In this document, we’re going to outline a few ways you can contribute to Resonance, and some things to expect along the way. If you have any suggestions for how to improve this document, or if you have any questions about anything in here, let us know! You can find the Resonance team in the #chorus-resonance Slack channel.

What to know before getting started

Resonance is a design system, a platform that supports and sustains the interfaces for all of Vox Product’s internal applications. As such, we’re always looking for new contributions—ideas, bugfixes, and design patterns that have been successful not only in your product, but that will also flourish across the Resonance ecosystem.

As such, the Resonance team reviews new contributions to ensure that they’ll work within the broader platform. We expect every contribution to Resonance will be accessible, well-researched, modular, and visually consistent.

And perhaps most importantly, please note that all contributions are expected to adhere Vox Media’s Code of Conduct.

Types of contributions

A contribution could be a feature request, some code, a mockup, some documentation—or some combination of all four. But across all those mediums, we generally see three kinds of contributions: minor, medium, and major. Each is distinguished by the level of effort and review they require.

Minor contributions

Despite the name, minor contributions are still important! But they’ll only require minimal amounts of review, as their changes are fairly small. Examples of minor contributions include adding a new icon, changing a design token, or updating some of our documentation.

Medium contributions

Medium contributions require more review and feedback, and have a more noticeable impact. Examples of medium contributions include significant updates to our documentation, proposing a functional change to an existing component, or adding a design variation to an existing component.

Major contributions

These contributions have the most impact, and will likely involve considerable amounts of review or feedback. Examples of major contributions include adding a new component to Resonance, significantly changing the functionality of an existing component, or updating our Sketch UI kit.

How do I contribute?

The sky is, as they say, the limit! If it helps, here are the most common contribution scenarios we see, and how those contributions can start.

(And if you have any questions about this, reach out to us in the #chorus-resonance Slack channel at any time.)

Editing documentation

If you spot a typo in the Resonance documentation, or think of a way to improve a specific page, feel free to open a PR in the repository for our documentation site.

Editing an existing component

If you’d like to fix a bug you’ve found in Resonance, or implement a new feature on an existing component, start by dropping us a line in the #chorus-resonance Slack channel—it’s possible there’s something in Resonance that might address the issue you’ve encountered.

But if not, we’d love for you to contribute some code! At this point, your contribution should begin its life in the context of your product. Address the need there, and research how effective that fix is for your product’s users. Once it’s been vetted in the context of your product, reach out to us! Create a branch in our repository, implement the fix there, and open a pull request. We’ll schedule a review from there.

Creating a new component

If you’d like to create a new component for Resonance, that’s a significant undertaking—and one we’d love to discuss with you. Propose your idea to the #chorus-resonance Slack channel, and let us know what you have in mind. We’ll discuss the idea, ask questions about your plan, and talk about how to proceed.

If we think there’s value in the component you’ve proposed, the next step would be for you to implement your new component in the context of your product, and gather data on its effectiveness. Iterate over the component, and validate your initial assumptions.

Once it’s been vetted, reach out to us again in the #chorus-resonance Slack channel, and we’ll schedule another review to discuss what you’ve learned.

Creating an entirely new Resonance component is a major contribution, so there might be multiple rounds of review and iteration. But once we’ve approved your contribution (and its documentation), you can create a branch in our repository, implement new component, and open a pull request.

Who will review my contribution?

Your work will be reviewed by the Resonance team:

(As always, you can find us in the #chorus-resonance Slack channel. Come say hi, or ask a question!)

What kind of questions should I expect in a review?

Once you approach the team with a contribution, the Resonance team will schedule a time to review it. From that review, we might schedule time to discuss it in more detail over Zoom.

This isn’t an exhaustive list, but here are some questions we’ve commonly asked:

In this review, the team will work with you to determine if your contribution should be brought into Resonance. If it should be, we’ll likely give some feedback: there might be requests for changes or updates, as well as clearly-defined next steps for a subsequent review.

When is my contribution finished?

A contribution can be considered “finished” once your design revisions, your feature request, and/or your documentation edits have been approved.

If you’re contributing code, your contribution will be finished once it’s been approved, once it’s been documented, and once your code has been merged into Resonance’s codebase. If you’re making a change to existing Resonance components, or if you’re creating a new Resonance component, your contribution should include the necessary updates to Resonance’s documentation.

Of course, if the team decides not to include your contribution in Resonance, the contribution will be considered “finished” at that point, with our heartfelt thanks and gratitude for all your hard work.

How should I write my documentation?

If you’re creating a new component, we’ve created a blank reference document that shows how our documentation is structured. Make a copy of that reference document, fill in the blanks, and let’s discuss it during a review.

Got questions? Ask us!

If you’re not sure how sizable your contribution is, or if you’re not sure how to get started—that’s okay! Feel free to ask a question in the #chorus-resonance Slack channel, or open an issue for discussion in Resonance’s Jira board to describe your idea. We can ask a few questions about your contribution, and help you figure out how best to move it forward.