A radical approach to personal user software so constructed as to require no updates - ItAlwaysWorks? the same - It DoesItsThing? - ThinkingOutLoud.DonaldNoyes.20141026.20141209
Software users have come to expect and depend upon, in the name of security, and TheOtherThings, software that is fallible and is usually successfully messed with by miscreants, and so must periodically be updated by its providers to prevent it.
This page is one appealing for software producers to make software OnceAndOnlyOnce, not requiring fixing of its executives. Produced along the lines that decimal x=2+2 returns x as decimal 4, and that string y=2&2 returns 22 (where & means append to the first string the second string.
Shouldn't a programmer be able to create such programs? Can't the process and the structure with which it handles data representation and data manipulation be dependable and secure?.
Could incentive be lacking to do so since it would eventually make the programmer unemployed?
It has little to do with employability, and much to do with the fact that almost any non-trivial program is more complex than even the most complex mechanical devices. Complexity is difficult to get right the first time. The means exist to make programs considerably more reliable than they are now, but at the expense of dramatically increased development effort, time and costs -- to the point of being infeasible for anything but safety-critical software involving significant risk to life (mere risk to limb is sometimes not a sufficient justification!) -- and slowed development and delayed deployment. Thus, in software that's readily available, at least some bugs are almost inevitable.
Complication, difficulty, effort, time, cost, deployment, availability, security, and bugs, exist in all programs, but are approached as manageable problem in software created with UpdateNotRequired.
They are all manageable problems, but not necessarily in a reasonable time or at a reasonable cost. Even a simple text editor -- provably correct and bug-free -- could take a decade to produce, at an expense far exceeding its value.
Users wanting UpdateNotRequired software are willing to wait for it, for a reasonable time, and will pay for it a reasonable price.
Using current technology, users wanting UpdateNotRequired software will inevitably have to wait an unreasonable amount of time and/or pay an unreasonable price, unless the software is unusually simple and limited.
They are looking for efficiency, safety, durability and dependability. They are not at present a very sizable share of the market, so for now they exert a very small incentive for producers to alter time and cost requirements, shipping what will most of the time produce ItWorks results for its users.
The argument is made realizing the difference between updates and upgrades, since the second is really a brand new product. (It should only improve the product and not make the old obsolete) The choice being in the hands of the user. Since such software when produced would include proper and complete documentation and tutorials, it would not require support or fear of support being dropped, never existing in the first place.
Software for Proprietary and Commercial use by large businesses are not included in the above description, even though construction of such need not be thought impossible. Such applications are used in a framework acceptable by those who can afford the costs and liabilities as part of the Cost of doing Business.
Quotes:
"I believe that quality, for all practical purposes, never takes longer or costs more than non-quality. Working without the quality-generating behaviors will hurt us in a matter of weeks or days, not a matter of months." -- RonJeffries
"In reality, doing anything will cost x. If you wish to maintain that thing (as most businesses do), you must pay extra no matter what. The cost of retroactive maintenance is x+n, while the cost of ensuring quality (and therefore cheaper maintainability) is more like x+q, where 0<q<n. Quality is always cheaper, but never free." -- Anonymous
See: