frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

An Open-Source Maintainer's Guide to Saying No

https://www.jlowin.dev/blog/oss-maintainers-guide-to-saying-no
102•jlowin•2h ago

Comments

zygentoma•1h ago
Hm, my first though is

> A user proposes a new feature. It’s well-designed, useful, and has no obvious technical flaws. And yet, the answer is “no.”

Why? If it is well-designed, useful, and has no obvious technical flaws, why shouldn't it be included in open source software.

> This work has gotten exponentially harder in the age of LLMs.

Maybe that is more of the problem. But that's probably not really "well-designed, useful, and has no obvious technical flaws" kind of stuff …

But since this is about an MCP tool, almost reads like LLM generated and the image above definitely is … maybe you're part of the problem!

johnny22•1h ago
> Why? If it is well-designed, useful, and has no obvious technical flaws, why shouldn't it be included in open source software.

If you have a vision and boundaries for what the software does, then you wouldn't want to take a feature that makes it do more than that. The project owner still has to keep the scope where they want it.

arccy•1h ago
it may not have technical flaws, but it can be scope creep, doesn't align with the vision for a project, or just additional complexity the project doesn't want to take on.

remember that people will often drive by contribute features they want, but then it's up the maintainers to keep it working forever (until they remove it, if they even can).

clickety_clack•1h ago
If it’s your project, it’s up to you to decide where the focus of the project should be. There’s lots of good ideas on the boundary of every project, and you can’t include them all. Even useful features can be a distraction.
aDyslecticCrow•1h ago
> Why? If it is well-designed, useful, and has no obvious technical flaws, why shouldn't it be included in open source software.

I think its quite easy to find examples by thinking of the extremes.

- Why don't git add a native UI? (out of scope)

- Why don't excel add lua scripting? (already has visual basic)

- Why don't neofetch add a built-in ascii art editor so people can more easily customize their logo display? (Bloat)

- Why don't pandas and numpy just merge? (confusing user experience)

They can be amazingly written, with impeccable docs and test suite. But they're out of scope, deviate from the project philosophy, confuse the user, add maintenance for the future, or could could be their own projects.

johnisgood•32m ago
Sure. Although git has a simple native UI, and there are many frontends, like Git Cola, lazygit, and so forth, although only the first is developed by git. The others are welcome. It is definitely out of scope for git itself.
OtherShrezzing•59m ago
> Why? If it is well-designed, useful, and has no obvious technical flaws, why shouldn't it be included in open source software.

More features means more code to maintain. More code to maintain means more time consumed. Time is finite. Time is the only resource you really meaningfully have in life.

I’m prioritising watching my kids take their first steps over expanding the scope of my open source python package.

Aurornis•58m ago
> Why? If it is well-designed, useful, and has no obvious technical flaws, why shouldn't it be included in open source software

In my experience, there is a subset of open source projects where contributions are theoretically accepted, but in practice the maintainer doesn’t actually want to accept anything from anyone else unless it’s something they’ve asked for. They view contributors as assistants who are willing to volunteer their time to handle tasks that have been delegated, but they prefer to keep it as their own project.

That’s fine, of course, if that’s what they want from their project. It’s their project. Where it starts to get frustrating is if they throw a fit when someone forks their open source project, or when they start rejecting PRs from other people but then lightly rewriting the code and resubmitting it as their own work. Both of these have happened to me in recent years. In one case I spent a long time writing a new feature that the maintainer had created an issue for and marked as open for contributions. Yet no amount of responding to his PR reviews made him happy about the structure of my solution. Eventually I didn’t respond for 30 days because I was busy and he closed it as stale.

Then a few months later I saw the release notes included the feature he claimed he didn’t want. I looked at the commit history and saw he had committed something strikingly similar to the exact PR I had been working on, with only minimal changes to function names and locations of code blocks.

That’s life, of course, but at the same time it’s getting a little frustrating to read all of the writing holding open source maintainers up on a pedestal simply because they’re holding that position. Over the years many of the projects I use have had to fork off and take new leadership and names because the old maintainer was getting in the way of progress. Again, they are within their rights to do so, but that doesn’t mean we need to praise any and every move they make.

