Getting Started with Open Source

Open-source software development is one of the best ways to learn programming

February 10, 2024

Getting Started with Open Source

Why make this post?

As someone who learned most of his hands-on programming skills outside of the classroom, I have to say that open-source software development is one of the best ways to learn programming. You learn a lot of different skills, from actually programming to working with a team, and you get to use those skills to build software for all sorts of products and purposes. Hell, everything you can see above this text (home server, Roku TV, Nintendo Switch, Steam Deck) has some form of open-source software I have contributed to or messed around with the source code of installed, like Decky Loader!

When talking to friends and classmates who have less experience programming, one thing I always mention is working on projects outside of class. Material that hasn't changed in years and senior projects can only get you so far. Contributing to open-source software is a great way to get some projects under your belt and learn a lot of frameworks you never would in a classroom. For example, I never learned React in my college education, but I use it almost daily as a software engineer.

The one thing I struggle to recommend properly are the steps for getting involved in developing that software. I'm writing this post so I have a compiled guide for why and how to get involved in open-source software development. I'm sure there are a million guides like this out there, but I wanted to write something personal for those who want someone they know providing these recommendations.

Why should I do open-source development?

Software developers choose to participate in open-source development for many reasons. Here are a couple that were relevant to me.

Projects for Resume

For me, this was why I originally got involved in open-source software. Even though I was enjoying my college education and just starting off as a Quality Assurance Engineer at a local company, I felt as though I didn't have many projects that I was proud of on my resume. I had made some Discord bots for gaming that I didn't think would be helpful on a resume, so I really wanted to work on something more.

Luckily, I got involved in the makerspace at my university and started working on projects with them, like a new website and Discord bot. I would later go on to work on some interesting software for the Steam Deck, like a plugin loader and theme manager. Those projects really helped me improve the quality of my resume by showing things I had worked on, not just classes I took without much to show for them.

Learning New Skills

When earning my bachelor's in computer science, I never had a course go over languages and frameworks I use today like JavaScript, Python, and React. Working on projects outside of class helped me a ton with learning practical skills in these topics. Without getting involved in the open-source software that I did, I would have far less skills to market myself once I graduated from college.

Also worth noting are the social skills you learn from working on these projects. I got most of my leadership and team-building qualities from leading open-source projects. I also got to learn how to work in a team across all of these projects. Having more experienced developers show me the ropes was a great experience and made me less afraid to ask questions.

Passion

Nowadays, this is the main reason I develop software for open-source groups outside of work. I am still really interested in the makerspace at UT Dallas and the Steam Deck, so I still work on projects surrounding those topics! Many developers just want to get involved in a community they're passionate about.

How do I get started?

For many, this is the hardest step. You want to work on some projects, but you have absolutely no idea how to get started. That's totally fine. I lucked out with the projects I got involved in and I want to explain how I got there. That way you can do the same!

Interest Groups

Like I mentioned, I have used or made open-source projects for everything in the featured image of this post. Finding a project to work on without any connection to its developers can be challenging, but it's not all that difficult once you know what to do.

  1. Pick a topic you're interested in. For me, I was really interested in the Steam Deck that I just bought, so I looked into homebrew software for that. Maybe you're into storing and sharing recipes, for example.
  2. Work with that topic! Search topics like "recipe management software" with important factors: availability of source code like "open source", deployment methods like "self hosted", or compatibility with other software like "home assistant". If you don't see anything you like or want to skip this step entirely, you could even make your own project from scratch!
  3. For our example, let's say you decide you like Mealie* and want to contribute to it. Luckily, there are a few ways!
    • Check out any documentation you can find on the project. Do they have a contribution guide? Are there any tags for issues where the main developers are seeking help from others? Read up on the project and see how you can help out before committing to anything.
    • It looks like they have a Discord server. Joining a chatroom with other developers of a software is a great way to get a feel of how people can contribute to it. Say you are a fairly new software developer and ask if there are any ways you can help!
  4. Just like that, you've gotten involved! It can be difficult, but keep at it and see what all you can accomplish!

*I have not contributed to Mealie, but I do use their software on my server. This is intended to be a general example of how to find a project and not any form of endorsement.

Student Organizations

If you're attending a university, student organizations are a great resource for building your resume by working on some projects. I attended UT Dallas, a very computer science-focused school, and found many student organizations that had projects people were working on around the clock. Here are a few in no particular order so you can get some ideas:

  • Artificial Intelligence Society
    AIS is a great organization for software developers with a big focus on artificial intelligence. Better yet, they host an annual hackathon called HackAI which gets hundreds of participants each year! I could go on a whole tangent about hackathons, but they are a good way to challenge yourself to learn new skills on the fly. They can be a little harder to keep a postive mindeset in, though.
  • Nebula Labs
    Founded by one of my friends Willie, Nebula is an "initiative to build tools to make students' lives easier at UT Dallas" that stemmed from ACM's UT Dallas branch in 2021. They have a huge focus on open-source development with a large portfolio on GitHub. These sorts of project-focused software development organizaitons make it super easy to join one of their projects, so definitely check them out!
  • UTDesign Makerspace
    Okay, a bit biased here. I was the president of Makerspace for two years, but I got involved in many projects. There's a Discord bot that tracks 3D prints, a custom website we built from scratch, and more. This goes to show that even if an organization appears to not have much to offer for software developers, they may have a lot of project opportunities waiting to happen.

Anything else?

This was a very basic overview of how I recommend getting involved in open-source software development. By all means, this isn't a conclusive document and you don't have to follow these methods. Honestly, I wish I had a lot of the advice above when I was starting to learn software development skills outside of college. I really hope you find some use out of this guide. If you do, please let me know!