Live data from Hacker News

An open-source maintainer's guide to saying “no”

jlowin.dev

51–60 of 95 posts

Re: An open-source maintainer's guide to saying “no”

#51

> There is nothing more delightful than the drive-by PR that lands, fully formed and perfectly aligned, fixing a bug or adding a small, thoughtful feature. I'm actually generally not a fan of "drive-by" PR's. Unless the drive-by PR is fixing a simple bug in a simple way, then the contributor really should've opened an issue first. Doing otherwise is rude imo. This is actually open source etiquette that I'd like to se…

> Unless the drive-by PR is fixing a simple bug in a simple way, then the contributor really should've opened an issue first. Doing otherwise is rude imo.

I kindly disagree. If the project is open source, it means that I can fork it. If I find an open source project and want to add a feature to it, I will fork, implement my feature, and then open a PR to the original project. A couple things there:

1. I have no need to open a PR to upstream, it's totally right to keep my changes in my fork (as long as I honour the licence).

2. If the maintainers don't feel like merging my PR, they don't have to. It's their right. They may request changes, and I may choose not to implement them.

It's not the only way to do it: it's perfectly fine to open an issue and ask for guidance. But I don't see the problem in opening a PR saying "look what I did with your project: you can merge it if you want".

Re: An open-source maintainer's guide to saying “no”

#52
When I was a teenager I submitted a random/unsolicited pull request to something in the spree ecosystem, got a very nice message from the maintainer/author saying that he appreciates it but it wasn't in the direction he wanted to take the library, but I could collaborate with him in some other way. Glad for the patience in that message, if it were spicy I might have been put off programming.

Re: An open-source maintainer's guide to saying “no”

#53
post #37

My pet peeve is people who use LLMs to generate code, never check whether it works, and then submit a PR. As if open-source maintainers don't have enough chores.

It's not rare for me to ask if they tested it. They can lie, but if they say they did and it crashes on me right when I start it, then I may never trust this contributor ever again.

Also I don't hesitate to be frank in my review, it's okay to say "I won't merge your feature because I don't think I can maintain that, but you're free to keep your fork". Or "I can merge it if you change this and this", but in that case I need to actually merge if they do what I asked for.

Re: An open-source maintainer's guide to saying “no”

#54

> ... articulate the project’s philosophy, setting expectations before a single line of code is written... Historically, we could assume that since writing code is an expensive, high-effort activity, contributors would engage in discussion before doing the work, or at least seek some sign that time would not be wasted. Today, LLMs have inverted this. Code is now cheap. No. We could n ot assume that contributors would…

> No. We could not assume that contributors would engage in such discussion, in the past; nor has this been inverted today. If the author experience a shift in the nature of PR and discussions, then at the very least it's been inverted in the projects they maintain. Even if there were contributors that did so in the past, if the ratio increased it's an issue worth discussing. > Code "discusses itself" with you as wri…

> Perhaps (though i lean towards disagreement), but that discussion is not with the maintainer or rest of the team. "I thought about it and this is the best approach trust me bro" is not a great push request. All those questions the contributor answered and "discussed" are un-resolved for everyone else, and the burden of proof should be on the contributor.

I'm not sure what I'm missing, but that sounds very similar to the idea that the parent comment says about reflection happening before, during, and after writing the code. It's not at all uncommon for me to explain some code I pushed for review with something like "Originally, I planned to use approach X, but then I ran into complication Y, so I switched to approach Z to handle that". At least to me, this fits the pattern of reflecting beforehand (selecting an initial approach), during (deciding on how to handle a complication during the process of development), and after (literally the explanation itself to describe how the final state was reached), but it doesn't sound anywhere close to "trust me bro".

I don't read the parent comment as arguing against these sorts of explanations, just against the idea that the explanation could be sufficiently written entirely up front before any of the code was written.

Re: An open-source maintainer's guide to saying “no”

#55
> As an open-source maintainer, you should be ecstatic — in fact, you owe a significant debt — to every single person who engages with your project.

I totally disagree. I don't owe them anything at all. If anything, they're using my work, for free.

> After all, if you don’t want those interactions, keep your code to yourself!

Because I'm giving my code for free (generally under a copyleft licence) does not mean at all that I want interactions.

> The goal in open-source must always be to create a positive, compounding community.

Again, no. It may be one of your goals if you want to, but it's perfectly fine to open source your code without wanting to create a community at all.

Re: An open-source maintainer's guide to saying “no”

#56

