9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: "Fran. J Ballesteros" <nemo@lsub.org>
To: "Brian L. Stuart" <blstuart@bellsouth.net>,
	Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] The Case for Bind
Date: Fri, 15 Sep 2017 21:54:58 +0200	[thread overview]
Message-ID: <E9936266-AB9F-4143-ACA3-2951D5F86DC6@lsub.org> (raw)
In-Reply-To: <1312270110.2858999.1505498867019@mail.yahoo.com>

I'm going to print your mail, and read it every night. 
thanks. 

> El 15 sept 2017, a las 20:07, Brian L. Stuart <blstuart@bellsouth.net> escribió:
> 
>> On Fri, 9/15/17, Marshall Conover <marzhall.o@gmail.com> wrote:
>> 
>> I'll start digging in to see what I can do. I think I jumped the
>> gun by trying to contribute a feature, ...
> 
> On this point, I'd suggest a slight shift of perspective.  This is something
> that I've tried to convey both to collegues when in industry and to
> students when teaching.  Don't think in terms of implementing features.
> Think instead of implementing mechanisms.  The mindset where every
> feature is implemented with its own mechanisms is the reason so much
> software is so poorly engineered.  Witness the browsers mentioned
> earlier.  Good engineering involves designing and selecting a good
> set of simple mechanisms that when used in various combinations
> provide a rich set of features.  If a mechanism doesn't fit, don't include
> it.  Remember that perfection is achieved not when there's nothing
> left to add, but when there's nothing left to remove.
> 
> Bringing this back to bind, I wouldn't think of bind itself as a feature.
> However, when the bind mechanism is used in conjunction with the
> union directory mechanism and the architecture environment variable,
> the feature of sane multi-architecture binary handling emerges.  No
> where in the source of the shell or the kernel or anywhere else is
> there code specifically designated to make it possible to run the
> correct binary based on the architecture.  Of course, there are
> other ways of accomplishing this feature, such as a path variable,
> but the beauty of this approach is that all of the mechanisms involved
> also find application in other features.  For example, bind and per-
> process name spaces make possible the elegance of rio which
> in turn provides the feature of recursively running rio inside a rio
> window, something that takes a lot of special effort in X.  Likewise,
> when bind is used with import, you can get a particularly elegant
> form of network gatewaying.  So I suggest not thinking of bind as
> a feature, but as a very general tool for building features.
> 
> One objective when implementing a mechanism is that is reduces
> the amount of code in other places by more lines than it takes
> to implement the mechanism.  There are two major reasons why
> it's important to keep the number of lines of code down.  First,
> every line is a potential bug.  To a first approximation, the fewer
> lines of code the fewer places where you might have bugs.  Second,
> every individual and organization has a maximum level of complexity
> that it can manage.  Once that point is hit, all new releases merely
> rearrange the bugs.  They don't really make the product any better.
> 
> A well designed set of mechanisms is like a set of basis vectors
> and each point in the vector space is a potential feature.  If your
> set of features isn't larger and richer than the set of mechanisms,
> then you should go back and rethink the set of mechanisms.  So
> when adding a mechanism, you want to make sure you're adding
> a new dimension to your feature space.
> 
> BLS
> 




  reply	other threads:[~2017-09-15 19:54 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1312270110.2858999.1505498867019.ref@mail.yahoo.com>
2017-09-15 18:07 ` Brian L. Stuart
2017-09-15 19:54   ` Fran. J Ballesteros [this message]
2017-09-16  0:02   ` Chris McGee
2017-09-14 14:58 Marshall Conover
2017-09-14 15:11 ` Kurt H Maier
2017-09-14 19:55 ` Marshall Conover
2017-09-14 20:25   ` Kurt H Maier
2017-09-14 21:40   ` Marshall Conover
2017-09-14 23:46     ` Micah Stetson
2017-09-15  0:53     ` Marshall Conover
2017-09-15  1:14       ` Devon H. O'Dell
2017-09-15  2:01       ` Marshall Conover
2017-09-15 11:59         ` Marshall Conover
2017-09-17 21:06           ` Marshall Conover
2017-09-18  8:31             ` Giacomo Tesio
2017-09-18 12:15             ` Marshall Conover
2017-09-15  9:45       ` Giacomo Tesio
2017-09-14 22:22 ` Aleksandar Kuktin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E9936266-AB9F-4143-ACA3-2951D5F86DC6@lsub.org \
    --to=nemo@lsub.org \
    --cc=9fans@9fans.net \
    --cc=blstuart@bellsouth.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).