Apple source code pointing to social features?

PSAuthor.h

File this in the wild conjecture/handy-waving category.

I did some random digging today and stumbled upon something that could be pretty interesting, or, could be nothing more than the equivalent of the human appendix of Leopard: remnants of a good idea that somehow along the way never got completed, but traces of it still exist in the modern state for no apparent reason than to confuse and confound those with too many mental faculties at his disposal.

But let’s go with the what if? take. What with my interest in getting people into software in interesting ways, this one seems, like cave paintings, to point to earlier attempts at some fundamental type of expression of a very contemporary idea.

Anyway, the thing is this. While poking around Articles.js in Leopard’s PubSub.framework (you’ll need to be running Leopard for the Articles.js link), I noted a call to a couple functions having to do with FOAF, in particular function loadFOAF( ) and function receivedFOAF( html ). I talked to Tantek about this and apparently it had to do with some misbegotten effort to bring FOAF support to Safari but that it was effectively stillborn for reasons I can’t recall, but what was interesting was that, tucked away, I discovered a seemingly orphaned file called Friends.html (again, Leopard only).

This got me curious.

I started poking around the PubSub.framework for other clues… (And so you know, the Leopard PubSub.framework is effectively a system-level toolkit for subscribing to RSS and ATOM feeds and maintaining read/unread status universally — something that Windows Vista also apparently has. In any case it’s pretty cool, and it’s also new with Leopard).

So, after poking about, I eventually ended up here:

/System/Library/Frameworks/PubSub.framework/Versions/A/Headers

Within this directory is a file called PSAuthor.h and its contents are quite intriguing. The file describes a class of object called ABPerson (short for “Address Book person”). The various properties of an “ABPerson” are summarily listed, primarily pulled from the ATOM spec: things such as name, email and URL. There is also a conspicuous method at the end of the file called person, which is not listed in the docs, and which is apparently used to associate an author of a web feed with a person from the Apple Address Book. This is huge. Let me pull the method in its entirety:


/*
    @method     person
    @abstract   Returns the Address Book record associated with the receiver.
    @result     The associated record.
    @discussion Currently, associations to Address Book records must be made manually, by calling
                the setPerson: method. In the future, this method may attempt to locate a default ABPerson
                by looking up the email address or URL in the Address Book.
*/
@property (retain) ABPerson * person;

@end

Note the discussion: In the future, this method may attempt to locate a default ABPerson by looking up the email address or URL in the Address Book.

This means that Apple intends (or at least as far as I can make out from reading the tea leaves) to use the Address Book as a store for feed authors… and that — who knows — you may end up using your Address Book to read feeds from so-called “ABPersons” or, moreover, their interest in FOAF might have been a means to automagically grab your list of friends (say, from LiveJournal) to populate your Address Book — then, using ATOM discovery and the PubSub.framework, could have pulled in feed updates from all your friends, giving you effectively a local social network that could power — who knows what kinds of applications!

Vcard512BaseIn any case, I could be totally off here, but there’s something in this… could it be somehow related to the Mail.app feedreader functionality? I’ll offer one more hint that seems to suggest that my Coverflow for People idea isn’t too far off… If you take a look deep in the QuickLook.framework directory you’ll find a couple of very curious images: Vcard16.png, Vcard32Base.png, Vcard32Border.png, Vcard128Base.png, Vcard128Border.png, Vcard512Base.png and Vcard512Border.png. There aren’t any other filetype-specific graphics in this directory, and yet QuickLook is useful for all kinds of files across the OS. Is it significant then, when I browse the Address Book Metadata that I get cards like this?

QuickLook Contact

9 thoughts on “Apple source code pointing to social features?”

  1. I don’t think that using AddressBook to store the location of a feed indicates that AddressBook could become a feed reader, I think this probably has more to do with .Mac + iLife.

    iPhoto has options for subscribing to photocasts (aka feeds), which from what I can remember, you had to add manually. If AddressBook had a list of feeds (photocasts) then a feed reading application could be autopopulated

    Still it’s interesting stuff.

  2. @Tom: Well, I guess I’m mostly interested in the notion of a “person” showing up in the PubSub framework… especially since there’s this notion of a feed being authored by a person, and then using FOAF to identify your friends by URL… it’s just all too convenient with a locus of the Address Book to seem accidental… but yeah, the integration of feeds in iTunes, iPhoto and iLife is a good one…!

  3. There might be more to PubSub than Apple has released. Ever wondered about the name? “Publish and Subscribe”?

  4. There actually is some FOAF in Safari for feed reading, and it’s not Leopard only. That is, I’ve seen this in Tiger also.

    Try visiting something like a LiveJournal feed in Safari:

    http://deus-x.livejournal.com/data/atom

    In the right-hand column, toward the bottom, you should see a “Friends” section after a few seconds. That’s Safari actually chasing down my LJ FOAF file and pulling out my contacts.

    Not entirely all that useful, but it’s there.

  5. What do you say we write a desktop app that does this? if Adium and iChat can store people’s AIM names in your address book, then can’t we store their web address and feed (is this a shortcoming of vCard?) in said database. How about a feedreader that tells me if the feed author is currently signed in to AIM (or IRC or Jabber or Skype)?

Comments are closed.