[diso-project] Could OpenLike (or similar) be used for diso friending?

4 views
Skip to first unread message

Rabbit

unread,
Apr 24, 2010, 4:22:11 PM4/24/10
to diso-p...@googlegroups.com
I know friending has been discussed before but maybe it's time to look
at it again. I think the "Like" verbiage makes a lot of sense as
opposed to say Digging something. There is potentially an opportunity
to make this more than just about sharing.

The basic components are two objects that have meta describing the
characteristics of itself. The meta for one object describes itself as
a user in the form an OpenID or XRD property. The meta for the other
object provides context to the relationship.

If a user "likes" a story, it can be shared on sharing services.
If a user "likes" a movie, it could be added to their list of favorite
movies.
If a user "likes" a user, it could be added to their address book.

In every case you have two objects interacting. The fortunate thing
here is that for unsupported or unknown object types we have a default
behavior: Sharing.

The purpose of the protocol would not be to describe the exact
parameters of the relationship but only intend to express that some
form of relationship or link exists. It would be up to other protocols
and formats to describe exactly what the relationship means. The type
of object would provide direction toward one format or another.

Thoughts?

=Rabbit

--
You received this message because you are subscribed to the Google Groups "Diso Project" group.
To post to this group, send email to diso-p...@googlegroups.com.
To unsubscribe from this group, send email to diso-project...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/diso-project?hl=en.

Chris Messina

unread,
Apr 24, 2010, 5:10:56 PM4/24/10
to diso-p...@googlegroups.com
It'd be better to just generate an ActivityStreams-formatted activity and send it to the appropriate activity receivers. "Like" is just one verb of many; and we've already done much work to define a solid set of actions for the social web:


Alternatively, OpenLike should really just codify the use of XAuth, WebFinger, and OExchange and be done with it.

It doesn't help anyone (least of all adoption) to go about reinventing what's already been specified elsewhere.

Chris
--
Chris Messina
Open Web Advocate, Google

Personal: http://factoryjoe.com
Follow me on Buzz: http://buzz.google.com/chrismessina
...or Twitter: http://twitter.com/chrismessina

This email is:   [ ] shareable    [X] ask first   [ ] private

Rabbit

unread,
Apr 24, 2010, 5:39:33 PM4/24/10
to diso-p...@googlegroups.com
I'm definitely not suggesting we reinvent anything.

In my mind the "user likes user" scenario would produce an activitystreams entry using the appropriate verb (be it "like" or "make friend" or "follow"). Maybe I have missed something that currently exists to do this. My understanding was that activity streams merely expresses what people are doing and has no direct role invoking those actions. I'll re-read the specs.

=Rabbit

Rabbit

unread,
Apr 25, 2010, 6:31:16 PM4/25/10
to diso-p...@googlegroups.com
After doing some research I'm coming back to this still looking for an answer.

Is there a diso way to perform friending?

It seems the components are mostly there but I haven't found anything concrete. A mixture usage of XAuth, XRD, Open Graph, OExchange and ActivityStreams and could do the trick. Depending on how the community approaches OpenLike, it could also include that to produce a "Add Friend" style button depending on the resource type.

A resource would declare itself a person by including OpenGraph and XRD meta. OpenGraph meta would indicate an object type if it applies (ie: actor, athlete, author, etc) and the XRD could contain a "person" property type (ie: <Property type="http://spec.example.net/type/person" xsi:nil="true" />).

If the user does not have an active session, XAuth could be used to determine where the user stores their diso-compatible list of friends. If the user has logged in, their XRD could include endpoint information for friending.

The friending endpoint could employ OExchange indicating a ctype for people.

OpenLike could investigate all the data up to this point, determine that "sharing" a person is maybe not as useful as "friending" a person and supply an alternate button that says "Add Friend" maybe even alongside "Like" or "Share" buttons. Clicking the button would pass the current URL to the users friending endpoint via OExchange.

The friending endpoint would add the necessary database data and generate an entry into ActivityStreams of "Soandso is following Soandso" or whatever verbiage is appropriate.

