## System Restore Spec

||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<TableOfContents>>||

 * '''Launchpad Entry''': https://features.launchpad.net/distros/ubuntu/+spec/system-restore
 * '''Created''': 11/05/2006 by towsonu2003
 * '''Contributors''': towsonu2003
 * '''Packages affected''': Ubuntu

== Summary ==

Ubuntu should backup the system configurations every time an important configuration file was tweaked or a package was installed / upgraded (the "Windows Style", sorry to say) and restore the system upon request to the last known sane time. 

== Rationale ==

 * The user should feel free to play around with her/his system, being more or less sure that "System Restore" will save her/him from big trouble
 * The user should be confident that if an upgrade break something due to bad [[https://features.launchpad.net/distros/ubuntu/+spec/security-update-qa|QA]], the system will be able to recover.

== Use cases ==

 * Usage1: Marx installs xgl. It borks his X but I do not remember what kind of tweaks he did. He hits "Restore System" under System > Administration and all is back

 * Usage2: An upgrade breaks Patricia Hill's system and borks dpkg. She hits "System Restore" and her system is back.

 * Usage3: Bill will upgrade to Firefox2 using a custom repository. He hits "Create System Restore Point" worrying that it might break his good old Firefox.

 * Usage4: Daly dist-upgraded from 6.06 to 6.10... Ubuntu created a "System Restore Point" before the dist-upgrade in case it breaks the system. It broke her system indeed. She hist "System Restore" and her working 6.06 is back.

== Scope ==

The feature enables users to trust their system's stability: 

 * Upgrades cannot bork the system
 * Dist-upgrades cannot bork the system
 * A bad package cannot bork the system
 * An X breakage can easily recovered from
 * Complex customizations of the system can easily be undone

== Implementation ==

As a high level stab in the dark at an implimentation I'd suggest a Copy On Write and Save on Delete ( if they are not the same thing ) approach. The steps would be. 
 
 * 0) Configure System Life Saver ( SLS) [ Directories / Structures to store modified / deleted files ]
 * 1) Run System Life Saver - Puts the COW and SOD components active
 * 2) Update / Install / Do What you Like
 * 3) Run System Life Saver - Create Diff Point ( With Date ) - This step closed the SLS processes

 
At some stage run 

sls --restore dd/mm/yyyy ( and a time component?? ) 
 

to go back in time :D
 

Or, you could just use a journaling file system.





== Outstanding issues ==

 * "System Restore" may be copyrighted and / or patented by Microsoft... We might need to find a new name, or even a new way to back up the system. 
 * Hard Disk space usage: backing up system configuration files and old deb packages will force us to increase minimum hdd space standards (of a new install) if this feature is enabled...

== Discussion ==

The idea of implementing this with any form of "tar" command is just madness.

CategorySpec