A year ago I changed my CONTRIBUTING document to say that I don't accept pull-requests on my very modest open source project (a special purpose DNS server) I like coding, but am not fond of reviewing other people's code. Also, the few PRs I received weren't up to snuff: for example, they included code changes but not tests. If they included tests, they weren't comprehensive. And they never included documentation chan…

I think it's fine. Open source does not mean at all that it has to be open development. Doesn't mean it cannot be, of course.

Re: An open-source maintainer's guide to saying “no”

#57

> we recently tried to nudge this behavior by requiring an issue for every PR I've not maintained or worked much with open source. But i would have assumed this was already common? It reflects how (from my experience) companies work internally with code. Discussion about a feature or a bug is done before writing any code (over lunch, or in a issue thread). We don't want to pay someone to write a feature we don't agre…

> We don't want to pay someone to write a feature we don't agree we need

We're talking about open source here, and saying "no" to unpaid, external contributors.

The way I approach it as an external contributor is that if the project is useful to me, I fork it, make my changes, and then open a PR in case the maintainers want to adopt them upstream. They don't have to, it's fine. But I don't have to ask for their opinion in an issue because I will just do what I want in my fork anyway.

Re: An open-source maintainer's guide to saying “no”

#58
I strongly disagree with the premise of the article and content being reiterated here by a number of commenters.

An incredibly common pattern is a maintainer thinking they know better in an area they are inexperienced in, and rejecting change because they don't like the sound of something or are unable to see past their cultural biases.

We know this by another name - not invented here.

Common, practical areas this occurs in boring open source business CRUD applications:

- Address models aren't thought out. "Why would anyone want geocoding? What addresses don't fit the US style?"

- Phone numbers get modelled as plain strings and all of a suddenly "but changing them to be standardised is really hard"

- Company, brand, account structures rarely add URLs or links to external datasets. What possible use is a wikidata ID?

- Why would I put in vCard/CSV/Schema.org/any other import/export?

All of these areas are often ancillary to the primary purpose of whatever the application is, so get rejected out of hand.

But the use cases they enable for users - who don't use the application in isolation - are then completely blocked.

- Map, route or visualise spatial data mashed up with other datasets. Send people to remote locations without formal addresses.

- Hook up phone systems to make your system run for teams with centralisation, integrate SMS based messaging, etc.

- Join to public datasets to understand more about your customers (food safety, licencing registers, corporate entity registers, contract management systems, etc)

A typical maintainer is going to say "wait, what; my accounting system is all about finance, none of this is relevant!"; but they miss out on what users really want in many cases: interoperability or data portability.

The problem is the maintainer's frame is in their world view; and if they aren't dogfooding their project they aren't running into their users problems - how likely is it the maintainer is the BI analyst, or the low level data entry person, or from a country where QR code payment is the norm, or a million other considerations?

Re: An open-source maintainer's guide to saying “no”

#59
post #41

I’ve had some experience developing an infrastructure-level system for use around the world. I had to maintain it, almost completely alone, for ten years, before it was taken over by a competent team, and I could finally walk away. One of the most important things I did, in that decade, was say “no” a lot. Some folks were not happy about it, and Godwin’s Law was invoked on my ass, multiple times. A lot of requests we…

> I had to maintain it, almost completely alone, for ten years, before it was taken over by a competent team, and I could finally walk away. No you didn't. Younger folks reading this, you don't owe anyone free labor. If you want to donate your time to open source that's ok but just know there are thousands of people in this industry that don't care about your mental health and will continue to take advantage of you b…

One might argue that programmers owe something to all those maintainers who so nonsensically donated their time and money to furthering a free software ecosystem that every single one of us - humans, not just programmers - benefit from. Maybe it's money, as you seem to imply, but maybe it's more time and labor to continue to further that cause.

Re: An open-source maintainer's guide to saying “no”

#60

I strongly disagree with the premise of the article and content being reiterated here by a number of commenters. An incredibly common pattern is a maintainer thinking they know better in an area they are inexperienced in, and rejecting change because they don't like the sound of something or are unable to see past their cultural biases. We know this by another name - not invented here . Common, practical areas this o…

> A typical maintainer is going to say "wait, what; my accounting system is all about finance, none of this is relevant!"; but they miss out on what users really want in many cases: interoperability or data portability.

I think you are the one missing the point.

Users can want whatever they want to want. They're receiving, generally, et gratis et libre software which depends on someone else's time and effort. If they aren't getting what they want from the project, they are free to fork that project — and when they do, they're still getting more than they would otherwise be entitled to (i.e. the ability to start from scratch).

Further, a maintainer by definition is normally someone not charged with implementing new functionality (that's a "developer"), but simply with bugfixes.

Post reply on HN