Another year with Grails
It's been a year since my "A year with Grails" blog post. Grails itself, and especially the ecosystem around it has come a long way since then!
Grails 1.3.x
We ran into a quite a few problems with the earliest iterations of the 1.3 branch, but it has stabilized a lot since then. And to be fair, some of the problems were related to the multi-tenant plugin. I've invested some time and effort into refactoring the single-db mode and increasing test coverage. This is hopefully ready to be released soon-ish.
Plugins
Although the Grails 1.3.x branch has shaped up nicely over the last releases, I believe that the most interesting innovation has been happening in various plugins. This is a good thing! Maintaining a small and stable core and occasionally including nice features from successful plugins seems like a very sensible way forward for Grails.
The maven-publisher plugin has had a huge productivity impact on how we work with internal plugins. We can finally let SVN rest in peace.
Burt Beckwith has done a really nice job with the spring-security-core plugin. Almost every web application require some sort of authentication / security so having something that's well documented and just works is a huge win!
I almost forgot to mention one of the most interesting new plugins! Marc Palmer has released a highly innovative plugin family for handling of static client side resources. The plugin makes it trivial to declare resources like javascript, stylesheets and dependencies between them. Not only will resources be bundled together to save http requests, it also provides a way for other plugins to hook into the process in order to add features like minifying and compression. There are still some bugs and rough edges, but they seem to be ironed out in time for inclusion in Grails 1.4.
There has obviously been released a number of other great plugins as well the last year and older plugins has continued to mature. Another sign of a maturing community is the forming of the Grails Plugin Collective proposed by Luke Daley.
Tooling
I strongly believe that good tooling is critical to drive adoption of any technology. It's very hard to get programmers and companies to adopt a new programming language without proper tools like debuggers, editors, deployment tools and so on.
The Grails and Groovy support in SpringSource Tool Suite has matured a lot over the last year! They've accomplished a lot more than I dreamt about just a year ago.
CodeNarc is another very interesting emerging Groovy technology. By hooking into the AST transformation API it's able to find potential bugs and bad practice in your code. They've already implemented 175 different rules and new rules are added on a regular basis.
Everyone's favorite test framework Spock, and especially the integration with Grails has continued to mature. I have yet to see anyone say something (very) negative about Spock. Everyone that hasn't already given it a spin so should definitely do so in the online console! It takes a few minutes to wrap your head around the syntax, but it's absolutely worth it!
Looking forward to Grails 1.4
If everything goes according to plan the next mayor version of Grails is up for release sometime this summer(?). I'm really, really pleased with the roadmap! Better support for unit testing, updated versions of mayor dependencies like Spring and Hibernate, performance improvements and much more.
I'm especially intrigued by the AST transformation work done by Graeme Rocher. Lots of things that are added by various Groovy runtime method invocation interception techniques today will now be added at compile time using AST transformations. This might result in better performance and perhaps even improved Java / IDE integration.
Wish-list
Last year's post had a wish-list so I'll add one this year as well, even though the 1.4 roadmap already pretty much serves the same purpose.
- Further core stabilization and performance related work. This is by far the most important thing as far as I'm concerned!
- Improved start-up performance, perhaps give plugins the ability to execute long running tasks in a thread pool during start-up?
- "Continues testing", productivity boost for test driven development. It would be awesome if it would be possible to start the application in test mode and have Grails listening for code changes and automatically re-run the affected tests. I would really love to see Grails continue to push the boundaries on this area!
- Make sure that new Spring features like scheduling and caching works as expected in Grails. I'm pretty sure that a huge part of the developers using Groovy today got started because of the smooth transition from Java. Grails should be the same way when it comes to Spring and Spring MVC. Being able to bring as much Spring knowledge as possible into Grails (and the other way around) would not only be nice, but also help drive Grails adoption amongst Spring developers.


Leave a reply