[follow-ups should probably go to -project, but I'm not setting my
headers to try to force that]

At 2024-01-24T16:57:06+0100, Simon Josefsson wrote:
> One could equally well make the argument that distributors should care
> about the Go/Rust ecosystems, and make whatever changes needed in
> order to support them.  Those changes are what I'm trying to explore
> here.

Exploration is one thing; advocacy is another.  Please be clear which
role you're taking in any given discussion.  (If you switch hats
midstream, be explicit about it).

[rearranging]
> Speaking as a C person (I know little about Go/Rust), getting stable
> ABIs, dynamic linking [...] right is not simple, and we've been
> working on that for 20+ years consuming plenty of human resources on
> the way.

That's true, but think about the goal that stable ABIs and dynamic
shared objects achieve: software modularity in the field at runtime.  I
trust that I don't have to argue the benefits of modular design to any
even slightly experienced software developer; its benefits have been
understood for about fifty years.

(Just to get this on the record, and for obligatory technical content:
I've studied Go a little and Rust a bit more.  I think that, _as
languages_, they're likely both superior to C in most respects.  [If you
want to visualize PDP-11 assembler output and stack layout as you code,
both are likely ill-suited to the purpose, as standard C itself
increasingly is.]  In any case they are well worth a software
professional's time to look at, in my opinion.  That doesn't mean you
have to endorse their adoption.)

> and security upgrades

And there's the payoff of dynamic modularity, if you will.

If the origin of a statically linked object, whatever its language of
implementation, is not on the ball _for any reason_, the exposure of a
security vulnerability in it or anything upon which it depends expands a
temporal window of attack on affected systems.  We _know_ that certain
actors in the global IT sector hoard undisclosed vulnerabilities for
deployment later, at opportune times for extortion or data exfiltration
against targets of interest.

Next, consider some of the reasons why the origin of a statically linked
object might come "off the ball".  Maybe they got fired or laid off.
Maybe they burned out.  Maybe they died.  Maybe they've been told the
project is supposed to become part of their "20% time"[sic].  Maybe it's
just "not a priority" to their employer.  Maybe they had a baby or
finally went on that long-planned vacation to a tropical island.

If you've worked in Big IT you know that you can predict that when your
business unit gets a new director, _you_ get a new direction.  Directors
and other senior managers justify their huge salaries and benefit
packages by being "impactful", and one reliable way to be "impactful" is
by handing down dramatic decrees.  (All of the top capitalists are
gamblers; one can easily perceive this in their personalities and
rhetoric.)  At one place I worked such a thing happened twice in less
than a year, I think.  We were going to "drop all Linux" and rebase
everything on FreeBSD.  Then that director departed the company and
FreeBSD was out the window--back to Linux.[1]

Worse, when any of these disruptions happens to the origin of a module
that employs static linking, it can take an indefinite amount of time to
_find out_ that such has even taken place.  So its user community may
lose time while it politely waits for their upstream to check in from
vacation or whatever, because they don't want to be rude, or seen as
hijacking the project, or similar.  And even that assumes that the right
people in the community have sufficient expertise to reasonably
approximate the usual construction and release procedures, which can
vary not just in the technology of the implementation system, but in the
hosting/development site.

Consider the motivations and pressures that professionalized, corporate
software is developed under.  Any cost of development that can be
externalized experiences an unrelenting force in that direction.

  An economic profit is the difference between the revenue received from
  sales and the explicit costs of producing its goods and services, as
  well as any opportunity costs.[2]

Opportunity costs are an interesting subject.[3]  They are often
difficult or even impossible to measure.  In business culture, they are
often therefore utterly neglected, even when they are known to exist.
This is why firms pollute, know they pollute, deny to the public that
they pollute, argue with everyone who challenges them about the
consequences of their pollution, and ultimately attempt to escape
liability for their subjection of others--ultimately, human beings and
the environment generally--to their negative externalities.  The
emphasis on profit and a desire by the wealthiest in society to preserve
the prevailing economic system is also why very concept of negative
externalities is under-emphasized or omitted entirely from economics
education at the lower levels.  (Eventually, in tertiary education, it's
dealt with reasonably frankly, since people acquiring an MBA or majoring
in economics are demonstrably staking their livelihoods on maintenance
of the status quo--a fact not all of them may appreciate at first.  They
may have to be taught by getting their papers suddenly rejected, being
passed over for promotion, or missing out on a sweet junket with the Big
Boss and the favorites being teased with prospects of succession.)

What force can work against this reflexive, instinctive externalization
of costs?  We briefly considered it above, and we live it.

Community.  Community is a concept that at best fits uncomfortably with
rudimentary economic analysis (the variety favored by decision-makers in
most firms).  In a non-iterated game of Prisoner's Dilemma, a
profit-maximizing actor will defect every time.[4]  In real life, we
frequently encounter our economic counterparties multiple times, which
can counterbalance the tendency of profit-maximizing strategies to
sociopathy.  On the other hand, the legal frameworks of societies often
do much to establish or reinforce the capacity of the well-heeled to act
with impunity.  An important development in this area was the concept of
"limited liability", now universally applied to publicly traded firms.
(It is worth remembering that the concept of the firm has its roots in
royally chartered companies, which came into being before the principles
of absolute monarchy and the divine right of kings were not yet dead.)
A consequence of this innovation is that decision makers seldom face
negative consequences even for grievously harmful actions; this low risk
to themselves creates what is known, in terminology quaint to the ears
of the ruling class, as a "moral hazard".[5]

