frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Package Management Is a Wicked Problem

https://nesbitt.io/2026/01/23/package-management-is-a-wicked-problem.html
54•zdw•4d ago

Comments

nacozarina•4d ago
Naming things, cache invalidation, and off-by-one errors: package management heavily emphasizes the hardest ‘blue-collar’ problems in CS.
dizhn•2h ago
Feature creep and not invented here too. (Bikeshedding?)
taeric•1h ago
I confess "not invented here" is a problem I think too many people focus on. Lots of things are redone all of the time.

That said, feature creep is absolutely a killer. And it is easy to see how these will stack on each other where people will insist that for this project, they need to try and reinvent the state of the art in solvers to get a product out the door.

iberator•58m ago
This is stupid and unproven quote. Citation needed. I hate that HN is repeating this over and over and it snot even real nor funny not new joke.

Try to say that at job interview if you don't believe

swiftcoder•46m ago
> Try to say that at job interview if you don't believe

If your interviewer doesn't at least crack a smile when you make the off-by-one joke, run, do not walk, to the nearest exit. You don't want to work with that dude

AlotOfReading•43m ago
It's not to be taken as a serious assessment of actual "hardest problems", but they're all difficult. Naming things is obviously impossible. Everyone gets cache invalidation wrong at first, from Intel/AMD to your build system.
lo_zamoyski•30m ago
To spell it out for you...

1. It's a joke. The hyperbole is intentional, but it does communicate something relatable.

2. You don't need a citation. Probably anyone with enough software development experience understands the substance of the claim and understands that it is (1).

bena•14m ago
Naming things is one of the hardest problems we have. In general. Taxonomy is incredibly difficult because it is essentially classification.

And things never fit neatly into boxes. Giving us such bangers as: Tomatoes are fruit; Everything is a fish or nothing is a fish; and Trees aren't real.

pixl97•10m ago
And to add further to the joke here the full saying goes more like

>There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.

And, if you actually work in software a very large portion of your hard to troubleshoot/fix issues are going to be the above.

finally7394•1h ago
I like that the author calls out the naming overloading, cause when I hear package management I think `pacman winget and apt`
pxc•1h ago
All three of those are "system package managers" (if you count winget as a package manager at all, which I would not). Pacman and APT are binary package managers while Homebrew is a source-based package manager. Cargo and NPM are language-specific package managers, which is a name I've settled on but don't love.

Imo there's an identifiable core common to all of these kinds of package managers, and it's not terribly hard to work out a reasonably good hierarchical ontology. I think OP's greater insight in this section is that internally, every package manager has its own ontology with its own semantics and lexicon:

> Even within a single ecosystem, the naming is contested: is the unit a package, a module, a crate, a distribution? These aren’t synonyms. They encode different assumptions about what gets versioned, what gets published, and what gets installed.

RetroTechie•1h ago
> Imo there's an identifiable core common to all of these kinds of package managers (..)

Indeed. It's hard to see why eg. a prog language would need its own package management system.

