# default_lang = en
# discovery_url = https://example.com/discovery/
# follow = alice https://example.com/alice.txt ABCDEF12
# follow = alice gemini://example.com/alice.txt
# avatar = https://example.com/avatar/alice.png
# avatar = gemini://example.com/avatar/alice.png

1	2025-03-03T15:00:00-04:00	{lang=en} Hello, world! Welcome to my twtxt feed. UTF-8 check: é, ö, ü.
2	2025-03-03T15:05:00-04:00	{lang=es} ¡Hola, mundo! This tweet is in Spanish.
3	2025-03-03T15:10:00-04:00	{url=ABCDEF12,id=1} Replying to tweet 1 using its URL hash.
4	2025-03-03T15:15:00-04:00	{edited=1} This tweet has been edited once.
5	2025-03-03T15:20:00-04:00	{lang=fr} Bonjour le monde! A French twt overriding the default language.
6	2025-03-03T15:25:00-04:00	Regular twt without metadata defaults to en.

⤋ Read More

looks good to me!

About alice’s hash, using SHA256, I get 96473b4f or 96473B4F for the last 8 characters. I’ll add it as an implementation example.
The idea of including it besides the follow URL is to avoid calculating it every time we load the file (assuming the client did that correctly), and helps to track replies across the file with a simple search.

Also, watching your example I’m thinking now that instead of {url=96473B4F,id=1} which is ambiguous of which URL we are referring to, it could be something like:
{reply_to=[URL_HASH]_[TWT_ID]} / {reply_to=96473B4F_1}
That way, the ‘full twt ID’ could be 96473B4F_1.

⤋ Read More

This seems to be capable of supporting edits as you noted. But I need to think a bit more (~2am here now) of whether this can be abused in any way… The advantage of Content-based Addressing (hashing the content) is that the hash is then immutable, meaning that we can have integrity that the hash actually represents that content from that author at that time.

⤋ Read More

a few async ideas for later

The editing process needs a lot of consideration and compromises.

From one side, editing and deleting it’s necessary IMO. People will do it anyway, and personally I like to edit my texts, so I’d put some effort on make it work.
Should we keep a history of edits? Should we hash every edit to avoid abuse? Should we mark internally a twt as deleted, but keeping the replies?

I think that’s part of a more complete ‘thread’ extension, although I’d say it’s worth to agree on something reflecting the real usage in the wild, along with what people usually do on other platforms.

⤋ Read More

For point 1 and others using the metadata tags. we have implemented them in yarnd as [lang=en][meta=data]

⤋ Read More

Participate

Login to join in on this yarn.