Sync Is The Paradigm

The Atom protocol allows for clients to work with large data sets. It is undesirable to require implementations to transmit the entirety of such a data set in one HTTP request; it is preferable if there is a useful way for either client or server to unilaterally limit the amount of data returned in a single request.

There may be many ways to slice a collection. For example, a client may wish to search for keywords or by an expression over various fields. Supporting a rich query language may be complex and subtle, and some queries might be unsupportable by some servers, leading to an unusable interface.

Instead, suppose that the Atom protocol supports an efficient way for a client and server to synchronize their distinct copies of an Atom collection. This may obviate the need for a standardized query language, since a client can then do any desired searches within its own local copy of the collection.

Besides simplifying the interface, synchronization is more efficient than display-as-you-go, where requests are triggered by the user's navigation behavior. With such an approach, the same items may be fetched many, many times over a short user session.

For these reasons, consider the possibility that sync should be the basic technique for sharing collections from server to client, as opposed to display-as-you-go.

Related Ideas

Alternative to ViewIsTheParadigm (DisplayAsYouGo). DisplayAsYouGo requires the server to determine presentation or a query language, either of which has some complexities to be worked out in the protocol. If sync is the paradigm, the protocol may not need these complexities.


The web doesn't seem to work this way. Browsers don't need storage.

[True, web browsers don't work this way, but I don't take that as an argument in itself. Consider my contention that the only alternatives may be (a) working out a search grammar or (b) forcing the server to do the presentation (that is, to impose some organization on the items). Also, Sync Is The Paradigm doesn't preclude other approaches. The argument here is that this might be the most important approach to optimize for. If so, it's an easy one to optimize for. --EzraCooper]