Is there anything like this?
Am I way off? I'm just looking for information here.

=Rabbit

Chris Messina

unread,
Apr 25, 2010, 6:44:15 PM4/25/10
to diso-p...@googlegroups.com
I think we'd need to step back and examine what you're trying to accomplish.

Social networks provide "friending" capabilities to build out your address book and make it possible to interact with a subset of the overall network's registered users.

When you're talking about distributed social networks, we're now talking about a much larger potential set of members, all of whom may or may not have all the same capabilities.

On the one hand, adding someone to my list of friends is a convenience function, like adding someone to my address book so that I can pull them up later and get in touch or share something with them. It also means that their activities might be pulled into some kind of aggregator of my choice — starting with public data (like feeds) and then extending to private data (the hard stuff).

When I follow someone, I may or may not want to notify them, but if I do, it would be very useful to extend that friendship by giving them a token which I can use to identify requests that they may make later for my data, or as part of an interaction.

This is essentially what public key encryption aimed to achieve, but it never got the user experience right (nor achieved ubiquity).

So, ignoring specific technologies for a moment, the original problem of what your goals are when you "friend" someone on a distributed network still need to be clarified. Are you friending them in order to proactively share private data with them, or are you looking to gain access to their private data? Or, are you inviting them to a longer-lived relationship where you can subsequently each exchange private or public data as it suits you?

If we start there, perhaps we can string together a bunch of these technologies into a more compelling/interesting solution to the problem of cross-site social interaction.

Chris

Rabbit

unread,
Apr 25, 2010, 8:34:53 PM4/25/10
to diso-p...@googlegroups.com
Comments inline.

On Apr 25, 2010, at 6:44 PM, Chris Messina wrote:

I think we'd need to step back and examine what you're trying to accomplish.


You're probably right. :)

Social networks provide "friending" capabilities to build out your address book and make it possible to interact with a subset of the overall network's registered users.

When you're talking about distributed social networks, we're now talking about a much larger potential set of members, all of whom may or may not have all the same capabilities.


It's true that social networks implement this function proprietarily and it can only be used within the implemented domain (ie: You can't Facebook friend a MySpace user). The incompatibility problem is a legitimate challenge! I'll summarize my position by saying that the separation of "social graph as a data type" from social networks as an "application used to manage that data type" is essential to what I feel you're trying to do. Social networks should be an application choice similar to web browsers where there are tangent features that differentiate one another but they are all capable of reading the same data types for the most part.

It's also, imho, a huge detriment that connections can only be aggregated on social networks because sometimes a connection exists but can't be made known because of other human barriers that provide motivation to actually disconnect or defer. (ie: http://myparentsjoinedfacebook.com/ )

Not meaning to sound philosophical about that, just trying not to be long winded about details.


So, ignoring specific technologies for a moment, the original problem of what your goals are when you "friend" someone on a distributed network still need to be clarified. Are you friending them in order to proactively share private data with them, or are you looking to gain access to their private data? Or, are you inviting them to a longer-lived relationship where you can subsequently each exchange private or public data as it suits you?


I am looking for something that allows me to aggregate connections without requiring the consent of the target and optionally allowing for the target to be made aware that a connection has been claimed. If the target is made aware of the claim then they may choose to reciprocate.

The connection itself could start with a simple URL but it needs to provide meaningful identity. So it needs to include meta data that other social web functions can use.

I feel like the question of sharing private data is somewhat irrelevant. I would image in most cases you would need the connection to be reciprocated before being given access to more information. I can also imagine friending a company and that allows me to access a private contest page where I can enter to win a product or friending someone who allows fans to download from their hobbyist music store. That granting of additional access isn't really what I'm interested in.

The goal would be to have a webpage that is able to act like a profile on the social web. Something you can add to your list of connections. Whether it's a person or band or product, that's all additional meta supplied by the resource you're adding.

Is this the kind of problem statement you're looking for? I feel like I'm failing to be specific enough in this e-mail. :)

=Rabbit

Chris Messina

unread,
Apr 25, 2010, 11:18:17 PM4/25/10
to diso-p...@googlegroups.com
That's a decent statement of the problem. 

