My recommendation is to join the development and commit-notification mailing lists for an Open Source project you have an interest in, subscribe to notifications on GitHub if applicable, join their IRC channels, if applicable. Become very familiar with using the application and offer assistance to new users attempting to use the product and/or experiencing issues with it. Carefully review the project's bug-tracker and look for issues people are experiencing and proposals for new functionality. Watch commit notifications and observe how the project changes over time, how new features are developed, as well as feedback and revisions to patches and commits. Step one is to observe and learn, and this is critical. You should know a bit about what's going on before you just jump in. Ask questions, but be careful with assumptions. Read through the code comprehensively.
After a period of learning, it's time to begin contributing. Find a small issue you're capable of fixing, and submit a patch or pull request. Learn from the feedback you receive and avoid being defensive about your code. Follow the style and guidelines of the project. Engage in discussion on the development mailing lists, IRC, and bug trackers. As time goes on, you can begin working on bigger projects and more complex functionality. These communities are an easy place to gain respect and "move up the ladder" if you are a helpful contributor to the community, and behave in a respectful and respectable manner in the community.
Politics differ for each project, but it is often important to be politically-sensitive and aware. Much like a project at a for-profit company, sometimes politics are unavoidable.
You can also contribute without actually writing code--improving documentation can be a good place to start! This is just my perspective from my contributions to the Open Source community (including acting as maintainer of a small-but-active OSS project with many community members several years back), and I welcome others to share theirs as well :)