Unfortunately (or perhaps fortunately), the file system paradigm only provides a static representation of file systems. File systems can save the current contents of a file, but the past states of the file are lost. The notion that files are constantly changing is not incorporated into the design. In practice, computer users are constantly modifying the contents of files. File modification represents one of the most common and basic tasks for a computer user.
When a user edits a file, the state, or makeup, of its previous contents are lost. To keep an old version of a file a nearly duplicate copy would be needed to continue editing a newer copy. Keeping an older version of a file requires making a copy with a different name. This system of renaming files is a weak way of tracing the changes of a file's contents.
Failing to integrate the dynamic and ever-changing nature of the file system in the original design was not a poor decision. A good abstraction--which the file system model is--avoids incorporating unnecessary extensions and complicated features. Another reason file system designers avoided incorporating maintaining file versions is because it is a fundamentally human task. How could a computer keep track of versions without being able to read the user's mind? It is suggested to users to save often to avoid losing their current work. How would a computer system differentiate between substantial revisions and precautionary file saving? If the solution was to keep every saved version of a file to arbitrary names[1], it could take a user forever to find the desired version among the thousand of saved versions.