StilesCrisis•45m ago
I had a somewhat similar experience with libjpeg-turbo. Found a real bug, submitted a working PR, needed to argue my case that the bug was real despite providing examples, and eventually the maintainer paraphrased my PR into their own PR and landed their own fix. It's fine I suppose, but it was a weird experience.
arccy•14m ago
sometimes people have a strong vision for the code they maintain. in those cases they'll usually more happily accept issues, rather than code. but GitHub doesn't let you turn off prs...
2OEH8eoCRo0•52m ago
Say you're making a music player and someone opens a PR to add PDF support. Suppose the implementation is immaculate.
ChrisMarshallNY•49m ago
> Why? If it is well-designed, useful, and has no obvious technical flaws, why shouldn't it be included in open source software.

Ooh! Ooh! I know this one!

Very often, folks want to modify a shared system, to optimize for their own application.

However, the modifications could do things that would negatively impact other users of the system, or make it difficult to customize for specific implementations.

They can also add maintenance overhead, which can impact quality and release cadence.

einpoklum•1h ago
> ... 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 engage in such discussion, in the past; nor has this been inverted today.

Let's start with the second point: Good code, that reflects, or even evolves, a project's philosophy - is "expensive". LLMs can't write it (will they ever? I don't know), so they have not made it less expensive.

As for the first point: The order of things has never been quite like that. Code "discusses itself" with you as write it, and once you've written a piece, your perspective on what you're writing and what you should be writing in the future - and even on what you had already written. Your own reflection happens before writing any code, during writing, as well as afterwards.

aDyslecticCrow•53m ago
> 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 write it

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.

If you have to think it through in front of an IDE to think about it properly, script it out in some quick python and return to the issue thread to discuss the approach. Perhaps post the python prototype even.

einpoklum•18m ago
> ... is not a great push request.

indeed, but that is no different now that it was before.

> If you have to think it through in front of an IDE to think about it properly, script it out in some quick python

Again, that is not possible; or rather, it is meaningless. It's like telling an author to sketch out a few chapters ahead. It doesn't work like that: The story has its own life and nature - even if, to an extent, drawn out from the author's psyche and unconscious - which develops through the process of writing. The sketches are very often just not what the story works itself out to be. In fact, not unlike literature - sometimes, truths reveal themselves only on the first or second rewrite.

aDyslecticCrow•1h ago
> 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 agree we need, or that collides with future maintenance.

Even before AI, i'd argue the vast majority of code is cheap and simple. But that is what makes it more important than ever to decide what code should exist before someone (well paid) wastes a day or week writing it.

criemen•1h ago
> Even before AI, i'd argue the vast majority of code is cheap and simple. But that is what makes it more important than ever to decide what code should exist before someone wastes a day or week writing it.

This 1000%. In my opinion, the biggest part of my job is figuring out what should be built at all, not building what we all eventually agree should be built - that's often pretty easy, AI or no AI.

Aurornis•55m ago
Requiring an issue per PR makes sense for significant bugs and features, but taken to the extreme it feels arbitrary and pedantic.

I occasionally submit documentation fixes when I find broken docs (outdated commands in the docs, incorrect docs). I’ve had these rejected before because someone insisted I create an issue and have it go through some process first just to submit an obvious 1 line fix.

At the extremes it clouds the issue backlog. You try searching for something and find pages and pages of arbitrary issues that didn’t need to exist other than for someone to get past the gatekeeper.

giancarlostoro•47m ago
I forget the episode its been years but the Talk Python podcast had someone I think from the Django team mention tips on contributing to open source and one of them was start by volunteering to document things, most devs dont do it or want to do it. It forces you to know and understand the codebase and by the time you want to contribute more you know the library better.
Aurornis•42m ago
I actually don’t encourage this. If you find broken docs then contributing a fix is good.

However, writing docs as the starting point for someone’s entry to a project doesn’t produce good results much of the time. You need someone who is more familiar with the project to write the docs. Having the docs written by someone new to the project can lead to some really frustrating docs.

This is even more true now that projects attract junior devs who want to build their resumes and think that documenting can be done by pointing Claude Code at the codebase and demanding it write some docs.

It also encourages bad behavior from devs who think they’re doing a favor for new contributors by leaving the documentation as an exercise for someone else.

aDyslecticCrow•44m ago
You could easily say that docs, comments, and formatting changes don't need issues. The core problem the author is trying to cope with is code changes or features that could deviate the project or scope. I feel it's quite reasonable to set a blanket "issue first" rule for any change beyond like 5 rows of code.
serial_dev•44m ago
This was / is not my experience. I worked mainly on frontend code, web and mobile app.

