COMMUNITY

How to Contribute to the Apache Superset Project

Srini Kadamati

Getting Started

Contributing to an open source project can seem incredibly overwhelming. This is speaking from first-hand experience. I wanted to make my first contribution in May 2020 but struggled to take the first step. Since then, I've:

  • made many contributions to the documentation
  • become a committer to the Apache Superset project
  • helped re-shape the culture and organization of the Superset Slack community
  • and written over a dozen blog posts on Superset

In this post, I hope to use what I've learned to pave the way for you or someone else you know to start contributing to the project. Most of the points below apply more generally to all Apache projects and (to some degree) to all open source projects.

The Apache Flavor of Open Source

While Superset began life at an Airbnb hackathon, the project eventually found it its way to the Apache Incubator. The Apache Software Foundation provides a path for open source projects to get bootstrapped and come to life. The Apache Software foundation provides many things, but the main thing it provides is a loose philosophy of open, vendor-neutral, community-driven software development. This philosophy is often referred to as the Apache Way.

The Apache Way

The Apache way isn't a strict philosophy per say, and each project adapts and implements the values slightly differently. Internalizing the core values helps provide a foundation of context as you think about the type of contribution(s) you want to make and how to be a good community member.

I'll start by first exploring ways to contribute that don't involve learning the Superset code base and contributing code. Then, I'll switch gears and zoom in a bit on how to contribute new code. You're welcome to skip ahead if you'd like.

Advocate for Superset

A very underrated but important way to contribute is by advocating for Superset. This usually takes the form in two key ways:

  • Delivering talks & presentations on Superset
  • Writing unique blog posts about Superset

The best content (either talks or blog posts) lies at the intersection of:

  • your unique insights, perspective, or voice
  • and what's not being discussed enough

Here are some concrete examples of topics that lie at this intersection for these authors:

content ideas

After you've written a piece of content or delivered a talk, you should add it to:

To find places to give talks, we recommend the following resources:

Help Others

Besides the software itself, an open source project An open source project lives and dies by its community. Helping others with issues they're running into is an excellent way to make a dent.

Slack

In the Superset Community Slack, you can find community members asking questions in the following popular channels:

  • #beginner-questions: friendly place for beginners to ask questions
  • #customizing-superset: discussing how to tweak & customize Superset for your own needs
  • #using-superset: end-user focused channel, on topics like crafting charts & dashboards in Superset
  • #improving-superset: contribute to the discussion on how to improve Superset

Stack Overflow

Questions on StackOverflow related to Superset are usually tagged with either:

  • #apache-superset
  • #superset

You can find new questions tagged with either tag using this URL.

Github Issues or Discussions

Github has two ways to have discussions around Superset:

In these avenues, you'll find everything from bug reports to new feature suggestions.

Documentation

Superset is a fast moving open source project, which often means that documentation gets stale and out of date quickly as well. Because Superset is used by thousands of individuals and organizations, improving documentation is a very very high leverage way

The documentation for Superset lives in the docs folder in superset.

Here are some clear ways to contribute documentation:

Contributing Code

Setting up Environment for Development

First, we recommend setting up your local environment for development. The setup is a bit more involved than the Docker approach, but will encourage you to learn all of the different components of Superset and let you iterate on code much more quickly.

Unless you are a committer to Superset, to contribute code or documentation to Github you'll need to fork Superset on Github and create an origin and upstream git workflow.

  • origin will point to your fork. When you git push origin [branch-name] and open a PR on Github in your forked repo, a PR will be made in the upstream / apache/superset repo
  • upstream will point to the apache/superset repo. You can't direclty push to this repo unless you're a committer.

Superset PMC member Ville Brofeldt did an excellent workshop on the full contributor's workflow here from start to finish.

Good First Issues

Now that you're setup, how do you make your first contribution? A good place to start is with the good first issue label on Github issues. Good First Issue

This tag is full of Github issues that are minor bugs, cosmetic chores, or enables optional functionality. They are small issues with training wheels!

Fixing Bugs

For medium sized contributions, you can always try tackling one of the bugs! The bugs label in Github issues provides a nice list for you. There are a few different bug types you'll see in Github issues:

Superset Bugs

Larger Proposals

Large changes to Superset usually require that you research and craft a proposal, known as a Superset Improvement Proposal or SIP for short.

If you need help crafting a SIP, please use the #contributing channel in the Superset Community Slack or work with existing community members that you've built a relationship with.

Next Steps

Many open source projects have a file named CONTRIBUTING.MD that details how someone can contribute to the project. The Superset project is no different, here's a link to that file on Github.

contributingmd

This file is maintained and is the best place to stay upto date about how to contribute to Superset as the project matures.

We'd also encourage you to join our Slack community and use the #contributing channel to get help!