&quot;Interesting discussion, I&#x27;d be keen to try such a formalistic approach if you ever have a need for a remote critical eye.&quot;<p>I&#x27;ll try to keep it in mind. There&#x27;s a few people doing stuff in public if you want to play with it. Plus lists to stuff to try. Here&#x27;s a few.<p>One person did an overview of Cleanroom and examples in Python, etc here:<p><a href="http:&#x2F;&#x2F;infohost.nmt.edu&#x2F;~shipman&#x2F;soft&#x2F;clean&#x2F;" rel="nofollow">http:&#x2F;&#x2F;infohost.nmt.edu&#x2F;~shipman&#x2F;soft&#x2F;clean&#x2F;</a><p>I just pulled a list of techniques that were empirically proven to increase robustness into a Pastebin:<p><a href="http:&#x2F;&#x2F;pastebin.com&#x2F;xZ6m4T8Z" rel="nofollow">http:&#x2F;&#x2F;pastebin.com&#x2F;xZ6m4T8Z</a><p>Note: One can pick and choose among these to find right work&#x2F;benefit ratio. I&#x27;d like to see lots of experiments on mainstream software to get data on what&#x27;s 80&#x2F;20 rule. I&#x27;m betting on sane subsets of safe languages, code reviews, usage-driven testing, interface checks (even asserts), and fuzz testing maybe. The first four are widely available and take little work.<p>Case study of Altran&#x27;s Correct-by-Construction approach showing great metrics:<p><a href="https:&#x2F;&#x2F;www.commoncriteriaportal.org&#x2F;iccc&#x2F;7iccc&#x2F;t1&#x2F;t1201100.pdf" rel="nofollow">https:&#x2F;&#x2F;www.commoncriteriaportal.org&#x2F;iccc&#x2F;7iccc&#x2F;t1&#x2F;t1201100....</a><p>Note: Altran does plenty of medium and high assurance work. Their method can do either. I&#x27;d rate Tokeener as Medium-High if just focusing on their part of it. Note that they got it done with 3 part-timers in less than a year with code-level proofs. Quite a leap from millions spent on teams of geniuses doing proofs in Gypsy, etc two years at a time back in the day. :)<p>&quot;Regarding the quote, I don&#x27;t think you quite took the spirit of it: the idea is that, given a replaceable component with failure expected, we can manage reasonably to achieve the same outcomes for less overall cost &quot;<p>I&#x27;m not questioning the spirit so much as the implementation.<p>&quot; do not build the one true system to solve all availability and security challenges (which would be very expensive (the old &quot;pick two&quot; adage)), but rather build a system which makes use of the properties of components intelligently to reduce overall hassle&quot;<p>That&#x27;s what I advocated. With medium assurance, it cost almost nothing extra so apply it to the components. With high assurance, if used at all, it can be used on just the most important and is by some niche players with good cost&#x2F;benefit results. It&#x27;s just that...<p>&quot;to achieve the same objectives, just as reliably&#x2F;securely.&quot;<p>...this has rarely proven to work. There&#x27;s an old rule that you can&#x27;t make high robustness systems by composing low-robustness components. They experience both individual and byzantine failures. That&#x27;s why we see the companies building on them experiencing downtime that shouldn&#x27;t happen on top of unavoidable downtime which I don&#x27;t judge. So, certainly break the problem into smaller ones and compose simple (or cheap) solutions where possible. You just have a baseline of quality you need for the components. Commonly expressed as &quot;weakest link&quot; or &quot;Garbage In, Garbage Out.&quot;<p>&quot;I think the main reason there are less modern systems running for 15+ year timeframes is that the centralized models of yore only remain valid within traditional large organizations that are slow moving: finance, government infrastructure, military, etc.&quot;<p>Someone else speculated the same thing. There&#x27;s some truth to it. Yet, there&#x27;s overlap between the kinds of services running on them and in the modern, downtime-prone infrastructures. The stuff works on robust systems of old times but fails on new ones. What&#x27;s the key difference? One was designed to be robust and one is a composition of pieces of known to unknown quality. Garbage in, garbage out.<p>&quot;as COTS hardware + FOSS topple traditional mainframe vendors through cheap and highly scalable clustering.&quot;<p>They&#x27;re definitely cheaper and faster. That&#x27;s been the case since Beowulf clusters I built back in the day. Yet, their uptimes still haven&#x27;t reached what OpenVMS hit in the 80&#x27;s with bullet-proof clustering. Are you truly saying hardware and admin labor is so free right now that we can just throw dozens to hundreds of servers in 3-5 locations at every businesses&#x27; problems while ignoring the architectural, interface or code quality of any of it? I&#x27;ll take QNX 2 here and 2 there over a bunch of Linux boxes any day so long as budget will allow the license. I&#x27;ll have predictability, performance, self-healing, damage containment, and live updates all in a few megs of well-written code w&#x2F; POSIX apps.<p>See the difference between that and mainstream systems? Good architecture still matters. System&#x2F;38 (AS&#x2F;400), OpenVMS, NonStop, QNX, BeOS... all great architecture that squeezed way more out of any given piece of hardware, software, or admin effort. OpenVMS was also an example of medium assurance that was point of our discussion. Their Red&#x2F;Blue iterations did 1 week development &amp; test writing then 1 straight week of review and fixes with regression tests over weekends. Results were boxes so reliable admins sometimes forgot how to reboot it and such. Still not common on Windows and Linux boxes despite the great strides in reliability that nearly a <i>billion dollars</i> worth of labor bought those bad architectures. I like to poke at Linux folks that MINIX 3 eliminated most crashes in a few years with a small team while UNIX architecture took <i>decades</i> to <i>mostly</i> do the same thing. Architecture &amp; assurance activities matter.<p>&quot;though they are definitely capable, and with Linux it has been done&quot;<p>I&#x27;d like to see evidence of that. The mainframes, AS&#x2F;400&#x27;s, VMS, NonStop&#x27;s... these run all sorts of workloads without software repairs for years. Heavy workloads. I&#x27;ve investigated numerous claims of individual Linux boxes doing the same. It was almost always someone&#x27;s barely-utilized, hobbyist web server, DHCP server, etc. I want to see the equivalent of a mainframe or VMS server running everything in a business 24&#x2F;7 without a crash in years. Optionally that system getting lost due to never needing maintenance with people scouring the building looking for it. That was a recurring problem with pizza box servers and embedded cards running aforementioned OS&#x27;s. ;)<p>&quot;they do run in harsh environments with limited resources in hundreds of millions - nay - billions of instances, extremely reliably.&quot;<p>Again, a source for this. They certainly run regular workloads they&#x27;re optimized for quite reliably. The cloud vendors optimizing on specific HW configurations with all kinds of disaster tolerance appear to run them reliably by hiding the failures. Yet, surveys of industry on their servers&#x27; downtime contradicts the overall claim with all kinds of downtime still in mainstream stuff. Plus, they show recent Windows servers ahead of Linux in reliability and AIX usually stayed on top. They don&#x27;t include the stuff I mentioned due to maybe market share or perhaps the contrast would make the others look bad. ;)<p>Nonetheless, adopting medium assurance methods to build our components or using components built that way is a solution. It was proven... is used... in many commercial systems that have higher quality at acceptable price and performance. Outside one-offs, the only reason it&#x27;s not happening is lack of knowledge or will to do it. Mainstream devs were told about the stuff for years so they just don&#x27;t give a shit. Surprisingly, Microsoft is ahead in efforts as they implemented SDL, formal methods on drivers, integrity controls, app protections, safe language use, and so on. I would <i>love</i> to see that level of commitment on BSD and Linux side given I use both. Least they sometimes accept fixes from academics who apply various tools in their spare time or with grant funding. ;)