For decades, future-gazing technologists and visionaries have assumed that technology would bring into being some sort of electronic Library of Alexandria. In this scenario, massive databanks would be centralized information utilities, with access granted by cheap, fast and ubiquitous data feeds. In Star Trek, for instance, crew members used a wireless network to link their tricorders with the starship Enterprise’s onboard computer-that storehouse of all things interesting and relevant. And the original Internet was created not to distribute information, but as a massive remote-access system, enabling researchers in one place to tap into computers located somewhere else. Even George Orwell’s 1984 envisioned a world in which records of news and current events were stored in relatively few places; that’s how Winston Smith was able to edit the past so that Big Brother’s pronouncements were never wrong.But reality is heading in a different direction. Instead of ubiquitous connectivity to centralized databanks, we are instead building an infrastructure that’s optimized for data replication. The same information is getting copied to dozens, hundreds or even thousands of places throughout the world, and it is kept current through continual retransmissions and updates. Humans instinctively work this way-that’s why people collaborating on a project tend to exchange documents by e-mail rather than putting them on a central server. After all, sometimes we are connected to one of these data repositories on a fast network, sometimes we are connected on a slow network, and sometimes we aren’t connected at all. People like having their own copies, and then keeping them up to the minute by invoking an incredibly powerful concept called “sync.”
Sync-short for synchronization-is all about being able to take data from one location and intelligently copy it to wherever it might be needed. And most importantly, sync is about tracking changes. A good sync system allows you or others to freely edit either the original document or the copies, and then have your changes automatically propagate wherever they are needed. The best of these systems track changes as they are made and allow for sophisticated “undo”-for example, restoring the data to the way it was on a particular date, or removing all of the changes made by a particular author. Sync is not a new idea, but it has only recently begun to emerge as a crucial part of the way that computer systems are run. Sync technology really will set the tone for future computing.
Today the leading sync platform is the Palm operating system, which I’ve lauded in the past. In fact, one of the big reasons for the Palm’s popularity is its “HotSync” technology. Palm users can add, delete or change their address books, appointment calendars or other databases on either their desktops or their Palm-based computers. Put the Palm into its cradle and press the “HotSync” button, and the changes are automatically replicated on the other machine.
But HotSync doesn’t stop there. You can, for example, sync multiple desktop computers to the same Palm, allowing people at both your home and your work to access and update your calendar-even if there is no network connection between them. All you do is carry the Palm back and forth between home and office, synching at both locations; the intelligent software does the rest. If you forget to sync, it’s no problem-the next time, the system automatically adjusts.
Of course, sync technology goes way beyond the Palm-and way beyond one person’s desktop PC. A synchronization program called the Concurrent Versions System is at the root of many successful software development projects, from small corporations where a few programmers are working on the same project to large-scale open-source collaborative efforts enrolling hundreds or thousands of programmers. This technology makes it possible for many people to work on the same program at the same time. Every programmer has a personal copy of the software being developed. A programmer who adds a new feature or fixes a bug can “commit” that change to the project’s repository. Other programmers-either down the hall or across the globe-can then update their copies and automatically have the changes applied. It used to be cumbersome for more than one person to work on a single program at the same time. But now, simultaneous development and bug-fixing are the rule rather than the exception. The Concurrent Versions System, built on the concept of sync, has dramatically sped up software development.