I'm quite ecstatic to say that today is Griffon's 10th year anniversary! It all started way back in late 2007 when the Groovy Swing team decided to join forces and make the existing set of Groovy based builders for a handful of Java Swing widget sets more easy to mix and match to build better looking desktop applications. At that time Grails was making a big splash in the Groovy community, thus we decided to follow their lead and create a "Grails for desktop applications", and so Griffon became a reality when Danno posted the announcement for Griffon 0.0 back in September 10th 2008.
A lot has happened since that day. We kept adding features to make it easier for developers to write applications if a predefined set of conventions were used, of course you could still write things in a different way if you needed to; we've always believed in the power of choice. Less than half year later we struck a deal with Manning to write a book, Griffon in Action, which went to print about the same time we released version 1.0.0 in mid 2012. Shortly after we adopted a 3 month release cadence; continued publishing plugins to our custom Plugin Portal, at the time consisting of more than 250 plugins delivering a wide range of abilities and fun bits.
As great as things were it was clear that building a framework that came with its own command line build tool was more taxing than helpful to everyone. Also, Swing was no longer the dominant UI toolkit, JavaFX had risen as a viable alternative. Furthermore, Java developers were not familiar with idiomatic Groovy and some didn't give Griffon a chance just because it had a relationship with the Groovy language. We decided it was time for a change and in 2014 we went back to the drawing board and tried to figure out a way to make Griffon more palatable to a wider Java audience as well as supporting JavaFX from the get go. Like in the past when we based the framework in Grails we took inspiration on another Groovy based framework to make these ideas a reality, the new muse was Ratpack.
Ratpack's main goals were quite similar to Griffon's in the sense that if you needed some behavior that did not come out of the box from the core framework then you'd had to bring your own, where as Grails tried to concentrate most of it under one roof. Ratpack also ditched a custom build tool in favor of Gradle (a decision that Grails followed at a later point as well). It adopted a more lightweight option for dependency injection by leveraging Google Guice instead of Spring core (which could also be used if you wanted to, again choices). We skipped two release dates on 2014 to make way for the new Griffon 2.0 which came out almost 3 weeks after Griffon's 6th anniversary.
Out of the box you'd get the same experience as before despite the fact that the whole core was rewritten in 100% Java. JavaFX and Swing were equals, as well as Apache Pivot and Lanterna. You have the choice to write applications using only Java APIs, or only Groovy, or mixed as much as you wanted. In later years Kotlin became another alternative as well. The ability of running JavaFX applications on mobile platforms (iOS/Android) thanks to Gluon's jfxmobile project prompted us to fork the Griffon codebase and create Basilisk. We also went back to our predictable release cycle of 3 months, reaching Griffon 2.15.0 in June of 2018.
And this is where the tables turn again. The framework has become very mature through out the years, with small improvements made to core and most of the additional work done at the plugin side. There should had been a 2.16.0 release this September but there wasn't, reason being is that we're now working on the next major version, 3.0.0. Some of the things we're looking at the moment that will form part of the next major version are
- Java 8 bytecode as a minimum.
- Jigsaw compatibility, i.e, ability to run applications in the module classpath.
- JSR377 integration. Griffon is the Reference Implementation for JSR377.
- Merge Basilisk with Griffon, allowing a single framework to be used to write desktop/mobile applications.
- JUnit5 integration.
Work will continue for the next months and we're hoping we can release the first beta before the end of 2018. If you're still on the fence and have not tried Griffon have a look at the documentation, tutorials, examples, and more. Furthermore here's your chance to get involved and influence its future.
In summary, it's been a fun ride these past 10 years. Looking forward to the next 10.
Happy Birthday Griffon!