As a developer, I got the task, an “order” that something needs to be added. Best case scenario, my product owner / manager came up with it, because they talk to customers and noticed it would be helpful. Worse case scenario, someone else above them told them to do it because “we need it”, and I just hope the product person on my team properly vetted the request. Worst case scenario, the “order” came down to our team, and the managers push to the individual contributors and there is no room for discussion at this point anymore and an arbitrary (made up) deadline that is somehow always unrealistic.

aDyslecticCrow•35m ago
Oof, ye i have heard about this kind of company culture. I think front-end and app development is particularly prone to cheap and dirty iteration. Bugs are cheap and non-consequential. New features are visible, fast to add, and make higher-ups happy.

I work in industrial embedded C. So perhaps i have weird expectations about the level of pedantry. A 10 row code change may take week to discuss, and likely require an open issue and test-case to get through.

At worst, a small 100 row code-change may require a 8000$ independent re-certification of the device before being fully pulled into master.

1718627440•33m ago
I think the stereotypical open source way is that you modify the code in private to what you want it to be and then upstream that in case it might be useful for others.
gus_massa•13m ago
I made a lot of PR for Chez Scheme (and indirectly Racket). For me it's easier to write the code, perhaps because I'm not an English native speaker, but my Spanish is bad too.

Most of my PR are like 30-50 LOC (including comments and tests), with a few very related features, and I have probably a 90-95% merge rate. Sometimes writing the explanation takes a long time. Many times while writing the code I get a lot of small surprises and unexpected corner cases. So most of the time a previous discussion would be too generic to be useful for me and inteligible for the maintainers.

Anyway, my idea is to take only a few hours (4?), perhaps distributed in a few slow days. So if it's not merged it's not a big deal, not hard feelings. Also a short feature is easier to review and modify if necessary.

firefax•1h ago
More OS projects need to be willing to stop adding features and just focus on the occasional bugfix or security update. Look at say GIMP. They have no market force demanding they add features every year in the way Adobe does. And while it's good and cool to add basic functionality like new image standards when they are published, many projects get stuck in this cycle of adding "stuff" for no reason.

