I wrote TagLib, JuK, a couple other small KDE applications, and a handful of the library classes (inline spell checking, search widgets, maintained the listview classes for a few years) and more recently implemented a number of algorithms and classes for ChucK (music orientated programming language).
I'd recommend working at least tangentially in one of the larger projects since I feel like hooking into those cultures is a really instructive and challenging environment. Don't underestimate the social component of OSS projects.
In a big project the easiest way to get started is to pick something you already use, start running the unstable version (from CVS, SVN, whatever) and sign up for some mailing lists. You'll hit bugs, and if you've been on the lists for a bit you'll get a feel for how they're handled in that project. IRC can also be useful. Often you can find someone there that will kind of informally mentor you in the project if they like what you're working on.
One big caveat that I always point out: Don't worry about your skills. You'll learn them if you're motivated, latch on to a good community and have moderately thick skin.
I'd recommend working at least tangentially in one of the larger projects since I feel like hooking into those cultures is a really instructive and challenging environment. Don't underestimate the social component of OSS projects.
In a big project the easiest way to get started is to pick something you already use, start running the unstable version (from CVS, SVN, whatever) and sign up for some mailing lists. You'll hit bugs, and if you've been on the lists for a bit you'll get a feel for how they're handled in that project. IRC can also be useful. Often you can find someone there that will kind of informally mentor you in the project if they like what you're working on.
One big caveat that I always point out: Don't worry about your skills. You'll learn them if you're motivated, latch on to a good community and have moderately thick skin.