public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Patrick McLean <chutzpah@gentoo.org>
To: Michael Orlitzky <mjo@gentoo.org>
Cc: gentoo-dev@lists.gentoo.org
Subject: Re: [gentoo-dev] [PATCH 3/3] dev-vcs/hub: migrate to go-module.eclass
Date: Fri, 13 Sep 2019 13:52:19 -0700	[thread overview]
Message-ID: <20190913135219.60af9dd1@patrickm.gaikai.org> (raw)
In-Reply-To: <4050b216-b3fb-b444-4d88-7e7211804f4d@gentoo.org>

On Fri, 13 Sep 2019 12:50:48 -0400
Michael Orlitzky <mjo@gentoo.org> wrote:

> On 9/12/19 1:45 PM, Alec Warner wrote:
> > 
> > Er, I'm fairly sure computer *science* has not conclusively proven
> > that dynamic binaries are somehow superior to static binaries.
> >   
> 
> 
> If you statically link to a library, then none of its implementation
> details are hidden from you -- you need to "reassemble" your program
> whenever the library changes.
> 
> If we jump way forward to 1979, the SICP[1] is basically a
> thousand-page treatise on abstraction. But not only at one level of
> computation:
 
While I personally have opinions about static linking (I basically
completely agree with you that it's a dumb idea). That said, this has
nothing to do with this particular discussion, I suggest you take it up
with the golang upstream. I don't think anyone here is arguing that
static linking is a great idea and everyone should do it.

We are arguing that the golang community believes strongly in static
linking, and the entire ecosystem is designed around this idea, as such
trying to bodge dynamic linking on to the existing ecosystem is
probably more work than it is worth. In general, developers Gentoo
tries to stay close to upstream as much as possible, as this reduces
the maintenance burden.

The entire point of this thread is to try to find a sane way to support
the golang community's standards. I think the merits of static linking
are out of scope here.

>   Well-designed computational systems, like well-designed automobiles
> or nuclear reactors, are designed in a modular manner, so that the
> parts can be constructed, replaced, and debugged separately.
> 
> "Replaced" here is of course what I want to draw your attention to.
> But also on the fact that abstraction and modularity don't just apply
> at one level of software design and engineering -- it's a fractal. At
> the lowest levels, we abstract machine code to assembler, assembler to
> low-level languages, low-level languages to high-level languages,
> high-level languages to functions and procedures, functions and
> procedures to libraries, libraries to services, and services to
> distributed APIs. The same principles that apply to a collection of
> functions (a program) also apply to a collection of programs (an
> operating system). The rule "don't copy and paste code" applies to
> your linker just as much as it applies to the first program you wrote
> in CS101, and for the same reasons.
> 
> As you commented on IRC, the cost in terms of man-power is that
> someone's workload jumps from O(n) to O(m*n), because you have to
> duplicate everything you do for every statically-linked dependency.
> And you can find as much theory as you like on software modularity in
> papers from the 1970s and 1980s, but the benefits are not only
> theoretical. There's a mountain of empirical data that supports the
> theory. Some choice quotes [2][3]:
> 
>   Poorly placed dependencies, especially those that link otherwise
>   independent modules, may result in a cascade of unwanted and
> hard-to- detect indirect interactions. Our results suggest that
> purposeful actions to reduce such "rogue dependencies" can be
> effective (the redesign of Mozilla reduced propagation cost by over
> 80%).
> 
>   Our results confirm the existence of a relationship between
> component modularity and design evolution that is both statistically
> significant and large in magnitude... Tightly-coupled components
> are... less adaptable  via the processes of exclusion or
> substitution; they are more likely to  experience "surprise"
> dependency additions unrelated to new functionality, implying that
> they demand greater maintenance efforts;  and they are harder to
> augment, in that the mix of new components is  more modular than the
> legacy design.
> 
> The only difference between static linking and copy/pasting chunks of
> code around is in who pays the price. If the programmer copies &
> pastes code into his own program, he will eventually have to deal
> with the mess. On the other hand, it he forces his program to be
> statically linked, then it is the end user who is harmed by his
> decision.
> 
> In any case, the theory says that modularity is superior, and the
> empirical data confirm it. The fact that you won't find a paper saying
> "dynamic linking is better than static linking" is somewhat beside the
> point, and only muddies the water. Linking is just one specific
> instance of a problem that was solved 40 years ago.
> 
> 
> [0]
> https://www.win.tue.nl/~wstomv/edu/2ip30/references/criteria_for_modularization.pdf
> 
> [1] https://web.mit.edu/alexmv/6.037/sicp.pdf
> 
> [2] https://pubsonline.informs.org/doi/10.1287/mnsc.1060.0552
> 
> [3] http://www.hbs.edu/research/pdf/08-038.pdf
> 



  reply	other threads:[~2019-09-13 20:52 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-11 17:21 [gentoo-dev] [PATCH 0/3] add eclass to handle go modules William Hubbs
2019-09-11 17:21 ` [gentoo-dev] [PATCH 1/3] go-module.eclass: introduce new " William Hubbs
2019-09-11 17:38   ` Michał Górny
2019-09-11 18:22     ` William Hubbs
2019-09-11 18:31       ` Michał Górny
2019-09-11 19:40         ` William Hubbs
2019-09-11 19:47           ` Michał Górny
2019-09-11 23:11             ` William Hubbs
2019-09-12  5:39               ` Michał Górny
2019-09-12 16:39                 ` William Hubbs
2019-09-12 17:03                   ` Michał Górny
2019-09-12 20:16                     ` Kent Fredric
2019-09-12 21:10                       ` Michał Górny
2019-09-11 23:31   ` Alec Warner
2019-09-12  0:05     ` William Hubbs
2019-09-12  0:28       ` Alec Warner
2019-09-12 15:36         ` William Hubbs
2019-09-12 20:20         ` Kent Fredric
2019-09-12 20:38           ` Alec Warner
2019-09-12 21:12             ` Michał Górny
2019-09-12 22:01               ` Alec Warner
2019-09-13  9:13               ` Kent Fredric
2019-09-11 17:21 ` [gentoo-dev] [PATCH 2/3] app-misc/spire: migrate to go-module.eclass William Hubbs
2019-09-11 17:21 ` [gentoo-dev] [PATCH 3/3] dev-vcs/hub: " William Hubbs
2019-09-11 17:39   ` Michael Orlitzky
2019-09-11 17:47     ` William Hubbs
2019-09-11 17:48       ` Michael Orlitzky
2019-09-11 19:15       ` Kent Fredric
2019-09-11 19:26         ` William Hubbs
2019-09-11 23:34     ` Alec Warner
2019-09-11 23:48       ` William Hubbs
2019-09-12  0:05         ` Alec Warner
2019-09-12 15:46           ` William Hubbs
2019-09-12 16:14             ` Michael Orlitzky
2019-09-12 16:42               ` Alec Warner
2019-09-12 16:52                 ` Michael Orlitzky
2019-09-12 16:55                   ` Mike Gilbert
2019-09-12 17:05                     ` Michael Orlitzky
2019-09-12 17:43                       ` Mike Gilbert
2019-09-12 21:11                         ` Michael Orlitzky
2019-09-12 21:23                           ` Mike Gilbert
2019-09-13  0:14                             ` Michael Orlitzky
2019-09-13  1:56                               ` Alec Warner
2019-09-13  2:16                                 ` Alec Warner
2019-09-13  3:13                               ` Mike Gilbert
2019-09-13 12:11                                 ` Michael Orlitzky
2019-09-12 17:45                   ` Alec Warner
2019-09-12 21:58                     ` Michael Orlitzky
2019-09-13  9:19                       ` Kent Fredric
2019-09-13 12:29                         ` Michael Orlitzky
2019-09-13 20:17                           ` Patrick McLean
2019-09-13 23:44                             ` Michael Orlitzky
2019-09-14  0:22                               ` Patrick McLean
2019-09-14 17:06                               ` Alec Warner
2019-09-14 22:37                                 ` Michael Orlitzky
2019-09-16  7:54                               ` Kent Fredric
2019-09-14  6:52                             ` Ulrich Mueller
2019-09-13 16:50                     ` Michael Orlitzky
2019-09-13 20:52                       ` Patrick McLean [this message]
2019-09-16  8:11                       ` Kent Fredric
2019-09-12 20:10                   ` Kent Fredric
2019-09-12 17:31                 ` Michał Górny
2019-09-12 16:46             ` Alec Warner

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=20190913135219.60af9dd1@patrickm.gaikai.org \
    --to=chutzpah@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    --cc=mjo@gentoo.org \
    /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