32

I did some literature research about versioning file systems. Versioning was already common practice in the very early operating systems such as the influential but almost forgotten Incompatible Timesharing System (ITS) and TENEX. OpenVMS, the successor of TENEX, seems to be still used in special applications and it still supports versioning. I found a number of experimental and historic file systems with versioning (see the ext3cow FAQ). But none of the major operating system (Linux, Windows, Mac OS) support versioning by default.

How come modern operating and file systems' do not support a feature available 40 years ago? Of course you can hack versioning into your systems somehow but this should be supported to the most basic level, transparent to applications. Just to clarify: Journaling and snapshot facilities (such as Apple's TimeMachine) are not the same. Versioning on file system level means: every process that modifies a file, automatically triggers the creation of a new version that you can directly access afterwords (for instance to undo the process). You can implement this cheaply with copy-on-write.

The only modern application of a versioning file system that I found is versioning in Amazon S3 which they introduced a few month ago. Why are there so little versioning file systems? What happened to progress of computer systems? Is versioning a bad idea anyway?

Malfist
  • 31,179
  • 61
  • 182
  • 269
Jakob
  • 3,570
  • 3
  • 36
  • 49
  • 5
    NTFS in Windows 7 supports versioning, and maybe previous versions do too. It's not very well advertised in the interface. – Thomas Jul 07 '10 at 13:33
  • 2
    If I understand the problem, it seems to me that ZFS (http://en.wikipedia.org/wiki/ZFS) and Btrfs (http://en.wikipedia.org/wiki/Btrfs) are good examples of versioning file systems. – Jean Hominal Jul 07 '10 at 13:34
  • 1
    This would be a good community wiki – FrustratedWithFormsDesigner Jul 07 '10 at 13:35
  • 1
    *How become operating systems and file systems so retarded that they do not support such a powerful feature that people had almost 40 years ago?!* should be *How come operating systems and file systems are so retarded that they do not support a feature available 40 years ago?* – mcandre Jul 07 '10 at 13:38
  • I enabled community wiki. As far as I know NTFS and ZFS they only do snapshots and clones only every given span of time. Btrfs looks like it may become successor of ext3 in some years but I do not quite understand whether there is support of real versioning. – Jakob Jul 07 '10 at 13:44
  • 6
    Why the hell is this question closed? – dmeister Jul 08 '10 at 20:31
  • 1
    @dmeister: Seems to me it is not a programming question. Versioning file systems are easy. They've been known for decades. They work. People don't use them. The reason for that decision is a good question, but it has nothing to do with programming. – dmckee --- ex-moderator kitten Sep 10 '10 at 23:00
  • 4
    @dmckee This view of programming related question is very limited and subjective. If I'd ask about how to do gardening, where to buy a new computer, or why people pray to god, you were right. Well, Stackoverflow is primarily a social system like any other community. People are people, with their own diverse viewpoints and beliefs, whether on Usenet, Wikipedia, or Stackoverflow. I don't mean this as insult or complain, it's ok to close this question, but such decisions are always subjective. – Jakob Sep 16 '10 at 10:31
  • @Thomas: you are right, it isn't very well advertised. How on earth do I find out more about W7 file versioning? – Ira Baxter Jul 12 '13 at 23:54
  • http://google.com/?q=windows+7+file+versioning&l=1 – Thomas Jul 13 '13 at 09:52
  • @Thomas: Thanks for the link, but I already know about volume shadowing etc; it isn't real file versioning (see http://en.wikipedia.org/wiki/Versioning_file_system). I had hoped that was what you meant. – Ira Baxter Jul 13 '13 at 22:40
  • In my view, supporting multiple file versions was a great step up from not having any versioning at all. However, it's not as useful as doing versioning on a set of files together. If you only have versions per file, how do you know which file versions go together? You don't, unless you store that information explicitly. So now that we have git etc, versioned files are a bit obsolete. In my opinion. I have been using ITS a bit lately, so I do have some experience to back this up. – Lars Brinkhoff Mar 07 '17 at 07:34

5 Answers5

4

Can't give you the ultimate answer, but consider these 2 points:

  1. The feature is of little use to the mainstream user (98% of all users?), so why implementing it, if nobody uses it.
  2. Storage space was expensive in the past, so why wasting it on a feature that almost nobody will use?
MicSim
  • 26,265
  • 16
  • 90
  • 133
  • 4
    Good points, but now space is cheap. You could limit versioning to specific files and only need to store the differences anyway. I doubt that the feature is of little use to the mainstream user. Many end user programs support an "undo" function but it stops if you save the file and close the program. With versioning on the file system level you provide better. – Jakob Jul 07 '10 at 13:52
  • 1 - it's MORE use to the mainstream user who wants the old version of a document and doesn't use git/svn for everything they write. 2 - if you could afford it on 32Mb drives, why can't we afford it when we have a mostly empty 1Tb drive? – Martin Beckett Jul 07 '10 at 13:53
  • @Martin: 1-Agree. But how often do you need this feature, if you aren't a 'coder'? 2-Maybe companies could afford it back in that days, but not normal users in late 80s/early 90s. I remember often deleting unneeded stuff on my HD because I was running out of space. – MicSim Jul 07 '10 at 14:04
  • @MicSim - how often has a user come to you for a backup of a Word file that has corrupted, or they saved a new file over one they needed. VMS was wonderful for this. As long as the FS didn't store deltas for pagefile and hiberfil you could have years worth of undo on a modern drive. MS (with VSS) and Sun (VFS) can do this - but it's hardly available to a regular user. – Martin Beckett Jul 07 '10 at 15:31
  • @Martin: I fully agree about VFS being nice to have and also that it could be easily used our days. My above points just hold for the childhood of PCs. – MicSim Jul 07 '10 at 16:16
  • And then you do some video editing and have wasted a lot of GBs of hard disk space. Or you try to build firefox from source - a few more GB gone. Or you want to import the Stack Overflow data dump, which comes in GBs of Xml files and produces about the same amount of database files. And if every version of that database is saved separately... Point being: there are lots of ways to waste space on a modern PC. – sth Jul 08 '10 at 00:24
3

If I have things that require versioning, there are plenty of ways to do it (local git repository, networked version control systems, etc.). I suppose the worry has been that if you create a new version EVERY time a file is changed, sooner or later your disk is just filled with diffs that you may or may not need (temp/swap files, etc.). Snapshots like time machine are sort of a middle ground - they let you go back, but don't spend a lot of space backing up (arguably) needless "churn".

Curtis
  • 3,931
  • 1
  • 19
  • 26
3

Versioning tends to not be useful in the majority of cases where disk writes are involved. Lots of changes happen that are meant to be one-way, and no one ever cares what the previous version was.

Plus, its hard. Implementing a file system to handle versioning is inherently more difficult than making a file system that doesn't. There is just no real incentive to create a file system that does this. The new systems (zfs, ntfs, btrfs) can do this because there is a new state of competition based on features, so they are all attempting to cram as many features as possible into their FS designs.

Most people are happy to use a VCS on the files they actually care about, not wasting space on FS versioning.

Adam Shiemke
  • 3,734
  • 2
  • 22
  • 23
2

According to Darwin, evolutionary features which are not actually used tend to become de-selected. If there were a real and widespread need for this, major operating systems would include it as a default.

I used VMS a few years before the PC made its appearance. I had dozens of copies of everything I did, like it or not. I had no idea what most of them were, and didn't care. They quickly became clutter. Apparently Versioning File systems are another of those "It Seemed Like a Good Idea At The Time" things...

  • 1
    I disagree that there's not a widespread need for this kind of thing. Most users have never even been exposed to the idea, much less used such a filesystem, so they've been conditioned to just accept the status quo. Unix and DOS/Windows didn't put an emphasis on this kind of robustness, so it was never part of the user culture. But if it were not useful, the manifold undelete programs, and the tired ritual of restoring from backups when a user accidentally deletes or overwrites a file, wouldn't be part of our daily computing realities. – Ionoclast Brigham Jul 21 '14 at 23:23
2

Most file system designs today are taken from Unix operating systems design (like Unix has hierarchical FS before VMS), as Unix become more popular then its FS become the main stream. Then these concepts were taken to other OSes. Unix had not versions of files.

Later, different approach was taken for keeping older version - snapshots. They have advantage in that they are atomic and take entire snapshot of all system. It has also significant advantage of saving lots of space for files that are partially updated.

So today, if somebody thinks of supporting versions it is better to do with snapshots (as many file systems are support them and of course all modern storage systems).

So, this useful feature died together with operating systems like OpenVMS (that is almost dead today)

Artyom
  • 31,019
  • 21
  • 127
  • 215
  • Yes, I like Unix and POSIX was a great success - but it also hinders progress. For example it is completely nonsense to treat file names as sequences of bytes (including nasty control characters) without known encoding instead of simply switching to Unicode. I wonder whether versioning files also died because of tradition or because it is not useful enough. – Jakob Jul 07 '10 at 14:05
  • 1
    @Jakob I worked a lot with versioned file system. It is more headache then real useful thing, especially when 99% of 3rd part tool assume that there is one such version. "For example it is completely nonsense to treat file names as sequences of bytes." - I totally disagree - it makes design much easier and simpler. Also all modern Unix use UTF-8 so it is not really a problem (I mean Unicode) – Artyom Jul 07 '10 at 14:39
  • Maybe it's a henn-and-egg question with file systems and applications that work with files. On Unicode see http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html#utf8 (I even broke github with control characters in file names: http://github.com/nichtich/badnames ;-). Versioning file systems may also have died because of little benefit. But allowing arbitrary bytes in a name (which semantically was always build of characters that only happened to be encoded by bytes in the old days) is archaic and proves that standards can block progress. – Jakob Jul 07 '10 at 15:08
  • @Jakob is this better to work like on Windows where fopen can't open files with Unicode file name? I don't think so. There are much more broken Windows application in work with Unicode file names then Unix ones... – Artyom Jul 07 '10 at 18:12