CommunityOne 2008 - Slides avaliable for "Open Source Tools for Optimizing Your Development Process"
Today, I gave a talk at CommunityOne on "Open Source Tools for Optimizing Your Development Process". The abstract for the talk is as follows:
One of the nice things about development on the Javaâ„¢ platform is the number of productivity-enhancing tools available. Indeed, an appropriate mix of tools and best practices can do wonders for your development process.
This session covers some key areas in which proper use of appropriate tools can enhance your development process. These areas include build tools such as Ant and Maven; continuous integration tools such as Cruise Control, Continuum, and Hudson; code quality tools such as Checkstyle, PMD, and FindBugs; testing tools such as JUnit 4 and TestNG; and test coverage tools such as Cobertura. The presentation also looks at tools, such as UmlGraph, that can automatically generate technical documentation. Finally, perhaps more importantly, it examines how to integrate all of these products together in a way that can streamline development work and dramatically optimize your development process.
The talk, naturally, discusses some of the topics covered in the Java Power Tools book. You can get the slides here. Because of the scope and the limited presentation time, the slides cover the material at a fairly high level. On the other hand, now that I've covered the basics, I'll be able to do some more detailed talks on specific areas. Stay tuned!
One person made an interesting comment, along the following lines:
When you commit your broken code to the server, you've already broken the build and placed a broken revision in version control - why not prevent the broken revision from being committed in the first place? This is a good point, and in my opinion the next must-have feature for any CI tool that respects itself. Intercept the commit before it gets to your version control system, run a pre-emptive build on the merged code, and refuse to commit if anything goes wrong.
Nice idea. Probably quite tricky to implement in practice. Currently, as far as I know, TeamCity is the only tool that does anything like this, though I believe the Hudson developers are thinking about how to do this too. TeamCity basically acts as a proxy between you and your version control system, and tests the build before commiting your changes.