All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Theodore Ts'o" <tytso@mit.edu>
To: "Dr. Greg" <greg@enjellic.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Hector Martin <marcan@marcan.st>, Dave Airlie <airlied@gmail.com>,
	Jason Gunthorpe <jgg@nvidia.com>,
	Greg KH <gregkh@linuxfoundation.org>,
	phasta@kernel.org, Christoph Hellwig <hch@lst.de>,
	Danilo Krummrich <dakr@kernel.org>,
	Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>,
	Abdiel Janulgue <abdiel.janulgue@gmail.com>,
	daniel.almeida@collabora.com, aliceryhl@google.com,
	robin.murphy@arm.com, rust-for-linux@vger.kernel.org,
	Miguel Ojeda <ojeda@kernel.org>,
	Alex Gaynor <alex.gaynor@gmail.com>,
	Boqun Feng <boqun.feng@gmail.com>, Gary Guo <gary@garyguo.net>,
	Bj??rn Roy Baron <bjorn3_gh@protonmail.com>,
	Benno Lossin <benno.lossin@proton.me>,
	Andreas Hindborg <a.hindborg@kernel.org>,
	Trevor Gross <tmgross@umich.edu>,
	Valentin Obst <kernel@valentinobst.de>,
	open list <linux-kernel@vger.kernel.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	airlied@redhat.com,
	"open list:DMA MAPPING HELPERS" <iommu@lists.linux.dev>,
	DRI Development <dri-devel@lists.freedesktop.org>
Subject: Re: On community influencing (was Re: [PATCH v8 2/2] rust: add dma coherent allocator abstraction.)
Date: Sat, 8 Feb 2025 15:44:16 -0500	[thread overview]
Message-ID: <20250208204416.GL1130956@mit.edu> (raw)
In-Reply-To: <20250207121638.GA7356@wind.enjellic.com>

On Fri, Feb 07, 2025 at 06:16:38AM -0600, Dr. Greg wrote:
> 
> The all powerful sub-system maintainer model works well if the big
> technology companies can employ omniscient individuals in these roles,
> but those types are a bit hard to come by.

I'll let you in a secret.  The maintainers are not "all-powerfui".  We
are the "thin blue line" that is trying to keep the code to be
maintainable and high quality.  Like most leaders of volunteer
organization, whether it is the Internet Engineerint Task Force (the
standards body for the Internet), we actually have very little power.
We can not *command* people to work on retiring technical debt, or to
improve testing infrastructure, or work on some particular feature
that we'd very like for our users.

All we can do is stop things from being accepted (either in our
subsystem, or the imprimatur of the IETF).  Hopefully, we're only
stopping bad things from progressing, but that *really* is all we can
actually do.

One of the things which gets very frustrating from the maintainer's
perspective is development teams that are only interested in their pet
feature, and we *know*, through very bitter experience, that 95+% of
the time, once the code is accepted, the engineers which contribute
the code will disappear, never to be seen again.  As a result, a very
common dynamic is that maintainers will exercise the one and only
power which they have --- which is to refuse to accept code until it
is pretty much perfect --- since once we accept the code, we instantly
lose all leverge, and the contributors will be disappear, and we will
be left with the responsibility of cleanig up the mess.  (And once
there are users, we can't even rip out the code, since that would be a
user-visible regression.)

Occasionally, there is an accusation that different standards that
might apply for people who are in the "gold old buys club".  But what
isn't appreciated, is that it is precisely because people who are
long-term members of the community are trusted to stick around and
will support code that the have sponsored.  For example, Darrick Wong,
who contributed ext4 metadata checksuming support before we moved on
to become the XFS maintainer, is still reviewing and making
contributions to code that he contributed many years to ext4.  I've
been known to submit fixes to test bugs for xfs-specific tests in
xfstests that I discovered when running daily spinner tests on the
linux git tree.

Just in the past two weeks, I've spent 15+ hours working on cleaning
up a casefold "security fix" that had nasty on-disk backwards
compatibility issues.  Part of it was that it was ext4 (although I
discovered that there was also fsck.f2fs problems that had been
overlooked), but the *other* part of why I spent so much time was that
I sponsored the casefolding patches, and so I felt I certain moral
responsibility to make sure the code was continued to be maintained.

(And note, this has nothing to do with who employs me; the 15-20 hours
that I spent working on creating the fix and the test scripts was
purely on my own time, on the weekend, or late at night.  The time
that I spend doing this isn't reflected in my performance reviews, or
promotion propects --- in fact, arguably, over the past 15 years, this
has probably slowed down my promotion prospects; I've only been
promoted once since joining said big tech company...)

