After I finished my Whine about syncing contacts between Gmail and *anything*, I got to thinking about contacts and pim data in general.
Realistically there only needs to be 1 address book/contact system on a computer. Think of it as a central repository of data. The notion that Quickbooks and other software packages have about “syncing” your contact data across programs on the same machine is completely insane when you think about. Why not just use the same data base for all contact data?
There have been quite a few times I have sent invoices to a wrong address because I updated my clients new address in Outlook, but forgot to update it in Quickbooks.
In order to have a truly centralized contact database, it would have to be flexible. There are certain elements of contact data that is universal, Name, addresses, phones, etc. However there is also a need for programs to have additional and specific data for each client. For example, while a Mail Program and Quickbooks both might need Name and Email Address, Quickbooks might also have the need to store contact specific data such as payment terms or credit card information for which an Email program would have no use.
In this case the central contact database could be a flexible framework to allow extra “fields” to be added to each record. Programs like Email would just ignore data is does not need. If the software maker is particularly security minded, they could maintain there own database of sensitive information, but only use hooks and associations to link central contact data back to the program. Or even easier, just encrypt the data in the program specific fields. This would allow a much easier backup model.
In cases were removal of a contact by one program might “break” another. The software marker could keep a realtime backup of the data within it’s own data framework for restoration, or flags could be set for each contact set to warn the user that they should not completely delete a contact because some other software requires the data. The central contact database could also have a management program (Like Address Book), that would allow the user to set visibility for a contact to a particular software package.
Finally, all of this data should have some structure to synchronize with a server ether in the office or in the cloud. This would allow mobile applications to use and change the data. I have a larger concept of a synchronization framework, but I’m still forming the ideal.
To it’s credit, I think Apple is trying to open up it’s contact database more so that third party software can use the data.