Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts...

82
Travis Reitter Desktop Summit 2011 Berlin, Germany Contact aggregation for free software Folks

Transcript of Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts...

Page 1: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Travis ReitterDesktop Summit 2011Berlin, Germany

Contact aggregation for free software

Folks

Page 2: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Motivation

Page 3: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Motivation

● People have a huge number of addresses

postal, email, IM, web services, ...

Page 4: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Motivation

● ...and basic attributes

avatars, presence, status message, ...

Page 5: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Motivation

● ...and extended attributes

photos, videos, wishlists, ...

Page 6: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Motivation

● But these data are poorly integrated

Page 7: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Motivation

● Think: I've got a friend on my contact list

How do I email them?

How can I find their recent vacation photos?

Page 8: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Motivation

● I've got a friend in my email client

How do I start a video call with them?

Page 9: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Goal

Page 10: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Goal

Aggregate a thorough address book from

all available contact sources

Page 11: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Non-goal

● Collecting and organizing non-basic data

Eg, chat logs, photos, musical interests

These should be handled by external

software that use Folks as an index

● Telepathy-logger, Zeitgeist, etc.

Page 12: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Non-goal

● Be everything to everyone

Page 13: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Prior Work

Page 14: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Prior Work

● Maemo 5 Contacts (N900)

Full aggregated address book

Supported Telepathy contacts, local store,

SIM card contacts

Provided a library for other applications

Page 15: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Prior Work

Page 16: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Prior Work

● Maemo 5 Contacts (N900)

Works very well

Uses a lot of open components

The tricky parts are closed source

Maemo 5 is end-of-life'd

Page 17: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Similar Software

Page 18: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Similar Software

● Android Contacts

Works very well for storing and linking

IM, web service contacts not integrated

● Talk is a separate app that only shows IM

Based tightly on Android / hard to integrate

with Gnome and MeeGo

Page 19: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Similar Software

● iOS Contacts

Stores contacts, does not support linking

IM, web service contacts not integrated

Closed source

Page 20: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Summary

Page 21: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Summary

Other solutions don't work:

IM, web service contacts not integrated

Meta-contacts not always supported

Closed source and/or development

Page 22: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Solution

Page 23: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

Page 24: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

Solving the problems:

Open source (LGPL v2.1+)

Designed to aggregate contacts from many

types of sources

Contact linking, not mangling

Usable from C, Vala, … (any g-i language)

Page 25: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Basic Architecture

Page 26: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

● High-level library: libfolks

Defines core objects and interfaces

Most implementation is left to the backends

Page 27: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

● Backends are split into a thin GModule

Dynamically loaded at run-time

Page 28: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

● ...and support library

Lets applications use backend-specific

features but keeps the core library simple

Page 29: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

Page 30: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

● Backends provide a source of Personas

Page 31: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

● Personas have linkable properties

Eg, IM usernames like [email protected]

Page 32: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

● libfolks matches up these Personas into

Individuals in the IndividualAggregator

Page 33: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

● Backend 1 has a Persona with email

[email protected] and another with email

[email protected]

● Backend 2 has a Persona with both email

addresses

Page 34: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

● The IndividualAggregator will see this

match and create an Individual from the

Personas

This will have the union of the properties

from all the Personas

Page 35: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

● Properties like alias and avatar are first-

come, first-used

● Presence is most-online among its

Personas

Page 36: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Using Folks in applications

Page 37: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Folks

Page 38: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Backends

Page 39: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Telepathy Backend

Page 40: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Telepathy Backend

● Creates Personas from these services:

Page 41: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Telepathy Backend

MSN

IRC

SIP

ICQ

QQ

Sametime

Yahoo

Gadu Gadu Groupwise

AIM

XMPP

Page 42: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Telepathy Backend

● ...and more

Telepathy supports more protocols every day

Page 43: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Telepathy Backend

● Personas contain:

Alias

Avatar

Groups

Presence

Page 44: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Telepathy Backend

● Personas can be used for:

Text chat

Audio/Video chat

File transfer

Desktop Sharing (VNC)

Page 45: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Evolution Data Server Backend

Page 46: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

EDS Backend

● Local contact store

● Supports all standard address book fields

Page 47: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

EDS Backend

● Takes advantage of the standard Gnome

address book

● Helps make the transition to Folks easier

● We didn't have to start from scratch!

Page 48: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

EDS Backend

● Stores implicit contact links

● Makes meta-contacts (“Individuals”)

possible

Page 49: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Libsocialweb Backend

Facebook*

Flickr

Twitter*

Last.FM

More...

Page 50: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

*a note about ourcloudy friends

Page 51: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

QtFolks

Page 52: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

QtFolks

● QtContacts <-> QtFolks <-> Folks

● Brings Folks to any QtContacts-based

application (maybe yours!)

Page 53: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

QtFolks

Page 54: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

QtContacts

Page 55: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Who's using Folks?

Page 56: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Empathy,Gnome's IM client

Page 57: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Empathy

Page 58: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Empathy

● Uses Folks for meta-contacts

Allows actions from any valid

(source account, destination contact) combo

Page 59: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Empathy

Page 60: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Empathy

● Provides UI for linking contacts

Page 61: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Empathy

Page 62: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Gnome Contacts

Page 63: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Gnome Contacts

● Streamlined address book built on Folks

● Part of Gnome 3.2's Contacts feature

Page 64: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Gnome Contacts

Page 65: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Gnome Contacts

Page 66: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Unity Place: People

http://seilo.geekyogre.com/2010/11/unity-place-people-day-3/

Page 67: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Flying Cars

Page 68: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Flying Cars

The Future

Page 69: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Future

● Simpler contact linking

As automated as is safe

Fancy heuristics

Page 70: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

MeeGo

Page 71: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

MeeGo

● Will use Folks (through QtFolks) for its

address book

● Working with us upstream for everyone's

benefit

Page 72: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

MeeGo

● Sponsored initial development of:

QtFolks

Libsocialweb backend

Tracker backend

Page 73: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Future

● Gnome Shell integration

Search plugin

Chat with someone in just a few keystrokes

Summer of Code project by Morten Mjelva

Page 74: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Future

● Filtering

Efficiently retrieve a subset of Individuals

based on a search string

Think: type-ahead for emails

Page 75: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Future

● Search-only backends

Massive LDAP stores

Facebook/Google+ “unfriended” contacts

Page 76: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Future

● Performance work

Current performance is OK, but not optimized

Page 77: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Present

Page 78: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Future?

● Fill in the gaps with simple backends

Gravatar for avatars

● Stores an avatar for an email address

Page 79: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Future?

● Robohash to generate unique avatars

Page 80: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Future

● Dummy backend

Will make client testing much easier

Page 81: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

The Future

Your ideas here!

Page 82: Folks: Making People first-class objects on the Gnome Desktop · Similar Software Android Contacts Works very well for storing and linking IM, web service contacts not integrated

Get Involved

● http://telepathy.freedesktop.org/wiki/Folks

● #telepathy on FreeNode

● Telepathy mailing list

● Folks: Gnome git and bugzilla: 'folks'

● QtFolks: MeeGo Gitorious and bugzilla