#dev 2024-09-15

2024-09-15 UTC
troojg, jacky and [manton] joined the channel
#
[manton]
[tantek] I’m not sure that anything is missing from Micropub + Microsub. I mentioned both in the session. The problem is it feels hard to convince people in the fediverse dev community that the answer isn’t in ActivityPub. The good news is that most of what I’m hearing is people know the Mastodon API is a dead-end.
#
[manton]
I actually starting writing a blog post about this today. Mostly as a way to clarify my own thinning. Will post it in the next day or two.
#
[manton]
(My own “thinking”.)
#
[tantek]
Was just writing: That sounds like it might be worth a longer blog post to explain how Micropub+Microsub works as an Mastodon client API replacement!
#
[manton]
Yep. That might be a different post, in terms of going into the Mastodon specifics.
#
[manton]
Dave Winer blogged today about essentially the same thing, but from the perspective of the MetaWeblog API. http://scripting.com/2024/09/14.html#a140503
#
[tantek]
Right. It's worth a proper analysis to figure out how to make the Mastodon-specific stuff more generic
#
[tantek]
That's funny because Micropub is literally a feature for feature replacement of the Metaweblog API!
#
[manton]
One point from fediforum about ActivityPub client to server is that there’s not really the concept of separate timelines, e.g. the home timeline, a list, federated timeline, whatever. I think Microsub can handle that.
#
[tantek]
More secure, less XMLRPC, More Oauth, less user/pass etc
#
[tantek]
Yes Microsub can handle that, via channels I believe
#
[manton]
Totally! There’s no reason Micropub can’t replace anything MetaWeblog can do. I support both of course, mostly for MarsEdit which uses XML-RPC still.
#
[manton]
Right. My Microsub support is pretty basic, channels like timeline, notifications, etc… But Mastodon could have special channels too.
#
[manton]
It’s kind of a weird situation because more people have heard of ActivityPub C2S than Micropub/Microsub, but I bet there are more implementations out there of Micropub than C2S. I don’t know of any C2S implementations.
#
[manton]
More people in the fediverse world, I mean.
#
[tantek]
That's exactly right
jacky and alephalpha0 joined the channel
#
doesnm
[manton]: do you talking about ActivityPub C2S? i know two server implementation: fedbox and pleroma. in clients: AndStatus
#
[0x3b0b]
microblogpub also. At one point I believe AndStatus and Microblogpub were actually working together on improving support on both ends.
#
[tantek]
aaronpk, you might be interested in tracking https://github.com/w3c/tpac2024-breakouts/issues/49
#
Loqi
[preview] [timcappalli] #49 Harmonizing Identity-Related Web Platform APIs
#
doesnm
ssh-keygen -Y verify -f ~/.ssh/allowed_signers -I 'https://doesnm.p.psf.lt' -n auth -s /tmp/tmp.oE9slhYaLT.doesnm. Looks like right command. But i still can't validate xD
oblivxi0us, lazcorp and [qubyte] joined the channel
#
doesnm
manually worked 0_0
vroman1 joined the channel
#
vroman1
popranger: As asked in #indieweb about my tech stack, I'm currently using Hugo as a static site generator. I'll evaluate it again when I have time to redesign and publish new content if it fits; if not, I'll craft something in Go or PHP. Hosting comes from my (own small) company.
#
doesnm
facepalm. cgi does not display stderr by default. It contain useful information
#
pcarrier
doesnm: that's the beauty of having stdout for inband and stderr for out-of-band. stdout goes to the client, stderr to the logs.
#
popranger
vroman1: do you use these for private purposes, like hosting a blog, or are promoting/working for a company?
#
popranger
also what makes you favor Hugo (markdown+toml config iirc), Go and PHP over node.js?
#
popranger
[edit] also what makes you favor Hugo (markdown+toml config iirc), Go and PHP compared to node.js?
#
popranger
(a startup incubator i joined recently is making me do a little market research but i'm also interested in these choices people make)
#
vroman1
popranger: I own the company, providing hosting, vps and so on. It just started as a side-project, but want to make it full-time business (even if it is going slowly, as family an $DAYJOB consumes several time)
#
vroman1
popranger: Using Go is just a matter of.. well, I'm very comfortable with it (came from C background and PHP). But also use node.js (I can say indirectly?) as I work with Vue to create SPAs; but not on my blog
#
popranger
yea same for me, i'm working on a business but it's more an open source nodejs project than a platform-as-a-service
#
vroman1
popranger: Even, for me, its easier to code in Go and deploy on non-Linux systems (I use OpenBSD and FreeBSD extensively), that lacks several support from node.js common modules.
#
popranger
vroman1: oh thats an interesting context
#
doesnm
pcarrier: maybe later
#
popranger
it's so difficult to do this market research assignment because there seem to be 2 kinds of web devs: ones working with non-js languages and frameworks, like PHP, python, Hugo etc or directly editing html/css/js, and those using js frameworks like react, angular, vue, astro etc. noone is writing nodejs directly despite its original appeal being to make js the homogeneous language for the web
#
popranger
[edit] it's so difficult to do this market research assignment because there seem to be 2 kinds of web devs: ones working with non-js languages and frameworks, like PHP, python, Hugo etc or directly editing html/css/js, and those using js frameworks like react, angular, vue, vite etc. noone is writing nodejs directly despite its original appeal being to make js the homogeneous language for the web
#
[KevinMarks]
I can see the attraction of reimplementing the Mastodon client API to get access to 3rd party Mastodon clients - is the problme that ti is too tightly bound to mastodon assumptions?
#
pcarrier
popranger[d] plenty of people use nodejs to write backends / APIs and for SSR.
#
popranger
you mean plenty of people use nextjs to let it do its thing
#
popranger
and only since it swapped the rug under SPAs to support SSR
#
[KevinMarks]
node and nunjucks++
#
Loqi
nunjucks has 1 karma over the last year
#
popranger
i don't see many devs "writing" anything these days, just being consumers of framework abstractions
#
pcarrier
No I do not, ranger.
#
popranger
a spike express usage indicate a transition to SSR? SPA frameworks have been using express as dev server forever
#
popranger
[edit] a spike in express usage indicates a transition to SSR? SPA frameworks have been using express as dev server forever
#
pcarrier
I'm not trying to read anything into microtrends, just pointing that "just uses next" isn't the nodejs market.
#
popranger
and it could be a dependency of anythung in npm
#
popranger
pcarrier[d]: in relation to SSR, nextjs introduced that feature a few years ago making it a topic. Astro pioneered it too, but it doesnt compare in popularity
#
pcarrier
Using web frameworks to do web development is popular. AFAICT about the same in Node as PHP, Python, Ruby, Java.
#
popranger
maybe Vite too, but it's also a framework of many abstractions, so to me no dev can claim expertise in anything beyond the framework itself
#
pcarrier
Well you're entitled to your opinion.
#
pcarrier
I guess real devs don't need compilers, they input CPU instructions in binary with physical switches.
#
popranger
i hope i dont come off as angry, although i am cuz that's what the framework lobby makes me in general. xD
#
popranger
i'm only talking about the difference between eg. knowing how to traverse a custom object to render html instead of being limited to what parameterizing a React component expects from you after installing 50 dependencies the dev doesn't even know about and before trans/com/pseudopiling jsx-typescript-tailwind csscomponents to standard html/css/js
#
popranger
i worked with seniors who didnt know HTML was a subset of XML, or that SVG had markup, or first time they saw flatMap was in my code 😆
#
pcarrier
sigh HTML is not a subset of XML
#
pcarrier
XHTML was a dialect of XML
#
popranger
so i don't have a lot of confidence in the industry trends xD
#
popranger
but thats anecdotal
#
popranger
pcarrier[d]: ok they didnt know what XML was, it wasnt such interpretation issue
#
popranger
pcarrier[d]: schema, whatever. html having been made less strict to the point traditions rendered the specification obsolete is just the last part of the story
#
popranger
no need to sigh, i'm not sighing xD
#
pcarrier
HTML was specified way before XHTML
#
pcarrier
dropping XML is not "the last part of the story", it's a return to HTML's origins
#
popranger
oh ok, didnt know that. interesting given it was relying on the extensible nature of xml
#
popranger
sounds like an anachronism to me, but i dont care that much
#
pcarrier
HTML 1995, HTML 4.01 1999, XHTML 1.0 2000, XHTML 1.2 2007, HTML5 2008+.
#
pcarrier
we've had 29 years of HTML within which ~8 years of thinking putting it in XML solved anything.
#
popranger
you defending a senior reactdev who didnt know what xml was, because of all the other abstractions he needs to know to stay afloat. debating the exact relationship between xml and html would have been luxury.
#
popranger
but i'm happy to learn the less strict html spec preceded the more strict xhtml one
#
[KevinMarks]
interesting on the difficulties of a modern reader https://www.threads.net/@aaronrosspowell/post/C_1aWaeMqB5
#
popranger
[edit] you defending a senior reactdev who didnt know what xml was at all, because of all the other abstractions he needs to know to stay afloat. debating the exact relationship between xml and html would have been luxury.
#
popranger
[edit] you digressing from a senior reactdev not knowing what xml was at all, because of all the other abstractions he needs to know to stay afloat. debating the exact relationship between xml and html would have been luxury.
#
popranger
[edit] a spike in express usage in the last week indicates a transition to SSR? SPA frameworks have been using express as dev server forever
[mattl] and JadedBlueEyes1 joined the channel
#
[mattl]
HTML and SGML have a commonality and XML and SGML have one. XHTML is the brief era where HTML was defined more like XML and virtually nobody used the strict mode because it would break your page pretty easily IIRC.
JadedBlueEyes7, Xe and jacky joined the channel
#
[tantek]
[KevinMarks] that's a lazy thread. "Something is bad so it must not be possible" needs to be a logical fallacy somewhere
#
[tantek]
What is a composite stream?
#
Loqi
A composite stream is a stream that interleaves multiple types of posts, such as notes and articles https://indieweb.org/composite_stream
#
[tantek]
^ if you want to jump in and reply, that's the wiki page to use
#
[KevinMarks]
Indeed - after all the supposed "short message" streams are all composites too
#
[KevinMarks]
Bluesky just added video posts after user demand
#
jacky
It was more implementation limits than demand, no? it was always on the roadmap
#
jacky
just getting it into bsky wasn't easy
#
[qubyte]
@popranger my go-to is node, and I’m a server dev (not rolling react, vue, etc.). I’m not particularly unusual either. You may just not have chanced across the right people yet. My SSG is thus node too. Background in C etc.
#
[qubyte]
Which is not to diss framework wrangling. The tools you know are the ones you’ll use to get stuff done, after all.
#
[qubyte]
(just so long as what you deliver to the browser isn’t a div soup or dynamically built with client-side JS)
vroman, rozenglass, barnaby and troojg joined the channel
#
[tantek]
getstuffdone++
#
Loqi
getstuffdone has 1 karma over the last year
jacky and ttybitnik joined the channel
#
[manton]
Posted about Micropub, Mastodon API, etc… Lemme know if anyone has thoughts. https://www.manton.org/2024/09/14/toward-a-common.html
#
Loqi
[preview] [Manton Reece] Toward a common posting API
#
[manton]
Thanks [doesnm] for mentioning AndStatus supporting AP C2S… To be honest I had never heard of it.
#
doesnm
why some nicknames wrapped with []?
#
doesnm
understand. what's why your whois showed gateway.indieweb.org
#
doesnm
meanwhile i done ssh verification! but i should implement post method...
#
doesnm
should i check all fields? (grant_type, client_id, code, redirect_uri, code_verifier
#
popranger
[qubyte]: cool! did you write your own SSG or you have a preferred library? i don't mean to diss too much on framework devs either, good for anyone who is comfortable working with them, i might just have been having a little sugar rush for discovering a shrine of more down to earth professionals 😄
#
[qubyte]
Wrote my own. I use handlebars for templates and a heavily extended marked to render. The rest is basically a dependency graph based build system of my own.
#
[qubyte]
The source is here (non-permissive license, but all there to see). No promises are made for quality and test coverage! https://github.com/qubyte/qubyte-codes
#
Loqi
[preview] [qubyte] qubyte-codes: My personal site.
#
[qubyte]
The colophon might be more useful for an overview https://qubyte.codes/colophon
#
[qubyte]
This probably isn’t a good way to build a personal site though. It’s my pet project, and I’m an engineer, so it’s extra engineer-y.
#
[tantek]
petprojects++
#
Loqi
petprojects has 1 karma over the last year
#
capjamesg[d]
[qubyte]++
#
Loqi
[qubyte] has 4 karma in this channel over the last year (11 in all channels)
#
capjamesg[d]
I love the “what this means” parts.
#
pcarrier
[qubyte]: vendors like xmit run on renewable energy ;)
#
pcarrier
Oh you do too. Nice
IWSlackGateway and [qubyte] joined the channel
#
[qubyte]
eh heh heh
#
[qubyte]
c’mon Loqi, get in on this hehehe
[aaronpk] and [KevinMarks] joined the channel
[tantek], rozenglass, jacky and jacky_ joined the channel
#
[tantek]
[manton]++ great post! Only thing I'd add is two things: Micropub is the only of all of those APIs that has a comprehensive test suite (link: https://micropub.rocks) and has perhaps 10x more implementations (clients https://indieweb.org/Micropub/Clients and servers https://indieweb.org/Micropub/Servers) than the others.
[manton] joined the channel
#
[manton]
Thanks! Good point about test suite, I hadn’t thought of that.
[snarfed] joined the channel
#
jacky_
[manton]: it's an Android app
#
jacky_
sore need of UX love but very functional
#
jacky_
used it for some time
#
Loqi
[preview] [andstatus] andstatus: Multiple accounts client for multiple Social networks. For Android
#
[tantek]
[manton] I added summary lists of the Micropub clients and servers to the top of both of those wiki pages so hopefully anyone visiting will quickly get an impression of just how many there are — it's something we could be better about announcing boldly in these kinds of discussions
jacky joined the channel
#
popranger
[qubyte]: freaky nice. the graph build system is very interesting. i see you use Toisu (havent heard of it but looks like express) as a dev server, and netlify as prod. i wonder why you don't use the same dev server on a simple vm or self host? i suspect the usual ressom for this is SSL or some performance concerns. is it something else?
#
sebbu
iirc, netlify is also a CDN (with geo-caching)
#
[qubyte]
I’m also the author of Toisu, and actually developed it for hosting my personal site. When it became clear I only needed to host static files I relegated it to dev server duties (before even buying the domain). As sebbu says, netlify is just a glorified CDN with a configurable build process and stuff.
#
[qubyte]
Toisu happened because promises were well supported by then, and async-await was just around the corner. I’m pretty sure it’s the first JS server “framework” to be built around them.
#
[qubyte]
(I’m pretty sure I’m the only person using it, so don’t feel bad that you’ve not heard of it!)
#
popranger
i see, but so you don't use netlify as a static host? or how is your prod host different from the dev server? asking cuz i wrote my own server too and i struggle to see a reason to host it anywhere else than from my phone in my pocket (if not for stability i run the server sometimes from a GCP vm)
#
popranger
which i do with cloudflare tunnel from termux btw, so i get CDN support too
jacky joined the channel
#
popranger
in the meantime i registered that you say "it became clear I only needed to host static files", but Toisu would serve static files just as well wouldn't it? how would it be different from netlify?
#
popranger
[edit] i see, but so you don't use netlify as a static host? or how is your prod host different from the dev server? asking cuz i wrote my own server too and i struggle to see a reason to host it anywhere else than from my phone in my pocket (if not for stability i run the server sometimes from a GCP vm, which is money though)
#
popranger
[edit] i see, but so you don't use netlify as a static host? or how is your prod host different from the dev server? asking cuz i wrote my own server too and i struggle to see a reason to host it anywhere else than from my phone in my pocket (if not for more stability i run the server sometimes from a GCP vm, which is money though)
#
[qubyte]
I think there’s some confusion…
#
[qubyte]
Static files still need to be served, right? It just makes their hosting simpler. A Netlify serves static files (with the CDN). A CDN is only a server, really. The distinction is really down to how much you’re asking the server to do. If the body of the response is the same regardless of the requester (there may be some difference in cache headers and such).
#
[qubyte]
The dev server in this case is for use on my local machine only. There are some differences, but it could with some minor tweaks be hosting the site in production. I’ve considered it, especially since I have a couple of endpoints which aren’t static (micropub and webmention stuff). It’s possible to go the other way too… the Netlify CLI has local hosting capabilities.
#
[qubyte]
Blurring the boundaries a little more… I originally hosted on a Digital Ocean box with nginx.
#
[qubyte]
Originally my reason for migrating away from DO to Netlify was to enable push-to-deploy without needing a server to listen to webhook events to trigger a pull and rebuild. At the time the DO box was also renewing certificates from Let’s Encrypt in a weekly cron job, and the setup was already beginning to feel fragile.
#
[qubyte]
In the end, I’ll probably just move the POST endpoints to small server (an old pi from the drawer) since these aren’t called often. Netlify functions have a habit of breaking.
#
[qubyte]
I don’t have _too_ much faith in Netlify being a good option in the long term, so I want to stay portable.
#
popranger
yea i was a bit confused by calling it a CDN, cuz i understand it as a service to cache assets across a global network of routers so they get served more close to various locations
#
popranger
but gotit, so netlify is indeed for stability, SSL and performance concerns
#
popranger
and CICD in addition (although that wouldn't seem too difficult to be directed at a local deployment instead of netlify in a github action)
#
popranger
[edit] and CICD in addition (although that wouldn't seem too difficult to be directed at a local deployment instead of netlify in a github action. not sure though)
[mattl] joined the channel
#
[qubyte]
Nah, CI is still GitHub. I use a few actions workflows to some other tasks. Any push/merge to main triggers a production build on Netlify, and upon success stuff gets pushed out to their CDN servers.
troojg and rozenglass joined the channel
#
sebbu
yeah, reminds me of a few personnal repo on my github, i had 3 webhooks on them, which were just compiling it and checking it works as expected (make tests), then i could retrieve artifacts (circleci, travis-ci, drone.io)
#
sebbu
since then, both end changed their configuration and my hooks don't work anymore
#
[manton]
[tantek] Great, nice to see those lists.
#
[tantek]
[manton] 🙏 thanks. please LMK if you think of other ways those pages could be made clearer, more appealing, more useful, especially to the broader set of folks you've been talking with regarding building social/posting clients
jacky and barnaby joined the channel