Communication History Overview (long, brainstormy)

Werner Almesberger werner at
Thu Mar 29 01:29:13 CEST 2007

Thomas Wood wrote:
> * Search Use Cases
>    - Last 10 entries for Person

I hope you mean "N" :-) E.g., when I call a person, I may want to be
able to quickly retrieve all relevant communication, no matter how old.
("Do you remember the address of that restaurant we went to last time
we've been in Madrid, some three years ago ?")

There's also the question of how far you want to go with this
middleware component. Since such a contact database may be huge (e.g.,
I'd just want to keep everything that I've ever become aware of. I'm
good at remembering meta-data, but actual content quickly evaporates
from my mind.), and retrieval methods sophisticated, a "short term vs.
long term memory" approach might be appropriate.

For now, we'd only need the "short term memory", but it should be
designed in a way that doesn't lead to overly convoluted solutions
for the "long term memory", once someone tackles that. In particular,
there should be a clean way for moving objects between the two.

The "long term memory" would also take care of offline synchronization
and all that (there comes SyncML ;-), so by introducing this "long
term memory", we could leave implementation details of synchronization
aside for now, as well.

Furthermore, this database, which I assume would be fundamentally
tied to the phone, would have to be partitioned by SIM card and
perhaps even for users or roles per SIM card (e.g., company phone with
company card). "Partitioned" may sound complex. Just some
file://${IMEI}/dir/commhist-${IMSI}-${USER}.db would do nicely.

Obviously, in the greater scheme of things, one would probably also
want to be able to migrate all this across phones, i.e., hide the
IMEI part from the user. This would be particularly appreciated by
users who have the habit of constantly losing or breaking their
phones. They obviously represent a much sought-after market
segment :-)

Hmm, this is getting complex. Another approach would be to save all
these nice ideas for a version 2, and design the current thing with
simplicity and a hard incompatibility between version 1 and version 2
in mind. Users and roles should be handled at a more general level
anyway, and the end-user probably shouldn't have to bother with such
abstract concepts anyway.

Oh, and a way to associate "user-provided" data with a record would
also be very useful. That doesn't have to be a writeable field. Just
a read-only statistically globally unique ID for each entry would
do nicely. (E.g., I may want to keep recordings of all calls I make,
but having that as a standard feature would get us into hot legal
water quickly.)

- Werner

 / Werner Almesberger, Buenos Aires, Argentina     werner at /

More information about the framework-devel mailing list