I 2024-02-11 21:03:55.759781+00:00 Params: [('source', 'https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod'), ('target', 'https://fed.brid.gy')]
I 2024-02-11 21:03:55.760082+00:00 webmention from snarfed.org
I 2024-02-11 21:03:55.784109+00:00 User: Key('MagicKey', 'snarfed.org')
D 2024-02-11 21:03:55.784374+00:00 Loading Object https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod local=True remote=True
D 2024-02-11 21:03:55.793844+00:00 not in datastore
D 2024-02-11 21:03:55.804874+00:00 not in datastore
I 2024-02-11 21:03:55.805315+00:00 requests.get https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod {'gateway': False}
I 2024-02-11 21:03:58.648098+00:00 Received 200
I 2024-02-11 21:03:58.665944+00:00 Extracted microformats2 entry: {
"type": [
"h-entry"
],
"properties": {
"name": [
""
],
"url": [
"https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod"
],
"published": [
"2024-02-11T13:03:54-0800"
],
"author": [
{
"type": [
"h-card"
],
"properties": {
"photo": [
{
"value": "https://secure.gravatar.com/avatar/947b5f3f323da0ef785b6f02d9c265d6?s=96&d=blank&r=g",
"alt": "",
"srcset": {
"2x": "https://secure.gravatar.com/avatar/947b5f3f323da0ef785b6f02d9c265d6?s=192&d=blank&r=g"
}
}
],
"name": [
"Ryan Barrett"
],
"url": [
"https://snarfed.org/"
]
},
"value": "Ryan Barrett",
"lang": "en-US"
}
],
"content": [
{
"value": "Likes https://chrismcleod.dev/blog/some-words-on-webmentions/. Some Words on Webmentions \u2014 Chris McLeod",
"lang": "en-US",
"html": "Likes <a class=\"u-like-of\" href=\"https://chrismcleod.dev/blog/some-words-on-webmentions/\">https://chrismcleod.dev/blog/some-words-on-webmentions/</a>..\n<div class=\"e-content\">\nSome Words on Webmentions \u2014 Chris McLeod\n</div>"
},
{
"value": "Some Words on Webmentions \u2014 Chris McLeod",
"lang": "en-US",
"html": "Some Words on Webmentions \u2014 Chris McLeod"
}
],
"like-of": [
"https://chrismcleod.dev/blog/some-words-on-webmentions/"
]
},
"children": [
{
"type": [
"h-card"
],
"properties": {
"name": [
"Ryan Barrett"
],
"locality": [
"San Francisco"
],
"region": [
"California"
],
"photo": [
{
"value": "https://snarfed.org/ryan_profile_medium.jpg",
"alt": "Ryan"
}
],
"email": [
"mailto:public@ryanb.org"
],
"key": [
"https://snarfed.org/pubkey.txt"
],
"url": [
"https://snarfed.org/"
],
"uid": [
"https://snarfed.org/"
],
"featured": [
"https://snarfed.org/w/wp-content/uploads/2013/06/copy-cropped-iraq_bar.jpg"
]
},
"lang": "en-US"
}
],
"lang": "en-US",
"url": "https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod"
}
I 2024-02-11 21:03:58.774894+00:00 Wrote Key('Object', 'https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod') {'labels': ['activity'], 'mf2': '...', 'object_ids': ['https://chrismcleod.dev/blog/some-words-on-webmentions/'], 'source_protocol': 'web', 'type': 'like', 'new': True, 'changed': False}
I 2024-02-11 21:03:58.776747+00:00 From web: Key('Object', 'https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod') AS1: {
"objectType": "activity",
"verb": "like",
"published": "2024-02-11T13:03:54-08:00",
"content": "Likes <a class=\"u-like-of\" href=\"https://chrismcleod.dev/blog/some-words-on-webmentions/\">https://chrismcleod.dev/blog/some-words-on-webmentions/</a>..\n<div class=\"e-content\">\nSome Words on Webmentions \u2014 Chris McLeod\n</div>",
"url": "https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod",
"object": "https://chrismcleod.dev/blog/some-words-on-webmentions/",
"actor": {
"objectType": "person",
"displayName": "Ryan Barrett",
"url": "https://snarfed.org/",
"image": [
{
"url": "https://secure.gravatar.com/avatar/947b5f3f323da0ef785b6f02d9c265d6?s=96&d=blank&r=g"
}
],
"id": "https://snarfed.org/"
},
"id": "https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod"
}
D 2024-02-11 21:03:59.082979+00:00 Replacing copies with originals: {}
I 2024-02-11 21:03:59.217376+00:00 Wrote Key('Object', 'https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod') {'labels': ['activity'], 'mf2': '...', 'object_ids': ['https://chrismcleod.dev/blog/some-words-on-webmentions/'], 'source_protocol': 'web', 'type': 'like', 'new': False, 'changed': False}
I 2024-02-11 21:03:59.418824+00:00 Wrote Key('Object', 'https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod') {'labels': ['activity'], 'mf2': '...', 'object_ids': ['https://chrismcleod.dev/blog/some-words-on-webmentions/'], 'source_protocol': 'web', 'type': 'like', 'users': [Key('MagicKey', 'snarfed.org')], 'new': True, 'changed': False}
I 2024-02-11 21:03:59.510125+00:00 Finding recipients and their targets
I 2024-02-11 21:03:59.511539+00:00 Raw targets: ['https://chrismcleod.dev/blog/some-words-on-webmentions/']
I 2024-02-11 21:03:59.513762+00:00 Determining protocol for id https://chrismcleod.dev/blog/some-words-on-webmentions/
D 2024-02-11 21:03:59.514071+00:00 Loading Object https://chrismcleod.dev/blog/some-words-on-webmentions/ local=True remote=False
D 2024-02-11 21:03:59.722710+00:00 not in datastore
I 2024-02-11 21:03:59.722992+00:00 Trying activitypub
D 2024-02-11 21:03:59.723109+00:00 Loading Object https://chrismcleod.dev/blog/some-words-on-webmentions/ local=False remote=True
I 2024-02-11 21:03:59.723421+00:00 Signing with Key('MagicKey', 'fed.brid.gy')'s key
I 2024-02-11 21:04:00.829770+00:00 requests.get https://chrismcleod.dev/blog/some-words-on-webmentions/ {'data': None, 'auth': <httpsig.requests_auth.HTTPSignatureAuth object at 0x3e578b55a410>, 'headers': {'Accept': '...', 'Date': '...', 'Host': '...', 'Content-Type': '...', 'Digest': '...'}, 'gateway': True}
I 2024-02-11 21:04:01.637554+00:00 Received 200:
I 2024-02-11 21:04:01.642934+00:00 Received 200
I 2024-02-11 21:04:01.643283+00:00 Got 200 headers: {'Content-Type': 'text/html', 'Date': 'Sun, 11 Feb 2024 21:04:01 GMT', 'Cache-Control': 'public, must-revalidate, max-age=30', 'Content-Encoding': 'gzip', 'ETag': '"61628306"', 'Last-Modified': 'Sun, 11 Feb 2024 20:27:30 GMT', 'Transfer-Encoding': 'chunked', 'Vary': 'Accept-Encoding', 'Strict-Transport-Security': 'max-age=10886400; includeSubDomains; preload', 'Referrer-Policy': 'strict-origin-when-cross-origin', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1; mode=block', 'X-DNS-Prefetch-Control': 'off', 'Content-Security-Policy': 'upgrade-insecure-requests; block-all-mixed-content;', 'X-Frame-Options': 'DENY', 'permissions-policy': 'autoplay=(), camera=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), publickey-credentials-get=()'}
I 2024-02-11 21:04:01.757041+00:00 no AS2 available
I 2024-02-11 21:04:01.808133+00:00 Trying web
D 2024-02-11 21:04:01.813495+00:00 Loading Object https://chrismcleod.dev/blog/some-words-on-webmentions/ local=False remote=True
I 2024-02-11 21:04:01.815631+00:00 requests.get https://chrismcleod.dev/blog/some-words-on-webmentions/ {'gateway': False}
I 2024-02-11 21:04:02.540181+00:00 Received 200
I 2024-02-11 21:04:02.605321+00:00 Extracted microformats2 entry: {
"type": [
"h-entry"
],
"properties": {
"name": [
"Some Words on Webmentions"
],
"url": [
"https://chrismcleod.dev/blog/some-words-on-webmentions/"
],
"published": [
"2024-02-11T00:11:00Z"
],
"author": [
{
"type": [
"h-card"
],
"properties": {
"name": [
"Chris McLeod"
],
"url": [
"https://chrismcleod.dev/"
]
},
"value": "Chris McLeod",
"lang": "en"
}
],
"content": [
{
"value": "Webmentions are one of those things I like the idea of, but not always the practicalities of - particularly in the extended IndieWeb sense of it. The idea of sending and receiving Likes and other interactions to/from other websites is pretty cool in theory, and helps bring that sense of community that is sometimes lacking in the modern version of the blogosphere. Time was you\u2019d get a trackback/pingback from a response to a post you\u2019d written, go check out the response post on the author\u2019s site, then continue the conversation on your own blog. This back-and-forth was key to building up ties within groups and sub-groups on different topics. Webmentions are, at their core, just an iteration on the core technology behind that.\n\nHowever, there are pretty significant problems with Webmentions as they stand. Wouter lists a bunch of issues he came across, and I can empathise with all of them, even if I haven\u2019t experienced each and every item on the list. The points about microformats and Brid.gy (4 & 5) definitely hit home.\n\nMicroformats is by far the biggest pain in the arse (in my humble opinion) to get right if you want to use the IndieWeb formats. Not insurmountable, but definitely fiddly. When I recently implemented my Bookmarks page, getting the requisite microformats just right to show as a \u201cbookmark-of\u201d took by far the longest time of all the work involved. And absolutely, Brid.gy far and away accounts for the vast majority of webmentions I receive; I guess it\u2019s to be expected when it pulls in all the interactions from social media for you.\n\nHowever, Robb hits on the biggest potential issue with the way most sites implement webmentions: privacy. It\u2019s something I first noticed on an old version of my blog: if Brid.gy (or another bridge service) sends social media interactions to your site, and your site is setup to save and display those interactions, then the person interacting with you has - probably inadvertently - had their details and words published to your site. They then lose all control over what is or isn\u2019t displayed. If they should later delete their interaction it is highly unlikely in the current implementations of the various bits of software involved that the deletion will be replicated back to your site. I had more than one instance where a Twitter mutual were shocked to discover some of their replies/likes at the bottom of some of my posts. Most didn\u2019t mind, but a couple really didn\u2019t like it so I went ahead and deleted the data for them manually.\n\nIt was these interactions which led to me not adding webmentions at all to this site for a long time after it went live, despite wanting to. Even now I can send and receive, nothing is displayed anywhere on the site itself.\n\nSo what do we do about these concerns around webmentions? Or rather, what am I going to do[1]? Well, I still hold to the promise of webmentions as a community building tool. I still want to receive them, even if the ones I care about get drowned out. They let me know where people are linking to my site from, and to an extent, what posts have resonated. In that vein, I still plan to send them - to let other people know when I link to them - though I might not spend any time sweating to get the microformats right. But what I\u2019m not going to do is display my webmentions publicly. I had been considering it for a while, but the recent discussion has made up my mind against it. At most I might display a simple count of the different types of webmention a post has received.\n\nTo be 100% transparent though: for my own convenience I am planning on adding a private dashboard that will display webmentions in a nice UI, but for my eyes only. Azure SWA lets me lock particular sections of my site behind role-based authentication, so I will be taking advantage of that. If only because the RSS feed from webmention.io isn\u2019t always the clearest thing to read. One feature I\u2019m definitely implementing is a filter to let me hide Brid.gy webmentions and focus on webmentions from blogs.\n\nI ain\u2019t the boss of you, so you do what you will. \u21a9\ufe0e",
"lang": "en",
"html": "<p><a href=\"https://indieweb.org/Webmention\" rel=\"noopener\" target=\"_blank\">Webmentions</a> are one of those things I like the <em>idea</em> of, but not always the <em>practicalities</em> of - particularly in the <a href=\"https://indieweb.org/responses\" rel=\"noopener\" target=\"_blank\">extended IndieWeb sense of it</a>. The idea of sending and receiving Likes and other interactions to/from other websites is pretty cool in theory, and helps bring that sense of community that is sometimes lacking in the modern version of the blogosphere. Time was you\u2019d get a trackback/pingback from a response to a post you\u2019d written, go check out the response post on the author\u2019s site, then continue the conversation on your own blog. This back-and-forth was key to building up ties within groups and sub-groups on different topics. Webmentions are, at their core, just an iteration on the core technology behind that.</p>\n<p>However, there are pretty significant problems with Webmentions as they stand. <a href=\"https://brainbaking.com/post/2023/05/why-i-retired-my-webmention-server/\" rel=\"noopener\" target=\"_blank\">Wouter lists a bunch of issues he came across</a>, and I can empathise with all of them, even if I haven\u2019t experienced each and every item on the list. The points about microformats and <a href=\"http://Brid.gy\" rel=\"noopener\" target=\"_blank\">Brid.gy</a> (4 & 5) definitely hit home.</p>\n<p>Microformats is by far the biggest pain in the arse (in my humble opinion) to get right if you want to use the IndieWeb formats. Not insurmountable, but definitely fiddly. When I recently implemented my Bookmarks page, getting the requisite microformats <em>just right</em> to show as a \u201cbookmark-of\u201d took by far the longest time of all the work involved. And absolutely, <a href=\"http://Brid.gy\" rel=\"noopener\" target=\"_blank\">Brid.gy</a> far and away accounts for the vast majority of webmentions I receive; I guess it\u2019s to be expected when it pulls in all the interactions from social media for you.</p>\n<p>However, <a href=\"https://rknight.me/blog/mastodon-webmentions-and-privacy/\" rel=\"noopener\" target=\"_blank\">Robb hits on the biggest potential issue with the way most sites implement webmentions: privacy</a>. It\u2019s something I first noticed on an old version of my blog: if <a href=\"http://Brid.gy\" rel=\"noopener\" target=\"_blank\">Brid.gy</a> (or another bridge service) sends social media interactions to your site, and your site is setup to save and display those interactions, then the person interacting with you has - probably inadvertently - had their details and words published to your site. They then lose all control over what is or isn\u2019t displayed. If they should later delete their interaction it is highly unlikely in the current implementations of the various bits of software involved that the deletion will be replicated back to your site. I had more than one instance where a Twitter mutual were shocked to discover some of their replies/likes at the bottom of some of my posts. Most didn\u2019t mind, but a couple really didn\u2019t like it so I went ahead and deleted the data for them manually.</p>\n<p>It was these interactions which led to me not adding webmentions at all to this site for a long time after it went live, despite wanting to. Even now I can send and receive, nothing is displayed anywhere on the site itself.</p>\n<p>So what do we do about these concerns around webmentions? Or rather, what am <em>I</em> going to do<sup class=\"footnote-ref\"><a href=\"https://chrismcleod.dev/blog/some-words-on-webmentions/#fn1\" id=\"fnref1\">[1]</a></sup>? Well, I still hold to the promise of webmentions as a community building tool. I still want to receive them, even if the ones I care about get drowned out. They let me know where people are linking to my site from, and to an extent, what posts have resonated. In that vein, I still plan to send them - to let other people know when I link to them - though I might not spend any time sweating to get the microformats right. But what I\u2019m <em>not going to do</em> is display my webmentions publicly. I had been considering it for a while, but the recent discussion has made up my mind against it. At most I <em>might</em> display a simple count of the different types of webmention a post has received.</p>\n<p>To be 100% transparent though: for my own convenience I am planning on adding a private dashboard that will display webmentions in a nice UI, but for my eyes only. Azure SWA lets me lock particular sections of my site behind role-based authentication, so I will be taking advantage of that. If only because the RSS feed from <a href=\"http://webmention.io\" rel=\"noopener\" target=\"_blank\">webmention.io</a> isn\u2019t always the clearest thing to read. One feature I\u2019m definitely implementing is a filter to let me hide <a href=\"http://Brid.gy\" rel=\"noopener\" target=\"_blank\">Brid.gy</a> webmentions and focus on webmentions from blogs.</p>\n<hr class=\"footnotes-sep\"/>\n<section class=\"footnotes\">\n<ol class=\"footnotes-list\">\n<li class=\"footnote-item\" id=\"fn1\"><p>I ain\u2019t the boss of you, so you do what you will. <a class=\"footnote-backref\" href=\"https://chrismcleod.dev/blog/some-words-on-webmentions/#fnref1\">\u21a9\ufe0e</a></p>\n</li>\n</ol>\n</section>"
}
],
"category": [
"posts",
"blogging",
"indieweb",
"webmentions",
"blogging-tools"
]
},
"lang": "en",
"url": "https://chrismcleod.dev/blog/some-words-on-webmentions/"
}
I 2024-02-11 21:04:03.119501+00:00 Wrote Key('Object', 'https://chrismcleod.dev/blog/some-words-on-webmentions/') {'mf2': '...', 'source_protocol': 'web', 'type': 'article'}
I 2024-02-11 21:04:03.120464+00:00 web owns id https://chrismcleod.dev/blog/some-words-on-webmentions/
I 2024-02-11 21:04:03.123704+00:00 Skipping same-protocol target https://chrismcleod.dev/blog/some-words-on-webmentions/
I 2024-02-11 21:04:03.123958+00:00 Direct targets: dict_keys([])
I 2024-02-11 21:04:03.421906+00:00 Wrote Key('Object', 'https://snarfed.org/2024-02-11_some-words-on-webmentions-chris-mcleod') {'labels': ['activity'], 'mf2': '...', 'object_ids': ['https://chrismcleod.dev/blog/some-words-on-webmentions/'], 'source_protocol': 'web', 'status': 'ignored', 'type': 'like', 'users': [Key('MagicKey', 'snarfed.org')], 'new': True, 'changed': False}
I 2024-02-11 21:04:03.422511+00:00 Returning 204: No targets, nothing to do ¯\_(ツ)_/¯
E 2024-02-11 21:04:03.422808+00:00 <class 'oauth_dropins.webutil.flask_util.NoContent'>: 204 No Content: No Content