#dev 2025-11-13

2025-11-13 UTC
cotsuka joined the channel
#
[morganm]
I really should know this by now, but what is it exactly that allows me to log in with my domain name to events http://indieweb.org ? Whats stopping someone else from logging in with my domain?
#
[morganm]
I put the `rel` on my website, and linked it with my Github, is it because Github is authing it?
#
aaronpk
right, if someone else could log in as you on github then they would also be able to log in as you with your domain
gRegor, troojg, cotsuka and CrimeWave joined the channel
#
trwnh
[tantek] re: convo yesterday about "why use mastodon/fedi in addition to or instead of federating your website with bridgyfed/wordpress", it's not strictly that it's easier but rather that you get more/different out of it. namely you get to follow people and have timelines served with mastodon api therefore letting you use "nicer" apps on your phone. also private posts. also if you run something like pleroma/akkoma you can use mrf (message
#
trwnh
rewrite facility) to do all kinds of arbitrary things. these are not generally things i care to build into a website because it is basically reimplementing mastodon, and it is not something that works with bridgyfed unless you exclusively post public
NaomiAmethyst, [lazcorp]1, [jeremycherfas]1, [morganm]2, geoffo_, [KevinMarks]1, [Roy]1, gRegorLove_, bret_, cotsuka, barnaby, jak2k, Xe_, sp1ff, vidak, grufwub, doesnm, CrimeWave, Maxpm, DanQ, gRegor, bret and [fluffy] joined the channel
#
[fluffy]
I also crosspost my atom feed to my Mastodon directly for better control, especially for things like private posts which bridgyfed can't see
Guest6_, NaomiAmethyst, [artlung]2, [aciccarello]1, grufwub, Dryusdan, gRegor, doesnm and vidak joined the channel
#
[Jo]
does anyone have experience with OVHCloud i am thinking of getting a VPS there (currently using DigitalOcean)
cotsuka and thegreekgeek joined the channel
#
.pi.r2.
[Jo] Tried a little, seemed to work well. They compared favorably to hetzner except can't go nearly as small, so elected to stay on hetzner for the time being.
#
[Jo]
sounds good, thanks 4 sharing
cotsuka, seaglade, [Roy]2, [Jo]2, [morganm], [KevinMarks]2, [fluffy]1, [social]1, geoffo, bret_, seaglade-dev, claudine, sebsel_, shoesNsocks, vidak, [schmarty], [Trevor_Morris] and gRegor joined the channel
#
autumnlilybug
I had an idea for an alternative way of sending and handling webmentions, and given that I don't see anyone else doing it I'm fairly sure it's not a *good* one, but I would love some critique on what I've got so far
cotsuka joined the channel
#
capjamesg
Sure thing! Plenty of people here support webmentions on their websites.
#
autumnlilybug
Ok so, I've outlined it in my post on my own webmention implementation (https://seaglade.dev/blog/webmention-implementation) but to summarize:
#
Loqi
[preview] [Katherine Isabella Del Toro] Implementing a Webmention Receiver For The Blog
willnorris_ joined the channel
#
autumnlilybug
Webmention relies on HTTP POSTs which are non-trivial to automate without using a CMS. I decided to implement a GET handler on my webmention endpoint that uses the search parameters `s`, `t`, and `v` in place of the formdata fields `source`, `target` and `vouch`. If you were to link to, say, `example.com/page1` with a normal webmention, you would use a normal `href` to that URL and then send a POST. With passive webmention
#
autumnlilybug
sorry I know that was long T-T
#
autumnlilybug
thoughts?
opencircuit joined the channel
#
autumnlilybug
ah, so long that IRC didn't like it, whoops
#
autumnlilybug
sigh
#
autumnlilybug
anyways, the advantage is that you don't have to mess with curl or any other low-level tooling, and you also don't need a CMS to handle sending the webmention, you can just click that link (or type it into your browser and leave a normal hyperlink in your page)
#
autumnlilybug
also, if you *do* have a CMS or some existing automation, you can still send passive webmentions because the GET request is just as automation-friendly as a POST. So in practice there's no real downside that I can think of.
#
autumnlilybug
but, like I said before, I haven't seen anyone else doing anything like this for their webmentions, and as such I suspect there's some huge issue that I'm missing here
#
gRegor
Interesting experiment! My only suggestion might be to keep the full names `source` and `target` so there's less room for variation between them.
#
autumnlilybug
that's a good idea
#
gRegor
It could also work with a form at the bottom of the post, with the `target` pre-populated as a hidden input. Several of us do that with a POST method form, but easy to switch it to GET!
#
autumnlilybug
yeah, part of my goal with it is for passive webmention to be as compatible with existing webmention tooling as possible
#
[Trevor_Morris]
The foundation of HTTP and the web is verbs, eg GET and POST. GET is for retrieving data that remains unchanged, and POST is used to create or update (could use PUT for that, but native browser support isn't as good as POST) data. This is why a webmention should be using POST. I'm not sure what benefit you get from using a query string vs a form. HTML forms are pretty easy to build and send the correct data in the POST format. General
#
[Trevor_Morris]
URLs could also be crawled or pre-fetched, which would trigger that data creation when it wouldn't be desired.
#
autumnlilybug
That does make sense I suppose. The benefit that I had in mind is that an HTTP get can be sent by simply typing an address into a web browser, and one could even link to the passive webmention endpoint in their own post such that the first time the link is used the webmention is sent implicitly (which is why I called it "passive" - nothing has to happen in the sender's publishing software nor does any manual work need to be
#
autumnlilybug
This was meant more for replies that are themselves articles rather than for comment-style notes.
#
autumnlilybug
admittedly I was not considering the semantics of HTTP request types when I developed my API
#
[Trevor_Morris]
Not sure what "comment-style" notes are, but for articles, I have built something within my publishing, which enumerates each external link and tries to send a webmention (well, I manually trigger them).
#
[Trevor_Morris]
You webmention might never get sent, until someone clicks the link in the article. The receiving website would then have to check the webmention isn't stored every time the link (with the query params) are visited.
#
autumnlilybug
by comment-style notes I mean notes (entries without p-names) that are meaningless without the context of the original post (like comments on silos like youtube, or replies on twitter) as opposed to entire articles (with p-names) that simply reference another article.
#
[Trevor_Morris]
Ah. Gotchya.
#
autumnlilybug
and your point about the link needing to be clicked for the webmention to be sent is correct, though there's nothing stopping someone from either manually typing the passive webmention into their browser (which is arguably less work than using curl to send a POST for many people) or simply clicking the link in their own post after publishing
#
autumnlilybug
that said those do negate the benefits of not requiring manual effort
#
gRegor
Webmention endpoints should handle de-duplicating since the same webmention can be sent multiple times, regardless if it's GET or POST. But those are good thoughts on why POST
#
autumnlilybug
gRegor: this too, and it can be as simple as using "ON CONFLICT IGNORE" or an equivalent in whatever part of the code records the webmention having been received and validated
#
autumnlilybug
but the reliance on the link being clicked is certainly a downside
#
gRegor
Hmm, quick question, is this actually linking to your webmention endpoint, or to the post permalink with the query parameters? I'm not sure that's a great recommendation for publishers in either case, since the query parameters could grow stale over time. I.e. your permalinks change, so the `source` is wrong
#
gRegor
If it's to the webmention endpoint, I think you would want to redirect to the `target` after the click is processed
#
[Trevor_Morris]
Fair point on de-duplicating. My concern is more that a link with the query params could be shared far and wide, while "manually" sending a webmention is a lot more purposeful.
#
[Trevor_Morris]
I would assume it is target.example?source=http://mywebsite.com but then I don't see why there is a need for a `target` param.
#
autumnlilybug
gRegor: the endpoint, although one could certainly implement it on the permalink instead. I chose the prior because that way the endpoint is a dedicated handler, and the post template page can be entirely static rather than needing a dynamic check before serving the content (I use Astro)
#
autumnlilybug
And it does redirect to `target` once the synchronous step (are both params present, are they valid URLs, is S not on my domain, is T on my domain) is completed, assuming all checks pass. Otherwise it redirects to a 404 to prevent, for example, `target` being set to an arbitrary URL and thus the endpoint becoming vulnerable to use as a link obfuscator.
#
gRegor
makes sense
cotsuka joined the channel
#
[snarfed]
autumnlilybug one other difficulty with GET webmentions is that they'll be cached by middleboxes on various networks, which will serve cached responses instead of forwarding to your site, so you'll never see them
#
[snarfed]
at minimum, make sure you include a header like Cache-Control: no-cache on your GET webmention responses
#
autumnlilybug
Hm, perhaps? But in order to be coached they would have to be requested at least once, no? Caching further requests would actually be a benefit I think
#
[snarfed]
webmention supports updates, which is one case where the same params would be sent multiple times
#
autumnlilybug
Oh interesting, I'll have to look into that
#
[snarfed]
otherwise, [Trevor_Morris] is right about POST vs GET semantics, but webmentions are (supposed to be) idempotent, and can be sent by anyone, both of which mean that semantic difference is less important
#
autumnlilybug
[snarfed]: I have seen that but I wanted a system that integrates into my existing website rather than relying on an external service. My website isn't *strictly* static, I'll spare the details but essentially a given route is static unless explicitly configured otherwise (so my webmention endpoint has a backend that is called at runtime but my blog posts are static pages generated at build time).
#
autumnlilybug
I just looked up the webmention updates spec, it looks like it's intended to be used to notify a receiver of changed content yes?
#
[snarfed]
changed or deleted, yes
#
autumnlilybug
In that case that actually does not matter to my site because I don't store webmention content, only the source, target, and timestamp of first receipt.
#
[snarfed]
if you display any of that at all, even just metadata, honoring deletes at least is pretty important
#
autumnlilybug
My comment section is streamed from the backend which parses content out of webmention sources on the fly (with a 48hr cache so as not to hammer sites during high traffic)
#
autumnlilybug
I'll need to update it to handle deletes though
#
autumnlilybug
Looks like a delete is notified by sending a webmention and then returning a 410 Gone when the receiver checks the source during the asynchronous step
#
autumnlilybug
So that won't be difficult to implement. Currently any comment that produces an error when fetched is simply not rendered.
#
autumnlilybug
I'll just add a specific handler for 410 that deletes the entry in my database
#
[snarfed]
usually 404 also, in practice
#
[snarfed]
apart from caching and updates/delete, the biggest challenge with GET-based webmentions will probably be adoption. you can't do it yourself, you need to get *other people* who send webmentions to switch to GETs, or send them in addition to POSTs, and since it's non-standard, that will be an uphill battle
#
autumnlilybug
Would it be better to delete *all* mentions from a certain source when that source is detected to be gone, or just the one to the page that attempted to load it and discovered that it had been removed? I'm assuming the prior.
#
[snarfed]
yup, that wm source is gone for all targets
#
autumnlilybug
[snarfed]: Adoption is 100% the biggest issue. I will probably release a reference implementation for Astro and I'll have to do a more formal write up of the protocol for other implementations.
#
autumnlilybug
I've considered whether or not the HTTP Referer header might be better than a source query parameter, but I think the latter is better because it allows an author to specify the link to their post that should be explored by the receiver if that differs from the URL the post is being displayed at.
#
[snarfed]
also lots of low/no-code tools support fetching URLs via GET, like you alluded to, but don't always allow custom headers
#
[snarfed]
gRegor is right, if you do end up doing this, you probably want to keep it as close to the standard as possible, ideally only changing the HTTP method and little to nothing else
#
autumnlilybug
[snarfed]: Of course - as of right now my implementation is simply a reimplementation of standard webmention but in the GET handler and reading query parameters instead of form data.
barnaby, cotsuka, CrimeWave, oodani, NaomiAmethyst9 and to2ds joined the channel
#
[artlung]2
I complained about documentation on a github project and the project made changes. Pretty happy with that, https://github.com/php-feed-io/feed-io/issues/28
#
Loqi
[preview] [artlung] #28 Factory is deprecated, but the link to the documentation still shows `Factory::` calls
cotsuka and DanQ joined the channel
#
carrvo
Autumn: you might be interested to note that there is a tool out there for sending Webmentions manually (type source and target) and it has an api for automating it. So that could be a very quick way to support POST without much automation on your part. Not sure how it relates to your "passive" Webmentions, sorry...
#
carrvo
My implementation is pretty special: it injects the content into source control to keep the page pretty static.
#
carrvo
What is SVNmentions?
#
Loqi
It looks like we don't have a page for "SVNmentions" yet. Would you like to create it? (Or just say "SVNmentions is ____", a sentence describing the term)
#
carrvo
SVNmentions is This is an endpoint to compliment mod_dav_svn by adding a webmentions receiver that can update an HTML document within SVN.
#
carrvo
Oops
#
Loqi
ok, I added "https://github.com/carrvo/SVNmentions" to a brand new "See Also" section of /SVNmentions https://indieweb.org/wiki/index.php?diff=105907&oldid=105906
#
carrvo
On a different note I am super happy to say I have updated the navbar on my website! It now lets you logout!