Getting involved in Sanic

So you want to get involved with Sanic…

Awesome :sunglasses: Welcome aboard. Here is some information to help you with that process.

What is the SCO (Sanic Community Organization)?

The SCO is a meritocratic, consensus-based community organization responsible for all projects adopted by it.


The SCO is an umbrella organization meant to give some structure to the running of the projects, mainly: Sanic.

It is governed by a policy known as the SCOPE. If you are serious about being involved, it is worth your time to take a look at it. In particular the section on Roles and Responsibilities of Collaborators and Core Developers. But, I’ll summarize it for you here.

Why a community organization? Why all the formality?

We do not like procedure more than the next person. But Sanic is not a project run by one or two people. It is owned and dedicated to the community that use it. For that reason, there needs to be some guidelines.

How can I contribute?

First, that you are asking that question, you deserve this: :trophy:

When I say that open source involvement is a worthwhile adventure, I mean it. The world around us is built upon open source, and most of what we know and take for granted in our everyday lives would not exist without it.

Contribution really can come in a lot of forms. Here are some ideas:

  • :studio_microphone: Spreading the word. Posting a link or a tweet, talking to a meetup group, writing a blog, posting a video tutorial.
  • :left_speech_bubble: Providing feedback. It is really helpful to let the team know what does and does not work from a new users’ perspective. Sometimes when you are in the depths of something, it is hard to see it objectively.
  • :nerd_face: Helping new users. The more support new users get, the stronger the project becomes. Subscribe to [sanic] on Stackoverflow, and keep an eye on the Questions and Help channel.
  • :bug: Report bugs and issues. And, even more important, attempt to solve the problem. No worries if you do not know how. Just ask, someone will be happy to give some pointers.
  • :open_book: Documentation. The documents always need work and updating. Next to a strong and performant API, this is one of the most important parts of the project.
  • :computer: Programming. Seems obvious. Follow the project and keep an eye on the issues and PRs. If you see something you think you would like to work on, speak up.
  • :dart: Code review. Take a look at existing PRs and let us know your thoughts. Every voice matters.

And, most importantly…

  • Engaging in conversation. Wherever it is once a day, once a week, or once a month. Staying involved by checking in on conversations and adding to it (even if it is just to add a :+1: or :-1:) is invaluable.

Okay… but what specifically?

Outside of listing specific issues, as of Summer 2020, some areas that can use help:

  • Creating the new user guide, complete with tutorials and how-tos
  • Keeping sanic-openapi up to date and coming up with helpful ways to keep Sanic usable for API-driven development
  • exploration of application and connection based ctx (see RFC 1684)
  • make sure we meet ASGI spec compliance (specifically around websockets)
  • performance review: where can we gain improvements?

What is in store for Sanic?

As of this writing, we are just trying to complete small fixes between now and the end of the year. The beginning of 2021 will hopefully see three large changes:

  1. RFC 1630 - Signals
  2. RFC 1647 - First class streaming
  3. A new AST based router

While these are underway already, if you have thoughts on them, speak up.

What does it mean to be a core developer?

You get some additional rights in GitHub. Mainly gaining write access to the repos. This includes all non-protected branches.

With this responsibility, you are expected to use discretion to push the project forward.

How can I be a core developer?

Historically this has been an honor given to contributors that have shown a dedication and an understanding of the project over some period of time. If you are an active member of the community that is consistently making PRs or raising issues, we will take note. At some point someone on the existing team will say "hey, we should really give <insert your name here> core dev access.

Another way would be to express interest. If you would like to self-nominate yourself, either respond to this topic or send a private message to a Steeting Council member. In this case, you should explain what your qualifications are and why you would be a good fit. Showing your interest and passion for the project being the most important qualities.

In either case, this is put to the vote of the existing core devs requiring 2/3 majority of votes cast.