6 ms·
I'd like to see more attention put into carving out a subset of Mastodon's functionality that would allow you to host your fediverse node on a static site, à la
by cxr 5y ago
I'd like to see more attention put into carving out a subset of Mastodon's functionality that would allow you to host your fediverse node on a static site, à la blog feeds powered by RSS/Atom.
The discovery problem can be handled pretty straightforwardly: if you want notifications of replies to your posts, then that's just another feed that you subscribe to—a separate service. You don't exactly need an always-on "instance" providing an inbox endpoint to relay notifications to you.
You give up private channels (DMs), but you gain a lot more flexibility. It's a shame that there are so few server (and client) implementations for "the fediverse". We should have at least half as many options as we have in static site generators themselves. (In fact, with this approach, your preferred static site generator could become part of your "client"...)
Imagine your corner of the fediverse being reachable at $YOURNAME.github.io.
Prior art: Fritter <https://github.com/beakerbrowser/fritter https://github.com/beakerbrowser/fritter>
- ocdtrekkie 5y agoHave you seen twtxt or yarn.social? It's a text-format feed you can absolutely statically host.
- cxr 5y agoI don't want another Twitter-but-reinvented. I want a Mastodon-interoperable "profile" to be enshrined in a standard that projects currently focused on compatible ActivityPub-based client/server implementations agree to support because it's a good compromise that allows people to participate with nothing more than the ability to publish a static site.
- whacked_new 5y agodo you think what you're envisioning can be bootstrapped through github actions?
- cxr 5y agoThe mechanism used to actually service publication requests from the person controlling the node is orthogonal to doing the design work to specify the thing and the political/social aspect of getting people to agree to support/adopt it. So, in a word, no. (Side note: any design that necessarily depended on GitHub Actions or something with equivalent power would be a failure on the goals I've outlined.)
- whacked_new 5y agoI can see where you're coming from, but just as food for thought, I think this is an interesting angle: 1. many people are able to host their content on github now (or gitlab or otherwise) 2. github (et al) provides a simple way to add RSS to your content 3. github actions provides a simple way to poll and update Mastodon is very interesting, and it has gotten simpler over the years, but I don't think it is simple enough.
- hedora 5y agoI think the argument is that it should be trivial to host on github / github actions, or anywhere else, just like any other sane static site generator.
- cxr 5y agoWell, yeah. That's pretty much the thesis of what I wrote—hence, "Imagine your corner of the fediverse being reachable at $YOURNAME.github.io." (Are you trying to convince me here of something I was already convinced of? That's what it sounds like.)
- nyx_land 5y agoActivityPub is so poorly/vaguely specified that basically every real world implementation follows what Mastodon does, so good luck with trying to get what you're after without being at least indirectly dependent on the decisions of yet another Twitter clone.
- cxr 5y ago> good luck with trying to get what you're after without being at least indirectly dependent on the decisions of yet another Twitter clone Not what I meant. The correct way to read what I wrote is with emphasis on "another Twitter-but-reinvented". We already have have a Twitter-but-reinvented (Mastodon, and Mastodon-interoperable ActivityPub clients/servers). And people actually use it—which is the hard part of working on any kind of "social" gewgaw. To think that we should throw that out and use twtxt or something like it would be to screw up bad. ActivityPub is better at being RSS-/Atom-like in its ability to convey structure than twtxt is, anyway. What's left is slicing it up, fusing the gaps and some now-necessary pieces with epoxy, and saying, "Here's the 'static' profile; you can look forward to support for this in Mastodon 4.0 [and everything else that tries to be interoperable]."
- ratww 5y agoYep. It was the same before Mastodon, with the predecessor of ActivityPub, et al. People had to "do whatever StatusNet/GNUSocial is doing". Even the code examples in the specs themselves were unable to interoperate with any instance whatsoever.
- Karrot_Kream 5y agoActivityPub is supposed to be a generic feed format but in practice it's used mostly for Twitter clones so none of its non-Twitter vocabulary or flows have ever been developed.
- zozbot234 5y ago> I'd like to see more attention put into carving out a subset of Mastodon's functionality that would allow you to host your fediverse node on a static site, à la blog feeds powered by RSS/Atom. You could just serve standard ActivityStreams; this can happen statically and is not something that Mastodon itself needs to be concerned with, obviously. A different component (either Mastodon itself or some separate thing) would poll known ActivityStreams endpoints and either expose them directly in Mastodon or relay their content via ActivityPub in a way that a Mastodon instance can support.
- gargron 5y agoTo allow people to review their followers before accepting them ("follow requests") all subscriptions in ActivityPub require the followed actor to send back an Accept activity. This, and the Webfinger requirement to confirm the username@domain address that predates ActivityPub, preclude plain static sites from being followable actors as seen from Mastodon. Although nothing prevents you from publishing a static feed in the ActivityStreams format, this would require a different, feed-like subscription mechanism where the publisher is not aware of subscribers and the subscriber has to poll the publisher periodically.
- cxr 5y agoYes. These are all assumptions of the sort that I'm saying would need to be (and should be) adjusted (i.e. fixed)—in Mastodon and ActivityPub, to better accommodate static nodes (not for the relevant desiderata to be adjusted to accommodate what's currently wrong with the design that Mastodon implements).
- zozbot234 5y ago"Follow requests" are typically used for sharing private posts in existing social networks: that's why there is a "request and accept" flow. They seem like they should be irrelevant to users who only post content publicly. Does Mastodon require users with public posts to "approve" each of their subscribers?
- shadowfacts 5y agoNot in the UI unless the user's enabled it, but ActivityPub server implementations send an Accept activity in response to a Follow activity.
- zozbot234 5y agoSeems like GP is right then about some tweaks being advisable. There's no reason why ActivityPub servers should not be able to poll and republish ActivityStreams pages if the server admin arranges for this.
- pfraze 5y agoEy, I made Fritter. The “fr” shamelessly came from my last name. Actually the cooler thing was Rotonde, which Devine of 100 rabbits fame made. Beaker has the ability to duplicate somebody else’s website, which we called forking. So Devine made a social website where the whole application was the website software itself. Bear in mind that beaker sites are like mutable torrents. They’re just collections of files. The fun is that you can read and write those files by an API. The js in Rotonde would detect if you owned the site, and then present a text input which would write a new text file in the posts folder. The site would then use js to read all its own post texts and the post texts of followed users to produce a feed. To create a new “account” you would fork an existing site, copying all the application software. This meant the software itself was literally viral. It was really cool. If you think a bit about it, you can probably guess the problems we ran into (both with rotonde and fritter). Most of it had to do with scaling - as all this occurred in the frontend of these p2p sites - and multi device coordination. There was, however, a pretty intense zen simplicity in the pattern of websites that wrote their own files with JS, and I wouldn’t write the idea off entirely.
- cxr 5y ago> Most of it had to do with scaling - as all this occurred in the frontend of these p2p sites You didn't say it, exactly, but just in case anyone who's reading casually misses it: this need not be the case with the static fediverse. I didn't mention JS or any sort of fully in-browser aggregator; nothing here requires client logic running on the "frontend" (i.e. in a Web browser). You'd be free to make whatever client choices are appropriate for you, including managing the whole thing via shell scripts (as many people choose to with their static sites).
- hedora 5y agoI think a static site hosted on git is the sweet spot for the fediverse. It's realistic to expect an HTTPS 1.1 static endpoint and openssh to have << 1 unauthenticated remotely exploitable bugs per year. This opens up a whole new world of hosting options. Think a raspberry pi that auto backs up to github/gitlab/git, with an ACME / let's encrypt client. Stick it behind the right CDN and it could even host podcasts / video. Enable automatic OS upgrades and give it a maintenance window and it's zero maintenance until the $35 hardware fails. Edit: Or be lazy and stick the static site in s3.
- tedunangst 5y agoWho does run the server where the feed of replies to my post lives?
- cxr 5y agoSame as who operates hosted feed aggregators and podcast indexers for you to use: whoever wants to.
- betwixthewires 5y agoI'm pretty sure there are tools that allow people to subscribe to an activitypub feed of your private blog similar to RSS, it's been a while since I dived into the world of activitypub community projects and tools but I am certain I saw something like that somewhere.
- phs318u 5y agoIt is indeed a thing. https://duckduckgo.com/?q=rss+to+activitypub https://duckduckgo.com/?q=rss+to+activitypub There was even a HN article a few years ago. https://news.ycombinator.com/item?id=21470099 https://news.ycombinator.com/item?id=21470099
- cxr 5y ago> there are tools that allow people to subscribe to an activitypub feed of your private blog Those aren't relevant here. You're saying, essentially, "static sites/blogs, squeezed through a Mastodon-/ActivityPub-shaped hole". I'm saying, "Mastodon profiles, squeezed through the static site/blog hole (in a typical staticgen pipeline)". They have some words in common, but the resemblance ends there, at the superficial level; they are otherwise completely opposite ideas. > I am certain I saw something like that Assuming that "that" means the thing that I'm describing: you wouldn't have seen that, because the relevant Mastodon-interoperable parts of ActivityPub as they currently exist are fundamentally at odds with the ability to do this, for reasons mentioned in part by Gargron upthread. The WebFinger thing is a big part of it. Mastodon's not alone here; there are other WebFinger-dependent protocols (like remoteStorage) that also suffer. This is covered in <https://github.com/konklone/jekyll-webfinger/tree/9bcb46bbabc08363b14fd8b41a944215539d7642 https://github.com/konklone/jekyll-webfinger/tree/9bcb46bbab...>. (Mastodon has taken off in a way that we could probably say it has reached critical mass, even if it's still not as mainstream as Twitter, but remoteStorage not so much.) This is a design flaw at the protocol level, and my contention is that it impacts further adoption more than people realize. There's no good reason, for example, why when I encounter a remoteStorage-compatible app where I only ever intend to grant it read-only access, I shouldn't be able to give it the URL for a dataset hosted on a static site. Presently, however, you cannot—unless the application author deliberately implements some workaround. But they shouldn't need to.
- deleted 5y ago[deleted]
- mro_name 5y ago> your fediverse node on a static site, à la blog feeds powered by RSS/Atom. I'm aiming for such called #Seppo! There's a proof of concept https://demo.mro.name/shaarligo https://demo.mro.name/shaarligo and funding application paper in german for now https://mro.name/o/2022-03-08-201643-prototypefund12-037.pdf https://mro.name/o/2022-03-08-201643-prototypefund12-037.pdf Would you pay a doller per month for such?
- unicornporn 5y agoOh, I came across this long ago and forgot about it. Thanks for the reminder! Hope you will find funding via Prototype Fund too! > Would you pay a doller per month for such? For what? Hosting or development? I'd definitely pay $1 for development. :) BTW, you say #Seppo, but the repo says ShaarliGo. Are you considering a name change?
- mro_name 5y ago> For what? Hosting or development? development. Hosting will be strictly decentral under your responsibility. > you say #Seppo, indeed, the other is a proof of concept and will remain as is.
- unicornporn 5y ago> indeed, the other is a proof of concept and will remain as is. I've always said that a easy to deploy CMS is one of the missing pieces for the IndieWeb. Preferably it should work on any shared hosting. PHP/SQLite would be a good fit, but I understand if you have other preferences.
- cxr 5y ago> 2. download https://mro.name/Linux-x86_64/shaarligo.cgi https://mro.name/Linux-x86_64/shaarligo.cgi[...] That doesn't sound like a static node to me, just another backend-heavy design. Can I deploy this to GitHub Pages? NeoCities? Netlify (sans Functions)? If the answer is "no", then it really doesn't have anything to do with what I'm talking about.
- zamalek 5y agoWritefreely[1] supports ActivityPub, and are already planning to look at some of the ideas you have. [1]: https://writefreely.org/ https://writefreely.org/
- cxr 5y agoWriteFreely is no more relevant to static sites than Mastodon is. They're both "backend-heavy" servers—not tools for creating the sort of content that can be hosted on GitHub Pages or Neocities or Netlify (sans Functions) or a simple host that serves content from the file system using Caddy/Nginx/Apache/etc.
- khimaros 5y agothis is infeasible until https://github.com/mastodon/mastodon/issues/34 https://github.com/mastodon/mastodon/issues/34 is addressed. Mastodon does not backfill posts or "poll" streams. they need to be pushed.