(Back in the day that's why I liked Firebird^H^H^H^Hfox -- you could bolt on extensions if you wish, but the core product was light.)

ChrisMarshallNY•57m ago
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 were ones that would optimize for a specific use case, but it was a generalist system, so it had to remain “imperfect.”

In the end, it all worked out well, if not “perfectly.” It’s now a worldwide system, being run by hundreds of organizations, and used daily, by thousands of people.

deckar01•57m ago
I see a solution to this for both sides: encourage published forks. This allows the contributor to shoulder the burden of packaging and support. If you support the patch, adopt the fork and advocate on the issue. If you find issues, help refine it in the fork’s issue tracker.
jaggederest•45m ago
Or build a proper plugin system, or other means of composition.

I like the "core" plus "contrib" model myself, but it does require a lot of upkeep which is often the reason to say "no" in the first place.

Nevermark•54m ago
> "“In writing, you must kill all your darlings.” - William Faulkner [0]

This quote is becoming a cliche. Perhaps because it provides such helpful dramatic motivation to the act of maintaining creative quality through active negative selection. When have the freedom to create things we want, that can be hard.

[0] https://www.goodreads.com/quotes/79715-in-writing-you-must-k...

prymitive•42m ago
If someone has a “readfile” cli app on gh it’s just a moment away from a issue being open:

> thanks for a great project, in our org we have a requirement that we only write files, not read them. Can you please add —-write flag so this app works for us?

The fact that someone clones your repo or uses your software doesn’t mean that you owe them anything. Every person with open source code should realise this before they start responding to feature requests.

ungreased0675•24m ago
What would be an example of a well-designed, useful feature that doesn’t mesh with the philosophy of the project?
martinky24•22m ago
“What if we added a GUI based web browser to CURL?”
busymom0•11m ago
"What if we allowed posting GIFs to hacker news posts and comments?"
arccy•11m ago
Maintainers really do need to say no more often, and teach users to be way less entitled. helping maintain a big project you see all sorts of users trying to push features just for themselves onto you.

An Open-Source Maintainer's Guide to Saying No

https://www.jlowin.dev/blog/oss-maintainers-guide-to-saying-no
103•jlowin•2h ago•35 comments

Magical systems thinking

https://worksinprogress.co/issue/magical-systems-thinking/
221•epb_hn•5h ago•67 comments

Show HN: A store that generates products from anything you type in search

https://anycrap.shop/
651•kafked•10h ago•219 comments

RIP pthread_cancel

https://eissing.org/icing/posts/rip_pthread_cancel/
115•robin_reala•4h ago•53 comments

486Tang – 486 on a credit-card-sized FPGA board

https://nand2mario.github.io/posts/2025/486tang_486_on_a_credit_card_size_fpga_board/
123•bitbrewer•7h ago•35 comments

Perceived Age

https://sdan.io/blog/perceived-age
50•jxmorris12•3d ago•29 comments

WhoBIRD is now deprecated on certified Android devices

https://github.com/woheller69/whoBIRD
34•proactivesvcs•2h ago•16 comments

The Case Against Social Media Is Stronger Than You Think

https://arachnemag.substack.com/p/the-case-against-social-media-is
25•ingve•3h ago•14 comments

Safe C++ proposal is not being continued

https://sibellavia.lol/posts/2025/09/safe-c-proposal-is-not-being-continued/
63•charles_irl•3h ago•37 comments

‘Someone must know this guy’: four-year wedding crasher mystery solved

https://www.theguardian.com/uk-news/2025/sep/12/wedding-crasher-mystery-solved-four-years-bride-s...
178•wallflower•7h ago•45 comments

My First Impressions of Gleam

https://mtlynch.io/notes/gleam-first-impressions/
147•AlexeyBrin•8h ago•54 comments

Mago: A fast PHP toolchain written in Rust

https://github.com/carthage-software/mago
123•AbuAssar•7h ago•51 comments

How Ruby executes JIT code

https://railsatscale.com/2025-09-08-how-ruby-executes-jit-code-the-hidden-mechanics-behind-the-ma...
53•ciconia•4d ago•2 comments

Show HN: CLAVIER-36 – A programming environment for generative music

https://clavier36.com/p/LtZDdcRP3haTWHErgvdM
86•river_dillon•7h ago•18 comments

Lessons in Disabling RC4 in Active Directory

https://syfuhs.net/lessons-in-disabling-rc4-in-active-directory
10•speckx•2d ago•1 comments

Open Source SDR Ham Transceiver Prototype

https://m17project.org/2025/08/18/first-linht-tests/
63•crcastle•3d ago•7 comments

SkiftOS: A hobby OS built from scratch using C/C++ for ARM, x86, and RISC-V

https://skiftos.org
405•ksec•17h ago•78 comments

UTF-8 is a brilliant design

https://iamvishnu.com/posts/utf8-is-brilliant-design
763•vishnuharidas•1d ago•304 comments

Japan sets record of nearly 100k people aged over 100

https://www.bbc.com/news/articles/cd07nljlyv0o
261•bookofjoe•8h ago•163 comments

Java 25's new CPU-Time Profiler

https://mostlynerdless.de/blog/2025/06/11/java-25s-new-cpu-time-profiler-1/
150•SerCe•13h ago•80 comments

How to Use Claude Code Subagents to Parallelize Development

https://zachwills.net/how-to-use-claude-code-subagents-to-parallelize-development/
221•zachwills•4d ago•99 comments

Wimpy vs. McDonald's: The Battle of the Burgers

https://www.historytoday.com/archive/history-matters/wimpy-vs-mcdonalds-battle-burgers
9•lermontov•1d ago•9 comments

Energy-Based Transformers [video]

https://www.youtube.com/watch?v=LUQkWzjv2RM
25•surprisetalk•4d ago•2 comments

QGIS is a free, open-source, cross platform geographical information system

https://github.com/qgis/QGIS
541•rcarmo•1d ago•120 comments

Many hard LeetCode problems are easy constraint problems

https://buttondown.com/hillelwayne/archive/many-hard-leetcode-problems-are-easy-constraint/
619•mpweiher•1d ago•494 comments

Legal win

https://ma.tt/2025/09/legal-win/
227•pentagrama•20h ago•193 comments

Weird CPU architectures, the MOV only CPU (2020)

https://justanotherelectronicsblog.com/?p=771
97•v9v•4d ago•29 comments

The value of bringing a telephoto lens

https://avidandrew.com/telephoto.html
94•freediver•4d ago•95 comments

Show HN: Vicinae – A native, Raycast-compatible launcher for Linux

https://github.com/vicinaehq/vicinae
124•aurellius•4d ago•29 comments

‘Overworked, underpaid’ humans train Google’s AI

https://www.theguardian.com/technology/2025/sep/11/google-gemini-ai-training-humans
234•Brajeshwar•10h ago•127 comments