np: Clash - The Right Profile


There are dozens of formats for profile data of people. vCard is the most popular one, but LDAP also counts for a lot. Our colleagues from the Jabber front even have two. PSYC as always simply uses a nice stack of hierarchical variables, but to get there we use a generic mapping from various formats to PSYC.

Contents

Politics

From a political point of view you may be very much against profiling and I agree with you. PSYC recommends to only use the necessary fields and to leave most empty. We're compatible with everything, but we don't really use it. Profiles are usually only exchanged between friends (you only get a very stripped down version, if you're not a friend of someone), still you shouldn't expose too much information by digital means at all. So if you think there are far too many fields for far too many things, yes, it's true: there are huge amounts of profile options in here, but please - don't confront users with endless questionnaires (if you're a client interface designer) and don't hand this information out to the wrong people (if you're a service provider).

Profiling Field Names

Here it comes, the PROFILING FIELD NAMES COMPARISON CHART. Check it out.

Explanation of table rows:

  • PSYC: PSYC variable name (see Method Naming for explanations)
  • /set: user-friendlier variant of the variable name for the /set command
  • jProf: JEP-0154 is the new profile data representation for jabber. it is mostly unused everywhere. psyced supports it anyhow.
  • vCard: the funny format that made it everywhere. at some point defined in RFC 2426.
  • jCard: JEP-0054 field names should be tagged jCard rather than vCard. JEP-0054 is a not so brilliant adaption of vCard to Jabber (it loses some semantic value in conversion), it is superceded by jProf, but in use everywhere. psyced supports both (and thanks to profiles.gen can even convert between the various formats).
  • LDAP: actually useful ISO standard. no we don't do LDAP yet, but we probably should.
  • FOAF: the profiles-without-privacy format. unused, but no need to delete it.

profiles.pl

The mapping that generates the table above is kept in http://www.psyced.org/dist/world/net/library/profiles.pl and, yes, you're not mistaken, I have put the perl script which uses it right at the beginning of the file itself so we don't have to look for it elsewhere. This multi-file format mapping together with the bits of perl code produce a header file in LPC: profiles.i, and the code in profiles.c finally does the conversions between the formats.

Client programming

Here's a typical _request_do_set as described in command for client programmers. It is the elegant and GUI-compatible way of sending /set speakaction wozhere to psyc://example.net/~kilroy

.
=_source_identification psyc://example.net/~kilroy

:_key                   _action_speak
:_value                 wozhere
_request_do_set
.

You can provide anything you see in the profiling chart as an argument to _key. For changing passwords we currently take old and new password in the _value field separated by space. It should probably use _value_old instead, what do you think?