
Ask HN: Recommended Open Source Projects for a CS Junior? - FlukE_
I&#x27;m looking to start contributing to some Open Source projects but there are so many that it&#x27;s daunting to choose one. My interests are compilers and HPC and my preferred languages are C&#x2F;C++, OCaml, and Fortran. But I&#x27;m open to hearing about any projects. Thanks, guys!
======
EnderMB
This may be an unpopular opinion, but I've never understood why so many people
recommend contributing to open-source projects if you are a CS student or
beginner. It's a fantastic way to feel inadequate in your ability to write
code. If you pick a large open-source project your skills may not be up to
scratch to help out in any meaningful way. Even with smaller tasks, a lot of
larger projects have enough structure in place to ensure that trusted
developers are working on key parts of the project, so it's likely that
getting involved will take a lot of effort.

There's definitely an argument for contributing to open source projects, but
I'd recommend finding small utilities over big-name projects. These have their
own dangers with contributors often abandoning projects, or ignoring
issues/pr's, but it's a much easier way to get involved and get some open-
source contribution cred on your CV/resume.

As others have said, the best approach would be to create your own project,
and should things go well there maybe look into seeing if there are any now-
defunct projects you like the look of that would consider handing the reins
over to you to maintain.

One last option would be Google's Summer of Code. It's too late to join in for
this year, but it may be worth it next year if you're serious about
contributing to a big-name project. The acceptance rate isn't great (I applied
three times and didn't get in once, but this was years ago), but given your
niche interests you might be a perfect candidate for a handful of projects.

------
handre
I recommend the awesome for beginners list.
[https://github.com/MunGell/awesome-for-
beginners](https://github.com/MunGell/awesome-for-beginners)

It's a bunch of beginner welcoming open source projects with a supportive team
to help you initiate in the open source world.

~~~
mcfunk
Fantastic resource.

------
petersjt014
Probably not the answer you were looking for, but one of the best ways is to
simply just _make_ something of your own. At the very least it's good
practice, and you just might make something people find useful if you've found
an 'unscratched itch'.

Even failing that, your codebase can be an educational tool for others.
rosettacode.org is a pretty solid example of this--any addition to the wiki is
going to save someone's bacon at some point.

But to be more specific for a moment: I see you have a functional-ish language
listed (Ocaml) and you've also mentioned compilers--If you're looking for low
level stuff with a hint of FP, diving into Rust might be interest you. I'd
suggest looking at Redox OS--it's a monster, but plenty of the big scary parts
are modularized away. Might be interesting.

~~~
slow_donkey
I wish I had worked on other people's codebases earlier. Its a bit daunting
when starting out but the art of understanding a codebase is invaluable and
you'll learn how others use a language in interesting different ways

~~~
meko
How would you describe practicing 'art' of learning a codebase? Surely there's
a more efficient way than to just stare it down for weeks on end.

------
Seanny123
In my experience, the trick is finding the sweet spot between something you
use every day and your abilities. I don't contribute to Ubuntu, because I have
very little understanding of what's going on there. I do contribute to my
lab's software Nengo and other libraries I use, because I understand the code
layout and where I can contribute. Consequently, maybe it's a good idea to
make a decision matrix based on these criteria?

~~~
TrickyRick
Yeah, this I think is the most important. You can't just pick up some OSS
project and start working away, it's usually a lot easier if you've been a
consumer of the project before. I've contributed a lot to several big JS
projects (Webpack, Grunt, npm) because they were missing things which I needed
and it turned out to be easy enough to just add them.

------
jfz
Most people will say that the motivation to work on a problem should come from
you being really excited about the problem domain. Play around with someone
else's code, trying to do something interesting to you that's just barely on
the edge of what the provided code can do. Then, when you realize you just
need that one feature to do something awesome, you can write it yourself.
Don't contribute to open source because you feel like you should, contribute
to open source because you want the project to have the features you're
contributing.

------
ydnaclementine
Pick something that you use in a language that you're familiar with. Look for
github/jira issues tagged something like: 'good-first-issue', or just
interesting issues in general.

Honestly you will learn a lot just setting up a project and getting the tests
to pass if you haven't done that before.

------
gloin
I've heard that [https://up-for-grabs.net/#/](https://up-for-grabs.net/#/) is
a good place to look to find projects that have issues that are beginner
friendly.

