Contribute to GraalVM
GraalVM is an open source Oracle project where people from all over the world contribute their work, help each other, and make GraalVM innovative. We are thankful for past contributions both big and small and always welcome new collaborators! Only a large community can make this project a strong language virtualization technology.
There are two common ways to collaborate:
- By submitting GitHub issues for bug reports, questions, or requests for enhancements. Note, that a security vulnerability should be reported to email@example.com.
- By creating GitHub pull requests.
If you consider contributing solely to the documentation, please check this guide.
If you consider contributing to the GraalVM core, start by learning how to build a GraalVM distribution from sources, using
mx – a unique building tool.
Learn how to set up a proper development enviroment, load the GraalVM project into the IDE, and see the main classes one could look at to have the basic understanding what the compiler is doing. This video demonstartes the above.
How to Become a GraalVM Contributor?
Further below are some tips for contributing to GraalVM Community Edition and its projects, hosted in the Oracle organization on GitHub. We expect a contributor to abide by the Contributor Covenant Code of Conduct. Overall, there are three stages:
I. Create a Pull Request
If you believe your contribution is valuable for others, create a pull request (PR). The common process is forking a repository, submitting a change and creating a PR. When creating a PR, please make sure to include a clear description of the intention of the change, unless the change is self-explanatory, e.g., a version update. Describe why (1) the change or feature is needed, (2) how it is implemented, and, optionally, (3) what further implications it may have. You can either use the PR request description field or the commit message. It is recommended to address one feature or change per PR request.
Once you have created a pull request, the Travis CI service will run some sanity checks on your change. Be sure to address any obvious issues caught by these checks (e.g., formatting violation), but keep in mind that test failures may not be directly related to your changes (no gate is perfect due to infrastructure issues and transient test failures).
II. Sign the Oracle Contributor Agreement
To allow your pull request to be accepted, you will need to sign the Oracle Contributor Agreement (OCA). There are two types of OCAs: Individual OCAs and Company OCAs. Sign it online and, once your name or organization shows up in the OCA signatory list, we will add you to the database used to check that pull request authors are covered under the OCA. If it appears to be a delay in your entry showing up in the signatories list, please send an email to firstname.lastname@example.org. If your entry is in the signatories list, but the bot leaves a message on your pull request that you have not signed the OCA, leave a comment on the pull request stating that you are now covered by the OCA. The bot operates from a database separate from the OCA signatories list (since the latter does not necessarily include email details) and must be manually updated.
III. Review and Merge
An Oracle employee reviews the proposed change and once the pull request is in a mergeable state, takes responsibility for merging it to the main branch. To ensure extra diligence in terms of verifying externally contributed code meeting these requirements, we have an inbound-check-bot.
What to Expect When Submitting a Pull Request?
There are many directions to explore from smaller changes like bug fixes or improvements to the API documentation to larger changes that can either speed up the execution, or give better control over the system.
We look forward to extend the GraalVM ecosystem by implementing new languages support with the Truffle framework, providing better tooling for polyglot programming, or proposing new embedding scenarios. The continuous efforts are directed to the machine learning for optimizing compiler configurations. Contributors are welcomed to join the development of a fully meta-circular Java runtime written in Java. We keep on investigating techniques for more efficient memory usage and pursue improving performance for different workloads.
To reach GraalVM developers for questions related to working with GraalVM sources, subscribe and post to email@example.com.