One great way (of many) to get started in software development, particularly in open source, is to find good first bugs. This is a class of software bugs (which should be called issues, since they’re not always bugs) that are easy to fix with little experience. It can also be a great way, once you have software development skills, to learn a new domain or set of tools. Many projects, even well funded ones, are very happy to receive community contributions, if nothing else it’s one other way they can provide opportunities to the community.
At Mozilla we use bugzilla to track our bugs, and use the good first bug keyword to identify such bugs. You’re welcome to contribute patches for these bugs, and potentially have your work included in Firefox. You can also search by component, so the list of open good first bugs for the garbage collector is here and I’d be happy to help with any of these.
Good second bugs
As far as I know I created the concept of good second bugs. They’re not really second in the sense that you solve one good first bug then move on to a second bug.
To me this means that the contributor already have a fair amount of development experience but aren’t familiar with the domain. So let’s say you know C but you don’t know how to write a garbage collector or the theory behind it. A good second bug would be a bug filed against something like a garbage collector but not require any GC knowledge, but probably does require C knowledge and roughly 5 years of development experience. It might take such a person a couple of hours to solve, rather than 5 minutes.
The intention is that it can help someone get into contributing to a particular project or learn some new type of programming. Particularly when those topics are generally regarded as deep or complex (but all topics are deep/complex, I don’t think GC is special, but that’s another topic).
I have created both a good first bug and a good second bug tag for Plasma (my side project), based on this idea. Until there are more contributors I’m not sure if this distinction is useful, it has not been tested. I’ve also created labels for skills that each issue may require, knowing that most people probably don’t know Mercury which Plasma is written in.