[Nagiosplug-devel] A couple of suggestions
Andreas Ericsson
ae at op5.se
Sat Dec 4 04:37:10 CET 2004
Ahoy.
I might as well apologize right away, since this probably won't go down
too well with all of the developers.
Down to business.
I'm delighted to see that plugin development pace has picked up. I'm not
equally delighted in the deterioration of code quality and the apparent
lack of even basic testing of checked in changes.
Suggestions;
1. Provide a cvs commit script containing only the extremely simple line
below;
./configure && make && make distclean && cvs "$@" commit
(the "$@" lets people specify their own -m "commiting plugins" message
and whatnot). Decapitate developers that check in code that doesn't pass
this simple test.
The number of prettyprint commits (internationalization falls under
prettyprint) that has broken the compilation process of the plugins is
appalling and downright silly. Most of the problems can be traced to
missing parentheses or semicolons which is just plain dumb and most of
the time not even worthy of a patch submission.
2. Set a date where nothing but bugfixes make it into the repository.
Put a halt in internationalization, porting (to new platforms, that is),
prettyness and whatever else might be nice to have and concentrate on
making the plugins build and execute properly. Decide what functionality
you'll be supporting. Create a testcase (I'm already working on an
easily extendable one) that tests all of that functionality and run it
for each change before checking in changes.
3. When the plugins are stabilized (petty stuff frozen and bugfix period
has come to an end), release a beta and review the plugins for best
practices. A couple of examples;
The check_load plugin should have
float load[3], warn[3], crit[3];
instead of the present code.
check_hpjd (well, all plugins, but check_hpjd doesn't) should do signal
handling to determine timeout instead of assuming that's what happened
when snmpget sends output to stderr. It should also pass -Onq instead of
-OQa (which currently yields unparseable output and throws an error with
ucd-snmp 4.x). Possibly, output parsing plugins should be rewritten in
perl if the increased load is justifiable for the more rarely used
plugins (how many check_hpjd checks does people have in each network?).
Replace hard-to-port code with more portable such where possible.
4. Have another bugfix period, open for regression fixes only. Make sure
the "best practice" changes doesn't break functionality. If they do,
roll them back and put a TODO to do a later review of that plugin.
5. Release stable when all checks pass the testcase.
This sort of simplified version of Extreme Programming works fairly well
to help keeping the release cycle on schedule by the simple expedient of
helping developers focus on what's currently important.
These are only suggestions. If you (plugin developers) don't like them,
then don't follow them.
Disclaimer;
I'm well aware of the fact that the plugin developers do this for free
and on their spare time. That's not an excuse not to do things properly.
If anyone on the plugin developmen team thinks this is an overwhelming
task then just drop the commits for a while (so any patches created will
be valid) and I'll have a patch to bring it to and complete phase 3 by
the end of next week (that's 4 days before next planned alpha release).
--
Andreas Ericsson andreas.ericsson at op5.se
OP5 AB www.op5.se
Lead Developer
More information about the Devel
mailing list