# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 196269
# self = https://watcher.sour.is?offset=170056
# next = https://watcher.sour.is?offset=170156
# prev = https://watcher.sour.is?offset=169956
Great, now I fell into a rabbit hole of โ€œoldโ€ music. ๐Ÿ˜‚ https://www.youtube.com/watch?v=PGNiXGX2nLU
Great, now I fell into a rabbit hole of โ€œoldโ€ music. ๐Ÿ˜‚ https://www.youtube.com/watch?v=PGNiXGX2nLU
Great, now I fell into a rabbit hole of โ€œoldโ€ music. ๐Ÿ˜‚ https://www.youtube.com/watch?v=PGNiXGX2nLU
Great, now I fell into a rabbit hole of โ€œoldโ€ music. ๐Ÿ˜‚ https://www.youtube.com/watch?v=PGNiXGX2nLU
@aelaraji Venus?
@aelaraji Venus?
@aelaraji Venus?
@aelaraji Venus?
@lyse Brilliant idea! ๐Ÿ˜‚ One way ticket to Venus please! ๐Ÿค˜
@lyse Brilliant idea! ๐Ÿ˜‚ One way ticket to Venus please! ๐Ÿค˜
@lyse Brilliant idea! ๐Ÿ˜‚ One way ticket to Venus please! ๐Ÿค˜
[47ยฐ09โ€ฒ31โ€ณS, 126ยฐ43โ€ฒ39โ€ณW] Reading: 0.31 Sv
@prologic Come on, thatโ€™s a little condescending, isnโ€™t it? ๐Ÿ˜…
@prologic Come on, thatโ€™s a little condescending, isnโ€™t it? ๐Ÿ˜…
@prologic Come on, thatโ€™s a little condescending, isnโ€™t it? ๐Ÿ˜…
@prologic Come on, thatโ€™s a little condescending, isnโ€™t it? ๐Ÿ˜…
For the record, out of the 89 feeds that I follow, only a single one has more than one # url = field:

gemini://gemini.ctrl-c.club/~nristen/twtxt.txt

And I wonder if @nristen is aware that the order of those fields matter. ๐Ÿค”
For the record, out of the 89 feeds that I follow, only a single one has more than one # url = field:

gemini://gemini.ctrl-c.club/~nristen/twtxt.txt

And I wonder if @nristen is aware that the order of those fields matter. ๐Ÿค”
For the record, out of the 89 feeds that I follow, only a single one has more than one # url = field:

gemini://gemini.ctrl-c.club/~nristen/twtxt.txt

And I wonder if @nristen is aware that the order of those fields matter. ๐Ÿค”
For the record, out of the 89 feeds that I follow, only a single one has more than one # url = field:

gemini://gemini.ctrl-c.club/~nristen/twtxt.txt

And I wonder if @nristen is aware that the order of those fields matter. ๐Ÿค”
On my blog: Holding Universal Access to All Knowledge Hostage https://john.colagioia.net/blog/2024/09/08/internet-archive.html #politics #rant
[47ยฐ09โ€ฒ38โ€ณS, 126ยฐ43โ€ฒ50โ€ณW] --interrupted--
twts are immutable in the sense that a twt is its own identifier. you might think that a twt can be modified, but what's really happening is a delete and redraft operation. an edit would require you to append a special twt that says that old twt was actually meant to say this other thing, here's the twthash please hide my shame in the UI.
@movq True ๐Ÿ‘Œ
@movq True ๐Ÿ‘Œ
@movq Tbey all hate me for stomping on their precious dear twtxt ๐Ÿคฃ
@movq Tbey all hate me for stomping on their precious dear twtxt ๐Ÿคฃ
@lyse Hmmm interesting idea ๐Ÿค”
@lyse Hmmm interesting idea ๐Ÿค”
@prologic Oh, wait, thereโ€™s already another thread about it. ๐Ÿ˜…
@prologic Oh, wait, thereโ€™s already another thread about it. ๐Ÿ˜…
@prologic Oh, wait, thereโ€™s already another thread about it. ๐Ÿ˜…
@prologic Oh, wait, thereโ€™s already another thread about it. ๐Ÿ˜…
On second thought, the same rule with the last physically encountered URL when starting parsing from the top applies to prepend-style feeds as well. Much simpler and cleaner this way. Should also fit prepend-style feeds better I reckon.
[47ยฐ09โ€ฒ55โ€ณS, 126ยฐ43โ€ฒ06โ€ณW] 4160 days without news from Herve
@falsifian In my opinion it was a mistake that we defined the first url field in the feed to define the URL for hashing. It should have been the last encountered one. Then, assuming append-style feeds, you could override the old URL with a new one from a certain point on:

# url = https://example.com/alias/txtxt.txt
# url = https://example.com/initial/twtxt.txt


# url = https://example.com/new/twtxt.txt

# url = https://example.com/brand-new/twtxt.txt


In theory, the same could be done for prepend-style feeds. They do exist, I've come around them. The parser would just have to calculate the hashes afterwards and not immediately.
@prologic @bender That's exactly the case here with us as well. Maybe not 100% applicable to yarnd, but all other clients that only fetch from their user-controlled subscription list.
@movq @prologic Oh yeah, we have to take our time with that and craft it very carefully.

My theory about the descent of the original twtxt universe is that a) people just move on to other things and b) it was just not practical enough.
Nicely put, @movq! Exactly, reminding people to subscribe etc. is dodgy. To me it feels they think their audience is dumb (and they might be right, I don't know). Super annoying.
@aelaraji Just move to Mars to get an extra hour a day: https://spaceplace.nasa.gov/days/en/ If that's not enough, Mercury should have you covered for sure.
@prologic No, itโ€™s all just speculation and I donโ€™t like spreading rumors. ๐Ÿ˜… It would be more interesting to hear from the twtxt folks themselves why they stopped working on the original twtxt.
@prologic No, itโ€™s all just speculation and I donโ€™t like spreading rumors. ๐Ÿ˜… It would be more interesting to hear from the twtxt folks themselves why they stopped working on the original twtxt.
@prologic No, itโ€™s all just speculation and I donโ€™t like spreading rumors. ๐Ÿ˜… It would be more interesting to hear from the twtxt folks themselves why they stopped working on the original twtxt.
@prologic No, itโ€™s all just speculation and I donโ€™t like spreading rumors. ๐Ÿ˜… It would be more interesting to hear from the twtxt folks themselves why they stopped working on the original twtxt.
@prologic

> the right way to solve this is to use public/private key(s) where you _actually_ have a public key fingerprint as your feed's unique identity that never changes

Okay, this is interesting. How would this work in practice? ๐Ÿค”
@prologic

> the right way to solve this is to use public/private key(s) where you _actually_ have a public key fingerprint as your feed's unique identity that never changes

Okay, this is interesting. How would this work in practice? ๐Ÿค”
@prologic

> the right way to solve this is to use public/private key(s) where you _actually_ have a public key fingerprint as your feed's unique identity that never changes

Okay, this is interesting. How would this work in practice? ๐Ÿค”
@prologic

> the right way to solve this is to use public/private key(s) where you _actually_ have a public key fingerprint as your feed's unique identity that never changes

Okay, this is interesting. How would this work in practice? ๐Ÿค”
@falsifian If the timestamp included a nanosecond part (which is *not* a valid twtxt feed at the moment, because it mandates RFC3339 timestamps and those only permit one subsecond digit), this could solve the editing problem with little effort. ๐Ÿค”

Btw, @prologic, in my experience, people editing their twts is a much more common thing than people changing the URL of their feed. ๐Ÿ˜… It breaks threading all the time.
@falsifian If the timestamp included a nanosecond part (which is *not* a valid twtxt feed at the moment, because it mandates RFC3339 timestamps and those only permit one subsecond digit), this could solve the editing problem with little effort. ๐Ÿค”

Btw, @prologic, in my experience, people editing their twts is a much more common thing than people changing the URL of their feed. ๐Ÿ˜… It breaks threading all the time.
@falsifian If the timestamp included a nanosecond part (which is *not* a valid twtxt feed at the moment, because it mandates RFC3339 timestamps and those only permit one subsecond digit), this could solve the editing problem with little effort. ๐Ÿค”

Btw, @prologic, in my experience, people editing their twts is a much more common thing than people changing the URL of their feed. ๐Ÿ˜… It breaks threading all the time.
@falsifian If the timestamp included a nanosecond part (which is *not* a valid twtxt feed at the moment, because it mandates RFC3339 timestamps and those only permit one subsecond digit), this could solve the editing problem with little effort. ๐Ÿค”

Btw, @prologic, in my experience, people editing their twts is a much more common thing than people changing the URL of their feed. ๐Ÿ˜… It breaks threading all the time.
Wow, there are a lot of ideas in this thread already. ๐Ÿ˜ƒ
Wow, there are a lot of ideas in this thread already. ๐Ÿ˜ƒ
Wow, there are a lot of ideas in this thread already. ๐Ÿ˜ƒ
Wow, there are a lot of ideas in this thread already. ๐Ÿ˜ƒ
[47ยฐ09โ€ฒ59โ€ณS, 126ยฐ43โ€ฒ30โ€ณW] Dosimeter overflow
@prologic That's actually nice ! But I imagine one would have to file in a request beforehand and await an approval from HR ...etc.
@prologic That's actually nice ! But I imagine one would have to file in a request beforehand and await an approval from HR ...etc.
@prologic That's actually nice ! But I imagine one would have to file in a request beforehand and await an approval from HR ...etc.
@movq Another idea: just hash the feed url and time, without the message content. And don't twt more than once per second.

Maybe you could even just use the time, and rely on -mentions to disambiguate. Not sure how that would work out.

Though I kind of like the idea of twts being immutable. At least, it's clear which version of a twt you're replying to (assuming nobody is engineering hash collisions).
In fact, maybe your public key idea is compatible with my last point. Just come up with a url scheme that means "this feed's primary URL is actually a public key", and then feed authors can optionally switch to that.
@prologic Some criticisms and a possible alternative direction:

1. Key rotation. I'm not a security person, but my understanding is that it's good to be able to give keys an expiry date and replace them with new ones periodically.

2. It makes maintaining a feed more complicated. Now instead of just needing to put a file on a web server (and scan the logs for user agents) I also need to do this. What brought me to twtxt was its radical simplicity.

Instead, maybe we should think about a way to allow old urls to be rotated out? Like, my metadata could somehow say that X used to be my primary URL, but going forward from date D onward my primary url is Y. (Or, if you really want to use public key cryptography, maybe something similar could be used for key rotation there.)

It's nice that your scheme would add a way to verify the twts you download, but https is supposed to do that anyway. If you don't trust https to do that (maybe you don't like relying on root CAs?) then maybe your preferred solution should be reflected by your primary feed url. E.g. if you prefer the security offered by IPFS, then maybe an IPNS url would do the trick. The fact that feed locations are URLs gives some flexibility. (But then rotation is still an issue, if I understand ipns right.)
Inside the out feeling
On the Subject of Feed Identities; I propose the following:

1. Generate a Private/Public ED25519 key pair
2. Use this key pair to sign your Twtxt feed
3. Use it as your feed's identity in place of # url = as # key = ...

For example:

e
$ ssh-keygen -f prologic@twtxt.net
$ ssh-keygen -Y sign -n prologic@twtxt.net -f prologic@twtxt.net twtxt.txt


And your feed would looke like:


# nick        = prologic
# key         = SHA256:23OiSfuPC4zT0lVh1Y+XKh+KjP59brhZfxFHIYZkbZs
# sig         = twtxt.txt.sig
# prev        = j6bmlgq twtxt.txt/1
# avatar      = https://twtxt.net/user/prologic/avatar#gdoicerjkh3nynyxnxawwwkearr4qllkoevtwb3req4hojx5z43q
# description = "Problems are Solved by Method" ๐Ÿ‡ฆ๐Ÿ‡บ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿฆฏ๐Ÿนโ™” ๐Ÿ“โšฏ ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ›ฅ -- James Mills (operator of twtxt.net / creator of Yarn.social ๐Ÿงถ)

2024-06-14T18:22:17Z	(#nef6byq) @<bender https://twtxt.net/user/bender/twtxt.txt>  Hehe thanks! ๐Ÿ˜… Still gotta sort out some other bugs, but that's tomorrows job ๐Ÿคž
...


Twt Hash extension would change of course to use a feed's ED25519 public key fingerprint.
On the Subject of Feed Identities; I propose the following:

1. Generate a Private/Public ED25519 key pair
2. Use this key pair to sign your Twtxt feed
3. Use it as your feed's identity in place of # url = as # key = ...

For example:

e
$ ssh-keygen -f prologic@twtxt.net
$ ssh-keygen -Y sign -n prologic@twtxt.net -f prologic@twtxt.net twtxt.txt


And your feed would looke like:


# nick        = prologic
# key         = SHA256:23OiSfuPC4zT0lVh1Y+XKh+KjP59brhZfxFHIYZkbZs
# sig         = twtxt.txt.sig
# prev        = j6bmlgq twtxt.txt/1
# avatar      = https://twtxt.net/user/prologic/avatar#gdoicerjkh3nynyxnxawwwkearr4qllkoevtwb3req4hojx5z43q
# description = "Problems are Solved by Method" ๐Ÿ‡ฆ๐Ÿ‡บ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿฆฏ๐Ÿนโ™” ๐Ÿ“โšฏ ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ›ฅ -- James Mills (operator of twtxt.net / creator of Yarn.social ๐Ÿงถ)

2024-06-14T18:22:17Z\t(#nef6byq) @<bender https://twtxt.net/user/bender/twtxt.txt>  Hehe thanks! ๐Ÿ˜… Still gotta sort out some other bugs, but that's tomorrows job ๐Ÿคž
...


Twt Hash extension would change of course to use a feed's ED25519 public key fingerprint.
On the Subject of Feed Identities; I propose the following:

1. Generate a Private/Public ED25519 key pair
2. Use this key pair to sign your Twtxt feed
3. Use it as your feed's identity in place of # url = as # key = ...

For example:

e
$ ssh-keygen -f prologic@twtxt.net
$ ssh-keygen -Y sign -n prologic@twtxt.net -f prologic@twtxt.net twtxt.txt


And your feed would looke like:


# nick        = prologic
# key         = SHA256:23OiSfuPC4zT0lVh1Y+XKh+KjP59brhZfxFHIYZkbZs
# sig         = twtxt.txt.sig
# prev        = j6bmlgq twtxt.txt/1
# avatar      = https://twtxt.net/user/prologic/avatar#gdoicerjkh3nynyxnxawwwkearr4qllkoevtwb3req4hojx5z43q
# description = "Problems are Solved by Method" ๐Ÿ‡ฆ๐Ÿ‡บ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿฆฏ๐Ÿนโ™” ๐Ÿ“โšฏ ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ›ฅ -- James Mills (operator of twtxt.net / creator of Yarn.social ๐Ÿงถ)

2024-06-14T18:22:17Z	(#nef6byq) @<bender https://twtxt.net/user/bender/twtxt.txt>  Hehe thanks! ๐Ÿ˜… Still gotta sort out some other bugs, but that's tomorrows job ๐Ÿคž
...


Twt Hash extension would change of course to use a feed's ED25519 public key fingerprint.
@aelaraji My work has this thing called "compressed work", where you can buy extra time off (_as much as 4 additional weeks_) per year. It comes out of your pay though, so it's not exactly a 4-day work week but it could be useful, just haven't tired it yet as I'm not entirely sure how it'll affect my net pay
@aelaraji My work has this thing called "compressed work", where you can buy extra time off (_as much as 4 additional weeks_) per year. It comes out of your pay though, so it's not exactly a 4-day work week but it could be useful, just haven't tired it yet as I'm not entirely sure how it'll affect my net pay
@prologic YES, Please!!!
@prologic YES, Please!!!
@prologic YES, Please!!!
@bender Yes, they do ๐Ÿคฃ Implicitly, or threading would never work at all ๐Ÿ˜… Nor lookups ๐Ÿคฃ They are used as keys. Think of them like a primary key in a database or index. I totally get where you're coming from, but there are trade-offs with using Message/Thread Ids as opposed to Content Addressing (_like we do_) and I believe we would just encounter other problems by doing so.

My money is on extending the Twt Subject extension to support more (_optional_) advanced "subjects"; i.e: indicating you edited a Twt you already published in your feed as @falsifian indicated ๐Ÿ‘Œ

Then we have a secondary (_bure much rarer_) problem of the "identity" of a feed in the first place. Using the URL you fetch the feed from as @lyse 's client tt seems to do or using the # url = metadata field as every other client does (_according to the spec_) is problematic when you decide to change where you host your feed. In fact the spec says:

> Users are advised to not change the first one of their urls. If they move their feed to a new URL, they should add this new URL as a new url field.

See Choosing the Feed URL -- This is one of our longest debates and challenges, and I _think_ (_I suspect along with @xuu _) that the right way to solve this is to use public/private key(s) where you _actually_ have a public key fingerprint as your feed's unique identity that never changes.
@bender Yes, they do ๐Ÿคฃ Implicitly, or threading would never work at all ๐Ÿ˜… Nor lookups ๐Ÿคฃ They are used as keys. Think of them like a primary key in a database or index. I totally get where you're coming from, but there are trade-offs with using Message/Thread Ids as opposed to Content Addressing (_like we do_) and I believe we would just encounter other problems by doing so.

My money is on extending the Twt Subject extension to support more (_optional_) advanced "subjects"; i.e: indicating you edited a Twt you already published in your feed as @falsifian indicated ๐Ÿ‘Œ

Then we have a secondary (_bure much rarer_) problem of the "identity" of a feed in the first place. Using the URL you fetch the feed from as @lyse 's client tt seems to do or using the # url = metadata field as every other client does (_according to the spec_) is problematic when you decide to change where you host your feed. In fact the spec says:

> Users are advised to not change the first one of their urls. If they move their feed to a new URL, they should add this new URL as a new url field.

See Choosing the Feed URL -- This is one of our longest debates and challenges, and I _think_ (_I suspect along with @xuu _) that the right way to solve this is to use public/private key(s) where you _actually_ have a public key fingerprint as your feed's unique identity that never changes.
@aelaraji Join the club! ๐Ÿคฃ How about more days in a weekend?! ๐Ÿ˜ฑ Bringon #FourDayWorkWeek !!! ๐Ÿคฃ
@aelaraji Join the club! ๐Ÿคฃ How about more days in a weekend?! ๐Ÿ˜ฑ Bringon #FourDayWorkWeek !!! ๐Ÿคฃ
Where do I download more hours for my days? not having more than 24 hours a day S U C K S !
Where do I download more hours for my days? not having more than 24 hours a day S U C K S !
Where do I download more hours for my days? not having more than 24 hours a day S U C K S !
@prologic do the existing major clients today perform that verification, or is it simply โ€œhey, there is that thingy letโ€™s use it for reference!โ€?
@bender Haha, easy to demonstrate. I'll start an email thread with myself, then you see if you can join in ๐Ÿคฃ
@bender Haha, easy to demonstrate. I'll start an email thread with myself, then you see if you can join in ๐Ÿคฃ
@prologic about this:

> โ€œI think Email Message-Id(s) only ever worked because typically you are exchanging emails with recipients you know and vice versa \n


Absolutely not! Maybe this is something best talked. ๐Ÿ˜…
@prologic about this:

> โ€œI think Email Message-Id(s) only ever worked because typically you are exchanging emails with recipients you know and vice versa [โ€ฆ]

Absolutely not! Maybe this is something best talked. ๐Ÿ˜…
@prologic about this:

> โ€œI think Email Message-Id(s) only ever worked because typically you are exchanging emails with recipients you know and vice versa [โ€ฆ]


Absolutely not! Maybe this is something best talked. ๐Ÿ˜…
We _can_ also make use of comments in the feed to build support for detecting/declaring Twts(s) were edited in a feed that are ignored by clients that don't understand the comments. By design clients ignore comments anyway, but the parser we build for yarnd (_which I'd love to turn into a C library that others can just import_) can do some interesting things here. @xuu can probably talk more on this...
We _can_ also make use of comments in the feed to build support for detecting/declaring Twts(s) were edited in a feed that are ignored by clients that don't understand the comments. By design clients ignore comments anyway, but the parser we build for yarnd (_which I'd love to turn into a C library that others can just import_) can do some interesting things here. @xuu can probably talk more on this...
I _think_ Email Message-Id(s) only ever worked because typically you are exchanging emails with recipients you know and vice versa. It's much easier to cope with the problems above, because you just ensure your client preserves the Message-Id. Email is a federated system, but by no means is it "decentralised". You still have to send your email somewhere, not just post it on a website on your own server like Twtxt ๐Ÿ˜…

There are some subtitles differences like this that makes Message/Thread Id(s) not really that suitable IMO.
I _think_ Email Message-Id(s) only ever worked because typically you are exchanging emails with recipients you know and vice versa. It's much easier to cope with the problems above, because you just ensure your client preserves the Message-Id. Email is a federated system, but by no means is it "decentralised". You still have to send your email somewhere, not just post it on a website on your own server like Twtxt ๐Ÿ˜…

There are some subtitles differences like this that makes Message/Thread Id(s) not really that suitable IMO.
@bender The problem with the approach Email clients do things is;

- How do you come up with the message/thread id in the first place? I'm pretty sure most clients just use a UUID.
- How do you know what you're replying to if you don't see the message/thread id in the first place?
- How do two different users that don't know each other, but follow the same feed (say /.) make two independent responses forming a thread? What message/thread id do they use? (see above)
@bender The problem with the approach Email clients do things is;

- How do you come up with the message/thread id in the first place? I'm pretty sure most clients just use a UUID.
- How do you know what you're replying to if you don't see the message/thread id in the first place?
- How do two different users that don't know each other, but follow the same feed (say /.) make two independent responses forming a thread? What message/thread id do they use? (see above)
@bender Sorry, trust was the wrong word. Trust as in, you do not have to check with anything or anyone that the hash is valid. You can verify the hash is valid by recomputing the hash from the content of what it points to, etc.
@bender Sorry, trust was the wrong word. Trust as in, you do not have to check with anything or anyone that the hash is valid. You can verify the hash is valid by recomputing the hash from the content of what it points to, etc.
๐Ÿงฎ USERS:1 FEEDS:2 TWTS:1086 ARCHIVED:78278 CACHE:2434 FOLLOWERS:17 FOLLOWING:14
@prologic I kind of want to think of twtxts as chalk text written on a board hanging in front of the userโ€™s house. As the user is in full control of their own board, they can erase, and rewrite it as they deem fit.

So, how to reply, and engage with something that can potentially change? I think the email based message-id, and in-reply-to would work best, without the rigid boundary of a hash thatโ€™s bound to break on edit.
@prologic you wrote:

> โ€œ\n they can trust that the hash is a cryptographic representing of the thread theyโ€™re replying to, no matter what.โ€

It isnโ€™t about trust, is it? There has to be some kind of check to verify the hash is valid, no?
@prologic you wrote:

> โ€œ[โ€ฆ] they can trust that the hash is a cryptographic representing of the thread theyโ€™re replying to, no matter what.โ€

It isnโ€™t about trust, is it? There has to be some kind of check to verify the hash is valid, no?
@falsifian Yes;

> I donโ€™t think twtxt hashes are long enough to prevent spoofing.

The current spec needs to be updated to expand the hash length to 11 characters to avoid hash collisions (_which will happen at some point with 7, if not already_).

The issue isn't dealing with "spoofing", it's about solving how clients in a decentralised model agree on the threading model and identity of a thread. Message ID(s) suffer from the fact that as @movq points out, clients have to "obey" this unwritten rule, but they're otherwise just arbitrary. Whereas Twt Hashes (_I didn't come up with the idea originally, some smart fellow in cryptography did_) are content addressable, meaning that clients don't have to agree on anything, they can trust that the hash is a cryptographic representing of the thread they're replying to, no matter what.
@falsifian Yes;

> I donโ€™t think twtxt hashes are long enough to prevent spoofing.

The current spec needs to be updated to expand the hash length to 11 characters to avoid hash collisions (_which will happen at some point with 7, if not already_).

The issue isn't dealing with "spoofing", it's about solving how clients in a decentralised model agree on the threading model and identity of a thread. Message ID(s) suffer from the fact that as @movq points out, clients have to "obey" this unwritten rule, but they're otherwise just arbitrary. Whereas Twt Hashes (_I didn't come up with the idea originally, some smart fellow in cryptography did_) are content addressable, meaning that clients don't have to agree on anything, they can trust that the hash is a cryptographic representing of the thread they're replying to, no matter what.
@falsifian I like this idea actually for edits.