I think the browser analogy is apt: I can traverse and consume the web using any number of tools. In fact, iPad applications are in many ways just a set of glorified browsers — I mean, nearly all of them deal with web-originating data at some point.

Therefore, I want to be able to use several different tools (or skins?) to social network. For example, I may have a Google network, or a Facebook network, but I may choose to use a social agent like Tweetie or Tweetdeck or Seesmic to interact with all of them.

The problem still emerges that if I have a Twitter account I can't send a message from Twitter to someone on Facebook.

That's a fundamental problem here — but one worth considering in your analysis (and now I'm not sure where to go next with this thread...).

Chris
--
Chris Messina
Open Web Advocate, Google

Personal: http://factoryjoe.com
Follow me on Buzz: http://buzz.google.com/chrismessina
...or Twitter: http://twitter.com/chrismessina

This email is:   [ ] shareable    [X] ask first   [ ] private

Rabbit

unread,
Apr 26, 2010, 1:59:05 AM4/26/10
to diso-p...@googlegroups.com
I never considered calling Tweetie a social agent. That blew my mind a little.

The problem with having a Twitter account and not being able to send a message from Twitter to someone on Facebook is a layer on top of the problem that I am trying to figure out. Would you agree? I do agree that those top layer problems are very real but I feel like we first need a foundation on which to tackle them.

What I am working towards is the ability to add the overarching identity of "you" as a friend even if that process starts by creating a connection to only one of your identifiers. Once I am able to do that then I can figure out how or where you receive messages and I can send it to you but if I can't even connect to you in a distributed way then I have no means of interacting at all.

This hasn't been an immense problem up until this point because (a) most interaction occurs within the social networking hubs and (b) exporting / importing address book data feels very similar to passing around identity when, in truth, I believe it is only passing around the products of identity.

This, in many ways, is tied to the problem statement that gave birth to OpenID. We needed a way to reference your identity outside the domain that it lives in. We needed to reference "you" as a concept even if it was anchored to a domain. OpenID has mostly relegated itself to tackling the problem of SSO which is one application that can come from having a universal identifier pointing to the concept of "you" but I feel that there are other applications that have been left out. XRD seems to be evolving to actually solve the problem I feel that OpenID should have solved; it is closer to representing "you" as a resource as it lists all the functional endpoints and principle characteristics of your identity including how you login or how you share your address book or if you are a person or a cucumber or a company.

So, that's my take on the overall story, let me bring it back down to earth with the problem at hand...

I need to have a way to add you as a friend whether you are being represented as a page on Twitter or Facebook or YouFace or unpopular-service.com.

So what do we need for this to happen?

1) A way to identify the parties involved.
2) A way to describe what the parties involved are and how to interact with each other.
3) A way to take your identifier and add it to my address book wherever that may be located.
4) A way for my address book to notify you that you have been added to my book.

I think that covers everything?
#1 & #2 would probably be OpenID+WebFinger+XRD.
#3 might be a combination of OExchange and PortableContacts (?) Maybe OpenLike if it ends up doing as I suggested in previous emails (?)
#4 maybe ActivityStreams and something else.

=Rabbit

Stephen Paul Weber

unread,
Apr 26, 2010, 7:42:36 AM4/26/10
to diso-p...@googlegroups.com

You want conveniance UI for adding someone to your XFN list? I had built something like that, but there wasn't interest.

