I'm looking to start contributing to some Open Source projects but there are so many that it's daunting to choose one. My interests are compilers and HPC and my preferred languages are C/C++, OCaml, and Fortran. But I'm open to hearing about any projects. Thanks, guys!
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.
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.
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
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?
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.
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.
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.
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.