...and they shall know me by my speling errors.

Danno Ferrin (aka shemnon) on stuff that matters to him.

Mirroring OpenJFX on BitBucket

I’ve started mirroring the OpenJFX repositories over at bitbucket. Viewing the repos on bitbucket has several advantages:

  1. It has an easier on the eyes user interface. Really, I could stop here.
  2. The push request mechanism encourages social coding
  3. It has a code review feature

This last point is the most recent one. You can comment on commits and comment at specific lines in the commit. Useful when you have to send a pull request back.


As for the repositories I have four repos right now.

The first three are direct mirrors of their rt counterparts in the JavaFX portion of the official OpenJDK Mercurial repository.

I am not mirroring the parent repo nor the test repo. The parent repo is just a holder for the rt repo and (presumed) binary repos. The test repo contains jemmy and a smoke test driven off of ensemble, i.e. parts needed for a professional build but not needed for the casual hack. The casual hack is why I am doing this.

The fourth repo is my openfx-rt repo. This is a merger of the three previous repos. Instead of keeping a branch for each I am pushing the bookmark for controls, graphics, and master to match the current tip of each of the real repos. Bookmarks in Mercurial are more like branches in Git, just pointers to a change list. Branches in mercurial embed themselves in the commit message, so you cannot retroactively create them without rewriting history.

This is also the repo where I do my hacks. Look for the stray tips.


Also, as best as I can tell the open source build is currently broken. The instructions pre-date the JRE integration of JavaFX, and also predate the addition of some of the more interesting sub projects, like FXML. So to fix that I threw together some Gradle builds here and here that will compile the code and the tests. Some of the tests even run. To completion. Successfully. But it doesn’t create a usable jfxrt.jar at the end. Until the while kit and caboodle is released I don’t think it’s worth going that far. i.e. not fit for production use. But perfect for casual hacking.

To run it you need to either

Then do something like gradle assemble, gradle test, gradle compileJava, gradle compileTest. Be careful with the test task, it will go into an infinite loop in javafx-concurrent, I’m sure I don’t have something set up right.

Casual Hacking

I did this to aid my casual hacking, or as I like to call it “random acts of coding.” You will note that I hooked up the JIRA bugs to the OpenJFX bug database, and that my first random act of code is hooked up to the associated JIRA. It is a feature request I tweeted to Jonathan Giles several months ago, and was too lazy to write up a JIRA specifying what I want. The problem was that it seemed like a long loop of (a) landing in someone’s bug queue then (b) they have the bandwidth to do it and (c) that they do it the way I intended it to work. If (c) fails it is another giant loop with the jiras to iterate (a), (b), and (c) again. That and I’ve always been the type of person who would rather jump in and do it. I do have to say thug, that this has been quite a bit of yak shaving for 10 lines of code. And my pre shaved yak hoodie I got at JavaOne only helps me with web apps.

If we want to make OpenJFX more accessible to casual hacking then some of the barriers need to be removed. A ‘blessed’ repo on BitBucket would make sandbox hacking more accessible. A build that requires nothing more that a current Java 8 build and the build tool installed would be another great step. With this casual hackers could push changes and a quick yes/no/maybe on the hack could be said in the pull queue before they fire up a JIRA and make sure their contributor paperwork is in order. In my opinion a hack then shave the yak ordering will get a lot more interest than a shave the yak then hack ordering.

But all of this only holds for the Java portions of the build. When it comes to the native libraries I really don’t think you can wander too far from your yak shaving shears.