Hi Joe,

On Fri, May 15, 2009 at 03:10:21PM -0400, Moore, Joe wrote:
> The claims in this bug dialog that "a collectd package without rrdtool
> is non-functional" are simply wrong.

I did not claim that the package would be non-functional. I said that
the _default_ installation would not provide any _useful_ functionality.

> There are several collectd storage backends, of which RRD is only one.
> In particular, it has the ability to export to CSV files, or to a
> network collectd server.

Right ... however, CSV is _far_ from being a reasonable default and the
network plugin requires manual configuration to be useful. RRDtool is
the only plugin that properly works out of the box with a default
configuration. That's why I chose to use it as the default output
plugin.

Now, I fully see and agree with your point that there are setups that do
not require and want RRDtool (on some hosts at least). The reason why I
did not yet provide a solution for this bug report is that I want to do
it right and I did not yet come up with a solution that I like.

> With the Depends: as it currently sits, installing collectd (and the
> required librrd4) can create RRD data files, but since rrdtool itself
> in only in the Recommends:, there's no way to get the data out of
> those files, so it's kinda pointless to save data in that format.

Well, collectd is about putting data _into_ those files. You need
different software (or manually install the shipped example files) to
get data out of it. So, imho, recommending rrdtool is perfectly valid
and fine (after all, rrdtool is by far the most common way to store data
collected by collectd, be it on a "client" or "server" - that's why it's
recommended rather than suggested only).

> "The Depends field should be used if the depended-on package is
> required for the depending package to provide a significant amount of
> functionality."

With the current default configuration, rrdtool _is_ required.

> IMO, someone who's trying to minimize a server installation base (by
> Install-Recommends="0";) would be considered an "unusual
> installation".  Under normal use (installing Recommends) there would
> be no difference from the current condition.
> 
> Although the RRDtool plugin would need to be commented out by the
> delivered conffile collectd.conf.

... which would however render the _default_ configuration non-
functional. I.e. a user would _have_ to edit the configuration to get
something out of collectd which, imho, is not an option.

> Perhaps when SID is updated with collectd 4.7.0, the Depends: could be
> changed?

I am working on that and as soon as I come up with something I like, I
will implement it. I'm sure there will be a solution to this long before
Squeeze. That solution would have to fulfill the following criteria:

 * Be flexible - a user should be able to make use of the full
   flexibility offered by collectd itself.

 * Be scalable - a user should be able to _easily_ use the package on a
   small embedded device as well as in large network environments.

 * Offer a working default configuration. A user who simply wants to try
   out collectd should be able to do 'apt-get install collectd' and be
   happy. However, still make it easy to adopt the configuration to
   special needs.

 * Try to avoid dependencies.

 * When splitting the 'collectd' package, the resulting packages ought
   not conflict with each other. E.g. a "transition" from a "client" to
   a "server" package should be possible without solving conflicts
   between packages or even configurations.

Since I knew I wouldn't be able to solve all of that for Lenny (we were
in deep freeze already), I did not rush into something I would regret
later on but decided to come up with a good solution.

What I'm currently aiming at is something along the following lines:

 * Split the 'collectd' binary package into 'collectd-core' and
   'collectd'.

 * 'collectd-core' would provide the collectd binaries and plugins but
   _no_ configuration. The package would recommend (or possibly even
   suggest) all plugin dependencies.

 * 'collectd' would provide the same configuration as it does now and
   depend on librrd. Obviously, this package would have to depend on
   'collectd-core'.

This way, people upgrading collectd would not see any difference, i.e.
their setup would still work just like before. They could, however,
remove the 'collectd' package (but keep 'collectd-core') to be able to
drop the dependency on 'rrdtool'. A new user installing the 'collectd'
package would get a working default configuration. People with more
complex setups could install 'collectd-core' only and would not be
required to install any additional dependencies.

In addition to that, I'd like to make it easy to create further packages
providing rather special configuration, e.g. with networking enabled by
default. This would be somewhat similar, in spirit, to the exim4-
daemon-* packages. This would make it possible to provide default
configurations for common use-cases in Debian and make it possible for
local administrators to easily manage their own configuration. I'm not
yet sure though if that makes sense and how to properly implement it.
Since this is mostly about configuration handling, this is related to
the last third of my last E-mail [1].

Any comments, further ideas and discussion would be very appreciated.

Thanks for your interest!

Cheers,
Sebastian

[1] http://bugs.debian.org/495936#35

-- 
Sebastian "tokkee" Harl +++ GnuPG-ID: 0x8501C7FC +++ http://tokkee.org/

Those who would give up Essential Liberty to purchase a little Temporary
Safety, deserve neither Liberty nor Safety.         -- Benjamin Franklin

Attachment: signature.asc
Description: Digital signature

Reply via email to