This is the first part about how we think our favourite address book application should look like, what is needed to get to it and the reasoning behind it. It introduces the basic idea of an address book and analyses other implementations. Comments, ideas, suggestions and small ponies are always welcome. Computers and mobile devices are changing and evolving at a tremendous speed, however one of the main reasons for you to use a computer stays the same: people. It’s all about them, from social networking to chatting to collaborating and working with them. And nevertheless the software enabling us to do this got stuck in the last years and is stagnating. Addressbooks simply suck. Even though this is a very important topic for each computer user, we are still lacking a good contact central. Social networks step in here and act as a replacement for that software.
During the GNOME Hackfest in Munich we, that is Daniel G. Siegel, Fabian Sturm, Felix Kaser, Michael Kanis, Salomon Sickert and Sebastian Faubel, tried to analyze our current situation and to come up with something which really could be useful for people. In the following we will propose an address book which we think is done right and will cover most use cases people have.
Why are social networks so popular? Well, one reason is certainly that you can keep contact with your friends and mates even when they moved to a different city, lost their mobile phone, changed their e-mail address and stopped using Jabber. And that is simply because people don’t have to manage their full addressbook, but only their own personal contact details. Those are then made available and everybody has at any given point in time the correct contact information and a working link to a specific person. Additionally you only have one place where different contact details are aggregated and such platforms act as a central starting point for starting a conversation with others. Looking at the current state in GNOME we can see that contact details are vastly scattered around. Your mail addresses are stored in Evolution, your chat contacts are stored in Empathy, your phone numbers are stored on your mobile phone, your social network contacts are still not available on your computer.
In most mobile phones the addressbooks are simpler, cleaner and better to use – despite the small screen, the limited hardware and input problems. They act as central storage for all contacts, like social networks are trying to. They pull data from various places and aggregate it into one central storage, where any person can simply have up-to-date information of all his contacts and use that information easily. Remember, that it is not only about e-mail addresses, but about every single information you want to connect to a specific person, for example her anniversary or her bank account in case you need to send her money.
So, why doesn’t exist something like that on the desktop? Well, it is not easy at all to design something like this and make it work like it is supposed to. But this is what we want to solve: simple, elegant and easy contact managing. A single point of aggregation for all contacts. An addressbook which is capable of keeping track of your contacts. A program which is capable of helping you. A place you do not have to feed yourself, but will feed you. Our starting point was a great mockup done by Allan Day.
Design wise this is a very good and clean design, and we quickly started to adapt it to our needs. Read our second part about our vision of GNOME Contacts to see what happened with it.

