NIH is cheaper than the wrong dependency

Paid Dependencies, Vendor Lock‑In, and Longevity

  • Several comments argue paid dependencies are often risky: incentives for lock‑in, single support source, and danger when the vendor folds or is acquired.
  • Counterpoint: paying can be good if it guarantees people whose job is to maintain and support the code; open source can also abandon users.
  • Many recommend only paying for components that implement open standards with alternative implementations, to preserve an escape route.

Dependency Minimalism, Vendoring, and NIH

  • Strong support for “dependency minimalism”: fewer moving parts, less that can break, easier long‑term maintenance.
  • Common heuristic: “Can I vendor it?” If yes, it may be better to copy small libraries into your tree and own them. Vendoring is framed as accepting maintenance responsibility, not just snapshotting.
  • Forking or vendoring dependencies (and even their transitive deps) is suggested to avoid disappearing repos and to understand build chains.
  • Others argue a strict “zero dependencies” stance is overreaction: most small, well‑scoped libraries are harmless and save time.

Evaluating Dependencies: Risk, Scope, and Lock‑In

  • Suggested process: only use OSS, review license, ubiquity, community health, security history, and ease of replacement.
  • Only adopt dependencies you’d be willing and able to maintain or fork. Some advocate preemptive forking; others say that’s too heavy and prefer vendoring or caching.
  • Ubiquity and scale are seen by some as a safety signal; others report severe bugs and slow responses even in big‑company libraries.

Where NIH Makes Sense (and Where It Doesn’t)

  • NIH is seen as appropriate when:
    • You need only a narrow subset of functionality, can implement it in ≤ a day, and want tight control.
    • The domain is core to your business (e.g., a custom ledger, highly tuned storage, niche graph DB, embedded time‑series engine).
  • Generally discouraged for: databases, cryptography, OSes, or large game engines—unless you truly have unique constraints and deep expertise.

AI and NIH

  • Some teams use LLMs to generate internal tools or codegen utilities instead of adding runtime dependencies.
  • Concerns: AI‑generated clones of libraries may inherit old CVEs, introduce subtle bugs, and lack automated vulnerability tracking.

Organizational and Human Factors

  • Dependencies can reduce time‑to‑market, which often dominates business decisions.
  • Long‑lived or safety‑critical systems (energy, finance, compliance) tend to avoid sprawling dependency trees due to security, audit, and maintenance costs.
  • Multiple commenters stress that hidden long‑term costs of upgrades, security fixes, and lock‑in are routinely underestimated.