|
|
|
An Interview with Tom Copeland of PMD
|
Article Topics
Introduction · Maven · The Future Page 1 of 3
Introduction
Recently, Stelligent President Andrew Glover had a chance to catch up
with Tom Copeland, the lead developer of the popular Java open source
project PMD and the Ruby language's increasingly popular RubyForge site. PMD performs static analysis on code and reports on various violations (such as high cyclomatic complexity and overcomplicated expressions) and has been dubbed one of Software Development Magazine's "Open Source Projects to Watch" in 2004.
Stelligent: How did PMD start? Why did you choose to open-source it?
Tom: It started in 2002 while I was a subcontractor working on the Cougaar project.
We were trying to use a commercial project to check the quality of the
Java source code, and it just wasn't cutting it. It didn't support JDK
1.4, and moving a license from one machine to another cost money, so we
decided to rewrite it (or at least as much of it as we needed). The
program manager said it was fine to put it on SourceForge
under a BSD license, so we did. That was a great decision and has paid
off big-time with all the contributions that other folks have made.
Stelligent: What do you do on a day to day basis with PMD- how has your role changed over time?
Tom: Almost every day I check the trackers on SourceForge and see if I can fix a bug or close a feature request. And I usually post to the forums
to answer a question or two. I've been getting lots of good patches
recently, so I've been writing less "production" code; lots of times
I'll just read and apply patches and write some JUnit tests to make sure everything is working OK.
Stelligent: How do you decide who gets commit privileges?
Tom: If someone wants to write a plugin, I give them commit privileges immediately, but I just ask them to stay in their own CVS module - i.e., pmd-netbeans
or whatever. If someone wants to work on the core, I wait until they've
written a bunch of rules and bug fixes and such before offering commit
access. And of course, all commits get emailed to the
pmd-developers email list, so everyone can see what everyone else is doing. This helps prevent duplication and whatnot.
Also, once a year or so I check the list of committers and see if anyone is inactive and wants to get moved to the "committers emeritus" list. That ensures they don't disappear from the great legacy of PMD history!
Stelligent: What is your release process? How do you decide when to push out a new version? Do you have a "methodology"?
Tom: Hmm. We've done about 30
releases in 3 years, so they come out pretty often. I suppose I mostly
just do a release once we get 6 or 7 new code rules. I try not to do a
release more than once a month or so; right now it's been about six
weeks and there are about eight new rules ready to GO;, so we should do
a release pretty soon.
Mechanically, I usually post a note to the forums saying "how about a
new release tomorrow?" and see if anyone objects. Then I do a CVS tag, zip and upload the release, and move on.
I suppose we use a sort of XPish methodology; lots of unit tests, frequent releases, etc.
|
|