<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Oct 24, 2017 at 6:37 AM, Phillip Hallam-Baker <span dir="ltr"><<a href="mailto:phill@hallambaker.com" target="_blank">phill@hallambaker.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">(Also posted to SUIT which is a proposed IETF WG on the topic, I<br>
thought it might be of interest here).<br>
<br>
<br>
I don't know about you, but I am fed up of the time it takes for<br>
software updates on my desktop. First the update has to be downloaded<br>
and then it has to be installed. Why can't this be instantaneous?<br>
<br>
What I would like is to</blockquote><div>....... </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">So installing a software update takes a millisecond,<br>
no more.<br>
<br>
Rolling back a software update is just a matter of telling the O/S to<br>
stop applying the overlay.<br></blockquote><div> </div><div>A lot depends on 'Software' in this context.<br>Too often the OS and software are joined at the hip.<br><br>For an operating system and all the applications in it this is a problem </div><div>that is bigger than a breadbox.<br><br>What your are asking for is broad atomic update of a versioning filesystem.<br>Stage 10,000 files and commit with an audit trail that can be reversed on an</div><div>OS that itself can depend on the files.<br><br>In linux one boot process begins with a boot loader that copies a bootstrap </div><div>operating system filesystem image into memory and starts the OS.   The OS then</div><div>runs out of RamDisk to check the physical disks then mounts them and 'pivots'</div><div>to the OS on disk or even NFS This pivot and the continuation takes more than a millisecond.<br><br>Specific applications are simpler:<br>Some Linux applications run out of a change root where files are copied or perhaps </div><div>hard linked then chroot is invoked for the application (old or new but not both right) which </div><div>then finds all the tools it needs and no more (hopefully).</div><div><br>A fresh chroot could be built and the original chroot process shutdown and the new</div><div>one started almost quickly but the shutdown and restart would not be all that quick</div><div>depending on the data.<br><br>A real problem is long running processes, shared libraries and open files.  Shared libraries in a system</div><div>are intended to apply to the entire system with minimum versioning.   A running process has<br>many files open.   An editor on a handy machine 'vim' has 22 open files and three devices (pty for stdin/out/err).<br>The 17 library fines (shared objects) that must be updated together (as needed) with a new</div><div>version of the editor.<br>I recall a talk by White on Smalltalk where the Smalltalk system interpreter could pick up</div><div>an edit to the editor source as quick as it hit the disk while still in the editor.   If he made <br>an error the editor might be too broken to recover.. <br><br>If you get the filesystem correct you have a versioning filesystem so tools need to accept a version</div><div>flag or live with the current.<br><br>The system that lives on a versioning filesystem would need to be modified to cope for interrupt free</div><div>operation.  <br><br>Versioning in languages like 'go' need not depend on system shared objects.   <br>Eliminating shared libraries does simplify some entangling dependencies</div><div>at the expense of disk space and RAM. <br><br></div><div>Make and makedepend might need to be enhanced and baked into the OS.<br><br>GenToo does some of this now but milliseconds and going back -- not this week.<br><br>Trix  (SGI's Trusted Irix) had mandatory access AMC features and MLD (multi level directories and binaries)<br>where manipulation of labels for users, dirs, files an application could only see files at the</div><div>same level or lower.  SELinux, WindowsNT and Win10 have some of these strong mandatory access</div><div>tools.  And policy changes if made sufficiently atomic could be used to flip a switch.<br>See the attribute structures in XFS (SGI's now open source filesystem) where labels (meta data) are</div><div>stored. </div><div><br>Worth doing... <br>There must be a trusted nut to audit, fix and repair.</div><div></div></div>
</div></div>