> Not sure what the fix is, from a project management perspective the
> technology industry has never faced a challenge like this.  The fork
> model, which was the classic protection in open-source, doesn't work
> at this scale.

Well, here's my suggestion.  Teams that want to get features,
especially ones that might be potentially disruptive, into the tree,
need to spend time becoming part of the *community*.  This means that
they need to participate in part of the joint effort to keep the code
maintainable and high quaity --- even if it isn't part of their
company's short-term goals, or directly related to their pet feature
that they are trying to get upstream.

This was the trust of my "Beyond Upstream First" presentation which I
gave to the Linux Foundation Member Summit last fall[1].

[1] https://docs.google.com/presentation/d/11rMc8PBeyMItV6hv31OHSZ626_6FCZxjX6ZxEAehCpQ/edit#slide=id.p

Now, I'll say that the Rust developers are making strides in the right
direction here.  Miguel has stood for election for the Technical
Adviory Board, and has been contributing in various ways beyond just
Rust for Linux.  Ultimately, Cristoph's concern is that Rust is going
to make life harder for maintainers because of particular build breaks
getting in the way of the very limited bandwidth that Maintainers have
(and again, a lot of the work that we do gets done on our own personal
time; it's rare that even those maintainers employed by a "big
technology company" have complete freedom to work on whatever they
want; and they certainly don't have minions employed to do all of the
grunt work to support code maintenance work, especially if we let
crappy code slip past us in the name of "time to market" concerns.)

So I think we'll get past this.  It might take some more effort, and
more trust building --- on both sides --- but I'm fairly optismistic
that it will happen.  It might not happe as *fast* as people might
like; as Linus pointed out, it took ten years for the Clang compiler
to be considered 100% fully supported --- and this was without needing
to worrying about language issues, including an upstream language
community which refuses to make any kind of backwards compatibility
guarantees, and which is *actively* hostile to a second Rust compiler
implementation (I suspect because it might limit their ability to make
arbitrary backwards-incompatble language changes).

> Obviously respect and open-mindedness to new ideas appears to be the
> grease that makes all of this run smoothly.  Unfortunately that seems
> to be about as rare a commodity as omniscience in our industry.

The other thing which is super rare is people and companies who care
about tech debt cleanup, code maintainability, and code quality.
Instead of complaining about maintainers for who are unreasonably
caring about these things, when they are desparately under-resourced
to do as good of a job as they industry demands, how about meeting us
half-way and *helping* us with these sort of long-term code health
issues?  Maybe if you engage us as part of the community, we'll be a
lot more open to adding changes that might increase the code
maintenance burden?

