Contributing is easy with GitHub: Simply fork the project, apply your changes, and make a pull request. (If you are not yet familiar with GitHub, you'll find the "Fork" and "Pull Request" buttons on the top right of the pyjs project page.) Your pull request will then be reviewed and merged into pyjs' main repository by one of the project administrators.
To convert one of Google's GWT widgets (written for Java) to pyjs please use the java2py.py script from the contrib folder.
If you find a bug have it confirmed by the mailing list, and add a bug report. If you want to help out, but don't know where to start please pick a bug that you think you can handle from one of our bug trackers:
In the pyjs repository is a file DEVELOPER.RULES. This is a good starting point.
The trickiest part about pyjs is remembering that it is several separate projects. For example: modifying the JavaScript compiler has absolutely nothing to do with pyjs Desktop. But, modifying a pyjs UI Widget requires testing on eight platforms (five web and three desktop) including compiling and testing using both --strict and -O on the five web platforms, and testing under nearly ten web browsers (Firefox 2 to 4; Opera 9 to 10.5; Safari 3 and 4; Google Chrome; IE 6 and above, and so on). Clearly, this is an impossible task but you should make the best efforts and use your judgement, and ask for help on the mailing list.
Lastly - please use the bugtracker to report bugs (regardless of how trivial or small); the mailing list to coordinate discussions; the pyjs wiki to create HOWTOs and so on.