I’ve been playing around with waf in the last couple of weeks. My first contribution was helping Richard Hughes to port PackageKit to waf. We did 90% of the work in a couple of hours just guessing from the examples in the demos/ directory of the waf repository. Note that it took me a couple of weeks to accomplish a similar work with autotools with the same level of understanding.
Yesterday I started to extend the java tool, I added support for the JAVA_HOME environment variable and class_checking support. I wrote both patches in less than an hour. My next steps are adding support for manifest attributes for the jar files, and a better classpath elements handling. Thomas gently granted me write access to the waf repositories, so it looks that suddenly I’m a waf developer.
So far, the experience is pretty pleasant, I would like to see more stable releases in the future though, and maybe some autotools arg compatibility module (for –datadir, –configdir and the like) and It absolutely needs testing on more platforms, but it’s so easy to fix that it’s worth.
Regarding the discussion about porting GNOME to something else than autotools, I think that people asking maintainers to do it are losing some perspective on how important it is to keep what we have, there’s a lot of knowledge on our autoconf/automake scripts, so this can’t be done from day 0, and it can’t be a "waf xor autotools" approach, I think that a parallel effort of a small set of waf experts adding waf support to some modules is the best approach, we can get a lot of testing from there and we don’t need to break things.
One interesting focus here is the Windows builds, one of the reasons that prevents building GNOME from jhbuild on windows is that it’s painful to setup a sane environment due to require of a unix shell and make. Waf can play an important role here to allow a more pleasant Windows testing and development experience.
So, if you’re a GNOME maintainer, and you’re interested in exploring a new world of faster builds and easier maintainability, just poke us at #email@example.com, take a look at our wiki page or join to our mailing list.
Coming soon: a waf tutorial post.