Contacts Manager 
================

History
-------
Traditionally we have been using and abusing mozContacts[1], each certified app that uses contacts has been putting their requirements (indexes, search options, etc.) directly on the API, making it a bit unmaintable.

Also this API has been designed as a mapping with the vcard format, which is great to define a single contact but lacks of all the fields necessary to track modern requirements (contacts merging, data visibility, searching, etc.)

Despite of that in the certified Contacts application we have been adding more and more functionality to try to fix this (the merging is added, different sources of contacts are available just as input), but the requirements continue growing and we move the problem from the API to the app.

Future
------
In a no so distant future, now with current technologies like Datastore, that enable us to share information across domains we can bypass the mozContacts restrictions.

We want to create an app that aggregates and manipulates contacts data sources, not just mozContacts, but also any other possible provider of contacts. As well as consumers will use this data and create local copies with simplified, optimized and specific view of that data per app.

Key points
----------
- Remember a contact is not just an entry: it could be a merged contact, we do have logic to pick information and prioritizing the view of a contact from different entries.
- Datasources should be pluggable: removing a contacts data source would clean all the contacts coming from it, in case of merged contacts being able to unmerge the changes.
- Security and access: By contract some contacts data sources wont be available to everyone or the user may decide to not to grant access from and to different apps.
- Each app will need to have their specific view: an example of this, contacts needs to make the contact list superfast, contacts app should create a storage from this global one with the requirements needed by contacts app.

Links
-----
[1] https://wiki.mozilla.org/WebAPI/ContactsAPI
