I've been exchanging some interesting emails about CGI::Wiki with
Jonathan Swartz. He pointed out that the API could really do with an
overhaul - in particular the way that ->retrieve_node
returns a
hash when it's absolutely begging to be an object. He is of course
completely right. The only reason the thing isn't an object is that I
was worried about backwards compatibility - this was in some stupidly
early version like 0.05 or something like that. Lesson learned - bite
the bullet and make incompatible changes when you need to, since it'll
be much much more painful six months later.
Anyway, a partial rewrite of CGI::Wiki is most appealing. I'd love to get it tidied up a bit. Jonathan has even offered to help! What a wonderful guy!
The sticking point is the tests. There's loads of them and I think
fairly decent coverage, but the test suite itself is an absolute rats'
nest. Some of the later test files depend on data having been added
in earlier-running ones, most of the test files have a big ugly loop
around them to run the tests on all available backends, and there's
the whole mess with the interactive Makefile.PL
and the persistence of
test database information (in CGI::Wiki::TestConfig) and the
data-eating possibilities resulting from that.
I'm sure that redoing the tests and the code at the same time would be a very bad idea, so I guess I need to rewrite the tests first. Not an appealing prospect, and not one that I'm sure I can hand off to anyone else, since it is such a mess.
I'm very interested in Module::TestConfig for cleaning up the
Makefile.PL
; it looks as though it'll let me delete a lot of code.
Plus I can get the separately-released plugins to use it for their
configuration and testing too, so you're not stuck with the
configuration you had last time you installed the main distro. I'm
concerned that this is going to mean another dependency though, and I
already get complaints about dependencies.
(I want a script that I can give the name of a module and optionaly a Perl version, and get a recursive list of its dependencies and their dependencies, with highlighting to show which modules are core in that Perl version.)