Skip to content

Instantly share code, notes, and snippets.

@JoviDeCroock
Created January 7, 2022 10:46
Show Gist options
  • Save JoviDeCroock/97cd72417380cf04f18ccefc5370f674 to your computer and use it in GitHub Desktop.
Save JoviDeCroock/97cd72417380cf04f18ccefc5370f674 to your computer and use it in GitHub Desktop.

Introduction

Working in large groups of people who are all in different timezones can be challenging at first but it doesn't have to be. There are ways around this, some of the solutions that I have seen working in the wild quite a lot are

  • Asynchronous communication
  • Clear project goals
  • Elaborate issue templates

Communication

When we are working across timezones we should look at asynchronous communication as a first solution, this means no contributor has to accomodate for other timezones to have a call, ... However to do this well we'll need to be very explicit, everyone understands concepts differently, some are visual learners, some need examples and some can derive concepts just from text. When we review/draft up responses we should keep in mind that the person reading next or an external person coming into the issue could be missing context. Linking to other issues, using examples, ... will ensure that you're all on the same page.

Next up in the communication department is how you review code, we can all get attached to the code we're writing so it isn't fun if a reviewer swoops in and bashes on this little nit, keeping feedback constructive and accessible is key to being a good reviewer. Personally, I try to explain the comment I'm making as well so the person can follow my thinking when they read my review and won't think I'm just trying to stop their PR.

Last of all, providing context for a PR can be hard as you've been through the code and bringing others up to speed in a similar way is hard. Good pull request descriptions are an art and if you don't feel comfortable you can try contextualizing the PR by leaving comments on relevant pieces of code, this can help reviewers understand why you've gone on a thinking path and they can level with you and help with an alternative solution or see why your solution is good.

Project goals

Goals are one of the most important things when on-boarding new users, when people can see what we are making, why we're making it and how we're making it a lot of question marks can dissapear even before checking out the code/examples/... this is a form of asynchronous communication and often will come in the form of a README.md and a CONTRIBUTING.md these files will explain the project and important pieces like setting up, changelogs, publishing, ... an important part of a project is to be as accessible as we possibly can to new people as that's how a project grows, many hands help ease the burden of maintenance.

Project templates

Another way to be as accessible as possible, this is quite opinionated, is to leverage project templates to their best capacity. The easiest project I've been a part of to maintain has had a pretty strict flow for suggesting features. We outline in the CONTRIBUTING.md that people need to create an RFC before implementing a feature, this way people who have similar needs can come in and respond as well as people who are looking for this feature can come in and see the reasoning behind it, having this trail prevents a lot of issues being created and a lot of duplicate replies.

One last thing that has helped us as well is using issues exclusively for RFC's and actual bugs (only ones with a reproduction) while using discussions for usage questions, ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment