Andrew Glover is the man with the plan when the Java platform and testing meet. Groovy Zone interviewed this charismatic speaker and well known personality in the Groovy community about Easyb, the behavior driven development framework for the Java platform (and Groovy!) ans his relationship with Groovy.
[img_assist|nid=4375|title=|desc=|link=none|align=right|width=178|height=226]Andres Almiray: Andy, what can you tell us about Easyb's latest releases?
Andrew Glover: The easyb team recently released version 0.9, which contained a few features that facilitate the notion of executable documentation. Stories can now have descriptions and narratives-- narratives are a particularly helpful aspect as they help drive a story by conveying the intended goal of the story from the standpoint of a customer. For instance, with a narrative, you can specify the role, feature and benefit that the story is designed to capture. These aspects really serve as documentation and ultimately don't affect the behavior of an easyb story-- they simply show up in reports. The team also added the notion of fixtures-- just like with normal xUnit frameworks you can specify desired behavior occur before each scenario (and after each) or have a one time fixture execute before and after an entire story. Also, the latest release dovetailed with an updated version of the IntelliJ plug-in. Rod Coffin, the developer who wrote the easyb Intellij plug-in, has done an amazing job; in fact, it was the plug-in that got me to switch from Eclipse to IntelliJ.
Andres: How is the Easyb community doing these days?
Andy: The community continues to grow-- we added a new developer on the team who is working on an extension framework that promises to bring easyb closer to stakeholders. It's a fairly nascent idea and prototype at this point so I'll wait to provide more details. I've read that there are some easyb talks coming up in Australia and New Zealand given by none other than John Smart (who recently published Java Power Tools). I'll continue to beat the easyb drum going forward at various stateside conferences (should they continue to allow me to attend). A few articles are slated to be published this year as well, so the idea of BDD and easyb's implementation of it appears to be catching on.
Andres: What is the current state on Easyb's tool support, any IDE plugins yet?
Andy: As I mentioned earlier, there is an IntelliJ plug-in that is phenomenal-- you can do a lot with this plug-in, including stepping through the DSL via the debugger. Not that I recommend using a debugger, however, stepping in real time through a DSL is wild. I guess the feeling is similar to way back when when you ran the debugger for the first time-- watching code execute in real time is pretty neat. It's ten times neater to see a custom DSL execute! We need to get an Eclipse plug-in going. The challenge with open source software development is that you can't do it as much as you'd like; that is, assuming you aren't being payed to do it. Consequently, the team spends off hours building features and the Eclipse plug-in is something we know we'll have to knock out at some point soon. If someone out there is an Eclipse plug-in guru, feel free to knock it out!
Andres: Any 'inside' information you may share regarding the Easyb's next release?
Andy: We're looking closely at the DSL and making sure it is sufficient. It is tempting to add a lot of bells and whistles but then you tend to lose the notion of easiness, plus, it is hard to take things out of a DSL once it is out there. The next release of easyb will most likely tweak various aspects of the DSL slightly and the real impetus is on reporting. Before we get to 1.0, we need nice reports in HTML like every other framework out there. Lastly, we're working on an extension to easyb that we hope will bring stakeholders closer via a collaborative mechanism.
Andres: Do you participate in other Groovy related projects?
Andy: Yes! The team I work with recently released a dashboard-like framework for builds dubbed FuseMetrics. I participated in the early early stages of that and it's predominately all Groovy.
Andres: Given your curricula on the NFJS tour we know you are also fond on Gant, what convinced you to give it a try in the first place?
Andy: Because it is cool to dislike XML. In truth, I spend a lot of time in my current position helping companies embrace Continuous Integration, which means I spend a lot of time looking at how software is assembled. Ant is so common throughout the Java landscape and can be quite challenging if you need to do something marginally complicated like conditional logic. Having the power of an imperative language like Groovy at your disposal for software builds is liberating in a lot of ways-- just ask the Ruby crowd. Rake is pretty slick and so in some ways, Gant is similar.
Andres: How has been your experience talking about Groovy/Gant during the NFJS tour?
Andy: I've been talking about Groovy for a bit now-- ever since I started writing the Practically Groovy series for IBM, which started in late 2004. It has been fun to watch Groovy grow in popularity-- the first few years I spent a lot of time convincing a lot of skeptical people Groovy was Java without the ceremony and now the conversation is more along the lines of how does one take effective advantage of Groovy with tools and frameworks like Grails, Gant, easyb, etc. So, in essence, the conversations have definitely evolved and matured. People are much more sophisticated when it comes to Groovy now-- in fact, there are times when I have given an intro to Groovy talk in the last year and someone in the audience has suggested another mechanism in Groovy for doing the same thing I was coding at that moment. That means more and more people are using Groovy on a daily basis and contributing to the overall base of knowledge that exists throughout the community. That also means I should stop giving intro to Groovy talks.
Andres: Earlier this year there was an specific Groovy/Grails conference (2GX short for Groovy/Grails eXperience) where you participated as a speaker. What can you tell us about it, did it meet your expectations?
Andy: That was a blast! That conference was a gathering of the who's who in the Groovy community-- it was humbling to be a speaker with that crowd. You could sense the energy and excitement from the attendees and the speakers-- and the cool thing was that there was a mix of Groovy neophytes to attendees that had already started consulting companies focused on Groovy development. It was fun meeting those various persona's and definitely uplifting to finally meet face to face with various leaders and innovators in the Groovy community. Yes, the conference met my expectations!
Andres: What is your preferred Groovy feature, the one you just could not live without?
Andy: setter/getter/constructor generation. I love the fact that, in Groovy, objects become much more terse yet the functionality is still there. Creating a domain object in Grails, for instance, couldn't be easier-- having coded many a traditional domain object in Java over the years containing loads of boiler plate code and then seeing first hand how Groovy obviates all of it is somewhat pedestrian (you prefer that over metaprogramming??) yet so amazingly helpful.
Andrew Glover is a developer who writes for multiple online publications including IBM's DeveloperWorks, Oreilly's ONJava and ONLamp portals, Dev2Dev, and InfoQ; additionally, he is the co-author of Java Testing Patterns (Wiley, 2004), Groovy in Action (Manning, 2007), and Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley, June 2007). He is a frequent speaker at various conferences around the country as well as a speaker for the No Fluff Just Stuff Software Symposium group. You can keep up with him at thediscoblog.com.