- From: Markus Sabadello <markus.sabadello@gmail.com>
- Date: Wed, 18 Jul 2012 15:25:09 +0400
- To: Melvin Carvalho <melvincarvalho@gmail.com>
- Cc: Michiel de Jong <michiel@unhosted.org>, public-fedsocweb@w3.org
- Message-ID: <CAJF45PQxPedPRmboOC3jb5Yy0Gt5+N199r0z9LSWJtALQAa-sQ@mail.gmail.com>
On Wed, Jul 18, 2012 at 2:47 PM, Melvin Carvalho <melvincarvalho@gmail.com>wrote: > > > On 18 July 2012 12:42, Markus Sabadello <markus.sabadello@gmail.com>wrote: > >> >> >> On Wed, Jul 18, 2012 at 1:39 PM, Melvin Carvalho < >> melvincarvalho@gmail.com> wrote: >> >>> >>> >>> On 18 July 2012 11:29, Markus Sabadello <markus.sabadello@gmail.com>wrote: >>> >>>> >>>> >>>> On Sat, Jul 14, 2012 at 6:13 PM, Melvin Carvalho < >>>> melvincarvalho@gmail.com> wrote: >>>> >>>>> >>>>> >>>>> On 4 July 2012 14:22, Michiel de Jong <michiel@unhosted.org> wrote: >>>>> >>>>>> Let's blow some new life into this community group. The approach to >>>>>> federating the social web so far has been concentrated on taking >>>>>> hosted applications that run server-side code, and opening them up by >>>>>> adding more powerful and detailed APIs to these servers. Basically >>>>>> turning the internal functionality of hosted applications into >>>>>> something that's part of the web. But we can also start from the other >>>>>> end, with the web as such, and add functionality to it. This paints a >>>>>> different perspective on the same topic. I divide it into 6 >>>>>> requirements, or steps if you will: Indie Web, Webfinger, Read-Write >>>>>> Web, Chat, Inbox, Comments. >>>>>> >>>>>> Step 1: "The Indie Web" - to be a citizen on the web, you need your >>>>>> own web page which you can edit. It can have its own domain name, or a >>>>>> subdomain, and it can be publically readable or restricted to a >>>>>> specific audience, but the important thing is that there is content on >>>>>> the web about you. An easy way to achieve this is for instance with >>>>>> WordPress, but if you're a bit more technical you might prefer for >>>>>> instance github pages. >>>>>> >>>>> >>>>> >>>>> Rich User Profiles >>>>> ============== >>>>> >>>>> I've been thinking about the term, 'Rich User Profiles'. >>>>> >>>>> >>>>> What do I mean by this? >>>>> =================== >>>>> >>>>> Essentially on most sites on the web, you are allowed to have a user >>>>> profile. However, it's up to the provider of that software, to choose >>>>> exactly the fields that they will allow you to fill in, in order to >>>>> describe yourself. This is a form of data restriction, as opposed to, data >>>>> freedom. >>>>> >>>> >>>> Well if "freedom" means you don't want to define anything, then that's >>>> not really very useful, is it. >>>> But I agree you should be able to choose yourself what fields you want >>>> to have on your profile >>>> >>>> It's really hard to come up with a good schema for a Persona, or even >>>> to choose one out of the many existing ones. >>>> There's FOAF, there's hCard, there's http://schema.org/Person, or here >>>> is another one: http://wiki.eclipse.org/Persona_Data_Model_2.0 >>>> >>>> Also, some of the companies here <http://pde.cc/startup-circle/> are >>>> defining their own Person schemas/ontologies. >>>> One of them (Mydex) has an ontology with 1000s of fields, supposedly >>>> anything you would ever want to be able to express about a person. >>>> >>>> I think the HTML5 data layer, can be a game changer, in that it will >>>>> offer the user new possibilities, in terms of what you are able to do with >>>>> data. >>>>> >>>> >>>> What is the "HTML5 data layer"? >>>> - There are the data-* attributes, which are meant for use by >>>> JavaScript within an HTML5 page. >>>> - There is also HTML5 microdata, i.e. simple semantic markup for >>>> embedding data in a page. >>>> - Or do you mean Linked Data, RDF, JSON-LD, that sort of thing. >>>> >>> >>> Yes linked data. I would use RDFa 1.1 or RDFa lite 1.1, which were made >>> RECS last month. >>> >>> >>>> >>>> >>>>> Why would a user want to do this? >>>>> =========================== >>>>> >>>>> It's a about freedom. You make something free, and you make it >>>>> better. The can apply to data as it does to free software. >>>>> >>>>> Simple example. Allow a user to share their birthday and you can >>>>> allow friends on the system to know when someone they know is about to have >>>>> a birthday. >>>>> >>>>> More complex example. If you let a user put a public key into there >>>>> profile, then assuming they control the private key, they are able to login >>>>> to any application on the web or on their desktop that can perform a PKI >>>>> challenge (your private key is a way to prove you own the public key). >>>>> With this simple step you change a static profile page, into a first class >>>>> identity provider. >>>>> >>>> >>>> Sounds exactly like WebID. >>>> >>> >>> It's just the old fashioned idea of displaying your public key. Yes >>> it's 100% compatible with WebID or another PKI solution. >>> >>> But in the FSW you *cant* do this, as far as I know. That is simply not >>> data freedom. It's swapping one form of centralized control for another. >>> >> >> I would say maybe in the current implementations of FSW you can't do >> this.. >> But I don't think there is anything in OStatus or XMPP that mandates a >> specific person schema or prevents implementations from letting users add >> their own fields.. >> >> In Salmon, you have the ability to discover one's public key from a >> profile page. >> > > So, this is what I mean by "Rich User Profile". Putting the user in > control of their data. Another option would simply be to allow users to > link to their own file using the "sameAs" property. Cant, be that hard, > can it, adding one field? ;) > Just a matter of getting the user interface right, not a matter of FSW architecture or protocols :) > If you can tell me how I can get my public key into a FSW via salmon I'd > be very grateful (if that is possible). > When you install Diaspora or status.net, they generate a key for you. You can probably get your own key into those installations by loading it somewhere into their database or configuration file. But I don't know if anyone has ever done that. You can discover the key via Webfinger/LRDD according to Magic Signatures / Discovery (here<http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-magicsig-01.html#anchor14>), e.g. 1. You start with danube.status.net 2. You retrieve the http://danube.status.net/.well-known/host-meta 3. You retrieve the danube.status.net/main/xrd?uri=danube@danube.status.net 4. There's the public key >> >>>> >>>>> That was just an example, but the real story here is the law of >>>>> "unintended consequences". You allow people more freedom, and they will >>>>> surprise you on the upside, in ways that you had never thought of. This >>>>> (data freedom on the web) is alo one of the main motivations behind the >>>>> read write web. Successful apps on the web, have proen that when you start >>>>> trusting your users, to create content, they way they want to, you can >>>>> start to gain exponential returns. >>>>> >>>>> Perhaps, one great place to start, is with Rich User Profiles. >>>>> >>>> >>>> I think this is what the WebBox is all about. Based on WebID and other >>>> web technologies, you have your (flexible and extensible) profile and can >>>> control who can access what. >>>> >>> >>> Again, it's not about the specific implementation, tho I'm sure WebBox >>> is one. It's about data freedom. >>> >>> >>>> >>>> >>>>> >>>>> >>>>>> >>>>>> Step 2: "Webfinger" - Webfinger is the official way to publish your >>>>>> public profile information on the web. It takes a user name and a >>>>>> domain name as its parameters, and returns information like full name, >>>>>> avatar picture in different sizes, home location, possibly some public >>>>>> keys that the user has on the device(s) she often connects from, and >>>>>> other contact information. It also links to any other information >>>>>> sources about the user, like a foaf profile or an activity stream, and >>>>>> possibly non-web contact methods like email addresses and jabber ID's. >>>>>> Webfinger makes "users at hosts" into something the web as such can >>>>>> understand in a unique and well-defined way. >>>>>> >>>>>> Step 3: "Read-Write Web" - the user should have full control (through >>>>>> her preferred tools) to edit her web site. WordPress uses an >>>>>> integrated hosted editor for this; github pages uses git. There was a >>>>>> time that FTP and SharePoint were popular ways to update your website. >>>>>> Now, there is a w3c community group call Read-Write Web that aims to >>>>>> standardize the way editing tools interact with websites. It is >>>>>> important that the user can choose whether data she stores becomes >>>>>> public, private, or accessible to a limited audience. We are >>>>>> finalizing a standard that unites three options: WebDAV, CouchDB, and >>>>>> GetPutDelete. It allows for cross-origin access through HTTP CORS >>>>>> headers, so your editing tool does not have to be hosted on your >>>>>> website itself. You can edit website A with a tool that is hosted on >>>>>> website B. >>>>>> >>>>>> After these three steps, you exist on the web as "you, 'at' your >>>>>> domain", and that 'social web account' is already capable of storing >>>>>> and retrieving private user data, as well as public and >>>>>> limited-audience data. The web is useful for publishing public data, >>>>>> but also for storing your own private data, like for instance your >>>>>> address book, your calendar, and your diary or notebook. On top of >>>>>> this, we can define semantics like html and ActivityStreams that >>>>>> define how the content of these hosted documents should be interpreted >>>>>> by the tools that read them and write them. >>>>>> >>>>>> This is basically where the web is now IMO. But there are three >>>>>> functionalities we would really like to add to the web IMO: >>>>>> >>>>>> Step 4: "Chat" - receive pro-active updates about content, without >>>>>> having to poll it, while you're online. This basically gives us chat. >>>>>> It is not something the web has right now. Bosh seems to be the most >>>>>> popular option for this right now, with research being done on webrtc >>>>>> and xmpp-over-websocket. I'm working on an idea for websocket-hubs >>>>>> myself as well, but haven't had much time so far. >>>>>> >>>>>> Step 5: "Inbox" - receive pro-active updates about content you follow, >>>>>> without having to poll it, while you're offline. This is basically >>>>>> (private) messaging. For this it's not necessary to receive the >>>>>> messages instantly, it's good enough to require the client to retrieve >>>>>> the pending messages once when connection is re-established. >>>>>> Pubsubhubbub (PuSH) is a generic protocol for this; pingback and >>>>>> salmon are specific ones. Note that none of these services work >>>>>> cross-origin by default. There are at least 3 points involved when >>>>>> Alice sends a message to Bob: Alice's browser, Bob's server, Bob's >>>>>> browser, and possibly also Alice's server. - If Bob's server does not >>>>>> support CORS headers for Bob retrieving his messages, then that means >>>>>> that the message viewing tool that runs in Bob's browser needs to be >>>>>> hosted on Bob >>>>>> 's server (same-origin policy). >>>>>> - If Bob's server does not support CORS headers for receiving >>>>>> Alice's incoming message, then Alice will have to go through her own >>>>>> server as an extra step (or use a tool hosted on Bob's server, but >>>>>> that's unlikely to be Alice's preferred tool, so let's not consider >>>>>> that option). >>>>>> - If then Alice's own server also doesn't have CORS headers enabled >>>>>> for receiving the message to be relayed, that means that the sending >>>>>> tool that runs in Alice's browser needs to be hosted on Alice's server >>>>>> (same-origin policy). >>>>>> >>>>>> Step 6: "Comments" - have your server follow your instructions to >>>>>> automatically republish (links to) certain third-party content while >>>>>> you're offline. I believe this is part of salmon and also pretty >>>>>> standard for comments on blogs, although often blogs don't allow >>>>>> people to post comments using their own preferred tools. >>>>>> SWAT0 can be accomplished by just publishing content and receiving >>>>>> messages (steps 1-5). Dave publishes the photo and the photo tag, and >>>>>> sends a message to Tantek. Evan publishes the comment and sends a >>>>>> message to both Dave and Tantek. >>>>>> But I would like to define a variation on SWAT0 (maybe this has been >>>>>> discussed already), in which Dave publishes the photo, but then >>>>>> instead of Dave tagging Tantek, Tantek tags himself in Dave's photo, >>>>>> yet still receives the notification of Evan's comment. This is extra >>>>>> difficult, because it requires the cooperation of Dave in Tantek and >>>>>> Evan establishing communication. So either: >>>>>> >>>>>> - Dave republishes Tantek's tag (so that Evan's publishing tool >>>>>> knows to ping both Dave and Tantek about the comment), or >>>>>> - Tantek subscribes to the feed for the photo, and Dave republishes >>>>>> Evan's comment on this feed. >>>>>> >>>>>> In both cases we need step 6 for this. Probably the second option is >>>>>> preferable because it (presumably) allows Tantek to unsubscribe at >>>>>> will, and unlike the first option it would still work if there are >>>>>> thousands of people following the same photo comments wall. Salmon is >>>>>> specific for receiving comments on content you published. I know of no >>>>>> protocol that does this generically (defining a generic way for >>>>>> clients to suggest content for addition to a web resource (probably a >>>>>> feed) that's hosted on another user's webserver), but maybe someone >>>>>> else know. If not, then maybe we should be working on that in this >>>>>> community group? >>>>>> >>>>>> These 6 steps describe at a very low level what would be needed for >>>>>> users to interact on the web - of course a lot of work is also needed >>>>>> at higher levels, for instance, deciding on what verbs to allow in >>>>>> ActivityStreams, but i think right now it's more urgent to first get >>>>>> these 'transport channels' working. >>>>>> >>>>>> Cheers, >>>>>> >>>>>> >>>>>> -- >>>>>> Michiel de Jong http://unhosted.org/ >>>>>> >>>>>> >>>>> >>>> >>>> >>>> >>>> >>> >> >> >> >> >
Received on Wednesday, 18 July 2012 11:25:44 UTC