I Want to Learn How to Contribute to Top Open Source Projects

Contributing to Top Open Source Projects

That’s the goal. At the time of writing this probably-too-long blog post, I am a total noob that has been intimidated by getting into open source software for years. Hopefully some people can learn from seeing me document how I got started and how I will eventually become a major contributor to a top open source project.

I’ll be going from open source scrub to super star contributor. Just you watch.

The Starter Projects

Finding the right project is hard and it took me a long time to narrow down the projects I want to get started with. These are the 5 projects I’m considering:

I. WordPress

You’re reading this on a WordPress-powered site, so I might as well get this one out of the way first.

It get’s a lot of crap for being insecure (among other things), especially from some of my close friends, but there is something to be said for a platform that changed the web as we know it… for better or worse. Even though it is primarily written in PHP, there is plenty to learn from a project like this.

A founding developer of WordPress and CEO of Automattic, Matt Mullenweg, seems to have admirable goals and, as an added bonus, is a cool dude. He is dedicated to open source and has made lots of money along the way. Maybe if I want to be a cool dude like him, I should contribute to his open source project?

II. Nuklear

If you search for trending projects on GitHub, you’ll find Nuklear near the top for repositories that primarily use C. It seems like a great little library for getting an interface up and running quickly using the ‘immediate mode gui‘ (imgui) style.

Unfortunately, the documentation isn’t stellar at the moment, but maybe with a bit of digging I can get good enough to help improve the project (perhaps by writing some stellar documentation).

III. Servo

This one is a doozy. I’m almost certain that I won’t be contributing to Servo from the start, but I had to put it in because it’s a great piece of machinery (and maybe someday I’ll have the balls to dive in). They are building a modern web browser engine from the ground up using Rust. What’s not to like?

Their documentation is great and there is a section for contributing that highlights what to do if you’re new (crucial for me, because I’m dumb and need all the help I can get). I’ll be keeping my eye on this one for the future. You should too.

IV. Neovim

I love Vim. I also love Neovim because it’s like Vim, but better. Their goals are to take what is great about the former and add concurrency, extensibility, and sane defaults. Outstanding.

The Neovim project has some great documentation for contributing, so this one is near the top of my list for first efforts. I also use this piece of software more than any of the others on the list. Even if I don’t settle on Neovim right now, you can bet that I’ll be putting some pull requests in soon.

V. Rust

This monster is one that I’ve only recently began to tame. I had heard about the Rust programming language for years and always thought it sounded great, but never took the time to learn it myself. My excuse was usually that it’s too young and that C is already my best friend.

Now though, it is quickly becoming my mistress-on-the-side because I’m fascinated with what the creators have done with it. Safety and parallelism are huge. I’m super pumped for the grind of learning how to use Rust effectively.

I’ve all but decided that Rust will be the first project I dig into. The docs are fantastic, the community is amazing, I have a lot of fun with it in my free time, and there are tons of issues that can easily be tackled by a scrub like me with no open source contribution experience.

Where to Go From Here

Although Rust will probably be my first target, I hope to get my code into every project on this list. Each one has something unique to learn from and I want to do it all!

Follow along while I stumble through the process of learning how to contribute to top open source projects.

Leave a Reply

Your email address will not be published. Required fields are marked *