Greg
December 15, 2010
Please please please get this implemented, polished and included in the big distributions. I completely agree with what you’re saying.
Sebastián Benítez
December 15, 2010
You are wasting vertical space with those buttons in the “status” bar, while there’s a lonely search field that could also have some buttons on the left.
Sebastián Benítez
December 15, 2010
Oh, after I read the second part (missed it, sorry) now that design is clearly much better.
Felix Kaser
December 15, 2010
WOW! Thanks guys for writing this down and providing so much detail in the mockups 🙂 you rock!
Adam Williamson
December 15, 2010
Nearly right.
Please don’t make it part of the desktop. Just write a decent bloody client/server implementation. Do you have any idea how hard it is to set up a simple server to store your contacts in and sync them to your various devices (desktop, laptop, cellphone)? Too bloody hard, is how hard.
Adam Williamson
December 15, 2010
actually, for bonus points, just write it so you can sync your contacts into Mozilla’s Weave system (it’s a cloud that’s actually done right!), and write clients for GNOME and for all cellphones. I will then have your babies.
Jay
December 15, 2010
This is great work, but I wonder about this question: What problem is this solving? The problem that “address books suck”? Is that really a problem, or do we just no longer have a need for them? And if it’s not a problem that you’re solving, are you at least making things easier?
People tend to have their Empathy contact window open at all times, at least minimized if not visible. Going to an address book to IM somebody is counter-intuitive and potentially slower than just restoring or focusing your Empathy contact window and double-clicking a person.
What about email? I find that many times when I’m writing emails, it’s because I’m already in “dealing-with-email” mode, which means Evolution (or in my case, a browser with Gmail) is already open. It wouldn’t make sense for me to open a new program just to retrieve a person’s contact info, when the “To:” field of most email programs has auto-fill.
The same goes for Facebook, SMS, Twitter, and the like. Usually you have a very good idea of the medium through which you want to contact someone, and so your first thought is to open the necessary program or website to do so.
If there isn’t a problem that you’re solving, are you making things easier? The only way I could really imagine this making things easier is if your contact list were omnipresent in some way, or at least *very* easily invoked. If there were a “compact” view that resembled Empathy’s contact window, allowing it to remain always open without occupying too much desktop space, that might improve people’s contact workflows. Or it could auto-hide against the right side of the screen, popping out when you strike your mouse arrow against it.
Unless there is a clear, significant, and easily-learned increase in functionality being offered, then you can’t reasonably expect people to change the way they look up a person in order to contact them. And I don’t think something that resembles an address book in any way is going to accomplish that. People think of an “address book” as a place where you manually store information to be laboriously and infrequently looked up, with the skeptical hope that the details are still up-to-date. Thinking of it more like a “Contact List” or “Hub” would help change the idea of what an address book can be.
I would be curious to hear what your use-cases are.
ssickert
December 20, 2010
Exactly, as you said: GNOME contacts provides a central access point to get in touch with people.
Thanks for the in-depth and detailed feedback.
arthapex
December 15, 2010
Absolutely great first impression.
One addition: you could auto-group contacts depending on the tags already present in evolution’s contact information.
Pedro
December 15, 2010
Nice work, I hope all GNOME 3.0 applications follow the same UI standards as GNOME Contacts.
In my opinion the contacts UI is very important but it shall be connected to a cloud backend. Now days I do use Gmail to manage my contacts, it has all the features that is describe here, but I would use GNOME Contacts application if it is integrated to Gmail that is integrated to my phone.
On the cloud we can have multiple backends too, i.e., My contacts photos can be taken from Facebook where it has a higher resolution while the phone can be taken from Gmail.
Johannes
December 15, 2010
Hey!
The overall design ideas are really nice. Something that came into my mind:
* The advantage of a social network is that you don’t have to add you contact details manually, instead you just add people. This is difficult to do otherwise so maybe we can gather information from social networks to fill the address book with more details automatically.
* Why don’t we have the whole UI as “People” tab in the gnome-shell overview? That would be a great place to access it. Of course there could be a different view for applications like evolution or empathy but in general I think that would be best.
bochecha
December 15, 2010
> “And that is simply because people don’t have to manage their full addressbook, but only their own personal contact details. Those are then made available and everybody has at any given point in time the correct contact information and a working link to a specific person.”
Wouldn’t it make sense then to only edit your own personal contact informations (with something like the current « about me » dialog) and then publish those in some way?
Adding a contact to your contact list would be as simple as giving the « link to those published informations » to the contacts application, and it would fetch everything automatically.
No need to manually edit contacts anymore, and we would simply create some kind of distributed social network… with our desktops.
Of course, this brings in some new questions like privacy (and more specifically how to publish some informations to some people and different informations ot other people), as well as how to actually publish those (protocol).
Sorry if this is actually the plan, but those two blog posts don’t emphasize this, and the second one (on Daniel’s blog) actually makes it look like the contrary (i.e contacts will be added and edited manually).
ssickert
December 20, 2010
A publishing service for contact information (provided there are a good privacy mechanisms) is a very interesting idea, however this is not the current scope of the project. In the first place we want to use existing sources and mechanism.
Jacob
December 15, 2010
Looks quite good! I would absolutely be willing to help, if you would be willing to let me. I am a C++ programmer studying games programming in Sweden, which means I won’t be able to work on something like this for several days of the week, all month. I would however be as dedicated as I possibly can. I’m also new to contributing to FOSS/Open Source projects. I have no experience with GTK, pretty new at Linux and with all these cons you’re probably already bored to death. I am, however, in my opinion a great programmer and a relatively good code-designer. So with the help of other programmers, more experienced in my lacking areas, I think I could contribute well written and soul-rich code.
ssickert
December 20, 2010
Of course, just join our irc channel (#personal-contacts on gimpnet) and drop me mail.
The application is written in vala, but that shouldn’t be too hard for you. Maybe you should look at the tutorials.
Tomaž Vajngerl
December 15, 2010
What about merging (and resolving of conflicts)of contacts from same person into one contact. I did a quick look and did not see this covered in the design. Also import/export/synchronization of contacts.
I am not sure but my guess is that a map showing the location of contacts address (and a possibility to set the spatial coordinates for the address) is part of this application. I could also imagine that users “current location” or “last known location” (gathered from google latitude or similar services) could be displayed in this map. Still maybe another “map oriented” application should be responsible for this things.
ssickert
December 20, 2010
At the moment it is realised with drang’n’drop, however we are searching for another and better UI for merging (or more correct: linking) of contacts.
Javier
December 15, 2010
This looks great, however, gnome needs to take care of evolution with all these PIM-changes. If I were the one deciding, I’d only leave mail and calendar in evolution (although I’d also like to split those in different applications/windows), and make it interact with this for contacts and tomboy for notes (and something like getting things gnome for todo lists).
Evolution’s UI is great for mail and calendar, but it’s a little big and static for stuff like contacts, tdo lists and notes.
ssickert
December 20, 2010
We use the evolution-data-server (through libfolks) for accessing and storing information, so data already existed in evolution will be reused and updated. However all enhancements done from libfolks (like online status) are not available in evolution.
Ignacius
December 15, 2010
If somebody has used the Nokias N900, then he will understand Gnome Contacts. Definitely awesome.
Here my 5 cents.
An easy way for synchronizing your contacts with your mobile/computer/gmail, etc…
It would be awesome to have this attached to a shortcut key so I can access my contacts in a really fast way.
As Empathy supports Video/Audio call, take into account how can be integrated into Gnome Contacts.
ssickert
December 20, 2010
Synchronising of contact information is still a problem – we don’t solve this issue with GNOME contacts, as we use libfolks, which just aggregate but don’t synchronise information.
If we want to do that, we have to look at every backend. Some of them do this automatically (telepathy, google contacts) and some not (local evolution contacts db). So this is a non trivial task. However suggestions are appreciated 😉
KidProQuo
December 15, 2010
Have you seen the dexter-rolodex project on launchpad (http://launchpad.net/dexter-rolodex)? They seem to share a lot of similarities with these ideas here and have made a pretty solid start on getting a working program up and running.
Jamie
December 16, 2010
Would this be implemented using libfolks?
ssickert
December 20, 2010
Definitely, see my next post (which is not ready atm 😉 )
michele tameni
December 16, 2010
Why don’t use tracker as backend? in this way are really simple to link information from social network, mail and so on.
Peter
December 16, 2010
There’s some interesting concepts. Being a user of both MeeGo Netbook (was the same in Moblin) and a Nokia n900 phone alot of these types of things have already been addressed elsewhere. So a couple of points. Reuse exisiting things like libfolks (moblin users anerley which is similar but has some other bits that would be nice to see merged) and libsocialweb for integration with social networking. Also it seems there’s a lot of dependencies on the mouse which isn’t necessarily good for accessibility and people that use the keyboard extensively.
Ewan
December 16, 2010
It’s a nice idea and a good approach. UI wise, It should be one column to make it easier to scan. What you have now looks like the useless Nautilus icon view. Make it more like Empathy’s contact list or the Nautilus list view.
Otherwise, I think Jay and bocheda are right. Personally, I would start with the finger protocol (RFC 1288), extract a http or jabber based microformat based on it. And then the contact list can be given to others in the same way that email addresses, ical files or rss feeds are published.
Stefano
December 17, 2010
nice mockups, thanks for sharing! I especially like the map widget embedded with the contact information sheet. I wonder if double-clicking on it could open up a map viewer of some sort? — I am thinking of google maps, but there are probably other similar services that I am not aware of. It might be useful to be able to compute the shortest car route to some friend of mine starting from the contact information sheet in just two or three clicks. 🙂 The degree of utility is of course open to debate.
another point I’d like to hear about: what about inter-desktop interoperability? would the contact database be shared with KDE applications through a common service? I am not sure whether the infrastructure is already available and if it is/will be shared, but did you guys do some research on how KDE does handle this problem and if there are ways to collaborate somehow? I am speaking as a non-KDE user, BTW.
(I am sometimes amazed at how the same problems are solved in completely independent ways on the two main unix DEs, and about the missed opportunities for collaboration — at the cost of more synchronization, of course. I do not know if this is happening again here.)
Thanks!
Frej Soya
December 17, 2010
Even with easy merging, I always end up with multiple contacts of many people. I don’t think it’s possible to cover all cases when synchronizing with say mobile phones etc.
Instead help the user with a duplicate finder. It’s a really really useful tool for any app that shows a lot of user generated data.
José
December 22, 2010
Hey, I really liked the mockups. I have three comments/questions about creating a new group by dragging a contact. Maybe it makes sense that when you start dragging the contact, the new group label becomes “drop here to create group”? Second, it seems weird to me that the step 5 you end up with the new group in a selected state. I think maybe it is better that it is not selected after creation so you are ready to drag another user to the group you just created. Last, while the drag is good, maybe we need also context menu’s for group creation/move contact to an existing group?
Danno
January 13, 2011
Totally agree with Ewan… anything that’s laid out in rows and columns is immediately harder to visually scan. If you’re trying to scan a list for a particular contact, which is surely the most common use case for a contact list, a single, sorted column is much easier.
Opoho
January 24, 2011
Do you think it’s possible to integrate it with Zeitgeist ? (journal, recently used, etc.)
Christophe
February 6, 2011
I am a GNOME user and very happy to see what you are doing, but, as Stefano wrote:
“what about inter-desktop interoperability? ”
We are not alone in the free software world, so this point seems to me very important.
ssickert
February 7, 2011
This is just an UI concept, however we are planning to make heavy use of existing GNOME technologies.
seb
February 10, 2011
– What always bothered me is how I should go about phone numbers of a family or people living in the same unit? one phone number in many names? or a contact like ‘family younameit home’?
– import export to gmail/android contacts, thunderbird contacts. loss of information during sync process should be minimized. e.g. address block recognized and assigned to the respective fields. work address should stay work address and not become ‘other address’
– managing of relation ships in context of the address book might be another thing to think about. link girl A with boy B to be a coulple.
– export to gramps 🙂
just some thoughs I had when looking at these concepts.
Hiddin
May 2, 2011
Hi!
I think it would be also nice if the user have the ability to add searchable custom fields for contacts, and also could assign a type for the field (text, number, date).
For example. User should add a field for where did they met each other, what favors can he/she do for me (what kind of experts he/she has), favorite drink, when was the last met (for cultivating important relationships with less common acquaintances) etc whatever a specific user needs for contact organization.
Based on theese fields the user could also create custom views, and could easily switch among them.
What do you think of it?
Age
May 11, 2011
Great initiative, I would love to see this coming available.
Its success will mostly depend on the support/integration of as much applications as possible. It will be hard to sell the idea that if you change a contact, its change will be noticed in e.g. Empathy but not in e.g. Thunderbird (I, for one, won’t be switching to Evolution because of it). People will not expect this behaviour and I don’t quite see how you this can be made clear to the user.
In the second article there’s mention of “some entries can not be edited, as it is remote data…”. Isn’t this the whole idea of the Contact app? Being able to manage things in a central place? What if a user changed his Jabber address? To get it changed in the Contacts app one has to make the change in Empathy while I had the expectation I could change it in the central place and Empathy would pick up on it.
One note on the contact groups front: don’t forget the groups already available at the different sources. If Empathy has groups (thus any supported IM protocol supporting groups), make them available in the Contact app; if Thunderbird has, include them; etc.
KitchM
July 22, 2011
In the second part, within the very nice diagram shown (What does a contact look like), I found a comment, “With many contacts, colors don’t help to find a contact quickly, they are very disturbing”. As I have always thought that colors do actually have a dual benefit of making the application more attractive and making organization more clearly defined, I am afraid I must be missing the point of the comment.
Could you please expand a bit on your statement?
Thanks.
ssickert
July 26, 2011
The project is now in new hands. Just have a look at http://git.gnome.org/browse/gnome-contacts/ 😉