TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Bitrot

67 pointsby avadorover 3 years ago

10 comments

NKosmatosover 3 years ago
Just a small clarification, this post is discussing software rot [0] and not data rot [1]. I think that most of us associate bit rot with the loss of data in a storage medium, frequently associated with corruptions in files causing them to not open or appear in a different form. There are file systems like ZFS and Btrfs that can detect and recover bitrot. This is something more obvious in photos where a few bit flips will result in a distorted&#x2F;discolored&#x2F;corrupted photo being displayed.<p>The concept of software rot due to old hardware, dependencies, updates, connectivity, architecture&#x2F;application changes is something different and has to do with the design of software and (as correctly stated) not with the ageing or fatigue of the software.<p>[0] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Software_rot" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Software_rot</a> [1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Data_degradation" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Data_degradation</a>
errcorrectcodeover 3 years ago
You&#x27;re telling me. I&#x27;m into vintage &#x2F; retro PCs and use IA to find drivers, manuals, and so forth. There are some manufacturers who have gone out of business and aren&#x27;t completely captured by IA. Some of the worst offenders obscured their downloads behind &quot;CGI scripts&quot; (indirect links requiring server-side code) rather than direct downloads. Organized, searchable, and comprehensive museum&#x2F;archiving of digital artifacts in one place is necessary to avoid bitrot and linkrot. Schematics and bill of materials (BOMs) are necessary to repair, recreate, and&#x2F;or simulate vintage hardware.<p>If I can&#x27;t find hardware jumper information anywhere, some older cards are simple enough that knowing ISA or PCI bus pinouts, searching Octopart for datasheets, combined with a quality DMM can be used to painstakingly trace and determine functionality.<p>The other component necessary is the human brain-dump knowledge (wiki perhaps) of &quot;what does what&quot; to make sense of it.<p>The &quot;let&#x27;s delete everything old because old doesn&#x27;t matter&quot; mindset is how we lose past works forever. (If anyone can find &quot;Mouse Commander&quot;, an independently-published TSR utility for Welltris to add mouse control, you&#x27;d be my BFF.)<p>PS: Interestingly, Matrox and the acquirer of Adaptec (Microchip) still have many drivers available. NVIDIA is also okay, but sometimes needs IA to get the last supported version of a particular driver.
评论 #30082962 未加载
enriqutoover 3 years ago
&gt; Legacy systems have legacy dependencies, and run in legacy environments.<p>In my experience, a sort of opposite of this sentence tends to be true.<p>Modern systems have too many dependencies, most of the time needlessly so, but still required. I recently used a Python package that required a specific version of the pandas behemoth to run, but it was only used to parse a date. Absolutely ridiculous.<p>On the other hand, the 40-year old Fortran code that everybody uses to compute special functions compiles and runs OK in a modern computer, and is completely standalone with 0 dependencies apart from the compiler.
评论 #30085799 未加载
评论 #30083451 未加载
code_biologistover 3 years ago
<i>My first comment here a few years ago was on &quot;A Codebase is an Organism&quot; <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=20787848" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=20787848</a> I repost it because I think catabolism of old concepts and systems is an important part of keeping older codebases alive.</i><p>Catabolism is another aspect of thinking about code as an organic entity that I find useful. Anabolic (growth) processes and catabolic (teardown) processes always accompany each other in biological systems. Too often we neglect to continually tear down and remove unused aspects of our systems. Both anabolism and catabolism are always operating, though at different rates depending on the environment and needs of the organism. The funny thing is that catabolic processes will happily tear down important parts of the system, forcing them to be anabolically rebuilt. Things like bone and muscle mass. This seems wasted, but it has an extremely important purpose: uncontrolled anabolism is cancer.<p>I think the analogy to code is obvious. We&#x27;ve all seen codebases that have gotten out of hand (gotten cancer), and part of the reason they got that way is because the growth pressures had no countervailing teardown pressure. The market provides selective pressure in nasty ways: codebases and systems with cancer slow and die, and are replaced by younger codebases without uncontrolled growth.<p>How do we break that cycle? By encouraging catabolic activity culturally within our companies and codebases. Cleanup is incredibly valuable. Functionality that isn&#x27;t being heavily used and is complicating implementation of new work should absolutely be on the chopping block. We don&#x27;t have to be quite as aggressive as biological systems, but we shouldn&#x27;t take their example lightly either.<p>This also provides insight into when cleanup doesn&#x27;t matter: when the survival horizon of the organism is sufficiently short that cancer frankly doesn&#x27;t matter. Startups shouldn&#x27;t worry too much until they have product market fit. Once it&#x27;s clear they&#x27;ll be around for years more though, catabolic work will help ensure future health.
kstenerudover 3 years ago
To be fair to them, they lived in a different world. The 60s, 70s, and 80s were a very safe time in computers. Virii and &quot;hacking&quot; ranged from curiosities to pests, but nothing particularly serious.<p>Today we&#x27;ve gone well past document-embedded-virus payloads and XSS and infected USB sticks to log4j, rowhammer, and spectre. And we&#x27;ve barely even scratched the surface. Just wait until JSON and XML exploits (i.e. exploiting differences in decoder behavior) become common!<p>Bitrot is only going to get worse, and we&#x27;re going to need to design our systems and formats and protocols explicitly with change in their DNA so that they can evolve to meet new threats.
评论 #30083434 未加载
bubblyworldover 3 years ago
I think a source of bitrot the author doesn&#x27;t mention comes from a combination of two things:<p>1. People modifying a large codebase generally don&#x27;t have a complete understanding of the codebase (and this becomes more common the larger the codebase is). 2. &quot;Chesterton&#x27;s fence&quot;, i.e. modifying something you don&#x27;t understand often has downstream effects you are unaware of.<p>It&#x27;s the codebase equivalent of the 2nd law of thermodynamics - entropy always increases =).
ladyattisover 3 years ago
Part of the cause of software rot is the fact that much of our code is tied to a specific platform or paradigm. So if you&#x27;re working with Java 5 code it might be hard as hell to work with since it doesn&#x27;t take advantage of the conveniences of modern Java. Same with legacy C++ apps or any other app to be honest that&#x27;s older than a few years in most programming languages. Ideally, you can write around the core logic while replacing what&#x27;s not actively supportable anymore but when you&#x27;re stuck on a business mandated timeline you make due with what you can do to minimize the software rot.
zokierover 3 years ago
I think the problem is not that software somehow would become worse as it ages. But that tons of software is and has been pretty crappy to start with, and to lesser degree has been worsened over time by modifications. At the same time our quality expectations for software have been dramatically increased over time, making the original poor quality even more apparent.<p>That viewpoint also partially explains Djikstras opinion; the software he made can be presumed to have been above average in quality so therefore it probably also aged better than most.
Tabular-Icebergover 3 years ago
There doesn’t even need to be a changing world for software to require maintenance. Not only do people make mistakes and create bugs, but more importantly, nobody has perfect knowledge of the problem they’re trying to solve, so they will always build the slightly wrong thing.
avadorover 3 years ago
Imagine your database is a sensor network instead of some schema-ful&#x2F;typed data store. Field operators unbeholden to you keep adding, removing, or updating sensors. Your data format evolves underneath you, and you behave more like a magic carpet pilot than a builder of things unbreakable. You’re attempting to store the flight path as best as you can, update configurable sensors for the most profitable reads, but what you record is a direct reflection of the current sensors and their current settings.<p>I am wary of hastily agreeing that Dijkstra missed something. He may have been talking about specific, general purpose algorithms, which do not change much once conjured. There is another type of software, though, a software that sits atop the immutable spellcraft, a software that attempts to shake the boughs of profit trees at specific points and places in time and space.<p>Dijkstra says “Famous is the story of the oil company that believed that its PASCAL programs did not last as long as its FORTRAN programs &quot;because PASCAL was not maintained&quot;.”<p>The oil company folk are the kind who prefer tree-trembling to the deep and unchanging sea.<p>I, too, when cold and hugging uncertainty for warmth, prefer to cut down trees for fire than to spelunk for hard diamonds.<p>“…we aren’t yet good at thinking about the intended lifetime of a software system when we’re designing it.”<p>And sometimes the life expectancy is so short that any old (or new) design will do.
评论 #30084420 未加载