i would like contribute to open source projects in my free time to enhance my skills, but I just don't know how, I am hoping that you will give me guidence as to how can I contribute. Is it just searching in google and visiting open source website to see the software and fix bugs as I find, or is there a central repository with all open source softwares listed.
There is no central repository. For Java projects in particular, check out dev.java.net, java-source.net, sourceforge.net and of course jakarta.apache.org. But you probably have some favorite tool/library that you are familiar with already which you might like to enhance?
Here's a high-profile one that's downright begging for help (and it does something that gets asked about in these forums a lot - you'd be making a lot of fellow Ranchers happy): Apache POI (HWPF)
Generally you would start by becoming familiar with the code base, learning how to retrieve the source and build the project from it, and participating in the developer's mailing lists or forums. Many projects have a page about how to get involved on their web site. Since the process differs from project to project, it's impossible to give general advice. [ November 17, 2007: Message edited by: Ulf Dittmer ]
Welcome to Javaranch! Getting paid to produce Open Source Software definitely occurs but it's generally treated as a 'regular' job, e.g. You'd be hired by Jboss to work on their App Server, which happens to be Open Source.