jasonsackey.com

Software updates - part I

2018-11-26

This essay is about how the internet has accelerated aspects of software development. The net is a means for much faster, more widespread propagation of software and software updates than previously available. Before the net, when software was mainly distributed via physical media, updates could only be delivered via similar means: magnetic discs, CD-ROMs, printed code in books and magazines, and sometimes TV and radio transmissions. These methods were slow and unreliable. So there was less reliance on them, and more emphasis on ensuring first versions of software to be complete and bug-free. Now, online update infrastructure works nearly instantly, globally, with relative ease for end consumers.

Arising from this accelerated situation, updates are much more important in software development.

Updates fix security issues, vital now that so much sensitive data, commercial and otherwise, is stored on our personal electronic devices, these devices being used to negotiate all manner of important administrative tasks and transactions online.

Updates allow improvements to functionality, allowing for incremental development of software, with development effort being tactically deployed in response to feedback, or ‘telemetry’: data gathered from usage of the software, sent back to the software vendor in near realtime.

Unfinished ‘alpha’ or ‘beta’ software can be released into the hands of users for testing, those early-adopter types being generally more technically-adept and enthusiastic about pushing the software to its limits, and contributing feedback (or even development assistance) toward developing the software to maturity.

The release-observation-improvement cycle is sped up. Does that mean software development is now easier, perhaps more scientific than before? lol no. Everyone, in principle, has this same expanded toolbox, and we’re dealing with programs orders of magnitude more complex (some say unnecessarily so—an issue for another essay) than times past. The stakes are higher, and the competition is fiercer.

Nowadays, a lack of recent updates is taken by some as prima facie evidence that some software, say, a programming library (i.e. reusable package of code to use in writing new programs), is out of date, not worth bothering with—much to the chagrin of programming subcommunities who have held fast to the older principles of the discipline, taking pride in software completeness and correctness and stability. For example, see this HN thread:

The plague of modern software engineering is “there are no updates, it must be unmaintained”. This attitude makes tons of solid, old, working software seem “outdated” and creates a cultural momentum towards new, shiny, broken shit. The result is ecosystems like js. Maybe we should believe software can be complete?

What are updates like for software users? Ideally they’d deliver an unmitigated good: constantly making software better. But everyone who uses modern technology knows this isn’t the case.

To be continued.

P.S.