OA Home Search SiteMap Encyclopaedia Galactica Intro Timeline Sophonts Topics Extras Galactography

Home  > Topics  > Knowledge Base  > Tech  > Type  > Infotech  > Software

Software


10,000 years of software development is a frightening thing to contemplate.
— Software archaeologist Pronai Xakha, Ilmenas Uniancity


As culture became ever more dependent on software maintaining it went from merely logistics to life and death. The early Y2K scare showed the extent society was dependent on software and how much was at stake should it fail. The 2039 Paris brown-out and the 2089 Internet War demonstrated how accidental or deliberate denial of service could threaten societies with anarchy and physical disaster. The struggle to create more reliable software was a constant thread throughout the information era, a holy grail that spurred a myriad attempts to solve: object oriented programming, modelling systems, correctness proofs, automated debuggers, betabeta testers, agent co-programming, democratic programming, q-calculus, Warnerson programs, green box testing, genetic programming and hybrid democracies. None truly succeeded.

Already in the early days of computers humans found the complexities of writing, debugging and managing large software systems mindboggling. AI did not help, as the new intelligence allowed the development of even more complex software - which they themselves could not fully understand. In the late 21st century c.e. it became clear than regardless the level of intelligence of beings, they will tend to create software beyond their capacity to manage. The benefits of more advanced software will always drive the software to grow beyond the limits of intelligence.

It is often possible to prove simple programs to be correct, but when simple programs are combined (especially in the real world with noise, hackers and accidents) the results can still be unpredictable. A sufficiently rigid system with programmers (like AIs) programming strictly according to a standard might avoid the unpredictability but would be far too brittle to handle complex situations. Robust software instead will behave unpredictably. In the end society had to accept complex, robust but inherently unpredictable software (of which the agents and AIs were themselves prime examples). Instead of attempting to make it do right all the time, safeguards were instituted to make sure than nothing truly bad happened, but accept the occasional quirks.

The acceptance of robust, AI-maintained software dominated the Interplanetary Era. By now the systems were far beyond anything humans could imagine, and the profession of programmer had anyway been superseded by being a realisateur, someone describing software to suitable agents and AIs, leading them to the desired goal rather than creating it oneself. Meanwhile the software grew, layer after layer of unpredictable code, maintained by codewalking agents, emergency managers, securers and patchers. The price of robustness was immensely bloated software, demanding ever more hardware to run it.

It should be noted that this was a situation that suited the largest AIs perfectly. They existed in a world with abundant computing resources, where autonomous processes constantly moved between systems and nobody would notice what they did in the background. It also suited crackers: this was the golden days of finding backdoors and exploits, having virtual dogfights with securers and digging up unexpected uses of the chaotic code they found.

The Nano-disaster was to a large extent not just a nanotechnological disaster, but also a software disaster. Bugs, patches and legacy systems had accumulated for centuries. Not only was the security of nanosystems bad, the robustness inherent in much code used in them (often never intended for this kind of application) also made it fairly good at maintaining autoevolution in nanoreplicators. As sabotage spread, already heavily loaded systems became more and more overloaded. Just as a network becomes more quadratically more valuable with more new members, they also lose value (or in this case efficiency) as links and members drop out - causing already badly coordinated situations to get even more out of hand. The major outbreak in AT 281 was not just an outbreak of replicators, but also the total implosion of most net traffic in the solar system - both events were intimately linked and reinforced each other.

The "dark ages" following the disaster was a slow gain in complexity. As most societies had moved back to much simpler systems most of the old dangerous code was abandoned or worked around. The new systems had learned much from the disaster and were more "cleanly" designed (often by AIs not having much else to do; the AI idiom "checking dependencies" for doing complex, long-range software puzzles while not having anything else to do is from this era). Of course, societies that did not have entirely robust code tended to die.

