Believe it or not, this is a fairly hard request to satisfy. And that's mainly because it's <i>SO</i> general and vague. There are 10 bazillion different OSS projects, and there is almost no way on heaven or earth for somebody who doesn't know you, to tell you which one(s) to start with. It depends on what you're interested in, what your skills are, how motivated you are, how much of a self-starter you are, etc.<p>And, truth be told, it's a darkside of the OSS community that we aren't very good at "hand holding" beginners - much to the detriment of everybody involved, IMO. The reasons for that are legion, but for whatever reason, a lot of projects aren't all that interested in helping a newbie move up the learning curve.<p>Anyway, for somebody from HN to help you very much, it would almost take somebody who runs a project to step in and make a specific offer to work with you. Otherwise, all somebody can really do is offer platitudes like "look for a project that really interests you" and "look for projects that publish a list of 'low hanging fruit' bugs for beginners" (there <i>are</i> projects that do that, and that is good advice, BTW). But as far as generic advice goes, you can get plenty of that by Googling:<p><a href="https://www.google.com/search?q=contributing+open+source" rel="nofollow">https://www.google.com/search?q=contributing+open+source</a><p>If it were the right season for it, I'd suggest you look into the Google Summer of Code program, but you'd have to wait until next summer now.<p><i>Or, am I starting to early; must I learn more about data structures and software design before looking towards OS?</i><p>Nah... if you know Git (or SVN or CVS or whatever) and can use the build tools commonly used in the language of the project you're interested in, there are almost always bugs to be fixed that amount to not much more than typos. Hell, just going in and removing commented out "dead code" could be useful to some projects.<p>One angle you could look into is pick a project, download it, and run a code analysis tool against it (if you were a Java guy, I'd say PMD or FindBugs, but you'll have to find the equivalent for your chosen platform) and then examine some of the supposed "bugs" it find (quoted because a lot of the "bugs" they find are false positives or subjective issues of style), decide if it really matters or not, and possibly submit a patch.<p>Anyway... wish I could help more, but that's about everything that jumps to mind at the moment. Good luck!