Choosing Projects to Contribute to in the Long Term

In recent months I’ve introduced myself to the world of open source by being more active in the community. I’ve contributed to a large variety of projects and enjoyed doing so because it’s given me a better understanding of the industry as a whole. But it’s too much variety. I want to get rooted in one or two projects so I can start making more substantial contributions.

Personal Priorities

What motivates me as a developer is the idea of ‘skill hoarding’ and being able to develop whatever applications I think of. I want to learn a lot of things, build a lot of different skills relating to a certain type of project, to be familiar with and help coordinate an application in its entirety.

Not only that but everything is connecting with software. IOT. I want to be able to interface and ‘speak the language’ of the new world. Build tools for communities I’m a part of. And get paid for my lifestyle, hopefully. Plus I love sci-fi and I find to be pretty inspirational…

I’m not expecting myself to help create some sort of human-level AI anytime soon. But I want to help build something that makes things that little bit faster, better looking, to make them run smoother. To contribute to a project that move things forward in some way.

In a nutshell

When contributing to a new project…

  1. I want to learn a lot of skills that have a high relevance to things I want to work on in the future
  2. I want to be able to collaborate with the project’s community when building new features
  3. I want it to be something I care about and want to help maintain past a few contributions
  4. I want to work on something the impresses and inspires other people, that has a genuine utility, is fairly well made

Project Must Haves

When contributing to a new project for the long term, I’ve decided it needs to have the following based off my priorities.

Needs lots of enhancements vs. small bug fixes. I want to avoid working on small bug fixes, except maybe initially to get familiar with a project. I find that they’re good ways to learn how something works, but I’m generally not learning how to build things from them.

It uses languages I want to be more familiar with or often already use. I’m still a bit too generalized right now, and need to fix that. I want to specialize more in a small group of technologies.

Has an active community of developers and maintainers. I need an easy means of contacting and discussing things with other collaborators on the project.

Is well built and maintained. Lots of automated testing, clean code, through code reviews, etc.

Projects

A list of projects that I’m currently considering. Nothing is set in stone yet, this is just what I’ve thought of based on my current brainstorming.

mozilla/voice-web

Open source voice recognition software. link

Pros:

  • Interesting use case
  • A few interesting enhancements/features to add
  • Uses React with Typescript
  • Have contributed before, somewhat familiar with project structure

Cons:

  • active community for it is fairly small
  • the project is in its later stages, so not very many enhancements
  • enhancements all seem to be UI or mobile related?

microsoft/fast-dna

An unopinionated suite of components and utilities to be used as a foundation for enterprise-grade applications. link

Pros:

  • lots of recent activity
  • lots of tasks/enhancements
  • could be getting feedback from Microsoft devs
  • fast and responsive project maintainers. No open issues beyond 4 days.

Cons:

  • Haven’t contributed to it before, don’t know how it works

wonderunit/storyboarder

An application for creating storyboards (something used in film/animation to plot out the story in a rough format). link

Pros:

  • could be a good way to develop a big feature that will be used by 1000s of people
  • would learn how image editors work, exposure to various data structures ‘in the wild’ (e.g. undo/redo action uses stacks)
  • I’d learn more about building electron apps

Cons:

  • it’s almost completely dead right now…
  • would expect next to no help up until the PR
  • not even sure if I’d be given approval to work on a large feature, but maybe?

The Plan

My plan so far is to pick one main project to contribute to, while making smaller fixes to a variety of others. So far it looks like fast-dna will be the main one I choose, but for the time being I’m still looking for ones that have similar advantages to them.