Cheers,

					- Ted

  parent reply	other threads:[~2025-02-08 20:45 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-08 12:27 [PATCH v8 0/2] Add dma coherent allocator abstraction Abdiel Janulgue
2025-01-08 12:27 ` [PATCH v8 1/2] rust: error: Add EOVERFLOW Abdiel Janulgue
2025-01-08 12:27 ` [PATCH v8 2/2] rust: add dma coherent allocator abstraction Abdiel Janulgue
2025-01-08 13:59   ` Christoph Hellwig
2025-01-08 15:16     ` Miguel Ojeda
2025-01-08 15:18       ` Christoph Hellwig
2025-01-08 15:21         ` Danilo Krummrich
2025-01-09  8:08           ` Christoph Hellwig
2025-01-09  8:49             ` Danilo Krummrich
2025-01-10  8:39               ` Christoph Hellwig
2025-01-10 10:41                 ` Danilo Krummrich
2025-01-16 13:17                   ` Danilo Krummrich
2025-01-16 13:57                     ` Robin Murphy
2025-01-16 15:57                       ` Danilo Krummrich
2025-01-17 13:56                         ` Simona Vetter
2025-01-17 19:10                           ` Abdiel Janulgue
2025-01-28 10:14                             ` Daniel Almeida
2025-01-28  9:23                     ` Christoph Hellwig
2025-01-29 21:33                       ` Danilo Krummrich
2025-01-31  7:57                         ` Christoph Hellwig
2025-02-03  8:17                           ` Abdiel Janulgue
2025-02-04  5:29                             ` Christoph Hellwig
2025-01-30 13:19                       ` Philipp Stanner
2025-01-30 13:35                         ` Daniel Almeida
2025-01-30 13:43                           ` Philipp Stanner
2025-01-30 15:46                         ` Jason Gunthorpe
2025-01-30 16:11                           ` Greg KH
2025-01-30 17:24                             ` Jason Gunthorpe
2025-01-31  7:47                               ` Greg KH
2025-01-31 13:54                                 ` Jason Gunthorpe
2025-02-03 18:46                                   ` Hector Martin
2025-02-03 19:16                                     ` Jason Gunthorpe
2025-02-03 23:41                                       ` Hector Martin
2025-02-03 19:22                                     ` Paolo Bonzini
2025-02-03 23:05                                       ` Hector Martin
2025-02-05 18:52                                     ` On community influencing (was Re: [PATCH v8 2/2] rust: add dma coherent allocator abstraction.) Simona Vetter
2025-02-05 20:36                                       ` Dave Airlie
2025-02-06  9:19                                         ` Hector Martin
2025-02-06 17:58                                           ` Linus Torvalds
2025-02-07 12:16                                             ` Dr. Greg
2025-02-08  4:26                                               ` Steven Rostedt
2025-02-08  4:32                                                 ` Steven Rostedt
2025-02-08  8:31                                                 ` Hector Martin
2025-02-10  9:41                                                   ` Icenowy Zheng
2025-02-10 10:24                                                     ` Danilo Krummrich
2025-02-13  3:49                                                       ` Icenowy Zheng
2025-02-13  6:41                                                         ` Abdiel Janulgue
2025-02-13  9:50                                                           ` Icenowy Zheng
2025-02-13 11:34                                                         ` Danilo Krummrich
2025-02-13 12:26                                                           ` Icenowy Zheng
2025-02-08 20:44                                               ` Theodore Ts'o [this message]
2025-02-09  0:47                                                 ` Danilo Krummrich
2025-02-09  3:42                                                 ` comex
2025-02-13 10:20                                                 ` David Airlie
2025-02-20 16:24                                                   ` Simona Vetter
2025-02-20 16:37                                                     ` Jason Gunthorpe
2025-02-20 16:52                                                       ` Jarkko Sakkinen
2025-02-13 19:52                                                 ` Ronja Meyer
2025-02-13 19:22                                             ` 33KK
2025-02-06 19:37                                           ` Danilo Krummrich
2025-02-06 20:16                                             ` Hector Martin
2025-02-07 17:14                                               ` Konstantin Ryabitsev
2025-02-07 18:02                                                 ` Hector Martin
2025-02-07 18:16                                                   ` Konstantin Ryabitsev
2025-02-09  8:25                                                     ` Neal Gompa
2025-02-10 17:28                                                       ` Mark Brown
2025-02-14  7:10                                                         ` Neal Gompa
2025-02-14 19:49                                                           ` Al Viro
2025-02-19 15:03                                                           ` Mark Brown
2025-02-07 18:33                                                   ` Linus Torvalds
2025-02-07 19:18                                                     ` Hector Martin
2025-02-07 18:53                                                   ` Dr. David Alan Gilbert
2025-02-07  9:41                                       ` Hector Martin
2025-02-07 10:20                                         ` Hector Martin
2025-02-07 10:51                                           ` Greg KH
2025-02-07 13:49                                           ` Simona Vetter
2025-02-07 14:54                                             ` Hector Martin
2025-02-10  7:52                                             ` Simona Vetter
2025-02-08 23:55       ` [PATCH v8 2/2] rust: add dma coherent allocator abstraction Carlos Bilbao
2025-02-09  6:44         ` David Airlie
2025-02-09 16:19           ` Carlos Bilbao
2025-02-09 16:28             ` Carlos Bilbao
2025-01-08 18:08   ` Daniel Sedlak
2025-01-08 19:09     ` Daniel Almeida
2025-01-09 11:14       ` Abdiel Janulgue
2025-01-09 11:19         ` Miguel Ojeda
2025-01-09 11:32         ` Miguel Ojeda
2025-01-10  8:07           ` Abdiel Janulgue
2025-01-12  0:41   ` kernel test robot
2025-02-04 16:54   ` Thomas Hampton
2025-02-05  2:41     ` Thomas Hampton
2025-02-10  8:54 ` [PATCH v8 0/2] Add " Pyrex
2025-02-10  9:09   ` Danilo Krummrich

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=20250208204416.GL1130956@mit.edu \
    --to=tytso@mit.edu \
    --cc=a.hindborg@kernel.org \
    --cc=abdiel.janulgue@gmail.com \
    --cc=airlied@gmail.com \
    --cc=airlied@redhat.com \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=dakr@kernel.org \
    --cc=daniel.almeida@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gary@garyguo.net \
    --cc=greg@enjellic.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@lst.de \
    --cc=iommu@lists.linux.dev \
    --cc=jgg@nvidia.com \
    --cc=kernel@valentinobst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=marcan@marcan.st \
    --cc=miguel.ojeda.sandonis@gmail.com \
    --cc=ojeda@kernel.org \
    --cc=phasta@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tmgross@umich.edu \
    --cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.