Eclipse OpenJ9 - The first 2 weeks

It’s been about two weeks now since we created Eclipse OpenJ9. I thought I’d write a “short” blog entry just to let people know about some of the work that’s been happening at Eclipse OpenJ9 over the last two weeks as we ramp up our open source project activities.

Only a couple of days after we contributed our code to our main repositories and created the first draft of our web site, our project was “discovered” via a pretty active reddit post. Our community has been a little bit overwhelmed by the attention and interest before we even announced (we still haven’t!) our presence, but we’ve made some good progress ironing out some of the kinks people found. We really appreciate everyone’s patience!

Since our initial contribution to https://github.com/eclipse/openj9, we’ve already had 120 commits made by 29 contributors, including our very first non-IBM contributor to OpenJ9, Christian Dietrich (https://github.com/cdietrich)! Welcome, Christian, and thank you!

As I write this, we have 43 open issues, several of which were opened by newcomers to the OpenJ9 community, and there are 36 open pull requests at various stages of review. It’s really exciting to see the activity in issues like ARM build? and Support for ARMv5 Linux - Headless EABI, SoftFP ABI where people new to the project are actively looking at how to bring OpenJ9 to the ARM platform alongside the nightly builds at AdoptOpenJDK for Linux on X86, Linux on POWER and Linux on Z platforms. We have issues open for Windows and Mac OS X platform ports and IBM will be contributing support for our other platforms (AIX and even zOS!) as we go forward.

Of course, our project is still in the process of hooking up all our plumbing, both for the open source project itself as well as the for IBM team integrating the open source project into our local development environment so we can work as directly in the open source project as possible.

On that front, we have made great progress setting up and configuring our Jenkins CI server and getting builds and tests running. We’d like to thank the Eclipse Foundation for their incredible effort to help us create this project and to get our infrastructure in place and to have all the bits talking to each other. Thanks to Travis-CI for allowing open source projects to do build and tests from GitHub! We’re using Travis-CI as part of the Eclipse organization for our X86 platform build and testing. For the POWER platform, we would like to thank the Oregon State University Open Source Lab and their POWER Development Hosting facility. And, of course, the IBM Linux Technology Center for supporting this lab and enabling open source projects to build and test on the POWER platform! Finally, for our Z mainframe platform testing, thanks to the IBM LinuxONE Community Cloud for providing open machine resources without which we wouldn’t be able to build or test this impressive platform. Without the help of these organizations, our project would not be able to run as effectively in the open, so we’re really grateful for their support! To be honest, we’re still looking for some dedicated X86 resources we can build and test with directly from our CI server, if anyone is in a generous mood :) .

Other happenings at the project…

There is an ongoing effort (that started even before our project was in the open) to change our build and configuration system to use CMake. Matching the different requirements of the build systems from Eclipse OMR and OpenJDK, coupled with the breadth of platforms our decade old bespoke build system supports, it has taken a while to get CMake builds up and running, but many of us are looking forward to transitioning to a simpler world once the dust settles, especially since Eclipse OMR is also moving to the CMake build system.

We have been improving how our documentation and web site fit into our overall picture, and very soon we hope to have our web site master source at our Github repository so we can more efficiently respond to the problems that people have pointed out to us.

Several issues were opened at our Github repo after people tried to run some Java benchmarks using OpenJDK with OpenJ9. Given our focus hasn’t really been on microbenchmarks for quite some time (because not enough of our enterprise stakeholders run microbenchmarks in production ;) ), I don’t think it’s surprising that some issues have been observed and, thankfully, some were opened as issues at our Github project for us to investigate. After investigation, some real problems, including a very recent regression in our nursery expansion logic, were discovered and we either have fixed or will be fixing those problems shortly. We’re happy to see this activity at the project and think things will only get better.

Over the last decade, the performance work for Eclipse OpenJ9 has not only looked at throughput (or elapsed time) but also metrics like start-up time, footprint, and pause times. Improving the score on one of these metrics frequently has a negative impact on at least one of the other metrics. So having had this broader focus on many metrics for a long time, we like to think our JVM operates at a relatively balanced point in the spectrum. That means we won’t always have the best throughput and microbenchmarks that only measure throughput aren’t necessarily going to highlight our strengths every time. But we certainly aim to be competitive on throughput / elapsed time and expect to be generally ahead on metrics that other JVMs may not put as much attention on. We’ll be putting some real performance data up on our web site soon to put some numbers behind these statements. Stay tuned!

And that’s not all!

All this work at Eclipse OpenJ9 doesn’t even count the 37 or so pull requests that have been merged over the last two weeks at our sister project Eclipse OMR. Because we mirror that project into Eclipse OpenJ9, those commits are already part of OpenJ9. In fact, some of the issues opened at Eclipse OpenJ9 for performance and functional problems discovered while running Java applications required fixes in the Eclipse OMR code, and those were fixed in the upstream project first and then merged from that project to Eclipse OpenJ9 to resolve the problems found there. We think that’s a great example of open source projects working the way they are supposed to and it’s how we intend to operate as much as possible going forward.

I hope you can see that we’re on our way to building a thriving community here at Eclipse OpenJ9 and at Eclipse OMR. The J9 team is excited to be finally working as part of the Eclipse OpenJ9 community, and those of us fortunate enough to go to this year’s JavaOne conference are really looking forward to talking there about Eclipse OpenJ9 in person! If you’re going to be there too, there are three OpenJ9 sessions where you can find out more about the project and how it works (both at a high level, and technically). Check out our OpenJ9 sessions at JavaOne here.

Phew, so much for a short update!

Thanks to everyone who opened issues, joined our discussions, and helped to make Eclipse OpenJ9 a better project! We look forward to ramping up even more project and community activities as time goes on!

Written on September 27, 2017