permalinks
type: Article
actor: me
content: As mentioned in Blog Post URIs, I'm a bit concerned about people replying to the 'wrong' URI for a post. That is, using the URL of a HTML page with the post rendered within it, rather than the post's permalink. I couldn't find a Microformats2 term for permalink, which I thought would be the obvious solution. The webmention 'protocol' says that when I recieve a webmention: Check the target is a valid URI on my site after following redirects. In my case, upon recieving a target of a https://rhiaro.co.uk/yyyy/mm/id, to validate it, rather than 'following a redirect' I'll actually be getting it's foaf:topic from the triplestore, which is fine. But in accepting this as the target I'm confirming to the sender that this is the correct URI to reply to. Hypothetically this non-permalink could break, breaking the reply. The permalink URI is one I'm promising won't break, so it's in everybody's interests to send the reply there. But logically, if somebody is linking to me in a post of their own, they're going to want to link to the rendered version, rather than whatever my raw version will look like (probably crappy, but that's on me, and maybe part of the problem). Replying to shortlinks Because I'm a linked data nut, my problem derives from a deliberate differentiation between a blog post and a page about a blog post. The connection between them (or from one to the other) can be discovered through RDF, but there is no HTTP redirection. I suspect this is a very much minority use-case for #indieweb folks. However, use of shortlinks is widespread (and you can see redirects are accounted for in the webmention protocol), and so as soon as someone's URL shortner breaks (or moves) permanently, unless they store the post contents and metadata themselves, they might have to have to think about this a bit. Solution? I'd like to be able to send back the correct URI (303 redirect style) so the sender can either: try again with the correct URI, or update their system with the correct URI…
name: Permalinks and webmention
published: 2015-01-04T19:17:00+0000
tag: doing
tag: Doing
tag: hacking
tag: indieweb
tag: learning
tag: linked+data
tag: mf2
tag: microformats2
tag: microformats
tag: permalinks
tag: slogd
tag: uri
tag: webmention
updated: 2015-01-04T19:17:00+0000

https://rhiaro.co.uk/2015/07/1437993900
type: Like
has reply: webmention
actor: me
object: webmention
published: 2015-07-27T11:45:00+0100
summary: Amy liked http://csarven.ca/webmention
tag: indieweb
tag: webmention

webmention
type: Article
tmpcontent: # Webmention receipt and display This weekend at IndieWebCamp in Brighton, my main goal is to display received [webmentions](http://indiewebcamp.com/webmention) on my posts. Currently I collect them at [webmention.io](http://webmention.io) and will occasionally manually add them to my store when there's a reply I'd particularly like displayed. This is just displayed as a link at the bottom of the post. Initially I thought about just running a cron job to pull from webmention.io into my store. Since webmention.io does all the validating etc, this takes away a lot of work. Maybe I'll do that first, and sort out the display of full comments (not just URLs), and then look at dealing with the whole process myself. Here's the expected flow: ``` // If target not exists // Fail // else If source not exists (404 or 410) // If have had webmention from this source before OR have mentioned this post myself // Delete // -> Remove $source from local store // else // Fail // else If source not contains link to target // Fail // // else If have had webmention from this source before // This is an update: what has changed? // Content - edit "$source-author edited their {inferred post type} of/to $target" // -> Store updated $source for display // {property} - edit or addition of property "$source-author edited/added {property} of their {inferred post type} of/to $target" // -> If this is a property I store/display, store update // Replies/comments - new reply (receiving salmention) "$reply-author {inferred post type}d $source-author's post that mentions $target" // -> Store for future threading display purposes.. // // else Infer mention type // Content - mention "$source-author mentioned $target in a post." // like-of - like "$source-author liked $target" // repost-of - repost "$source-author reposted $target" // bookmark-of - bookmark "$source-author bookmarked $target" // category - tag "$source-author tagged $target in a post" / "$source-author tagged a post with $target" // in-…
actor: me
content: This weekend at IndieWebCamp in Brighton, my main goal is to display received webmentions on my posts. Currently I collect them at webmention.io and will occasionally manually add them to my store when there's a reply I'd particularly like displayed. This is just displayed as a link at the bottom of the post. Initially I thought about just running a cron job to pull from webmention.io into my store. Since webmention.io does all the validating etc, this takes away a lot of work. Maybe I'll do that first, and sort out the display of full comments (not just URLs), and then look at dealing with the whole process myself. Here's the expected flow: // If target not exists // Fail // else If source not exists (404 or 410) // If have had webmention from this source before OR have mentioned this post myself // Delete // -> Remove $source from local store // else // Fail // else If source not contains link to target // Fail // // else If have had webmention from this source before // This is an update: what has changed? // Content - edit "$source-author edited their {inferred post type} of/to $target" // -> Store updated $source for display // {property} - edit or addition of property "$source-author edited/added {property} of their {inferred post type} of/to $target" // -> If this is a property I store/display, store update // Replies/comments - new reply (receiving salmention) "$reply-author {inferred post type}d $source-author's post that mentions $target" // -> Store for future threading display purposes.. // // else Infer mention type // Content - mention "$source-author mentioned $target in a post." // like-of - like "$source-author liked $target" // repost-of - repost "$source-author reposted $target" // bookmark-of - bookmark "$source-author bookmarked $target" // category - tag "$source-author tagged $target in a post" / "$source-author tagged a post with $target" // in-reply-to - reply "$source-author replied to $target" // {other property} - {other} "$source-author …
name: Webmention receipt and display
published: 2015-07-10T19:19:41+0100
tag: hacking
tag: indieweb
tag: indiewebcamp
tag: slogd
tag: webmention

