Yesterday Antoine has released the first beta of Apache Ant 1.6.
What can you expect apart from a ton of fixed and another ton of new bugs?
My personal (incomplete, I'm sure) list of important new features in no particular order:
- You can now add custom conditions to <condition> or filterreaders or selectors by using <typedef> and either implementing a particular interface or using one of the supplied adapter classes. See the beta manual to get an initial idea.
- XML namespace support. That on itself isn't too exciting, but together with ...
- Antlib ... things get more interesting. At first glance <antlib> is nothing more than a unified <taskdef> and <typedef> - but you can bind it to a particular namespace and suddenly get scoping of names and more readable build files.
- Presetdef - you don't like the default value of "off" for <javac>'s debug attribute? Just define a javac2 task with the attribute set to true. Presetdef is your way to define default configurations of existing tasks.
- Macrodef - hopefully this is going to remove a bunch of <antcall> "abuses" present in Ant 1.5 build files. Create a new task from a set of tasks as a macro.
- Import - import another build file and even override targets of that other build file using a replacement of your own.
- All tasks are equal - they may now all live outside of <target>.
- SSH support via <sshexec> and <scp>.
- Scriptdef - define new tasks using your favorite scripting language.
- subant - invoke the same target in a whole bunch of build files.
path: /en/Apache/Ant | #
Ara (via Ted) talks about the failures that have been made in XDoclet's community management. Or at least the failures as he perceives them. Some of what he says resonates with my experience in Ant, some doesn't.
First he talks about letting people (committers in this case) in too quickly as they'd be leaving behind a bunch of unmaintained code.
What I've learned is that you shouldn't let people in a popular project that easily. Someone comes, contributes something and goes, and there's no one to maintain it, and the guy apparently is happy to see his name among the team members list.
Like XDoclet, Ant has accepted each and every contribution for a while and simply faces the exact same problems of unmaintained and unmaintainable (unless you have an installation of application server X or SCM tool Y around) code.
Unlike XDoclet, we haven't made those contributors committers automatically. So no, Ara, it is the code you and we have let in that's causing the problems, not the people. Still I agree with Ara. You have to be sure that people are going to persist when you make them committers.
But let's face it, people move on - maybe after years - or lose access to server X. Even if you pick your committers very carefully, you may end up with unmaintained code over time. Unless you have a team that lives collective code ownership where a reasonably large part of your code base is more than just a one-man-show.
In "meritocratic" development communities like Apache's one-man-shows tend to happen less often from my experience. Like I said, Ant has its unmaintained areas, but every now and then a new contributor steps up from the larger user base and starts to fix things. Those new contributors have to get their code reviewed by an existing committer, you build up a trust relation and at the same time make at least two people closely familiar with a certain part of the code.
It is not enough to choose your committers carefully.
Ara's conclusion is
So accept a piece of code only if the contributor remain the proud owner of it.and with this I couldn't agree less. Accept it only if the community is willing and able to take ownership of it.
I'm not sure what has given me the final push to try blogging myself, maybe it has been Ara's article about how and why XDoclet's community management has been a failure or the release of Ant 1.6's first beta or ...
I'm not even sure whether this is going to last or whether I'll stop it sooner or later.
Anyway, I'm here and we'll see where this is going to lead up to.
path: /en/personal/blogging | #