Sent from my Android phone. Topposted :-(

On Apr 26, 2010 12:59 AM, "Rabbit" <rab...@cyberpunkrock.com> wrote:

I never considered calling Tweetie a social agent. That blew my mind a little.

The problem with having a Twitter account and not being able to send a message from Twitter to someone on Facebook is a layer on top of the problem that I am trying to figure out. Would you agree? I do agree that those top layer problems are very real but I feel like we first need a foundation on which to tackle them.

What I am working towards is the ability to add the overarching identity of "you" as a friend even if that process starts by creating a connection to only one of your identifiers. Once I am able to do that then I can figure out how or where you receive messages and I can send it to you but if I can't even connect to you in a distributed way then I have no means of interacting at all.

This hasn't been an immense problem up until this point because (a) most interaction occurs within the social networking hubs and (b) exporting / importing address book data feels very similar to passing around identity when, in truth, I believe it is only passing around the products of identity.

This, in many ways, is tied to the problem statement that gave birth to OpenID. We needed a way to reference your identity outside the domain that it lives in. We needed to reference "you" as a concept even if it was anchored to a domain. OpenID has mostly relegated itself to tackling the problem of SSO which is one application that can come from having a universal identifier pointing to the concept of "you" but I feel that there are other applications that have been left out. XRD seems to be evolving to actually solve the problem I feel that OpenID should have solved; it is closer to representing "you" as a resource as it lists all the functional endpoints and principle characteristics of your identity including how you login or how you share your address book or if you are a person or a cucumber or a company.

So, that's my take on the overall story, let me bring it back down to earth with the problem at hand...

I need to have a way to add you as a friend whether you are being represented as a page on Twitter or Facebook or YouFace or unpopular-service.com.

So what do we need for this to happen?

1) A way to identify the parties involved.
2) A way to describe what the parties involved are and how to interact with each other.
3) A way to take your identifier and add it to my address book wherever that may be located.
4) A way for my address book to notify you that you have been added to my book.

I think that covers everything?
#1 & #2 would probably be OpenID+WebFinger+XRD.
#3 might be a combination of OExchange and PortableContacts (?) Maybe OpenLike if it ends up doing as I suggested in previous emails (?)
#4 maybe ActivityStreams and something else.

=Rabbit

On Apr 25, 2010, at 11:18 PM, Chris Messina wrote: > That's a decent statement of the problem.  >...

-- You received this message because you are subscribed to the Google Groups "Diso Project" group. ...

Will Meyer

unread,
Apr 26, 2010, 7:50:49 AM4/26/10
to diso-p...@googlegroups.com
On Mon, Apr 26, 2010 at 01:59, Rabbit <rab...@cyberpunkrock.com> wrote:
> I never considered calling Tweetie a social agent. That blew my mind a
> little.
> The problem with having a Twitter account and not being able to send a
> message from Twitter to someone on Facebook is a layer on top of the problem
> that I am trying to figure out. Would you agree? I do agree that those top
> layer problems are very real but I feel like we first need a foundation on
> which to tackle them.
> What I am working towards is the ability to add the overarching identity of
> "you" as a friend even if that process starts by creating a connection to
> only one of your identifiers. Once I am able to do that then I can figure
> out how or where you receive messages and I can send it to you but if I
> can't even connect to you in a distributed way then I have no means of
> interacting at all.

I tend to have a pretty simpleton view of the identity problem writ
large, but for this particular use-case I really like the idea of
fostering comms without having to actually unify id domains beyond
email at all, hooking them together with email/webfinger/xrd. For
example, in the context of OExchange I've often said I want to be able
to:

- indicate to my tool/agent/whatever that I want to share something
with "my friend" j...@example.com
- my tool looks up his XRD for specific relations
(http://oexchange.org/spec/0.8/rel/user-target relations in this case,
like in mine: http://webfingerclient-dclinton.appspot.com/lookup?identifier=will%40willmeyer.com&format=web)
- my tool determines that:
a. he uses Facebook and Twitter
b. he's facebook:Joe Schmoe and twitter:joeschmoe (which we
represent in the XRD as well)
- my tool knows (from looking up my own XRD earlier) that I also use
Facebook, so decides Facebook is a service that we can use to
communicate
- my tool tells Facebook to do a share/message/whatever, and uses my
and joe's Facebook-specific identities when it makes that request
- note the degenerate case, which is email -- we can always
communicate that way.

I feel like as a practical-now step, negotiating IDs on a common
system using email addresses as a bridge, such that you can then
communicate on those systems, is pretty powerful and doesn't hold any
implications one way or the other for the larger id unification
problem/solution. I could say "send this to my mom", and the tools
would figure out how to accomplish that at any given point in time.

