Getting Involved
If you want to help make JRuby a better piece of software there are many
ways you can help. This document is divided into three areas:
- Ruby coders
- Java coders
- Documenters
Most people interested in JRuby qualify for all three areas. Please
consider each area as they are all important to the success of the project.
Ruby Coders
As a Ruby coder you can help JRuby by finding areas where JRuby is not
behaving properly. This generally involves trying to use JRuby in place
of Ruby and seeing if your software runs. When you find something which
is behaving incorrectly (or not at all), then you should:
- Reduce the problem as small as you can. Hopefully it ends up being
a couple of line test case
- See if you can find a bug report on jruby's sourceforge site
- If so, then you can comment on the bug if you think you have something
to add which may be helpful in correcting/diagnosing the problem.
Especially, if you have a better test case.
- It not, then you should send an email to jruby-devel with the test case,
and if helpful, what module you noticed the problem in.
- A Java developer will triage the problem and either
- Fix the problem
- Ask you to add a bug report
- May add the bug report themselves (they may have some insight that
makes this a better choice)
Java Coders
As a Java code you contribute by fixing problems or missing functionality
in the JRuby implementation of Ruby. Additionally, you can contribute time
to improving the java integration or embedding features of JRuby.
The first thing you should do is create a working sandbox and make sure you can
compile and run JRuby. See {getting a working sandbox} for more information
on this.
The next thing you should do is figure out what you want to work on. Largely,
most frequent contributors generally contribute to itch their own scratch.
This means they want some ruby software to run and they have found problems
that are impairing their progress. What if you don't have any current
itches? We have plenty of tasks you can work on:
- Any open bug on the sourceforge site is fair game
- Any TODO/Fixme in the source may be fair game. If the TODO is an obvious
error in Ruby behavior then you can just fix it. If it is a refactoring
TODO which was written by someone who would like a section rewritten, then
you should send a message to jruby-devel and inquire about the item.
- Any missing native library in Ruby which JRuby does not have yet (e.g.
zlib, socket, digest, etc...). We are trying to write all these libraries
in Ruby using Java integration. You can look at digest.rb in our source
distribution for an example of how this can work.
- Try making a script to exercise a standard library in Ruby with JRuby. For
example, require matrix.rb and do some matrix operations and see if Ruby
and JRuby match.
- Try running against unit tests in Ruby source tests directory against
JRuby.
- Look for missing methods in JRuby's implementation of core libraries.
In some cases we have TODO's indicating these and in others we don't.
The Pickaxe book is useful in this case.
- Find something undesirable/missing about JRuby's java integration features
and propose something.
- You can always ask the jruby-devel mailing list. You may or may not
get an answer depending on the winds direction.
When you do find something to work on, follow the following process:
- Make sure no one is already working on your new found task. To do
this:
- Look for bug report on JRuby's sourceforge bug list
- Send a message to jruby-devel saying what you are working on. Someone
may have input that can help you out. Having a reduced test-case when
possible is always desired to limit the scope of discussion.
- Become a code monkey and fix the problem (or add the feature)
- Add test case(s) in the tests directory to exercise the problem
- Make sure you did not create any regressions
- via built-in unit tests
- via rubicon test suite
- Generate a patch from the root of the project tree
- Submit the patch to jruby-devel
- pat your self on the back and find another thing to work on
After a trial period where we get used to your contributions, personality,
and general commitment (read this as you did not submit two patches and then
quit the project), we will make you a full contributor.
Documenters
JRubys documentation is sorely lacking. Almost any idea for better
documentation would be helpful. Ideas for documentation include:
- Introductory documents on topics like:
- Embedding JRuby into a Java application
- Example using JRuby's Java integration features
- Better core API documentation:
- java integration features (low-level and high-level docs)
- BSF documentation
- Example code with commentary