Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: mentioned that we do not have tasks for "classical" non-coding activities like translation

...

Feedback and contributions from the research community are the indispensable, invaluable resource that will ensure the project's continued success. Please help to improve some aspect of the system; no improvement is too small or too simple! The more volunteers can contribute, the better the system will serve the research community, resulting in faster and more solid research results. It is also a great help to the community if you contribute your code to the research archive.

How can you help Jikes RVM?

...

This page highlights a selection of low-hanging fruit for potential code contributions. Many of these selections also appear in our issue tracker. Please volunteer to pluck these fruit, or suggest other high-priority, but low-effort tasks by creating new tracker entries. This list is of course nowhere near comprehensive, but exists just as a sampling of potential activities.

Contributions to documentation (both User Guide and JavaDoc) are also welcomeNote that most of the tasks on this page are related to code in some way or another: we currently do not have any tasks for people interested in marketing, translations or graphic design. If you think that the project would benefit from a contribution in this area (or any other area that is not named here), do not hesitate to contact us on the mailing lists.

Additional ideas that require code contributions are listed on a separate page.

All contributions to Jikes RVM are managed in our JIRA-based issue tracker.

...

Some low-hanging fruit in no particular order

  • Contribute sanity and performance tests: The system's test infrastructure is set up to test and run standard benchmarks and sanity tests in a uniform framework. This functionality helps foster reproducible performance results, and exercises the system nightly to shake out bugs. If you're adding new code to the system, please consider contributing tests for it.
  • Contribute unit tests: Support for unit tests was recently added to the Jikes RVM by João Reys Santos for Google Summer of Code 2012. There is an initial set of tests but it is not very extensive. In the long term, we should have a unit test for almost every class.
  • Contribute missing sections or clarifications to the User Guide: If you run across some problem or area that is not well-documented in the User Guide, please write a short section for inclusion. Also, please help us improve the installation section to cover any installation problems you run into that are not documented. If you are interesting interested in contributing to the User Guide, or to other pieces
    of online documentation maintained in our wiki, we're quite willing to give you write access to the wiki pages. Please contact a Steering Committee member.
  • Update the Publications and Dissertations pages: The lists of publications and dissertations are incomplete. You can inform members of the core team about missing publications or contact a Steering Committee member to request wiki access so that you can edit the pages yourself.
  • Improve Javadoc comments in system code: We realize that the quality of Javadoc ™ comments is haphazard; please help us improve it.
  • Contribute sanity and performance tests: The system's test infrastructure is set up to test and run standard benchmarks and sanity tests in a uniform framework. This functionality helps foster reproducible performance results, and exercises the system nightly to shake out bugs. If you're adding new code to the system, please consider contributing tests for it.
  • Complete missing pieces of library interface: There are a handful of methods in Jikes RVM's implementation of a few core library classes (java.lang.Class, java.lang.Runtime, java.lang.Throwable) that throw VM_UnimplementedError. Provide an implementation for one of these methods.
  • Improve efficiency of some optimizing compiler phase: Many of the optimizing compiler passes use sub-optimal data structures, and compile-time could easily be improved. Some simple phases to start with include the local optimizations and flow-insensitive optimizations.
  • Strip mining: This optimization would be profitable, by reducing the overhead of yield point checks in tight loops.
  • Global Array Bounds Check Elimination: While the literature presents several algorithms for array bounds check elimination, the optimizing compiler does not have a complete implementation. Note that there are some non-trivial technical difficulties with ABCD, regarding integer overflow. A simple range propagation dataflow solver would be an improvement over what the system has now (namely nothing).
  • Implement missing JNI functionality: See tracker items: CreateJavaVM, Attach/DetachCurrentThread. OnUnload is also missing but not a high priority because the Jikes RVM currently does not implement class unloading.
  • A number of other possible projects can be found on the Project proposals / ideas pages that are linked from for our Google Summer of Code pagesConfirm, triage or fix bugs: The issue tracker contains a lot of open bugs. If a bug interests you, try to reproduce and fix it. If you can't fix the bug but can provide a test case that reliably reproduces the bug, that is also very helpful. If you provide a fix, please consider providing test cases for the bug. Patches with test cases require less effort from the commiters and will reach the mainline sooner.
  • Review commits and patches: You can review commits (subscribe to the commit mailing list to receive commit notifications) and patches on the issue tracker to improve code quality and catch bugs.