https://rhiaro.co.uk/2015/11/1448422860
type: Add
actor: me
object: http://bblfish.net/tmp/2011/05/09/
published: 2015-11-25T03:41:00+0000
summary: Amy added http://bblfish.net/tmp/2011/05/09/ to https://rhiaro.co.uk/bookmarks/
tag: linked+data
tag: phd
tag: pingback
tag: https://rhiaro.co.uk/tags/rdf
tag: semantic+pingback
tag: social+web
tag: socialwg
tag: solid
tag: webmention
target: bookmarks

let-records-show
type: Note
has reply: aw-haha-i-wish-i-could-take-credit-they-ve-always
has reply: snarfed.org
tmpcontent: Let the records show that I will never click or tap the twitter heart icon. Apparently it explodes or something? Dumb. All twitter likes are henceforth (finally) [*fully automated*](https://bitbucket.org/rhiaro/slogd/commits/67c1fe366988a9fe13cd08fd9c07899508d14fc6) via [bridgy](https://brid.gy). (And a million thanks to [kylewm](https://kylewm.com/) for spontaneous inclusion of error logs in bridgy profile pages!)
actor: me
content: Let the records show that I will never click or tap the twitter heart icon. Apparently it explodes or something? Dumb. All twitter likes are henceforth (finally) fully automated via bridgy. (And a million thanks to kylewm for spontaneous inclusion of error logs in bridgy profile pages!)
published: 2015-11-19T05:17:29+0000
summary: Amy wrote about Kyle Mahan, hacking, indieweb, slogd, twitter, webmention, bridgy, & like
tag: https://kylewm.com/
tag: bridgy
tag: hacking
tag: indieweb
tag: like
tag: slogd
tag: twitter
tag: webmention

socialwg4-summary
type: Article
tmpcontent: # Social Web WG 4th face-to-face summary *This post is my own opinion, and does not necessarily represent the opinion of the Social Web WG!* See also [day 1 minutes](https://www.w3.org/wiki/Socialwg/2015-12-01-minutes) and [day 2 minutes](https://www.w3.org/wiki/Socialwg/2015-12-02-minutes). What follows is more detail on my perspective of the main conversations we had over the two days. Clarifications and corrections welcome. ## tl;dr ## * Most AS2 issues are closed! CR-blocking issues are now due by 15th December. * We took a bunch of things to Editor's Draft and are pushing for FPWDs as soon as is viable. * Some of the drafts overlap but there's a general feeling that since there are keen editors we should work on everything and iron out issues and redundancies as we go, rather than holding out and waiting for clarity. * Go check out the specs and build bits of them and give the editors feedback! ## ActivityStreams 2 We steamrollared through AS2 issues, which included core simplifications, vocabulary changes and reductions and editorial clarifications. James made most edits during the meeting, so there's [a much updated working draft](http://jasnell.github.io/w3c-socialwg-activitystreams/activitystreams-core/index.html) available now. You should read it and post any issues you see to be CR-blocking by the 15th of December. JSON-LD related stuff has been moved to its own section; since it is optional, having references sprinkled throughout was confusing for people who don't necessarily want to deal with it. [Chris](https://dustycloud.org) pointed out that even for extensions, if you know the extension you want to handle you can still do that in plain JSON. Still some consternation about which alternative syntax examples should be in the spec. Since they're non-normative/editorial anyway they're not a CR-blocker so left alone for the time being. We don't need a verison number in the URL because any future widely-deployed extensions that want to make it into the cor…
content: This post is my own opinion, and does not necessarily represent the opinion of the Social Web WG! See also day 1 minutes and day 2 minutes. What follows is more detail on my perspective of the main conversations we had over the two days. Clarifications and corrections welcome. tl;dr Most AS2 issues are closed! CR-blocking issues are now due by 15th December. We took a bunch of things to Editor's Draft and are pushing for FPWDs as soon as is viable. Some of the drafts overlap but there's a general feeling that since there are keen editors we should work on everything and iron out issues and redundancies as we go, rather than holding out and waiting for clarity. Go check out the specs and build bits of them and give the editors feedback! ActivityStreams 2 We steamrollared through AS2 issues, which included core simplifications, vocabulary changes and reductions and editorial clarifications. James made most edits during the meeting, so there's a much updated working draft available now. You should read it and post any issues you see to be CR-blocking by the 15th of December. JSON-LD related stuff has been moved to its own section; since it is optional, having references sprinkled throughout was confusing for people who don't necessarily want to deal with it. Chris pointed out that even for extensions, if you know the extension you want to handle you can still do that in plain JSON. Still some consternation about which alternative syntax examples should be in the spec. Since they're non-normative/editorial anyway they're not a CR-blocker so left alone for the time being. We don't need a verison number in the URL because any future widely-deployed extensions that want to make it into the core will likely be incorporated as part of a full new version (ie. AS3). At some point we should start a registry for extensions; James is keeping track himself on github, we could move this to a wiki page and ultimately a CG when the WG wraps up. Lots of discussion about testing framew…
name: Social Web WG 4th face-to-face summary
published: 2015-12-07T23:59:00+0000
tag: activitypump
tag: activitystreams
tag: as2
tag: federation
tag: indieweb
tag: jf2
tag: meeting
tag: mf2
tag: microformats
tag: micropub
tag: phd
tag: social+protocols
tag: social+web
tag: socialapi
tag: socialwg
tag: standards
tag: w3c
tag: webmention

week-review-10
type: Article
tmpcontent: # Week in review ## 30 November - 6 December * Added some RDFa to my site templates; needs more work though. * SocialWG face-to-face ([notes](/2015/12/socialwg4-summary)). * [Indiewebcamp SF](https://indiewebcamp.com/2015/SF) * Fixed a paging bug (December was an edge case, apparently). * Added sessions so indieauth logins ot my site persist. * Made progress on my [webmention endpoint](/q) which in addition to the base webmention spec accepts the `property` parameter and will be able to verify mentions marked up with RDFa. * Wrote about different social web worldviews and how that affects data models: [Things and happenings](/2015/12/things-happenings). * Attempted to figure out https with letsencrypt on two different server setups. One was [not terrible](/2015/12/https-terrible), the other was [pretty terrible](/2015/12/https-what).
actor: me
content: 30 November - 6 December Added some RDFa to my site templates; needs more work though. SocialWG face-to-face (notes). Indiewebcamp SF Fixed a paging bug (December was an edge case, apparently). Added sessions so indieauth logins ot my site persist. Made progress on my webmention endpoint which in addition to the base webmention spec accepts the property parameter and will be able to verify mentions marked up with RDFa. Wrote about different social web worldviews and how that affects data models: Things and happenings. Attempted to figure out https with letsencrypt on two different server setups. One was not terrible, the other was pretty terrible.
name: Week in review
published: 2015-12-06T23:59:00+0000
tag: https
tag: phd
tag: socialwg
tag: ssl
tag: webmention
tag: week+in+review

socialwg5-summary
type: Article
content: This post is my own opinion, and does not necessarily represent the opinion of the Social Web WG! See also day 1 minutes and day 2 minutes. We met in Boston on 16 and 17 March. What follows is more detail on my perspective of the main conversations we had over the two days. Clarifications and corrections welcome. ActivityStreams2 AS2 is inching closer to CR. Evan has made a validator at as2.rocks and done a lot of work on conformance criteria which we went through as a group and updated a little; mostly changing SHOULDs to MUSTs. Discussed and not necessarily resolved a few new open issues, including: considering dropping the Relationship object and reviving it as an extension if necessary; a proposal for a new property to say when something was deleted; weakening the SHOULD requirement on name; clarifying scope and context. Stay tuned for a new working draft sometime soon. SocialPub The most exciting thing I thought was agreeing on the potential for convergence between the create, update and delete parts of Activitypub and Micropub. Micropub started life as a super small and simple way for clients and servers to agree how to create content on a website by POSTing form encoded parameters to an endpoint. As a result of this simplicity, there are dozens of client and server implementations, allowing people to use each others posting clients to add posts to their site, from simple text-only posts to photos, events, RSVPs, likes, bookmarks, reposts. When Micropub needed update and delete, it grew beyond what form-encoded parameters could sensibly handle, and added in a JSON syntax which I think to date only the editor has implemented. Activitypub uses a JSON syntax (ActivityStreams2) from the outset for create, update and delete, and when you compare this with the Micropub JSON they look remarkably similar. My posting endpoint implements create the AP way, and endpoint discovery the MP way. It also catches Micropub form-encoded requests and translates them to AS2 JSON b…
name: 5th Social WG F2F Summary
published: 2016-03-29T10:43:39+01:00
tag: activitypub
tag: activitystreams
tag: as2
tag: meeting
tag: micropub
tag: phd
tag: social+web+protocols
tag: social+web
tag: socialpub
tag: socialwg
tag: standards
tag: w3c
tag: webmention

socialwg6-summary
type: Article
content: This post is my own opinion, and does not necessarily represent the opinion of the Social Web WG! See also day 1 minutes and day 2 minutes. We met in Portland on 6th and 7th June. What follows is more detail on my perspective of the main conversations we had over the two days. Clarifications and corrections welcome. This doesn't cover everything we talked about in detail; as well as the following, we resolved (or at least discussed) issues on all of the specs, and took a few to new Working Draft status. Demos I demoed my ActivityPub implementations; clients Burrow for checkins, Obtainium for consumption/purchase logging, Replicator for food logging and Seeulator for journeys and events. These all do create only by sending either appropriate activities (including some extensions) to my activitypub endpoint (aka outbox, but not discoverable as such yet). Seeulator creates the right kind of activity based on what attributes are filled in or left blank, essentially doing post-type discovery - albeit my own algorithm rather than tantek's spec from the user input to generate the right as:Activity. The newer thing I worked on was a client that only does updates of existing AS2 data. I wanted this so I could add captions to all my photos at img.amy.gy, so Morph does just that. This also means it has to be able to read/consume the AS2 data published at img.amy.gy about as:Collections of photos. Aaron demoed the Webmention test suite at webmention.rocks and notes that there are Webmention Rocks stickers available for people submitting implementation reports.. Aaron also demoed a new feature in the Micropub spec which is the media endpoint. After some discussion recently it was established that all mainstream social APIs seem to post media (like images) that have been embedded in a post to a separate endpoint, then embed the returned URL in the post content, and MediaGoblin does this too. Aaron's implementation in Quill is really swish looking, uploading the file to the discov…
name: 6th Social WG F2F Summary
published: 2016-06-25T17:39:36+01:00
tag: activitypub
tag: activitystreams
tag: as2
tag: meeting
tag: micropub
tag: phd
tag: posttypediscovery
tag: protocols
tag: social
tag: socialwg
tag: standards
tag: w3c
tag: web
tag: webmention

updated-working
type: Note
content: Updated working draft of Social Web Protocols published ahead of the Social Web WG face-to-face next week: https://www.w3.org/TR/social-web-protocols/ This describes and explains the various specs the WG is working on. Far from done, but we're making progress..
published: 2016-06-03T08:34:57+01:00
summary: Amy wrote about phd, socialwg, resume, cv, solid, social, web, micropub, webmention, decentralised, activitypub, swwg, & protocols
tag: activitypub
tag: cv
tag: decentralised
tag: micropub
tag: phd
tag: protocols
tag: resume
tag: social
tag: socialwg
tag: solid
tag: swwg
tag: web
tag: webmention

published-big
type: Note
content: Published a big update to Social Web Protocols. Read if you want to understand what the W3C Social Web WG is up to.
published: 2016-08-24T14:50:30+01:00
summary: Amy wrote about web, phd, activitypub, socialwg, social, solid, decentralised, micropub, protocols, swwg, & webmention
tag: activitypub
tag: decentralised
tag: micropub
tag: phd
tag: protocols
tag: social
tag: socialwg
tag: solid
tag: swwg
tag: web
tag: webmention

socialweb-demos
type: Article
content: The demos at today's decentralised social web breakout session went suspiciously well. Some things weren't pretty, but everything basically worked, and none of us had done any special coordinating before hand. We just showed the stuff we worked on, and it fit together fairly coherantly. Aaron demoed posting a reply with Micropub and behind-the-scenes Webmention sending. I showed my site feeds and individual posts as ActivityStreams 2.0, plus a screenshot of Chris's emacs-based reader displaying it: Chris... Just live demo'ed ActivityPub client-to-server stuff and server-to-server stuff at TPAC and it worked. Yay for live demos not blowing up! - @dustyweb on twitter demonstrated Pubstrate posting via ActivityPub to his local site, and peer to peer to another. - @t</> on twitter</> Sarven showed LDN, Solid, Web Annotations in dokieli, notifications sent to me displayed in OnScreen, and the LDN spec self-dogfooding with its own annotations on the side. We had some good questions/discussion about abuse prevention, and uptake. Hopefully this energy can be sustained through the next two days of WG meetings!
name: Decentralised Social Web Demos at TPAC2016
published: 2016-09-21T13:12:00+01:00
tag: activitypub
tag: ldn
tag: micropub
tag: social+web
tag: socialwg
tag: tpac2016
tag: w3c
tag: webmention

socialwg7-summary
type: Article
content: This post is my own opinion, and does not necessarily represent the opinion of the Social Web WG! We met in Lisbon, Portugal, during the last two days of the W3C's annual TPAC conference on the 22nd and 23rd of September. See also day 1 minutes and day 2 minutes. tl;dr It's crunch time, but we're on track. We have a selection of specifications which essentially cover creating content and then pinging people about it in various different ways. Many people in the group are using one or more of these specs to power their own personal online social stuff. There are so many more Social Web problems to solve, and we're just trying to dig some foundations and plant some posts in the ground to get everyone else started. Wednesday demos The first time the Social WG gathered last week was for an hour on Wednesday, to demo the products of all of our specs to the broader audience of TPAC attendees. We had a full house. Everything went smoothly, and our demos were fairly coherent. Aaron showed Micropub and Webmention working together in the context of posting a reply to his site (with Micropub), which automatically sent a Webmention to post he was replying to, and after a few seconds his reply showed up there (on the site of someone who isn't a WG member, and had implemented Webmention receiving independently). My site returns ActivityStreams 2.0 for everything when you request application/activity+json or application/ld+json, so I showed collections and individual objects at the commandline. Dumping a blob of JSON on the screen isn't a particularly compelling demo, but Chris was able to furnish me with a screenshot of his AS2 consumer, emacs-based, rendering one of my posts. Maybe you want to make an AS2 reader so you can design your own reading experience for my posts? Chris showed how he is able to create notes on his site using an emacs-based posting client, which prompts his server to send the message on to the inbox of anyone addressed, all using ActivityPub. Sarven showed…
name: 7th Social WG F2F Summary
published: 2016-10-15T18:41:00-07:00
tag: https://rhiaro.co.uk/tags/as2
tag: http://csarven.ca/#i
tag: tantek.com
tag: aaronpk.com
tag: dustycloud.org
tag: activitypub
tag: activitystreams
tag: indieweb
tag: ldn
tag: micropub
tag: post+type+discovery
tag: pubsub
tag: social+web+protocols
tag: socialwg
tag: w3c
tag: webmention
tag: work

webmention
type: Collection
total items: 13

https://rhiaro.co.uk/tags/webmention
type: CollectionPage
items: socialwg7-summary
items: socialweb-demos
items: published-big
items: socialwg6-summary
items: updated-working
items: socialwg5-summary
items: socialwg4-summary
items: week-review-10
items: https://rhiaro.co.uk/2015/11/1448422860
items: let-records-show
items: https://rhiaro.co.uk/2015/07/1437993900
items: webmention
items: permalinks
name: webmention
part of: webmention