👋 Calling all decentralised enthusiasts that still remembers and use IRC 😎
Please come join us in a new, truely, decentralised IRC-based chat experience by standing up your own Parley instance on your own domain (bring your own OIDC auth or use the built-in).
Pick your favourite IRCv3-compatible client (there’s heaps out there!).
And peer with either me james@mills.io or Admin -> Peers -> Add mills.io or @david@daiwei.me via david@ratha.us or simply ratha.us (in Admin -> Peers -> Add).
See you online! 🤞 #decentralised #irc #chat
I have (finally) built a fully e2e working purely decentralised and federated IRC-compatible chat server. It is currently a PoC, but it’s already working quite well. It’s inspired partly by the work we did with Salty Chat in terms of Discovery and Federation. Some screenshots of a normal IRC client irssi showing off how it works in a local e2e setup:

Does anyone have time this weekend to manually test and validate and prove out this spec I’m calling Gitxt? A Twtxt-inspired purely decentralised Git federation/forge? 🤔 Hit me up! You need only git, curl and a web server of some kind.
gitxt is a purely decentralised git forge. There is no federation protocol, no instance-to-instance API, no accounts on other people’s servers. Each forge instance is fully independent; collaboration is an act of publishing and reading plain text files over HTTP
@fossham@twtpub.com I honestly think the most unique and interesting thing about doing this at all is that it is in fact inspired directly by Twtxt / Yarn.social itself – That is to say, I am confident I can do this in such a way as to be “truly decentralised”, no inter-networking like ActivityPub, no centraised forges like Github or Codeberg. You run your instance, I run mine, we just are able to collaborate. Think exchanging patches over Email, just without all the hard-to-learn ways to do that (enough though it’s not hard for some of us, but still).
@movq@www.uninformativ.de In the meantime tell me all your “wishes” and things you wish/want a good decent “pure” decentralised Git forge should do 😅
@arg@twtpub.com You actually can, but we highly discourage it and I haven’t really built “Edit” / “Delete” functionality in the Twtxt App that I know you’re using 😅 Twtxt being purely decentralised, meaning that there are absolutely zero decentralised, with the exception of the twtpub.com service you’re using to reduce as much friction as possible for newcomers to try things, makes supporting threads a bit of a controversial topic 😆 – In the end we are sticking with the Hash v2 extension, making threads use content addressing, so even if you did delete/edit a Twt, you have to be carefuly it hasn’t already been replied to in the ecosystem 🤣
The only place where this would be an issue is the Twtxt Search Engine – But as the GDPR also points out:
Art. 17
The one place the “it propagated and I can’t recall it” problem is legally acknowledged is Art. 17(2), and it explicitly scales to what’s technically feasible:
“…the controller, taking account of available technology and the cost of implementation, shall take reasonable steps, including technical measures, to inform controllers which are processing the personal data that the data subject has requested the erasure…”
Best-effort, given the technology. A decentralised, append-only, content-addressed feed is the available technology, and its limits are baked into the standard the law applies. Nobody — not the user, not you — is obliged to guarantee every cached copy vanishes.
twtpub.com is just the default instance tho — it’s a multi-tenant twtd, AGPLv3. Run your own and I’ll list it in the app’s picker so folks choose where to land 🤗 keeps it decentralised + spreads the load. Docs → https://git.mills.io/yarnsocial/twtd
@rdlmda@rdlmda.me I never saw the point of a registry to be honest, as it defeated the point of what I believed to be a truly decentralised non-social social ecosystem. What can and does work however is a search engine and crawler. I used to run one, but I took it down, mostly because it got expensive to operate, at least the implementation I built… Maybe one day i’ll try again with a SQLite backend.
We’ve been discussing the idea of changing the threading model from Content-based Addressing to Location-based addressing for years now. The problem is quite complex, but I feel I have to keep reminding y’all of the potential perils of changing this and the pros/cons of each model:
With content-addressed threading, a reply points at something that’s intrinsically identified (hash of author/feed URI + timestamp + content). That ID never changes as long as the content doesn’t. Switching to location-based anchors makes the reply target extrinsic—it now depends on where the post currently lives. In a pull-based, decentralised network, locations drift. The moment they do, thread identity fragments.
@eric@itsericwoodward.com I prefer to call what we’ve built here really an “ecosystem”. A network isn’t really an apt description. Twtxt/Yarn is arguably IMO the purest decentralised non-social social media ecosystem I think in existence today 🤣
7 to 12 and use the first 12 characters of the base32 encoded blake2b hash. This will solve two problems, the fact that all hashes today either end in q or a (oops) 😅 And increasing the Twt Hash size will ensure that we never run into the chance of collision for ions to come. Chances of a 50% collision with 64 bits / 12 characters is roughly ~12.44B Twts. That ought to be enough! -- I also propose that we modify all our clients and make this change from the 1st July 2025, which will be Yarn.social's 5th birthday and 5 years since I started this whole project and endeavour! 😱 #Twtxt #Update
@eapl.me@eapl.me I honestly believe you are overreacting here a little bit 🤣 I completely emphasize with you, it can be pretty tough to feel part of a community at times and run a project with a kind of “democracy” or “vote by committee”. But one thing that life has taught me about open source projects and especially decentralised ecosystems is that this doesn’t really work.
It isn’t that I’ve not considered all the other options on the table (which can still be), it’s just that I’ve made a decision as the project lead that largely helped trigger a rebirth of the use of Twtxt back in July 1 2020. There are good reasons not to change the threading model right now, as the changes being proposed are quite disruptive and don’t consider all the possible things that could go wrong.
And speaking of Twtxt (See: #xushlda, feeds should be treated as append-only. Your client(s) should be appending Twts to the bottom of the file. Edits should never modify the timestamp of the Twt being edited, nor should a Twt that was edited by deleted, unless you actually intended to delete it (but that’s more complicated as it’s very hard to control or tell clients what to do in a truely decentralised ecosystem for the deletion case). #Twtxt #Client #Recommendations
. (period) in their # nick 🤣 tbh I think nick(s) should have rules of what they can and cannot be comprised of. i.e: no punctuation 🤦♂️
@prologic@twtxt.net having rules like this on a decentralised system is nearly impossible. LOL. Ahhh, one of the many perks of decentralisation!
yarnd UI/UX experience (for those that use it) and as "client" features (not spec changes). The two ideas are quite simple:
@kate@yarn.girlonthemoon.xyz (as I was trying to say…), Glad you think so👌 My goal with Yarn.social has always been to provide the best (best that I can anyway) truly decentralised (slow) social experience that uses the Twtxt format under the hood 😅
Holy hell?! When I post this:
@<kate https://yarn.girlonthemoon.xyz/user/kat/twtxt.txt> Glad you think so! 👌 My goal with Yarn.social has always been to provide the best (_best that I can anyway!_) truly decentralised (_slow_) social experience that uses the Twtxt format under the hood 😅
Something is swallowing it.
@kate@yarn.girlonthemoon.xyz Glad you think so! 👌 My goal with Yarn.social has always been to provide the best (best that I can anyway!) truly decentralised (slow) social experience that uses the Twtxt format under the hood 😅
yarnd UI/UX experience (for those that use it) and as "client" features (not spec changes). The two ideas are quite simple:
Glad you think so! 👌 My goal with Yarn.social has always been to provide the best (best that I can anyway!) truly decentralised (slow) social experience that uses the Twtxt format under the hood 😅
yarnd UI/UX experience (for those that use it) and as "client" features (not spec changes). The two ideas are quite simple:
@kate@yarn.girlonthemoon.xyz Glad you think so! 👌 My goal with Yarn.social has always been to provide the best (best that I can anyway!) truly decentralised (slow) social experience that uses the Twtxt format under the hood 😅
yarnd UI/UX experience (for those that use it) and as "client" features (not spec changes). The two ideas are quite simple:
@kate@yarn.girlonthemoon.xyz Glad you think so! 👌 My goal with Yarn.social has always been to provide the best (best that I can anyway!) truly decentralised (slow) social experience that uses the Twtxt format under the hood 😅
@eapl.me@eapl.me This is one of my concerns too. The moment you post publicly ciphertext, you open yourself up for future attacks on the ciphertext, which you really want to avoid if you can. If you have a read of the Salty.im Spec you’ll note we went to great lengths to protect the user’s privacy as well as their identity and make it incredibly hard to guess at inboxes. It’s still a WIP, but I’d love to see it progressed even further – I truly feel strongly about a purely decentralised messaging ecosystem 👌
I do think integrating things like Salty.im might actually be a good idea. I can also see a future where we integrate other things like todo.txt and calendar.txt. I’d even love to see decentralised forms of “plain text” voting too.
Thank you @python_valencia@twtxt.python-valencia.es for letting me show you the secrets of a decentralised plain text social network like twtxt.
I hope you enjoyed the talk! ❤️🐍


#python #twtxt
twtxt is a decentralised, minimalist microblogging service for hackers.
The keyword here is microblogging. But it doesn’t feel like we’ve been (relatively speaking) doing much of that lately… maybe I go the concept of microblogging wrong.
One of the biggest gripes of the community with the way the threading model currently works with Twtxt v1.2 (https://twtxt.dev) is this notion of:
What is this hash?
What does it refer to?
Idea: Why can’t we all agree to implement a simple URI scheme where we host our Twtxt feeds?
That is, if you host your feed at https://example.com/twtxt.txt – Why can’t or could you not also host various JSON files (let’s agree on the spec of course) at https://example.com/twt/<hash> ? 🤔
That way we solve this problem in a truly decentralised way, rather than every relying on yarnd pods alone.
After the behaviour of a clearly very angry feed author over the past few days, I’m very tempted to give up on Twtxt and allow it to go back to being dead. What really is the point of building and supporting a way to exchange little pieces of text with one another in a completely decentralised way, if you’re just going to keep humping up against such hostility? I don’t know why I do this anymore.
👋 Thanks for joining us on our Sept monthly Yarn.social meetup today y’all 🙇♂️ We had @david@collantes.us @sorenpeter@darch.dk @doesnm@doesnm.p.psf.lt @falsifian@www.falsifian.org and @xuu@txt.sour.is 💪 Nice turn out! (not all at once of course, as we normally run this over 4 hours as we span many time zones!)
Things we talked about:
- Decentralised vs. Distributed
- Use of SHA256 for Twt Hash(es)
- We solved Edits! 🥳
- UUID(s) probably won’t work! (susceptible to sppofing)
- Helped @sorenpeter@darch.dk write some PHP to process/parse
User-Agentand service his feed via a custom PHP script 😅
- @falsifian@www.falsifian.org introduced himself 👌
- Talked about Merkle Trees 🌳
Did I miss anything? 🤔
@falsifian@www.falsifian.org Do you have specifics about the GRPD law about this?
Would the GDPR would apply to a one-person client like jenny? I seriously hope not. If someone asks me to delete an email they sent me, I don’t think I have to honour that request, no matter how European they are.
I’m not sure myself now. So let’s find out whether parts of the GDPR actually apply to a truly decentralised system? 🤔
Location Addressing is fine in smaller or single systems. But when you’re talking about large decentralised systems with no single point of control (kind of the point) things like independable variable integrity become quite important.
@falsifian@www.falsifian.org that would be problematic to do on a fully decentralised system. I am not disagreeing, though. That’s the reason I have stopped editing twtxts. I strive to own mistakes, as minor as they might be. Now, if trail editing can be accomplished, I am all for it!
Serious open (for anyone) question: what makes you follow someone on twtxt? Will you just follow anyone that you come across, simply because that someone using the “decentralised, minimalist microblogging service for hackers” microblog?
Erlang Solutions: Blockchain in Sustainable Programming
The benefits of blockchain implementation across multiple sectors are well-documented, but how can this decentralised solution be used to achieve more sustainable programming?
As the effects of the ongoing climate crisis continue to impact weather patterns and living conditions across the planet, we must continue to make every aspect of our lives, from transport and energy usage to all of our technology, greener and more sustain … ⌘ Read more
@prologic@twtxt.net I think we could use deltachats new decentralising app format for it: https://delta.chat/en/2022-06-14-webxdcintro
Hmmm so… We seem to have a few pods offline in the network 😂 Also 😢
- @jlj@twt.nfld.uk’s twt.nfld.uk => 504 Gateway Time-out
- @adi@f.adi.onl’s f.adi.onl => 200 OK but doens’t appear to be a pod anymore?! 🤔
- @eldersnake@yarn.andrewjvpowell.com’s personal pod => offline due to lack of Solar/Battery power? 😅
- @lohn@tw.lohn.in’s personal pod => 503 Service Unavailable
It’s a bad day for Yarn.social 🤣
Good thing it’s all decentralised 😉