Rabbit

unread,
Apr 26, 2010, 2:23:20 PM4/26/10
to Diso Project

On Apr 26, 7:42 am, Stephen Paul Weber <singpol...@singpolyma.net>
wrote:
> You want conveniance UI for adding someone to your XFN list? I had built
> something like that, but there wasn't interest.
>

Not specifically for XFN though I'm interested in what you are
referring to. Do you have a link?

The UI element I have in mind would investigate the resource meta to
determine if the agent can connect to it like a person. If so, then it
would also ask the agent where a "friending endpoint" would be.

This is similar to asking the agent via XAuth for a sharing endpoint
except that it would be specifically used as part of a friending UX
flow. It would be good if we could include XFN somehow.

=Rabbit

Rabbit

unread,
Apr 26, 2010, 2:26:36 PM4/26/10
to Diso Project

On Apr 26, 7:50 am, Will Meyer <w...@willmeyer.com> wrote:
> I feel like as a practical-now step, negotiating IDs on a common
> system using email addresses as a bridge, such that you can then
> communicate on those systems, is pretty powerful and doesn't hold any
> implications one way or the other for the larger id unification
> problem/solution.  I could say "send this to my mom", and the tools
> would figure out how to accomplish that at any given point in time.
>

I agree though it doesn't have to restrict itself to e-mail
addresses / WebFinger. All the work applied to doing identity
discovery would be relevant. The identifier would be used as a point-
of-entry to the persons overall identity. Could be any URI (URL,
acct:, XRI, etc.) that produces the necessary identity meta (XRD).

Stephen Paul Weber

unread,
Apr 26, 2010, 4:37:08 PM4/26/10
to diso-p...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Somebody claiming to be Stephen Paul Weber wrote:
> You want conveniance UI for adding someone to your XFN list? I had built
> something like that, but there wasn't interest.

Prior discussions about this:

<http://groups.google.com/group/diso-project/browse_thread/thread/22514a600f0653f2/360180b513c3a434?lnk=gst&q=diso+add+contact#360180b513c3a434>

<http://groups.google.com/group/diso-project/browse_thread/thread/f5dbd2c796d4b3ea/a81b25cb6d66a07e?lnk=gst&q=singpolyma+friend+bookmarklet#a81b25cb6d66a07e>

- --
Stephen Paul Weber, @singpolyma
Please see <http://singpolyma.net> for how I prefer to be contacted.
edition right joseph
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iQIcBAEBCAAGBQJL1flzAAoJENEcKRHOUZzeKZoQAIbtMJdxBktBwb2BGwYh37pR
+vpa6oFzprWimcu0DfgGxdpwZJlO0IWraQ5eUl2fX+d57qCVp04aor0sVuOgvgGP
cZGaRArwUmBsuXXV6nO39mf0YLrkKgATP31qhE3f5W/sgXkhoPIS/13AcqpA4EO9
mojyBZ4CvidLP20hCBXlyZ32+qYTtRTcTf0dLE+sZzb7dLcXOOJLbVaUlnNIRnNM
utFSgPheP9NZa6Jx6cXurBaYI8z4UcClP1GYEYwrslsfrQ5cnJsozASae2+fUEUH
ga2lmHutBg4eKY6NaPAXTere92ZWxTS9DfnJiweQU8cRPyoF9C6BIoWIOBKUJPNk
LNo7m8gUgdgTg1YUF3SXFnq8LdUd/iZrj30ufJ6es/AHfx9RQj2Toafh87KLcy7f
AuZMqDFYYSrej21YxkJHIKmjLx8ewEP8Dn4o6XL16rUnXc3WB8UN2vUzknAnZ9AZ
ItPHzhwLAU63KQr6mDBgIYxOaj0XU2d2LjHRwbMub12Kwb8jxH4VKE4XLBz0mU1E
K8evMVjAQr0Em+Ifvz1EbGQQpQT4oz7qJoiC/1ytfloyIgOE+6u17YczTqqbElAU
Ki8PKbA8oxru2krZMh5SQ2EKOhmh+LjGq8KwY3MuGX4WOQiY35x/NkdpWo2dedOl
ZnrmeR7EaGsncPlSSMQc
=hG1d
-----END PGP SIGNATURE-----