Separate mechanics from policy. Different groups of software components in a system could have different policies for when to update what, what repositories are allowed etc. But then use the same (1, the system's) package manager to do the work.

morpheuskafka•1h ago
The confusing part is that in many cases, end users are using NPM, pip, Go packaging, and to a lesser extent cargo etc to install finished end-user software. I've never written a line of JS but have installed all kinds of command line utilities with npm/npx.

Normally with an system package manager you would have a -lib package for using in your own code (or simply required by another package), a -src, and then a package without these suffixes would be some kind of executable binary.

But with npm and pip, I'm never sure whether a package installs binaries or not, and if it does, is it also usable as a library for other code or is it compiled? (Homebrew as you mentioned is source based but typically uses precompiled "bottles" in most cases, I think?) And then there is some stuff that's installed with npm but is not even javascript like font packages for webdev.

The other interesting thing about these language package managers is that they complete eliminate the role of the distribution in packaging a lot of end user software. Which ironically, in the oldest days you would download a source tarball and compile it yourself. So I guess its just a return to that approach but with go or cargo replacing wget and make.

cozzyd•56m ago
And plenty of people use pip for programs not even written in python!
pxc•1h ago
All this, and yet package management is still so much better than managing software any other way, and there are continually real advancements both in foundations and in UX. It is indeed full of wicked problems in a way that suggests there can be no clear "endgame". But it's also a space where the tools and improvements to them regularly make huge positive differences in people's computing experiences.

The uneven terrain also makes package managers more interesting to compare to each other than many other kinds of software, imo.

mooracle•1h ago
cargo works because rust was young enough to be opinionated. try that with npm and enjoy your mass exodus to the next thing that will also betray you

"but bun!" — faster shovel, same hole

pjmlp•59m ago
And only to the extent it is a pure Rust codebase, add a few other languages to the mix, and it becomes a build.rs mess as well.
mystraline•1h ago
It is and isnt.

Version hell is a thing. But Nix's solution is to trade storage space for solving the version problem.

And I think its probably the right way to go.

nitwit-se•37m ago
Agreed - Nix feels very well thought through.

I found Eelco Dolstra‘a doctoral thesis (https://edolstra.github.io/pubs/phd-thesis.pdf) to be a great read and it certainly doesn’t paint the picture of a wicked problem.

8organicbits•1h ago
Andrew has been writing a ton of interesting blog posts related to package management (https://nesbitt.io/posts/). He's had some great ideas, like testing package managers similar to database Jepsen testing.
pydry•1h ago
I dont really agree. Package management has a number of pretty well defined patterns (e.g. lockfiles, isolation, semver, transactionality, etc) which solve common use cases that are largely common across package management.

It is unfortunately one of the most thankless tasks in software engineering, so these are not applied consistently.

This was symbolized quite nicely by google pushing out a steaming turd of a version 1 golang package management putting while simultaneously putting the creator of brew in the no hire pile coz he couldnt reverse a binary tree.

In this respect it is a bit like QA - neglected because it is disrespected.

What makes it seem like a wicked problem is probably that it is the tip of the software iceberg.

It is the front line for every security issue and/or bug, especially the nastiest class of bug - "no man's land" bugs where package A blames B for using it incorrectly and vice versa.

hansvm•55m ago
Assuming the binary tree thing is the whole story, that still doesn't sound like a terrible choice on Google's part. Your first few years at Google you won't have enough leeway to do something like "make homebrew," and you will have to interact with an arcane codebase.

For tree reversal in particular, it shouldn't be any harder than:

1. If you don't know what a binary tree is then ask the interviewer (you probably _ought_ to know that Google asks you questions about those since their interview packet tells you as much, but let's assume you wanted to wing it instead).

2. Spend 5-10min exploring what that means with some small trees.

3. Then start somewhere and ask what needs to change. Clearly the bigger data needs to go left, and the smaller data needs to go right (using an ascending tree as whatever small example you're working on).

4. Examine what's left, and see what's out of order. Oh, interesting, I again need to swap left and right on this node. And this one. And this one.

5. Wait, does that actually work? Do I just swap left/right at every node? <5-10min of frantically trying to prove that to yourself in an interview>

6. Throw together the 1-5 lines of code implementing the algorithm.

It's a fizzbuzz problem, not a LeetCode Hard. Even with significant evidence to the contrary, I'd be skeptical of their potential next 1-3 years of SWE performance with just that interview to go off of.

That said, do they actually know that was the issue? With 4+ interviews I wouldn't ordinarily reject somebody just because of one algorithms brain-fart. As the interviewer I'd pivot to another question to try to get evidence of positive abilities, and as the hiring manager I'd consider strong evidence of positive abilities from other interviews much more highly than this one lack of evidence. My understanding is that Google (at least from their published performance research) behaves similarly.

cxr•44m ago
Every package manager lock file format or requirements file is an inferior, ad hoc, formally-specified, error-prone, incompatible reimplementation of half of Git.

Supply chain vulnerabilities are a choice. It's a problem you have to opt in to.

<https://news.ycombinator.com/item?id=46008744>

DarkNova6•1h ago
Is it not curious that languages known for their rigor have solid package manager/build tools while the remakning languages do not?

This is not a technical problem. It’s a cultural one.

no_wizard•1h ago
I don’t think those have much to do with it.

Certainly Go is a more rigorous language than say JavaScript but it’s package mangement was abysmal for years. It’s not even all the great now.

C/C++ is the same deal. The way it handles anything resembling packages is quite dated (though I think Conan has attempted to solve at least some of this)

I think Cargo and others have the hindsight of their peers, rather than it being due to any rigorous attribution of the language

pjmlp•1h ago
And vcpkg, not only Conan.
bee_rider•58m ago
Yes, we can even see—the languages with the best culture and superior rigor have the best package manager: C and Fortran, which just use the filesystem and the user to manage their packages.
iberator•56m ago
apt-get solved this 'problem' like 25 years ago.
EvanAnderson•36m ago
RPM "solved" it too.

I hate package management so much. I hate installing unnecessary cruft to get a box with what I want on it.

It makes me pine for tarballs built on boxes w/ compilers installed and deployed directly onto the filesystem of the target machines.

Edit: I'd love to see package management abstracted to a set of interfaces so I could use my OS package manager for all of the bespoke package management that every programming language seems hell-bent on re-implementing.

Am4TIfIsER0ppos•17m ago
Isn't it `apt` these days?
droopyEyelids•4m ago
Your parent comment is referring to its inception, 25 years ago.

Microsoft forced me to switch to Linux

https://www.himthe.dev/blog/microsoft-to-linux
436•bobsterlobster•2h ago•339 comments

Airfoil (2024)

https://ciechanow.ski/airfoil/
144•brk•2h ago•22 comments

Amazon axes 16,000 jobs as it pushes AI and efficiency

https://www.reuters.com/legal/litigation/amazon-cuts-16000-jobs-globally-broader-restructuring-20...
120•DGAP•59m ago•93 comments

Show HN: The HN Arcade

https://andrewgy8.github.io/hnarcade/
190•yuppiepuppie•5h ago•55 comments

Package Management Is a Wicked Problem

https://nesbitt.io/2026/01/23/package-management-is-a-wicked-problem.html
54•zdw•4d ago•31 comments

A verification layer for browser agents: Amazon case study

https://sentienceapi.com/blog/verification-layer-amazon-case-study
18•tonyww•14h ago•5 comments

Show HN: Cua-Bench – a benchmark for AI agents in GUI environments

https://github.com/trycua/cua
16•someguy101010•1d ago•1 comments

Show HN: Dwm.tmux – a dwm-inspired window manager for tmux

https://github.com/saysjonathan/dwm.tmux
52•saysjonathan•4d ago•7 comments

Rust at Scale: An Added Layer of Security for WhatsApp

https://engineering.fb.com/2026/01/27/security/rust-at-scale-security-whatsapp/
174•ubj•10h ago•54 comments

There's only one Woz, but we can all learn from him

https://www.fastcompany.com/91477114/steve-wozniak-woz-apple-the-tech-interactive-humanitarian-award
229•coloneltcb•4d ago•102 comments

A few random notes from Claude coding quite a bit last few weeks

https://twitter.com/karpathy/status/2015883857489522876
796•bigwheels•1d ago•672 comments

Show HN: Extracting React apps from Figma Make's undocumented binary format

https://albertsikkema.com/ai/development/tools/reverse-engineering/2026/01/23/reverse-engineering...
20•albertsikkema•5d ago•6 comments

Prism

https://openai.com/index/introducing-prism
721•meetpateltech•22h ago•473 comments

Make.ts

https://matklad.github.io/2026/01/27/make-ts.html
162•ingve•9h ago•85 comments

Kyber (YC W23) Is Hiring a Staff Engineer

https://www.ycombinator.com/companies/kyber/jobs/GPJkv5v-staff-engineer-tech-lead
1•asontha•4h ago

SVG Path Editor

https://yqnn.github.io/svg-path-editor/
187•gurjeet•5d ago•28 comments

Virtual Boy on TV with Intelligent Systems Video Boy

https://hcs64.com/video-boy-vue/
66•hcs•8h ago•13 comments

Show HN: Build Web Automations via Demonstration

https://www.notte.cc/launch-week-i/demonstrate-mode
13•ogandreakiro•1d ago•6 comments

I Overengineered a Spinning Top

https://www.youtube.com/watch?v=Wp5NodfvvF4
9•bane•5d ago•3 comments

430k-year-old well-preserved wooden tools are the oldest ever found

https://www.nytimes.com/2026/01/26/science/archaeology-neanderthals-tools.html
466•bookofjoe•1d ago•240 comments

Golden Ratio using an equilateral triangle inscribed in a circle

https://geometrycode.com/free/how-to-graphically-derive-the-golden-ratio-using-an-equilateral-tri...
139•peter_d_sherman•4d ago•37 comments

Pandas 3.0

https://pandas.pydata.org/community/blog/pandas-3.0.html
198•jonbaer•4d ago•72 comments

Thirty Years of the Square Kilometre Array

https://physicsworld.com/a/thirty-years-of-the-square-kilometre-array-heres-what-the-worlds-large...
51•mooreds•2d ago•13 comments

Rust’s Standard Library on the GPU

https://www.vectorware.com/blog/rust-std-on-gpu/
231•justaboutanyone•4d ago•46 comments

Doing the thing is doing the thing

https://www.softwaredesign.ing/blog/doing-the-thing-is-doing-the-thing
496•prakhar897•1d ago•165 comments

I Made a MIT Licensed Mecrisp-Stellaris Language Server

https://mecrisp-stellaris-folkdoc.sourceforge.io/mecrisp-stellaris-lsp.html
17•oldguy101•3d ago•3 comments

Lennart Poettering, Christian Brauner founded a new company

https://amutable.com/about
344•hornedhob•21h ago•542 comments

Parametric CAD in Rust

https://campedersen.com/vcad
205•ecto•20h ago•151 comments

Amazon closing its Fresh and Go stores

https://finance.yahoo.com/news/amazon-closing-fresh-grocery-convenience-150437789.html
283•trenning•1d ago•501 comments

Show HN: One Human + One Agent = One Browser From Scratch in 20K LOC

https://emsh.cat/one-human-one-agent-one-browser/
296•embedding-shape•1d ago•134 comments