The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs.
Years ago, computers were stand-alone devices that did not communicate with each other, but today, computers are increasingly connected in networks and one computer, called a client, may request another computer, called a server, to perform an operation. One operation in common use is downloading files from a server to a client. Examples of these files include video, audio, documentation, drivers, applications, and operating systems. As these files are changed or upgraded, multiple versions of the files become available.
For example, drivers are needed to control the attachment of hardware devices (such as printers, microphones, display devices, etc.) to a computer. New drivers may become available in order to provide new function, support new devices, or to fix problems that existed in previous drivers. Clients tend to have many drivers, these drivers tend to be updated with new versions frequently, and the drivers tend to have originated from many source locations, such as the websites of many different device manufacturers. As another example, a client may have a large collection of music files which have a variety of audio qualities, such as 96 kb/second, but later a better audio quality, such as 256 kb/second, may become available. The client may have obtained these audio files from a wide variety of servers, such as online stores that sell downloadable copies of music.
Because of the large number of files that clients tend to have, the large number of versions of the files, and the disparate locations of the versions on servers, users tend to experience difficulty in keeping the versions of the files up-to-date. Finding the local versions at the client, finding the corresponding remote versions at the servers, determining whether the remote versions are newer or better than the local versions at the client, and downloading the remote versions can be a difficult and time-consuming task.
Hence a better way is needed for clients to find and manage versions of files.