If you think of the ideas of open source applied to information in an encyclopedia, you get to Wikipedia – lots and lots of small contributions that bubble up to something that’s meaningful. – Matt Mullenweg
One of my favorite aspects of open source is the fact that anyone can contribute! It’s like “productive volunteering” (if you’ll humor me). It’s a fantastic way to build something bigger than you, give back to the community, and level up your skills.
In this article, we’re going to talk about practical ways for you to get involved in open source TypeScript projects. We’ll first cover assessing your level then jump into how you can find opportunities.
Assessing Your Level
Before you get started contributing to open source, you want to find your comfort level. Where are you at skill-wise? What level of complexity are you wanting to solve? How much time do you want to spend? These are important questions to consider before diving in. This information will guide us during the process of finding opportunities.
To simplify things, we will create three levels:
- Level 1
- Level 2
- Level 3
In each level, we will provide a description and an example contribution for someone at that level. Let’s take a look.
Level 1: New to TypeScript
The first level in our three-level TypeScript skills assessment is for those who are “new to TypeScript.” You might find yourself here if any of this description resonates with you:
Below are a few examples of things you might contribute to while you are at this level:
- updates to documentation
Level 2: Comfortable with TypeScript
The next level in our system is where I imagine most people self-categorize. Read the description and see if this relates to how you are currently feeling:
You’ve used TypeScript in a few projects. You feel comfortable with TypeScript and understand how to fix general type errors. You’re not an expert when it comes to understanding issues, but you sure know how to find the answer. Maybe you’ve written a handful of interfaces or type aliases. You know a decent number of TypeScript tricks or tips. The compiler isn’t your bestie, but you consider yourselves acquaintances.
At this level, you might feel comfortable contributing in the following ways:
- fixing bugs
- fixing a type error
- making a switch statement exhaustive
- adding small features
anyto the correct type
- updating docs with new examples, templates, etc.
- contributing to a cheatsheet
Level 3: Ready for TypeScript Challenges
The last level we’ll have is for people who feel quite comfortable with TypeScript and are ready for a challenge! Take a glance at the description below and see if that’s how you would describe your level:
A few examples of where you might look to contribute:
- helping maintain typings in DefinitelyTyped
- writing advanced tutorials or documentation for new TypeScript projects
- contributing to TypeScript, the compiler, itself
Now that you have an idea of what level you’re at, it’s time to think about where you should start looking for opportunities. We’ll cover three where you might have luck.
Yes, this is clearly the most obvious. You’ll find lots of open source projects on GitHub. However, it can often be overwhelming. Where do you even start?
The best place to start is TypeScript specific organizations and repos. These are organizations with lots of TypeScript repos. Let’s look at a typical search process. Here are the steps you might go through after you’ve found a TypeScript organization or repo using TypeStrong:
- Open repo from organization → fork-ts-checker-webpack-plugin
- Navigate to issues → /issues
- Look for a “help wanted” or “good first issue” type of label
- Now, go to the global issues page → https://github.com/issues
- Filter by org, issue state and label → example
- Sort by least commented → sort:comments-asc
- Find an issue that fits with your level
The reason for sorting by least commented is this helps find issues that have yet to be claimed or worked on. I have used a similar tactic in the past contributing to Rust open source and it worked out well!
The next best place to look after GitHub is Twitter. Why? Well, it’s a great place to share what you’re doing and others might notice. If you mention that you’re actively looking to contribute to TypeScript open source projects, someone may point you in a direction.
This is how I found one of the open source projects I contributed to:
Again, a friend (@swyx) knew I was looking for open-source projects to hone my TypeScript skills and pointed this tweet out to me. That lead to an issue to improve the docs for beginners and three PRs that were merged in.
On a more practical side, here’s what you can do to increase your luck of finding open source TypeScript projects on Twitter:
- Learn in public i.e. share your goals with others
- Follow prominent TypeScript community members (start with the list that @typescript follows)
- Search for tweets mentioning TypeScript
There may be less opportunity on Twitter, but it’s still worth the effort as an additional avenue.
The TypeScript community has its own Discord server. Here you can mingle with other members and chat about projects, but you could also post about open-source and share what you’re looking for! I haven’t personally tried this, but I would if I were looking.
It may be hit or miss, but I am almost certain someone will know of an issue or be willing to help find one that fits your skill level.
Contributing to TypeScript open source gives you the opportunity to collaborate with others on projects used by the community. It also provides a way to level up your skills. It is a win-win for both groups.
Remember to understand where your skill level is at and where you want to be when choosing which projects to tackle. Take advantage of GitHub’s special search syntax, but also don’t neglect Twitter or Discord. Like a good carpenter, know how to use all your tools.
I hope you found this article helpful! If you did, tweet @jsjoeio and let me know!
If you used any of this information to find and contribute to TypeScript open source, let us know in the comments below!
Jump Start Git, 2nd Edition
Visual Studio Code: End-to-End Editing and Debugging Tools for Web Developers
Form Design Patterns