Never Update Anything

Meta about the article and “never update” irony

  • Commenters note the joke that an article titled “Never Update Anything” has multiple edits and a server overwhelmed by HN traffic.
  • Some see further irony that the blog might need migration, caching, or a new CMS to cope with load.
  • Several suggest static-site generation; examples show tiny hardware easily surviving HN with static hosting.

Update strategies and risk management

  • One camp argues for minimizing updates: run stable systems for years, preferably offline and locked down.
  • Another camp argues that avoiding updates makes them rarer and more painful; continual small updates keep deltas manageable.
  • Various strategies are proposed:
    • Run 1–2 versions behind and delay updates by days or weeks.
    • Use LTS releases and “tip & tail” models with fast-moving “tip” and minimally changed “tail.”
    • Avoid very fresh releases and randomize update schedules to reduce mass breakage risk.

Quality, QA, and the internet-era shift

  • Multiple comments lament that easy online updating normalized weak QA.
  • Older console/game workflows, with strict external QA and expensive distribution, are contrasted with today’s “ship now, patch later” culture.
  • Frequent updates are seen by some as a sign of poor quality; others note that historically bugs simply persisted for years.

Real-world legacy and long-lived systems

  • Many enterprises, governments, and hospitals still run outdated, unpatched Windows (including XP, Vista, 7, 10).
  • Some customers refuse to drop old OSes, forcing vendors to stay on old toolchains (e.g., Java 8).
  • Storage and data-center vendors historically used conservative “target code” policies, avoiding the latest release in production.

Security vs connectivity and “just security updates”

  • Several argue for “never update and never expose to the internet” as a practical compromise.
  • IoT and auto-updating appliances are criticized as vectors for enshitification and risk.
  • Others point out that separating “just security patches” from features is hard: backporting is expensive and interactions can introduce new bugs.
  • There is concern that “security updates” are sometimes vehicles for unwanted features or removals.

Languages, frameworks, and long-term stability

  • Go is repeatedly cited as a good fit for people who dislike breaking changes; Common Lisp and some ecosystems are praised for decades-long stability.
  • Java’s multi-train “tip & tail” release model is described in detail as trying to balance new features vs stability.
  • Some want 10–20 year framework lifetimes; others call this unrealistic given evolving platforms and developer churn.
  • AngularJS is held up as an example of a “never dies” legacy framework still in production years after planned migrations.

Infrastructure choices: containers, distros, and orchestration

  • Some prefer lifecycle management of entire container images over in-place updates.
  • Static sites plus simple web servers (nginx, Apache) are highlighted as extremely resilient and resource-light.
  • There is debate over Alpine vs Ubuntu LTS; some prefer “boring” stacks (Apache, Ubuntu) for predictability.
  • Docker Swarm is criticized as unreliable at scale with poor issue response; several report migrating to Kubernetes despite its complexity.
  • NixOS/Guix and “OS as code” are praised conceptually, but Nix’s language and ecosystem complexity turn some users away.

Business incentives and user manipulation

  • A recurring theme is that business incentives favor constant churn: new features, rewrites, and monetization over long-term support.
  • Engineers are seen as partly complicit, chasing high salaries and shiny projects while unglamorous LTS work is underpaid.
  • Dark patterns like paywalled “Skip this update” buttons are cited as emblematic of manipulative update practices.