To return to specifics and technology, consider that Go and Rust were
both developed nearly exclusively by people working for firms.[6]  Yes,
dynamic linking and maintenance of stable ABI promises are hard.  That
means they cost.  But static linking and volatile ABIs also have a
cost--an opportunity cost.  If that cost is both (1) hard to measure and
(2) will be borne by economic actors outside your firm, the obviously
rational choice is to not bother with dynamic linking and stable ABIs.

You make it "a 'you' problem, not a 'me' problem."  When you hear
language like this, overtly or implicitly, you are hearing a person
express a disavowal or even repudiation of community with you.

What our community _can_ do is identify ways of driving negative
externalities back toward those who are imposing them, making them
internal.  This could be perceived as an opportunity cost in the form
already proposed in this thread--just not bothering with software
ecosystems that are dependent on this model.  Yes, there is a risk that
Debian could "make itself irrelevant", at least to those sectors for
which rapid application development with Go and Rust (and Python and
NodeJS?) are important.  Maybe that's a trade-off, the classic "hard
choice".  But such a statement of position might have more impact than
one suspects.  Remember again what motivates senior decision makers in
firms: "making an impact".  Attenuating the uptake of an "impactful new
technology" is a threat that such people understand viscerally.  Such
people have large amounts of disposable income that they use to play
stock markets.  Observe how shareholders (largely algorithmic trading
agents, I fear) "punish" firms that don't merely fail to end a fiscal
quarter in the black, but which fail to grow _as much_ as projected, or
whose rate of growth inflects.  The Masters of the Universe[11]
recognize no growth curve but the exponential, and any asset that isn't
exponentially growing in value is, to them, failing.  Bitcoiners emulate
the mentalities of those they admire, the already wealthy.[12]  That is
why one of their mantras is "number go up!".

If I'm right, then it won't actually take much to bend that curve, to
shift adoption rates below projections.  And do these people ever hate
coming in below projections.

Debian is still big and influential.  Our capacity to make a significant
"impact" should not be dismissed.  We must acknowledge that downstream
distributions might not make the same choice.  For instance, Ubuntu's
own decision makers may have greater sympathy with the attitudes of the
"Masters of the Universe", for reasons obvious and less so.

But when the security wheels fall off the cart of an important
statically constructed module that has been quietly abandoned by its
developer--and I assert that such an incident is inevitable--it need not
be Debian that bears the costs thus externalized.

Regards,
Branden

[1] This wasn't an entirely negative experience for me, personally.  I
    got to (along with dozens of others) take some of Kirk McKusick's
    presumably expensive FreeBSD training on the company dime in person.
    I learned a lot, gained new respect for the system (if not the
    anti-copyleft licensing invective of some of its community), and
    broadened my horizons.  But the whipsawing in tooling and mission
    was not productive in the workplace.

[2] https://www.investopedia.com/terms/e/economicprofit.asp
[3] 
https://press.princeton.edu/books/hardcover/9780691154947/economics-in-two-lessons

    John Quiggin is a terrific writer on economics.  Read anything by
    him you can get your hands on.

[4] https://www.youtube.com/watch?v=BOvAbjfJ0x0
[5] https://hbr.org/2016/10/a-short-history-of-golden-parachutes

[6] At least initially.  Google still steers Go unilaterally as far as I
    know.  Rust's story is murkier, with its original developer having
    long ago detached from the project.  Rust may now nominally be a
    community-driven effort, but it appears to me it may now in fact be
    mono- or oligopolistically administered.[7]  A key piece of evidence
    supporting this inference, in my opinion, was the retraction of
    Jean-Heyd Meneide's invited keynote speech at last year's
    RustConf.[8]  Despite much alarm and concern in the FLOSS community
    generally, a public apology and an acknowledgement not just of the
    bad optics but the bad governance this incident revealed, to my
    knowledge no disclosure has been made of whose hand was on the
    dagger that went into Meneide's metaphorical back.  A couple of
    people who were downstream of the ultimate decision effused remorse,
    but tellingly, these sad explanations fell conspicuously short of a
    root-cause analysis.  That lack of disclosure suggests to me a
    coziness and _strongly_ mutually conciliatory attitude among the
    effective governing membership.[9]  Or, worse, the hand belongs to a
    single dominant figure, and the charter of the remainder of the
    governing body, whatever might be written down, is understood to be
    ratification of the leader's decisions and protection of that leader
    from embarrassment.[10]

[7] ...much as the Linux kernel is by the platinum members of the Linux
    Foundation.

[8] https://fasterthanli.me/articles/the-rustconf-keynote-fiasco-explained

[9] There's an exquisitely apropos quotation from the series _The Wire_
    that fits the alternative approach to collective embarrassment, but
    unfortunately it is NSFW.  For those familiar with the show, as I
    recall it's uttered in the mayor's office after Hamsterdam makes the
    newspapers.

[10] The miniseries _Chernobyl_ also offers insight here.  I'll
     paraphrase for adaptation to this context.  "What you are proposing
     is that [the committee] humiliate a [person] that is obsessed with
     not being humiliated."  When you see this sort of ethical priority
     operating in your work or personal life, know that you are in a
     toxic environment.

[11] https://www.theguardian.com/business/2002/mar/24/enron.theobserver

[12] I really can't thank Ian Jackson enough for bringing David Gerard's
     _Attack of the 50-Foot Blockchain_ to my attention.  If John
     Quiggin is too dry for you, try this book first.  You'll laugh,
     you'll cry, you'll vomit at all the stupidity and greed that Gerard
     documents and coldly evaluates.

Attachment: signature.asc
Description: PGP signature

Reply via email to