index 6e72192661b5a1184cf0bd6a790f250f62848bfb..c531fbb0218683f912444b58c48abe8771c56afc 100644 (file)
<bookinfo>
<authorgroup>
<author>
<bookinfo>
<authorgroup>
<author>
- <firstname>Karl</firstname>
- <surname>DeBisschop</surname>
- <affiliation>
- <address><email>karl@debisschop.net</email></address>
- </affiliation>
+ <affiliation>
+ <orgname>Nagios Plugins Development Team</orgname>
+ </affiliation>
</author>
</author>
-
- <author>
- <firstname>Ethan</firstname>
- <surname>Galstad</surname>
- <authorblurb>
- <para>Author of Nagios</para>
- <para><ulink url="http://www.nagios.org"></ulink></para>
- </authorblurb>
- <affiliation>
- <address><email>netsaint@linuxbox.com</email></address>
- </affiliation>
- </author>
-
- <author>
- <firstname>Hugo</firstname>
- <surname>Gayosso</surname>
- <affiliation>
- <address><email>hgayosso@gnu.org</email></address>
- </affiliation>
- </author>
-
-
- <author>
- <firstname>Subhendu</firstname>
- <surname>Ghosh</surname>
- <affiliation>
- <address><email>sghosh@sourceforge.net</email></address>
- </affiliation>
- </author>
-
- <author>
- <firstname>Stanley</firstname>
- <surname>Hopcroft</surname>
- <affiliation>
- <address><email>stanleyhopcroft@sourceforge.net</email></address>
- </affiliation>
- </author>
-
</authorgroup>
</authorgroup>
- <pubdate>2002</pubdate>
+ <pubdate>2005</pubdate>
<title>Nagios plug-in development guidelines</title>
<revhistory>
<revision>
<title>Nagios plug-in development guidelines</title>
<revhistory>
<revision>
- <revnumber>0.4</revnumber>
- <date>2 May 2002</date>
+ <revnumber>$Revision$</revnumber>
+ <date>$Date$</date>
</revision>
</revhistory>
<copyright>
</revision>
</revhistory>
<copyright>
- <year>2000 2001 2002</year>
- <holder>Karl DeBisschop, Ethan Galstad,
- Hugo Gayosso, Stanley Hopcroft, Subhendu Ghosh</holder>
+ <year>2000 - 2005</year>
+ <holder>Nagios Plugins Development Team</holder>
</copyright>
</bookinfo>
</copyright>
</bookinfo>
the plug-in developers and encourage the standarization of the
different kind of plug-ins: C, shell, perl, python, etc.</para>
the plug-in developers and encourage the standarization of the
different kind of plug-ins: C, shell, perl, python, etc.</para>
- <para>Nagios Plug-in Development Guidelines Copyright (C) 2000-2003
- (Karl DeBisschop, Ethan Galstad, Stanley Hopcroft, Subhendu Ghosh, Ton Voon, Jeremy T. Bouse)</para>
+ <para>Nagios Plug-in Development Guidelines Copyright (C) 2000-2005
+ (Nagios Plugins Team)</para>
<para>Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and this
<para>Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and this
<literallayout>
gnu make 3.79
<literallayout>
gnu make 3.79
- automake 1.6
- autoconf 2.54
+ automake 1.8
+ autoconf 2.58
gettext 0.11.5
</literallayout>
gettext 0.11.5
</literallayout>
-v options for additional verbosity, up to a maximum of 3. The standard
type of output should be:</para>
-v options for additional verbosity, up to a maximum of 3. The standard
type of output should be:</para>
- <table id="verbose_levels"><title>Verbose output levels</title>
+ <table id="verboselevels"><title>Verbose output levels</title>
<tgroup cols="2">
<thead>
<row>
<tgroup cols="2">
<thead>
<row>
<para>Notes:</para>
<orderedlist>
<para>Notes:</para>
<orderedlist>
- <listitem><para>start > end></para>
+ <listitem><para>start > end</para>
</listitem>
<listitem><para>start and ":" is not required if start=0</para>
</listitem>
</listitem>
<listitem><para>start and ":" is not required if start=0</para>
</listitem>
same UOM</para>
</listitem>
<listitem><para>warn and crit are in the range format (see
same UOM</para>
</listitem>
<listitem><para>warn and crit are in the range format (see
- <xref linkend="thresholdformat">)</para>
+ <xref linkend="thresholdformat">). Must be the same UOM</para>
</listitem>
<listitem><para>UOM (unit of measurement) is one of:</para>
<orderedlist>
</listitem>
<listitem><para>UOM (unit of measurement) is one of:</para>
<orderedlist>
<para>It is up to third party programs to convert the Nagios plugins
performance data into graphs.</para>
</section>
<para>It is up to third party programs to convert the Nagios plugins
performance data into graphs.</para>
</section>
+
+ <section><title>Translations</title>
+ <para>If possible, use translation tools for all output. Currently, most of the core C plugins
+ use gettext for translation. General guidelines are:</para>
+
+ <orderedlist>
+ <listitem><para>short help is not translated</para></listitem>
+ <listitem><para>long help has options in English language, but text translated</para></listitem>
+ <listitem><para>"Copyright" kept in English</para></listitem>
+ <listitem><para>copyright holder names kept in original text</para></listitem>
+ </orderedlist>
+ </section>
</section>
<section id="SysCmdAuxFiles"><title>System Commands and Auxiliary Files</title>
</section>
<section id="SysCmdAuxFiles"><title>System Commands and Auxiliary Files</title>
<orderedlist>
<listitem><para> Do not use BEGIN and END blocks since they will be called
<orderedlist>
<listitem><para> Do not use BEGIN and END blocks since they will be called
- the first time and when Nagios shuts down with Embedded Perl (ePN). In
+ only once (when Nagios starts and shuts down) with Embedded Perl (ePN). In
particular, do not use BEGIN blocks to initialize variables.</para>
</listitem>
<listitem><para>To use utils.pm, you need to provide a full path to the
particular, do not use BEGIN blocks to initialize variables.</para>
</listitem>
<listitem><para>To use utils.pm, you need to provide a full path to the
- module in order for it to work with ePN.</para>
+ module in order for it to work.</para>
<literallayout>
e.g.
<literallayout>
e.g.
variable. </para>
variable. </para>
- <para>Explicitly initialize each varialable in use. Otherwise with
- caching enabled, the plugin will not be recompilied each time, and
+ <para>Explicitly initialize each variable in use. Otherwise with
+ caching enabled, the plugin will not be recompiled each time, and
therefore Perl will not reinitialize all the variables. All old
variable values will still be in effect.</para>
</listitem>
therefore Perl will not reinitialize all the variables. All old
variable values will still be in effect.</para>
</listitem>
- <listitem><para>Do not use > DATA < (these simply do not compile under ePN).</para>
+ <listitem><para>Do not use >DATA< handles (these simply do not compile under ePN).</para>
</listitem>
</listitem>
- <listitem><para>Do not use named subroutines</para>
+ <listitem><para>Do not use global variables in named subroutines. This is bad practise anyway, but with ePN the
+ compiler will report an error "<global_var> will not stay shared ..". Values used by
+ subroutines should be passed in the argument list.</para>
</listitem>
<listitem><para>If writing to a file (perhaps recording
</listitem>
<listitem><para>If writing to a file (perhaps recording
<listitem><para>As in <xref linkend="runtime"> all plugins need
to monitor their runtime, specially if they are using network
<listitem><para>As in <xref linkend="runtime"> all plugins need
to monitor their runtime, specially if they are using network
- resources. Use of the <emphasis>alarm</emphasis> is recommended.
+ resources. Use of the <emphasis>alarm</emphasis> is recommended
+ noting that some Perl modules (eg LWP) manage timers, so that an alarm
+ set by a plugin using such a module is overwritten by the module.
+ (workarounds are cunning (TM) or using the module timer)
Plugins may import a default time out ($TIMEOUT) from utils.pm.
</para>
</listitem>
Plugins may import a default time out ($TIMEOUT) from utils.pm.
</para>
</listitem>
<para>The option -v or --verbose should be present in all plugins.
The user should be allowed to specify -v multiple times to increase
<para>The option -v or --verbose should be present in all plugins.
The user should be allowed to specify -v multiple times to increase
- the verbosity level, as described in <xref linkend="verbose_levels">.</para>
+ the verbosity level, as described in <xref linkend="verboselevels">.</para>
</section>
<section>
</section>
<section>
<section><title>Comments</title>
<para>You should use /* */ for comments and not // as some compilers
do not handle the latter form.</para>
<section><title>Comments</title>
<para>You should use /* */ for comments and not // as some compilers
do not handle the latter form.</para>
- <para>There should not be any named credits in the source code - contributors
- should be added
- into the AUTHORS file instead. The only exception to this is if a routine
- has been copied from another source.</para>
+ <para>If you have copied a routine from another source, make sure the licence
+ from your source allows this. Add a comment referencing the ACKNOWLEDGEMENTS
+ file, where you can put more detail about the source.</para>
+ <para>For contributed code, do not add any named credits in the source code
+ - contributors should be added into the THANKS.in file instead.
+ </para>
</section>
<section><title>CVS comments</title>
</section>
<section><title>CVS comments</title>
</para>
<para>If the change is due to a contribution, please quote the contributor's name
and, if applicable, add the SourceForge Tracker number. Don't forget to
</para>
<para>If the change is due to a contribution, please quote the contributor's name
and, if applicable, add the SourceForge Tracker number. Don't forget to
-update the AUTHORS file.</para>
+update the THANKS.in file.</para>
</section>
</section>
</section>
</section>
Credit will always be given for any patches through a THANKS file in the distribution.</para>
</section>
Credit will always be given for any patches through a THANKS file in the distribution.</para>
</section>
- <section id="New_plugins"><title>New plugins</title>
+ <section id="Newplugins"><title>New plugins</title>
<para>If you would like others to use your plugins and have it included in
the standard distribution, please include patches for the relevant
configuration files, in particular "configure.in". Otherwise submitted
<para>If you would like others to use your plugins and have it included in
the standard distribution, please include patches for the relevant
configuration files, in particular "configure.in". Otherwise submitted
</section>
</section>
+<section id="UsingSourceforge"><title>Using Sourceforge</title>
+<table id="Projectmemberaccess"><title>Project Member Access</title>
+ <tgroup cols="9">
+ <thead>
+ <row>
+ <entry><para>Member type</para></entry>
+ <entry><para>CVS Access</para></entry>
+ <entry><para>Shell Access</para></entry>
+ <entry><para>Release Tech</para></entry>
+ <entry><para>Tracker Manager</para></entry>
+ <entry><para>Task Manager</para></entry>
+ <entry><para>Forums</para></entry>
+ <entry><para>Doc Manager</para></entry>
+ <entry><para>News</para></entry>
+ <entry><para>Screenshots</para></entry>
+ <entry><para>Notes</para></entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><para>Translator</para></entry>
+ <entry><para>Yes</para></entry>
+ <entry><para>Yes</para></entry>
+ <entry><para>No</para></entry>
+ <entry><para>-</para></entry>
+ <entry><para>-</para></entry>
+ <entry><para>-</para></entry>
+ <entry><para>-</para></entry>
+ <entry><para>-</para></entry>
+ <entry><para>-</para></entry>
+ <entry><para>Add developer to CVSROOT/avail for translation files</para></entry>
+ </row>
+ <row>
+ <entry><para>Developer</para></entry>
+ <entry><para>Yes</para></entry>
+ <entry><para>Yes</para></entry>
+ <entry><para>No</para></entry>
+ <entry><para>-</para></entry>
+ <entry><para>A&T</para></entry>
+ <entry><para>Moderator</para></entry>
+ <entry><para>Editor</para></entry>
+ <entry><para>-</para></entry>
+ <entry><para>-</para></entry>
+ <entry><para>Need to set tracker access individually. Add developer to CVSROOT/avail for all files</para></entry>
+ </row>
+ </tbody>
+ </tgroup>
+</table>
+<para>Add all members to the nagiosplug-team mailing list</para>
+</section>
</article>
</book>
</article>
</book>