<div class="gmail_quote">On Wed, Jun 29, 2011 at 2:50 AM, Andreas Ericsson <span dir="ltr"><<a href="mailto:ae@op5.se" target="_blank">ae@op5.se</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div>On 06/28/2011 05:13 PM, Matthieu Kermagoret wrote:<br>
> Hi list,<br>
><br>
> First of all, sorry for the delayed response, last month was pretty<br>
> crazy at work :-p<br>
><br>
> On Mon, May 23, 2011 at 12:38 PM, Andreas Ericsson<<a href="mailto:ae@op5.se" target="_blank">ae@op5.se</a>>  wrote:<br>
>> On 05/23/2011 11:37 AM, Matthieu Kermagoret wrote:<br>
>> Because shipping an official module that does it would mean not only<br>
</div></blockquote><div><br>[snip]<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div>> For years it's been Nagios'<br>


> development team's policy not to include features that could be<br>
> written as modules. I liked it that way.<br>
><br>
<br>
</div>Everything can be written as modules. The worker process thing will have<br>
the nice sideeffect that modules can register sockets that core Nagios<br>
will listen to events from, with a special callback when there's data<br>
available on the socket. This reduces complexity of a lot of modules by<br>
a fair bit. With worker-processes instead of multiple threads it's also<br>
trivial to write modules with regards to thread-safety, and potential<br>
leaks in worker modules (such as embedded perl) can be ignored, since<br>
we can just kill the worker process and spawn a new one once it's done<br>
some arbitrary number of checks. This is how Apache handles leaky<br>
modules and we could do far worse than using the world's most popular<br>
webserver as an example.<br>
<br>
There's also another thing. Mozilla Firefox has been accused of feature<br>
stagnation in the core since they let addon writers handle adding new<br>
features, and far from everybody uses modules. Google Chrome has taken<br>
a fair share of users from Firefox lately, partly because it implements<br>
some of the more popular modules directly in-core. Nagios has also been<br>
accused of feature stagnation, even though broker module development<br>
has flourished in recent years (nagios with modules is nothing like the<br>
old nagios without them), so it makes sense to add certain selected<br>
module capabilities to the core.<br>
<div><br></div></blockquote><div><br>There seem to be two issues, I think, that are getting mixed here. I think<br>the accusation of Mozilla Firefox/Nagios Core feature stagnation is a separate issue from<br>
putting things in core as opposed to making them a NEB module.<br><br>The Linux kernel is a good example of tons of features existing in modules and<br>not being included in the core, yet not having the feature stagnation problem.<br>

The difference between those and FF/Nagios is that the modules are included in<br>the /distribution/ of the code and many are active by default.<br><br>This has the major advantage that if someone doesn't like/need a particular module,<br>
it can be trivially removed. This helps performance tuning. etc. At the same time,<br>it allows feature progression, by default.<br>
<br>I think if this approach were taken, more modularization rather than hard<br>coding things into the core, but including more widely accepted modules<br>in the default Nagios Core distribution, that would keep everyone happy.<br>
<br>That being said, I think placing the networking socket code into the core is<br>completely reasonable, since it is such an essential part of the architecture.<br>Although theoretically you could remove all networking from the Linux kernel<br>
and still run...<br><br>Really, on that part at least, I think either way would work out fine.<br><br>Just a thought,<br>  Adam Augustine <br>
<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><br></div></blockquote></div>