Good First Issue

What is a “good first issue”?

A lot of opensource projects are often managed by volunteers who work on these awesome projects during their spare time and are used by a lot of companies/people for their products/projects.

Almost all of these projects encourage next generation of contributors to engage in the community and make meaningful contributions by labeling appropriate issues with good first issue.

These are issues which do not need very deep knowledge of project and are relatively easy to implement. This can be a small bug in implementation, a small new feature or even a documentation change.

How do new contributors know there is a new ‘good first issue’

Generally the new contributors look for open source project in the language of their choice and then subscribe to events from that project. And when they get the notification of a new issue reported which is ‘good first issue’ they go to the project, and contribute to that issue/project.

The problem I had with this approach is when you subscribe to the repo, you get notification for not only ALL the issues reported, but also new release, commits, PR’s, wiki updates etc. which can get overwhelming if you want to subscribe to more than one project.

So what is goodfirstissue bot

goodfirstissue is a github bot, which once installed on repo/org, will notify first time contributors through @goodfirstissue handle. It tweets only when there is an unassigned and open issue which also have a label good first issue. This way you can filter out all the other noise that you get when you subscribe to repo/org directly.

it consists of two parts:

  • A github bot that is installed on org/repo who encourage first time contributors to contribute to their projects. This sends notification to a openfaas function which filters noise and tweet the issue if it qualifies for a good first issue
  • A twitter handle that is followed by potential ‘first time contributors’ who can now get real time notification about good first issue from awesome opensource projects in a variety of different languages.

Architecture

Why did I pick OpenFaaS for the bot?

The first version of goodfirstissue bot was deployed as a webservice on Kubernetes cluster on Digital Ocean. Deployment was easy, but few things were bothering me:

  • Manual configuration of my custom domain referencing to loadbalancer created by DO.
  • Getting https endpoint for the service. using https gives more confidence to your users.
  • Infrastructure Cost. Once promotional credits were over it was going to cost money to run this cluster. The maintenance of this cluster was also going to cost me time.

Although above could be achieved relatively easily with tools like cert-manager, but I didn’t wanted to get into managing the Kubernetes cluster myself.

While I was collecting feedback on this function, Alex suggested me to change this bot to a function and also made me aware of OpenFaaS community cluster which provided me:

  • CI/CD with git pushes
  • Free hosting
  • Free https endpoint
  • Secure Secrets management using Sealed Secrets
  • Easy debugging using slack events/bot commands. (this is so awesome !!)
  • Easy access to dashboard with pre-created metrics about the function.
  • Access to OpenFaaS community to share my experience with them, and learn from their experiences.

Current Users

Some projects have already opted to install goodfirstissue bot on their Orgs/Projects and we are working with other community projects to onboard them to goodfirstissue bot.

one of the glorious moment for me was when goodfirstissue was installed on helm org, and helm core contributor @mattfarina tweeted about it.

We even got a shoutout from @alexellisuk during the kubecon EU.

List of users

(generated using github-app-installations)

Org/User Repository
fastify All
asyncapi All
storyscript All
zuzakistan All
tektoncd All
helm All
openfaas All
rajatjindal - github-app-installations
- goodfirstissue
pmlopes vertx-starter
citrusframework - citrus
- citrus-db
- citrus-simulator
alexellis - derek
- github-exporter
- inlets
- minikube-operator
- ubiquitous-octo-guacamole
google go-github
reactiverse es4x
jetstack cert-manager
nut-tree - nut.js
- secrets
- trailmix
sakuli sakuli
Ewocker vue-lodash

Limitations

  • At the time of this writing, goodfirstissue bot relies on the owner of project/org to enable webhooks for sending push notifications when issues are created/updated.
  • It does not tweet about onboarding of new projects. It will be nice, as a follower of this twitter account, to know which new projects will start sending goodfirstissue issues our way.

Future Enhancements

  • Ability to poll for events in a scalable way for projects that support goodfristissue but are reluctant to install too many webhook integrations on the project/org.
  • Ability to publish metrics around how many goodfirstissue were tweeted, how many contributors actually benefited from it. And we can do these metrics along a few dimensions like Programming language, UI/Backend/Infra etc.

Wrapping up

The goal of goodfirstissue bot is to connect first time contributors with great projects giving opportunity to learn and contribute and we recently crossed 100 followers on twitter account.

  • If you are maintainer of an open source project, we would highly appreciate you considering installing this on your org/project.
  • If you are new to open source community and looking for a starting point, consider following @goodfirstissue.
  • If you like this project, it will encourage us if add a star to the repo. (we are one star away from first magical number 10).
  • You can also follow Rajat Jindal who is your fellow “first time contributor”.

Acknowledgements

Many thanks to @alexellisuk for helping me write, build and deploy this @openfaas function to openfaas-cloud.

Join the community

The OpenFaaS community values are: developers-first, operational simplicity, and community-centric.

If you have comments, questions or suggestions or would like to join the community, then please join us on OpenFaaS Slack.

You can follow me @alexellisuk and @openfaas on Twitter