top | item 30017919

Common Lisp ASDF maintainer considers resignation

147 points| clircle | 4 years ago |mailman.common-lisp.net

66 comments

order
[+] reikonomusha|4 years ago|reply
A new maintainer was added to the software in question who is slightly less conservative about making changes, and the problematic PR has been merged. There's no real news; just a couple frustrated people who needed to vent.
[+] tgbugs|4 years ago|reply
[+] ozten|4 years ago|reply
TLDR;

"Dev: Oh, you must have been using undocumented behavior of ASDF. Your code will continue to work as before, but if you change this #\- to a #\/ it'll stop complaining. User: Our code used to work in ASDF-stable. Any warning at all breaks our build, so it's broken in ASDF-devel. Just make it work like it did in ASDF-stable again. ... User: That undocumented behavior works well for us, though. Dev: That behavior that is a burden for us as ASDF maintainers, and we want to clean up our code and stop supporting it altogether."

[+] Others|4 years ago|reply
Is it really sane to have a world of software that can’t survive new compiler or loader warnings? That just seems crazy to me
[+] throwaway81523|4 years ago|reply
Thanks for that link. It is an overlong but has some interesting comments about Lisp culture, Hyrum's law, and backwards compatibility. "Don't break stuff" is valuable.
[+] eslaught|4 years ago|reply
People here should also review the follow-up post: https://mailman.common-lisp.net/pipermail/asdf-devel/2022-Ja...

This part is especially relevant to some of the discussion in this thread:

> I understand that confronting this issue is more difficult than talking about whether or not ASDF should be issuing a warning. But that's not the question that is at hand.

[+] reikonomusha|4 years ago|reply
There are project X and project Y.

X is a critical, core library.

Y is a very popular project.

X and Y are both open source projects with permissive licenses.

Y depends on X.

As a convenience to X itself, X makes a change that causes warnings in dependent projects (basically every project in existence). To fix the warnings, dependent projects must rename their sub-project identifiers. For Y, this means the `Y-module` identifier must change to `Y/module`. (Alternatively, you can keep `Y-module`, but you have to split apart and slightly restructure your build system files.)

Y does not want to do that because Y's project has been working fine for a decade. The change does not benefit Y. As a user of X, Y would prefer to keep the systems named as is.

X does it for them anyway and makes a PR.

Y rejects the PR. Y does not want this change. Y even believes that X should be motivated to stay backwards compatible because a popular project like Y doesn't want to change.

X writes a post smearing Y. X also lambasts the Common Lisp community at large for not jumping in to support X's call for changing Y.

I absolutely fail to see how the Common Lisp community is complicit in anything wrong... or anything at all, for that matter.

I don't feel like I'm a poor community citizen because I don't get in the middle of my neighbor's disputes with the water company we both use.

[+] aidenn0|4 years ago|reply
Something I have noticed. Consider the following trolley problem:

- The switch operator is on a bathroom break

- The trolley is headed for a dead-end where it will crash and cause $100k in damages.

- Pushing the button will divert the trolley to an empty track where it will safely halt, doing no damage.

- A bystander who is not employed by the trolley company happens to observe all of this

For more people than I would have previously expected believe that the bystander has little-to-no moral obligation to push the button (and a frighteningly large number persist even when you change the scenario to the trolley hitting someone) . Someone who does push the button has gone above and beyond, as pushing the button wasn't their job after all.

I have seen a lesser version of this in some of the discussion over the past few days; plenty of commenters basically saying that it's not the job of people not involved in ASDF to lift a single finger to help the ASDF maintainers, and that it is fundamentally impossible for someone to be wrong to ever refuse to merge a patch.

I suppose if we continue this analogy the argument that Stas is making is roughly "I've had to push this button like 3 times now, this is getting ridiculous, maybe if I let it crash this one time, the trolley company will stop sending trains down this track"

[+] reikonomusha|4 years ago|reply
Stas is more like, "I have pushed this button in the past for this very project, and it caused my downstream users to blame me for their software breaking, and so I don't feel compelled to continue doing so."

On the whole though, making a comparison to trolleys crashing or $100k being wasted is a poor analogy.

So there's no uncertainty, we are talking about a project maintainer refusing to remove a warning that he thinks shouldn't have been there in the first place. It's not like there's in-fighting on the same project. It's that one independent project can't convince another independent project to make a change materially inconsequential to either.

[+] BeetleB|4 years ago|reply
The key words in your comment are "moral" and "obligation". And yes, vastly differing standards on both exist.

There are plenty[1] of people who will normally do something in a situation, but will utterly refuse to if they feel someone else is trying to morally obligate them into doing it.

Wise people know to avoid using those words when they want to convince someone to do something. Appealing to morality is often a good way to polarize people. It tends to work only if the parties come from a fairly common value system.

[1] Actually, I'd wager almost everyone is like this for something - that thing varying from person to person.

[+] User23|4 years ago|reply
In today's world, a rational bystander would consider the possible legal implications of getting involved and decide no thanks, not my circus, not my monkeys.
[+] valyagolev|4 years ago|reply
the discussion of "gifts" etc in https://gist.github.com/phoe/7d24bdb1f2be76a02fecba8cfecbef3... (which is a great suggestion to read to understand what's up with ASDF) reminds of the bigger context – the ongoing "discussion" about the "responsibilities" of open source developers. i'm putting both words into quotes because it doesn't seem that the language we have even supports discussing that there's any responsibility

Antoine de Saint-Exupéry's weird saying comes to mind, though. “You become responsible for what you've tamed.”

