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.

Why Does Software Rot?

96 pointsby losoqalmost 9 years ago

18 comments

fallousalmost 9 years ago
In most of the cases discussed in the article, it's not the software that rots but instead the users and/or organization that decays. When a system is created, it is generally designed to solve a known set of problems encountered by an existing population of users. Over time, the tool creators, original users, and the current problem domains change but often the old system is modified to solve these changes. A flexible system may be adaptable to certain amounts of change, but only if the current populace of creators/maintainers as well as users understand the limits. If they do not, the software often ends up less useful than if it had never been touched.
评论 #11976382 未加载
brownbatalmost 9 years ago
Note, article is not talking about bit rot, I think that&#x27;s confusing a lot of people.<p>The point might be clearer as:<p>&quot;Adaptability and efficiency are opposing priorities.&quot;<p>Ecosystems face this too. A stable environment will lead to adaptations that improve efficiency, while creating new dependencies on everything staying the same. In a sense, species are constantly competing to make the ecosystem more fragile.<p>If this holds, there are broad impacts to information systems outside of software. broader impact of this. We like to fantasize about the mind being immortal. Maybe we could fix the telemere thing, figure out cancer, hop our brain to a clone, or upload our consciousness to some cloud.<p>But in my experience, being mentally alive involves some mix of plasticity and progressive refinement. You can&#x27;t have both forever.
评论 #11976706 未加载
评论 #11976465 未加载
jussaskinalmost 9 years ago
Software rots if you can no longer set up the exact tool chain and environment (compiler, build tool, OS version, external database, etc) required to build and run it. Even interpreted languages suffer from this problem as features are subtlely changed - by design or accident. It doesn&#x27;t matter if your project is using an ancient version of VC++ or a two year old version of NodeJS. If it doesn&#x27;t keep up with the latest releases of the tools then it&#x27;s already got one foot in the grave.
评论 #11973766 未加载
评论 #11973725 未加载
评论 #11973318 未加载
评论 #11973268 未加载
评论 #11976351 未加载
评论 #11976930 未加载
boznzalmost 9 years ago
Unless your sandboxed in a self contained hardware and software environment (such as an embedded system) you will eventually be screwed. (rot sounds like a gradual degradation its generally not in my position)<p>Standards changes and OS Updates are the biggest culprit; The Vista update broke a couple of my old programs (written for Windows 95) due to the user access control changes, another was broke due to the fact it interfaced to a piece of hardware on the parallel port and the parallel port and the manufacturer went the way of the dodo.<p>I have seen a stand-alone DOS 6 program running a machine at a factory. The PC has been replaced three times now is only a few years old but the operator says it still does the job, I also have a 8051 powered clock I built in 1987 that still happily ticks along if I plug it in.
评论 #11973257 未加载
lifeisstillgoodalmost 9 years ago
Three reasons:<p>1. The code is the same but the people using it forget &#x2F; never knew the reasons it was built that way - and so it looks rotten for the job<p>2. Because requirements change and people try to make the old code do new things without cleaning up &#x2F; refactoring correctly - so it now does neither job well, and looks rotten.<p>3. Because the environment &#x2F; platform changes, the FTP server is moved to a new data center and the timeouts kill the jobs etc. It looks rotten.<p>&quot;Rot&quot; more accurately is just not keeping the code inside the code base up with entropy <i>outside</i> the code base
评论 #11973167 未加载
评论 #11973395 未加载
评论 #11975732 未加载
WorldMakeralmost 9 years ago
An interesting simile here is that software rots in the same way that Encyclopedias do.<p>(This is admittedly a fitting simile partly because the simile itself is being rotted by software like Wikipedia.)<p>In the world where new Encyclopedias (and Almanacs and Recipe Books) were printed and sold on an annual basis, the question was often why do we need &quot;this year&#x27;s Encyclopedia&quot; when the old one is still perfectly valid. Books in general decay pretty slowly and have a long shelf life, but the facts and the views in the world inside them are frozen and possibly. Changes from year to year of an Encyclopedia are somewhat hard to notice, but in Middle School in the 90s I recall having to compare articles from a tobacco yellowed Encyclopedia set from the 70s to trips to the same articles from very early predecessors of Wikipedia. The worlds contained in those two sorts of Encyclopedias were very interestingly diverging. The yellowed Encyclopedia&#x27;s facts were almost all still valid and &quot;worked&quot;, but there were things that didn&#x27;t hold up and lots of new facts that needed to be inserted in various places. If I were to edit an Encyclopedia, I&#x27;m not sure I would start from the version in that yellowed Encyclopedia if I could find a more recent set. Some of the predecessors to Wikipedia were direct descendants of that yellowed Encyclopedia and yet for various reasons historical and technical, Wikipedia itself did not inherit directly from that set in any meaningful way.<p>(It&#x27;s interesting to note too that the physical media of software to date has a much shorter shelf life than the pulp medium of books, tobacco-smoke-filled library aging included, so argument exists that software rots worse than Encyclopedias physically, at least.)
评论 #11973785 未加载
jussaskinalmost 9 years ago
I find that integrated tests in software projects go a long way to reducing rot. When something eventually invariably breaks due to some external factor, the test suite greatly reduces the time to identify and fix the problem.
评论 #11974004 未加载
评论 #11974362 未加载
textmodealmost 9 years ago
&quot;... the arrogance and self-indulgence of youth.&quot;<p>s&#x2F;youth&#x2F;younger programmers&#x2F;<p>How can they make work for themselves?<p>1. Do what&#x27;s already been done, not even knowing it&#x27;s already been done. 2. Declare &quot;rot&quot; or some similar claim of obsolescence and proceed to redo what&#x27;s already been done.<p>There&#x27;s nothing necessarily awful about this unless they fail to do a better job than the earlier effort.<p>Alas, this is too often the case. For a variety of reasons.<p>In the early days, portability was a higher priority. Not to mention longevity. Because everything was expensive.<p>Today&#x27;s software &quot;rots&quot; a lot faster than the software from the early days of computing, IMO.<p>And so the younger programmers have lots of &quot;work&quot; to do.<p>Yet I do not see much progress being made. Because I do not measure progress by productivity alone.<p>Programmers who can churn out code in a dozen different languages to do the same old things are a dime a dozen.<p>As a user, I do not want software that needs to be updated every week. Poorly written software and gratuitous use of network bandwidth.<p>But I can see how programmers who love writing code would enjoy this state of affairs.
评论 #11975434 未加载
notacowardalmost 9 years ago
I think <i>rot</i> is not quite the correct metaphor. In my experience it&#x27;s more likely to ossify, become sclerotic, build up scar tissue. As features are added or performance is tweaked, individual pieces become more complex and the connections between them multiply. If specific action (refactoring) isn&#x27;t taken to fight this tendency, later developers will react to one piece being maintainable by making even more spurious connections and workarounds in adjacent pieces. That fixes the immediate problem, but makes things worse overall in the long term. Ultimately everything turns into the kind of tangled mess that everyone who has worked on an old multi-person project can recognize.<p>Unfortunately, a good refactoring requires understanding greater than the original author&#x27;s[1], and therein lies another whole essay. ;)<p>[1] Related to <a href="http:&#x2F;&#x2F;www.linusakesson.net&#x2F;programming&#x2F;kernighans-lever&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.linusakesson.net&#x2F;programming&#x2F;kernighans-lever&#x2F;</a>
ensiferumalmost 9 years ago
Wheres the connection to software rot?
jaytayloralmost 9 years ago
&quot;Software rot&quot; stems from the world around the software changing in a way the software is unable to adapt to, and breaking it.
评论 #11975356 未加载
Spooky23almost 9 years ago
Dependencies.<p>Big old hairy mainframe apps have no dependencies, and last decades. Anything new expects constant updating.
dcrealmost 9 years ago
Software rots because everything does.
hermanradtkealmost 9 years ago
&gt; Apache, the most important web server software today, is an old piece of technology whose name is a play on words (“a patched server”) indicating that it has been massively patched.<p>Is this true? I have never heard that Apache was a play on of words.
评论 #11974653 未加载
vonnikalmost 9 years ago
There is an analogy to be drawn between software and societies, and they way their early adaptations to one environment block their later adaptions to another.
carsongrossalmost 9 years ago
What does rot even mean, in terms of software?<p>As far as I can tell, he means &quot;Why is complex software hard to <i>change</i>&quot; which is a reasonable, though fairly easy to answer, question.<p>Software doesn&#x27;t rot. New features or refactors screw it up. New needs or technologies may make it obsolete. But it doesn&#x27;t rot, and people who talk that way are often busy-body rewriters who want to pitch the existing implementations, with all their Chesterton Fences[1], and begin anew.<p>[1] <a href="http:&#x2F;&#x2F;www.chesterton.org&#x2F;taking-a-fence-down&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.chesterton.org&#x2F;taking-a-fence-down&#x2F;</a>
评论 #11973087 未加载
评论 #11973451 未加载
评论 #11973223 未加载
评论 #11973073 未加载
评论 #11973218 未加载
tacosalmost 9 years ago
Stewart Brand wrote a book called &quot;How Buildings Learn&quot; and in many ways it&#x27;s a better version of this post.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Shearing_layers" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Shearing_layers</a>
serge2kalmost 9 years ago
&gt; Newer programming languages are often interesting, but they are typically less flexible at first than older languages. Everything else being equal, older languages perform better and are faster<p>At the cost of more difficulty in writing, or other tradeoffs (e.g. security).<p>&gt; Programmers, especially young programmers, often prefer to start from scratch. .. In part because it is much more fun to write code than to read code, while both are equally hard.<p>No way! You need to NPM literally everything.