Erik Bigelow

unread,
Apr 26, 2010, 11:27:20 PM4/26/10
to diso-p...@googlegroups.com
I have a question. Chris may have the most insight into this.

Is there really a serious chance that someday twitter and facebook
will talk to each other? If I were running either company it just
doesn't make any sense for them to, business wise. Facebook has now
shown this a couple times. They use XMPP to build their chat server
but change it enough to where it only works inside Facebook. Now they
have Open Graph. Again it's kinda open......but not really. I'm sure
if they could think of it, they would have done something more
proprietary, but as it stands it accidentally can help everyone.
Maybe I'm too cynical, but they will just say that they give you the
tools to connect with them....just register an account and use their
API.

This is why Joey and I created something new and purpose-built to be
an identity application, and open enough to work with anyone. We're
gonna release the beta this week. It will have most of the
functionality but not really follow too many protocols at this point.
We're looking into which ones make sense. Activity streams for
instance, we'll probably implement in our RESTful way across instances
of 6d, but it's something that will be able to be easily reformatted
in a true xml structure for other things. We'll make the profile page
work as webfinger. I've got a single-user OpenID instance working on
my personal 6d site, and that solves some of our other user stories
for people who aren't on 6d, it's not in the beta, but something we're
excited about, and so on.

We're doing this because
1) to get something out there and start getting in a feedback loop
(worst case is we find out everyone is happy enough with facebook)
2) because the vast majority of people won't care how it works behind
the scenes so long as it does what they want. So that can be done
later while it's still in its infancy.
3) we would love this group's input on what they think when and if #1
and #2 happen.

Like I said though, whatever the solution will have to play nicely
with facebook and twitter not really the other way around, I think.
They hold the power at this point. If we can get enough people on a
decentralized version, however, that may change.

Rabbit

unread,
Apr 27, 2010, 2:41:35 AM4/27/10
to diso-p...@googlegroups.com
I think your usage of the word "cynical" could have been replaced with
"pragmatic"

Facebook and Twitter have an institutional obligation which has been
part of the genetics of every company in human history. There's
nothing wrong with that. The people at these companies also understand
and appreciate the open culture because that's where they came from.
If something is created that has value people will want it and
companies will want to offer it. People criticize the institutions too
much.

Specifically addressing your question, allow me to rephrase it:

Is there really a serious chance Twitter and Facebook would not talk
to each other if every other service on the web was?

Looking forward to seeing your beta release.

=Rabbit

jg

unread,
Apr 27, 2010, 10:31:04 PM4/27/10
to Diso Project
Rabbit, I see what you're saying. It sounds a lot like a
"notification". Where a notification has an arbitrary "type" attribute
that can be inspected to do something contextual like "friend request"
in which the target app would save and display the request to the
owner of the app/site.

As for your question, from what I've seen of the openlike code, all it
does is provide the facility to add a "like" widget to the page that
loads it, via DOM manipulation, which in turn just references/links to
the corresponding social network's API for "liking" something. So,
yeah, you could just add code in openlike to include a "Add as friend"
button along with the like button that links to each social network's
API for friending/following.

IMHO, ideally, you could add a button called "Add as DISO
friend" (assuming that the person is requesting to be friends with the
owner of the site) which would then just send a request; the person
would have to enter a callback URL for the confirmation (similar to
having to login to the social network of choice) since "friending"
someone entails a roundtrip, where the target either denies or
confirms the request. If it's confirmed, said target site would have
to generate a "passkey" and send it to the callback URL for
verification purposes IMHO.

This is what we've done in 6d (http://get6d.com). However, right now,
you add the target URL to your addressbook and then send the friend
request from your own site (via your addressbook), instead of having a
"Add as friend" button on the target site. But that's a great idea,
thanks. I'm going to add that. I'll put a credit comment in the code
crediting you for the idea;)
Reply all
Reply to author
Forward
0 new messages