From my point of view, the most beauty of web app is its distributed property: I can solve my problems at anywhere. Given a computer with network connection and browser, I can finish my jobs. However, there is a conflict requirement for Centralization. What do users want to centralize - the data which is the most important resource for any company like Google, Yahoo! and any other web companies.

There is a problem distributed and centralized for user data. For user, different categories of web applications help users to handle different problems. But they are not seperated. Every application needs to connect to each other for achieving better integration and really faciliating users' job. For example, the online project management platform need to connect to the online email platform to integrate contact list of team members. If the system rebuilds contact list or import contact list from email system, the user data is distributed by constructing a local copy. If the email system provides an API for other systems, the user data is distributed by sharing access. But considering the update of distributed data within other systems, the seamless integration requires the data are updated centralized. Undoubtedly, user possiblely need to update the distributed data in other systems (e.g. When I do the project management work, I need to add new team member to the contact list.). If the data is updated only in the local copy of the user data, the user data will become unmanageable.

Although the service provider always wish to collect more user data for their own platform, it is painful for users to maintain multiple copy of their data. The better user experience can be achieved by the way that users can access their data from any related system but the update can only be centralized to one source. Just imagine that whenever we need to use user profile, we only have one source (e.g. MySpace profile/MSN profile) and whenever we need to use contact list, only the contact list within email system are accessed and updated! If Using RSS synchronization to access data is called forward synchronization, can something called backward synchronization be implemented automatically? For example, the RSS provider keeps tracking its clients which synchronize the centralized data by RSS feed, if there is an update in any client, it automatically update the centralized data.