Re: [Exim] Terminology (was: Termage (was: "driver" concept?…

Top Page
Delete this message
Reply to this message
Author: Derek Simkowiak
Date:  
To: Vadim Vygonets
CC: exim-users
Subject: Re: [Exim] Terminology (was: Termage (was: "driver" concept?))
    [Upon review, this email is really just picking nits; any further
replies should probably just be sent to me privately to get this thread
off the list.]

> >     The word "instance" carries a lot of baggage to me; it could refer
> > too O.O.P.,

>
> What's the difference?


    The difference is all things that exist in OOP but not in an Exim
driver config.  Inheritance, 'virtual' interfaces, 'friend' relationships
(blechz), private/public data, etc.  I was just making the point that it's
not good to use terms where people might assume some other underlying
model that does not fit.


> In object oriented programming, you have classes, and you have
> objects which are instances of those classes; [...]


    Yes, the word "instance" means a specific case of a more general
category.  But since it is heavily used with other very specific meanings
in the I.T. industry, I was just making the point that we should clearly
state that we mean the "English" use of 'instance', not one of the
"programmer/sysadmin" uses of 'instance'.


> > or server processes,
>
> I call them processes.


    So do I.  But almost every application that uses more than one
process is a server application, because it was documented as a model for
handling more than one incoming socket connection in Stevens' landmark
"Advanced Programming in the UNIX Environment".  Posterchild: Apache.


    Almost every enduser application is single-process, because most
widget sets suggest, and provide for, the use of threads for timesharing
within an app, instead of multiple process.  Examples of this are GTK+, TK
(of TCL/TK fame), Qt, and the MS-Windows C++ "Controls".  Thus, in my
experience, one usually only uses the word "instance" in combination with
"processes" when talking about a server application.  E.g., "Apache is
running okay, but every instance that calls FastCGI segfaults."


> > or package installs...
>
> How so?


    In a testing environment one must (sometimes) install several
builds of a package on the same machine, or run through different versions
of an installation procedure.  In two testing departments I worked with
they used the word "instance" to refer to one installation vs. another,
and also one test run vs. another.


> > if a new user goes
> > looking for too much analogy with one of those models he may get lost.
>
> Not at all, I'm afraid.


    Not at all _to you_.


    This is getting far, far deeper into this point than I did when
writing my email.  But my basic premise was that using heavily loaded
terms often leads to confusion.  The word "instance", _to me_, is a
heavily loaded term.



> They're not different from driver instances in the kernel.


    Although I see the analogy, in my mind the details of the two
models are very different.  A 'driver' to the kernel could mean anything
from SCSI, to 802.11b, to iptables, to Firewire, to something that hasn't
even been invented yet.  A 'driver' to Exim means only router, transport,
or authenticator.  And there is no analogy for a kernel driver as a
"module" in Exim (although that would be nice! How about a DSO "plugin"
API for Exim?)  Finally, different "instances" of kernel drivers do not
exist somewhere in a text configuration file.


> > 1. A driver is "configured", not "defined", in the config file. I.e.,
> > changes like:
> >
> > "Within a driver definition, there are [...blah, blah...]"
> > "Within a driver configuration, there are [...blah...]"
>
> Not sure. Looks quite like C definition to me.


    To me, the C code is more like the "definition" of the driver, and
the stuff in the config file is, well, the "configuration".  Exim is the
first application I've used where something in an ASCII configuration file
is called a "driver definition".


> Definitely not. You don't run a config (come on, this is
> confusing), you run a driver, or an instance thereof.


    Perhaps that is the case in the Exim community.  But as a
counter-example, the Postfix MTA has no way to distinguish between
incoming and outgoing email.  If you want to spam-filter incoming mails,
but not outgoing mails, you need to run a separate instance of Postfix on
a different port, with its own config file.  That could be referred to as
running a separate "config" of Postfix.  (And the word "instance" is used
there in the server-process context I described above.)



    This has gotten completely off topic; the only thing I was really
trying to say was that the manual's use of the word "driver" to mean both
stuff written in C, as well as stuff in the Exim config file, had confused
me.  Perhaps it would confuse others, as well.



--Derek