[+] Jach|4 years ago|reply
"It is the time you have wasted for your rose that makes your rose so important."

"It is the time I have wasted for my rose--" said the little prince, so that he would be sure to remember.

"Men have forgotten this truth," said the fox. "But you must not forget it. You become responsible, forever, for what you have tamed. You are responsible for your rose..."

"I am responsible for my rose," the little prince repeated, so that he would be sure to remember.

Then the little prince remembered something else, repeated far and wide and IN ALL CAPS so that all would see and remember, and he said to the fox, "THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."

--

But yeah, it's an ongoing discussion in the broader FOSS world. There aren't any central thought leaders anymore either, it's a very distributed discussion. As far as I recall reading anything of responsibility in, say, GNU's guiding philosophy, the only responsibility to users is to not force them into proprietary software and avoid pointing in that direction for solutions. Development and maintenance is typically voluntary, which naturally limits other responsibilities (Petit Prince notwithstanding), though it can also be supported by external "gifts" (their word for money). These days a lot of people only care about legal responsibility, and it can be a shock to some when they discover either as a user or an author/maintainer how little that is. I harbor a feeling that the newer generation of devs has come up without thinking much on why open source at all, it's just so common and a default in many cases. The prior gens, even if they disagreed with e.g. the GPL's viral nature, typically at least knew about and broadly agreed with GNU's 4 freedoms as one possible reason for doing FOSS in the first place. Though I think these thoughts are getting further off topic from the specific instance at play here, which in any case is full of older gen devs.

[+] CoastalCoder|4 years ago|reply
I learn a lot about diplomatic language from posts like that.

I wonder how much time it usually takes people to write those. For me, it takes a lot of time and revisions.

[+] reikonomusha|4 years ago|reply
The language is not diplomatic, in my opinion, since there doesn't appear to be any attempt at diplomacy. To me it reads as an over-worked individual who tried to do something he believed was good for a project he's not affiliated with, but it didn't go according to plan because that project's maintainer didn't agree with his approach, and hence feels extremely frustrated.

Likely as a result of his frustration, he is casting part of the blame for his troubles on a entire community of programmers who had absolutely nothing to do with his personal quarrel, because said programmers didn't come out of the woodwork to assist him in his goals. (The only way they could assist anyway is by pitchforks or dog-piles, which are hardly appropriate anyway.)

I felt that the maintainer of a fundamental piece of Lisp infrastructure judging and chastising an entire community of uninvolved people was completely inappropriate, and it was airing out dirty laundry to the wrong audience.

If he instead said something like:

> I have been working hard to push this critical piece of infrastructure forward, but it has been especially difficult with certain downstream maintainers of popular projects who refuse to upgrade, like So-And-So. As a community, this piece of software infrastructure is only valuable if we all upgrade. I don't have the energy or desire to repeatedly argue my case with all downstream users, and as such, I feel it might be time for me to step down from this project as maintainer.

then it would be completely appropriate and well-received. But instead he wrote something divisive and almost paternalistic.

[+] nielsbot|4 years ago|reply
I like that the language is also minimally-dramatic. Seems like the product of a clear-minded thinker. (And/or many revisions).
[+] akkartik|4 years ago|reply
Two obvious constraints in sharing software:

* If software producers are pushing out obviously incompatible changes (excluding Hyrum's law and https://xkcd.com/1172) to consumers, the eco-system is broken. This includes SemVer-aware package managers which transparently bump up past major-version boundaries by default. (That doesn't seem to be what's happening here.)

* If software consumers can't handle new warnings, the eco-system is broken. This includes C and now Common Lisp.

Creating an eco-system that threads the needle between these constraints is an exercise for the reader. One thing that helps is minimizing the depth of dependency stack: https://news.ycombinator.com/item?id=16882140#16882555. Beyond that, producers should be free to make incompatible changes as long as consumers can pick them up on their own schedule. Anything else is absolutely bonkers.

[+] EuAndreh|4 years ago|reply
> If software consumers can't handle new warnings, the eco-system is broken. This includes C (...)

I didn't get that. Won't this only happen to those using `-Werror` or something similar? If so, aren't they responsible for their breakage, and not the ecosystem?

[+] patrickmay|4 years ago|reply
I don't think it's reasonable to exclude Hyrum's law in this case. The existing users of ASDF aren't doing anything prohibited by the software. The new change being pushed by the ASDF maintainers breaks existing builds and will break more when they promote it from a warning to an error, as planned.

"Don't break userspace" is a solid guideline. The ASDF maintainers should come up with a less opinionated way to achieve their goals.

[+] drekipus|4 years ago|reply
If someone gives you a PR that is a small, minimal change, and is backwards compatible, but fixing a load of issues because someone wants to improve their system and is often being used in tandem with yours... then you're kinda just being a troll.

Anything being used by other people will of course have changes. Software is never static unless you keep it to yourself in a locked basement.

This whole ordeal is sort of like having arguments with the wife and proving your point all the way to the divorce court, instead of just nodding, shrugging the shoulders, and getting on with life.

[+] reikonomusha|4 years ago|reply
On the other hand, if a single, foundational project is continually issuing PRs across the ecosystem that, at the end of the day, are not a result of changes that seem to benefit the user tangibly, then I could see it getting annoying for project maintainers.
[+] jmercouris|4 years ago|reply
Well see what happens. I’m sure it’ll be fine in the end.
[+] phoe-krk|4 years ago|reply
The "I'm sure it'll be fine in the end" tends to happen because people often do invisible but crucial work in hope to make it fine in the end.