Single-Maintainer Dependency Risk Is the One to Watch
One person maintains the library your product depends on. Here is why single-maintainer dependency risk is worse than an unmaintained one, and what to do.
The most underpriced risk in your dependency tree is the library maintained by exactly one person. Not abandoned, not corporate-backed, just one human doing it in their spare time. It looks healthy, so nobody flags it, and then that person burns out, changes jobs, has a kid, or gets bored, and the library stops moving the week you need a security fix. Single-maintainer risk is worse than obvious abandonment, because abandonment is at least visible. A solo project hums along looking fine right up until it does not, and you never planned for it.
Why one maintainer is a hidden liability
A single-maintainer project has a bus factor of one, and you did not choose that, you inherited it by installing the package. Everything depends on one person's continued interest and availability. There is no succession, no team to absorb the load, no organization with a reason to keep it alive. The moment that person steps back, your dependency is frozen at whatever version you are on.
This is the same failure mode as bus factor in your own codebase, except you have even less control, because it is not your code and not your person. You cannot reassign the work or document the knowledge. You can only wait, fork, or migrate, and none of those are things you want to discover you need under a deadline.
Why it beats obvious abandonment for danger
Counterintuitively, a clearly dead library is safer to depend on than a solo-maintained active one. With a dead library you know where you stand: nothing is coming, so you either vendor it and own it or you migrate now, on your schedule. There is no false comfort.
A single-maintainer project gives you false comfort. It ships releases, closes issues, looks alive, so you build deeper on it and let it sink further into your core. Then it stops, and now you are deeply coupled to something with no future, discovering the single point of failure at the worst time. The health looked real because for a while it was. That is exactly what makes it dangerous. The evaluation people run when they check open source dependency health will show green, and green here means fragile.
How to spot it in your tree
Pull your dependency graph and, for each meaningful package, count the people who have merged code in the last year. Not contributors ever, mergers recently. When that number is one, you have found a single-maintainer risk. Weight it by how deep the package sits in your product. A one-maintainer utility on the periphery is a shrug. A one-maintainer library at the core of your payment or auth path is a real exposure.
The transitive tree is where this hides worst. Your well-run direct dependency might rest on a solo-maintained transitive one, which is why transitive dependencies are the real risk. A repo intelligence pass over the full tree makes the ownership concentration visible instead of leaving it buried three levels down where nobody looks.
What to do about it
You have four moves, and the right one depends on depth and size. Vendor it: if the library is small and stable, copy it into your codebase and own the slice you use. You lose upstream updates and gain control, which for a solo-maintained package is usually a good trade. Contribute: become a second maintainer, which turns a bus factor of one into two and buys you standing. Wrap it: put an abstraction layer between your code and the dependency so swapping it later is a contained job, not a rewrite. Or migrate now, before you are forced to.
The one move that is not on the list is ignoring it. A single-maintainer dependency at your core will eventually make a decision for you, on its timeline, not yours. Pick your response while you still have the luxury of choosing.
The rule I use
When a dependency has one maintainer and sits anywhere near the load-bearing part of a product, I either abstract it behind an interface or vendor it outright. The library can look as healthy as it wants. Health is not the question. Continuity is, and one person is not continuity. Plan for the day they stop, because in open source that day arrives for solo projects far more often than the star count would ever suggest.