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
>
next prev parent 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).