The First Federation led to a new problem: standardisation and compatibility. Centuries of divergence had created a myriad of standards. Enormous amounts of brainpower were spent on finding efficient ways of interconnecting disparate systems or developing standards that everybody could follow. A competition quickly developed between the standards and the compatibility camps: the standard camp originally succeeded in setting up a number of federation-wide standards, but as commerce and non-federal powers grew different groups began to promote their own standards with no regard of the federation. The compatibility camp quickly abandoned the idea of creating standard systems and instead developed adaptors and translators between systems. In the end it turned out that the compatibility camp (or adaptor camp, as it became known in the 3600's) won the day: the federation declined, while translation (be it simple software, agents or even superturing AI) held together the disparate systems.

The standardisers however got their revenge centuries later, as the first corporate empires evolved. These central powers often helped promote internal standards, pushing the adaptors into the realms of inter-empire compatibility (which was often enormously profitable if somewhat politically dangerous, as demonstrated by the 5338 trial of Inf09few Latitude for copymil crimes, security undermining and standardisation misdemeanours in the Conver Ambi). The eventual synthesis of the Second Federation Ontology was not just an impressive political masterpiece, but also managed to unite the by then millennia old ideological conflicts between standardisation and adaptation.

Modern software tends to be very reliable in everyday use. It has been designed and tested by generations of hyperturing beings, every potential bug or mishap filed away. That doesn't preclude irritating misfeatures or outright mistakes, but most can be handled with a minimum of fuss. The price, which most bioids in the wormhole nexus seldom reflect over, is that beneath the surface an immense ecology of agent software maintains layer after layer of old, finely hones software. In some Inner Sphere systems there are software dating back to the First Federation or even more, quietly maintained by the invisible agents. Overseeing all this are higher-level agents, in turn overseen by AIs of various levels.

The problem is that new or special purpose software is far less well tested. It still misbehaves, exhibits quirks and interacts unpredictably with other systems. It demands much more of the agent webs, and can cause much more trouble. The dynamic environments of NoCoZo, Cyberia and Keter are infamous for their many quirks. Usually it is not much of a problem, but in frontier systems where the overhead is not large and many new situations are encountered dangerous bugs sometimes appear. It also threatens the AIs, who are by their nature very complex software systems. While standard AI are unlikely to develop any problems, rapidly growing or high-order AIs often have to deal with software and mental bugs (this is one cause of AI "madness" or events like Denebola Collapse).

Another problem is autoevolution: viruses and other replicators have plenty of software to hide in, and the vastness of cyberspace makes the evolution of replicators and spread of garbage information a certainty. While most of the "surface layers" are reliable and safe, the "deep layers" of the software hierarchy are riddled with unusual entities. Most are harmless or benign, but nasty surprises await anything so foolish to let down their software immune systems for long. Immune system maintenance is another important and major profession among AIs, ranging from routine checks to heroic rescues of doomed systems - software systems or planetary systems.

In addition, here and there ancient legacy software survives in odd corners with strange vulnerabilities. This is a popular target for Cyberia cracking, which also tends to introduce backdoors and weaknesses deep inside the edifice of software. Ancient Trojans, badly written biont code, transcendent tricks used beyond their applicability and unpredictable synergies create rare "software quakes" as deep software suddenly misbehaves and the agents of higher layers have to scramble to fix things. The incidence of such quakes and emergence of new replicators has been slowly increasing the last millennium, worrying some AIs that an era of chaos is approaching.

Should the infrastructure fail, most unprepared advanced societies would collapse extremely quickly. When the software of Bagerit Jhe "imploded" in 8823 due to criminally negligent maintenance, over 40,000 people were killed instantly as various picotech systems exploded, dynamic structures collapsed and life support functions stopped. In just 24 hours the death toll increased to six million and in the end topped out at 23 million beings. Had it been a heavily colonised Inner Sphere system the toll would have been many billions.




Creative Commons License
Unless otherwise specified,
this work is licensed under a Creative Commons License.


feedback


content by Anders Sandberg 2001
main graphic by bernd helfert
other graphics by bernd helfert
page uploaded 17 January 2001, last modified 1 May 2003