This is the first screenshot, a simple timeline Iām using to check the fields. Now Iām working on some details: avatar cache, relative dates, simple thread, etc.
#emacs #twtxt@<url>
form of mentions. Strictly require that all mentions include a nickname/name; i.e: @<name url>
.
For the record; we consider the new authority on the Twtxt spec(s) going forward (has been for some years actually) to be implementers / primary maintainers of widely used clients. To date that is:
yarnd
@prologic@twtxt.net (me and others)
jenny
@movq@www.uninformativ.de
tt
@lyse@lyse.isobeef.org
Timeline
@darch@neotxt.dk / @eapl.me@eapl.me and others
twtxt-el
? ā @andros@twtxt.andros.dev
Full list of supported and widely used clients can be found at https://twtxt.dev/clients.html ā which I note a few above are actually missing from this page haha š¤£
"twtxtfeevalidator/0.0.1"
UA about? I thought I could ask before throwing a 1000GB file at it šŖ¤ could it be the same 'xt' thing @lyse was talking about the other day?
hmm⦠apparently the invalid twts are the latest ones Iād posted from Timeline
but highly probably because Iād tried to restore them manually, after unintentionally overriding my twtxt file with one that was out of date š¤¦
yarnd
(which powers Yarn.social pods like twtxt.net) does have an API, however that API is designed for clients to interact with the pod and the user's account and feed. e.g: there is a command-line client called yarnc
and I used to maintain a mobile native app (using Flutter).
Want this API for Goryon or just Goryon with support to just twtxt.txt. I canāt read timeline without visible replies and missing twts
Saved, I hope that didnāt anyoneās timeline⦠š
Shi⦠I forgot to pull my twtxt file before twtinā ⦠let me see if I can recover them lost timeline twts.
Ok, amma start twting from my timeline instance, let me know if I break something xD
I donāt see post in timeline and mentions from demo account. Even in site and goryon. Demo account follows me
@sorenpeter@darch.dk Here are two more cases:
- nick = subdomain: https://aelaraji.com/timeline/profile?url=https://lyse.isobeef.org/twtxt.txt ->
lyse
.isobeef.org
- nick = second level domain: https://aelaraji.com/timeline/profile?url=https://aelaraji.com/twtxt.txt ->
aelaraji
.com
nick = _@domain.tld
in the twtxt.txt?
hmm any ideas how to fix this case when there is no nick and it on a shared tilde hosting? http://darch.dk/timeline/profile?url=https://tilde.club/~deepend/twtxt.txt
nick = _@domain.tld
in the twtxt.txt?
Iāve implemented Use only nick as handle if nick and domain is the same Ā· sorenpeter/timeline@8c12444
See it live at:
- nick = domain: https://darch.dk/timeline/profile?url=https://eapl.me/tw.txt
- nick ā domain: https://darch.dk/timeline/profile?url=https://twtxt.net/user/prologic/twtxt.txt
- no nick, use domain: https://darch.dk/timeline/profile?url=https://akkartik.name/twtxt.txt
Iām not sure I like the leading @
thouā¦
@prologic@twtxt.net Well I just mirrored yarndās JSON in my webfinger endpoint and lookup, so not much else to do for standardization.
And for people who donāt like PHP you can always just go with Added WebFinger support to my email address using one rewrite rule and one static file. or simply putting a static JSON in place for .well-know/webfinger
I like the cleaness and indiewebness of using just domains for handles/shorthands similar to blusky, but the situations with more users on the same domain and that people in the fediverse (threads too?) are already familiar with the syntax speaks for webfinger. And since we already got support for webfinger in both yarnd and timeline it makes sense to stick with it.
BTW Iām watching that darch has already worked on that, interesting https://github.com/sorenpeter/timeline/blob/main/_webfinger-endpoint/.well-known/webfinger/index.php
@prologic@twtxt.net sure! I donāt know if this is what you need but, let me give it a try.
- I have Timeline installed, which has an endpoint to process #webmentions. Mine for example is
https://aelaraji.com/timeline/webmention
which you can find by queryinghttps://aelaraji.com/.well-known/webfinger
.
- If you mention someone from #Timeline itself, it takes care of querying that and sending in the mention for you.
- Otherwise (what I personally do) you could just:
curl -i -d 'source=https://twtxt.net/user/prologic/twtxt.txt#:~:text=2024-12-09T01:22:37Z' -d 'target=https://aelaraji.com/twtxt.txt' https://aelaraji.com/timeline/webmention
basically what @sorenpeter@darch.dk mentioned in his article Here.
Afterwards, the mentions are stored in their own mentions.txt
feed. The one from the example above looks like this on my Timeline :
Feel free to spam my endpoint if youād like to give things a try. š
[P.S: personally, I donāt seem to get the mentions if I add the Text fragment
part to my target]
@sorenpeter@darch.dk Noice!! just gave a try⦠and itās looking way better! -not that the old format was bad, itās just that this one is looking more readable-
@aelaraji@aelaraji.com https://github.com/sorenpeter/timeline/commit/555baefcd0e75e6a281472994e8eb7ae9b5d2a1c
or timeline.txt ;)
@eapl.mx@eapl.mx Yes, the idea is to add User Agent support to #Timeline.
Right now it just adds every request to a growing log file, but I have also been working on a way to analyse it, so it only saves the time of the latest request.
Iām not sure how to make it part of timeline itself, since it requeses that you redirect/rewrite from twtAgent.php
to the acctual twtxt.txt
Help with making Timeline send proper User Agents to others would be much appreciated:)
BTW, researching on that I found that @prologic was working on the following https://git.mills.io/yarnsocial/useragent#supported-user-agent-formats
I wasnāt aware of a few User-Agent Formats
.
And Iām checking that timeline
is not sending those headers. I should push a change on that soon.
@sorenpeter@darch.dk hey!
Iām watching that now your .txt is pointing to https://darch.dk/twtAgent.php
What are you trying? Catching the Headers as in https://twtxt.readthedocs.io/en/latest/user/discoverability.html ? (I think itās a clever idea BTW)
And is it something you plan to add to timeline
?
@sorenpeter@darch.dk hey!
Iām watching that now your .txt is pointing to https://darch.dk/twtAgent.php
What are you trying? Catching the Headers as in https://twtxt.readthedocs.io/en/latest/user/discoverability.html ? (I think itās a clever idea BTW)
And is it something you plan to add to timeline
?
@eapl.mx@eapl.mx Super to see you got webmentions working too :)
EDIT: A webmention was send to: https://eapl.mx/timeline/webmention (Status: 202)
Nice: A webmention was send to: https://eapl.mx/timeline/webmention (Status: 202)
Algo estƔ extraƱo, solamente funciona desde https://eapl.mx/timeline/profile
Estoy probando una instancia de timeline
para escribir un poco en espaƱol
https://eapl.mx/timeline/
Veamos si funciona š
Iām giving a shot talk about twtxt/yarn/timeline tommow around noon CET at Piksel Festival in Norway. More info and link for live stream at: https://24.piksel.no
(So I will most likely not be joining the call)
@bender@twtxt.net š Would calling it a Single user Twtxt "Yarn Pod **Like**" software
help you sleep better at night? And just in case things are not clear here, Iām being sarcastic (well, kindaā¦) and not trying to gaslight anyone. Think of my comment as Bromance or something like that LOL.
But seriously, Just like any UNIX-Like system to Unixā¢, as in non of them are UNIXā¢, but each of them is providing more or less similar experience and re-implementing what once was parts of āUNIX⢠softwareā their own (more or less better) ways. Timeline is Yarn⢠Pod like, (my personal take on the word pod is: āan instance of XYZ software acting an escape POD from X-BS for⦠ABC reasons.ā) providing more or less of a similar experience, implementing some of Yarn.social Extensions, trying to add in some more ā¦etc.
Otherwise, I donāt see the Yarn pod
mention as some kind of malicious manoeuvre, but more of a tribute to what (might have) sparked inspiration for creating Timeline? Also, our friend @sorenpeter@darch.dk here has got a valid reason for using PHP (#tms7aka) so letās letās put our unease towards the language itself aside and maybe just help however/as much as we can in order to make internet (the World?) a better place.
@bender@twtxt.net The tagline of Timeline is āa single user twtxt/yarn podā not just a yarn pod. Similar to GNU/Linux. When we came up with the concept of Yarn Social it was a way to rebrand twtxt with the extensions that makes conversations like this possible.
I donāt think calling the various PHP files making up āTimelineā a āYarn podā is accurate.
@bender@twtxt.net Haha! I assume you canāt see the original twt, let me quote for you so you know what Iām responding to:
2024-11-20T07:56:00-06:00 (#gjhq2xq) Hey! I tried running Timeline on my server with the default PHP version (8.3) and itās giving me a few errors https://eapl.me/timeline/ I should be sending a PR soon to fix it ;)
source: eaplmeās twtxt file.
Iāve just unlocked access to my /timeline if anyone has been trying to access it earlier.
undefined array keys
and creation of dynamic properties being deprecated
(CC: @sorenpeter )
@bender@twtxt.net > which feed of his are you following? the .mx or the .me one? I was replaying to THIS TWT
Hey! I tried running Timeline on my server with the default PHP version (8.3) and itās giving me a few errors https://eapl.me/timeline/ I should be sending a PR soon to fix it ;)
@prologic@twtxt.net Not much Other than playing around with @soren@darch.dk ās Timeline ⦠itās been quite fun so far. (Iām twting from there by the way š)
Hey @sorenpeter@darch.dk what version of PHP do you run Timeline on?
So I am really curious, now that I am building upon @sorenpeter@darch.dkās Timeline app, how other users write/add their twtxt, and how you follow conversations. Comment svp!
I installed GrapheneOS for the first time on Wednesday last week on a used Pixel 7a, and Iām impressed. Installation was almost seamless, and I was able to do it from another Android phone. Iāve run into very few wrinkles, even using Googleās proprietary apps with GrapheneOSās āsandboxedā version of Google Play Services. The main problems Iāve noticed: I canāt cast, and Google Timeline doesnāt seem to work (though I imagine the intersection between people keen to use GrapheneOS and keen to have Google log their location history is pretty small).
looking at history for context on how the UN handles apartheid: https://www.sahistory.org.za/article/united-nations-and-apartheid-timeline-1946-1994 which seems to imply that we have a difficult fight ahead without the support of the security councilā¦
@2024-10-08T19:36:38-07:00@a.9srv.net Thanks for the followup. I agrees with most of it - especially:
Please nobody suggest sticking the content type in more metadata. š
Yes, URL can be considered ugly, but they work and are understandable by both humans and machines. And its trivial for any client to hide the URLs used as reference in replies/treading.
Webfinger can be an add-on to help lookup people, and it can be made independent of the nick by just serving the same json regardless of the nick as people do with static sites and a as I implemented it on darch.dk (wf endpoint). Try RANDOMSTRING@darch.dk
on http://darch.dk/wf-lookup.php (wf lookup) or RANDOMSTRING@garrido.io
on https://webfinger.net
twt
probably isn't the best client I'm afraid. It doesn't really cache twts by their key (hash) to display threads properly. Jenny however does š
It has twts cache which used if timeline is set to jew. Maybe i.should fork twet to make wishes like newlines (i see two squares), showing conversations, showing twts if not found in cache and parsing medata to configure url, nick and followers (currenly it duplicated in config and twtxt file)
Finally pubnix is alive! Thatās im missing? Im only reading twtxt.net timeline because twtxt-v2.sh works slowly for displaying timelineā¦
@aelaraji@aelaraji.com This is one of the reasons why yarnd
has a couple of settings with some sensible/sane defaults:
I could already imagine a couple of extreme cases where, somewhere, in this peaceful world oneās exercise of freedom of speech could get them in Real trouble (if not danger) if found out, it wouldnāt necessarily have to involve something to do with Law or legal authorities. So, If someone asks, and maybe fearing fearing for⦠letās just say āTheir well beingā, would it heart if a pod just purged their content if itās serving it publicly (maybe relay the info to other pods) and call it a day? It doesnāt have to be about some law/convention somewhere ⦠𤷠I know! Too extreme, but Iāve seen news of people whoād gone to jail or got their lives ruined for as little as a silly joke. And it doesnāt even have to be about any of this.
There are two settings:
$ ./yarnd --help 2>&1 | grep max-cache
--max-cache-fetchers int set maximum numnber of fetchers to use for feed cache updates (default 10)
-I, --max-cache-items int maximum cache items (per feed source) of cached twts in memory (default 150)
-C, --max-cache-ttl duration maximum cache ttl (time-to-live) of cached twts in memory (default 336h0m0s)
So yarnd
pods by default are designed to only keep Twts around publicly visible on either the anonymous Frontpage or Discover View or your Timeline or the feedās Timeline for up to 2 weeks with a maximum of 150 items, whichever get exceeded first. Any Twts over this are considered āoldā and drop off the active cache.
Itās a feature that my old man @off_grid_living@twtxt.net was very strongly in support of, as was I back in the day of yarnd
ās design (nothing particularly to do with Twtxt per se) that Iāve to this day stuck by ā Even though there are some š that have different views on this š¤£
I mean, this: https://darch.dk/timeline/replies?url=http://darch.dk/twtxt.txt
Bonus: On his Pod/Profile it shows as if his last twt is from 4 Months ago.
Something odd just happened to my twtxt timeline⦠A bunch of twts dissapered, others were marked to be deleted in mutt. so I nuked my whole twtxt Maildir and deleted my ~/.cache/jenny in order to start with a fresh Pull. I pulled feed as usual. Now like HALF the twts arenāt there š even my my last replay. WTF IS GOING ON? š¤£š¤£š¤£
Thank you @aelaraji@aelaraji.com, Iām glad you like it. I use PHP because itās everywhere on cheap hosting and no need for the user to log into a terminal to setup it up. Timeline is not mean to be use locally. For that I think something like twtxt2html is a better fit. (and happy to see you using simple.css on you new log page;)
@sorenpeter@darch.dk !! I freaking love your Timeline ⦠I kind of have an justified PHP phobia š but, Iām definitely thinking about giving it a try!
/ME wondering if itās possible to use it locally just to read and manage my feed at first and then maybe make it publicly accessible later.
So this is a great thread. I have been thinking about this too.. and what if we are coming at it from the wrong direction? Identity being tied to a given URL has always been a pain point. If i get a new URL its almost as if i have a new identity because not only am I serving at a new location but all my previous communications are broken because the hashes are all wrong.
What if instead we used this idea of signatures to thread the URLs together into one identity? We keep the URL to Hash in place. Changing that now is basically a no go. But we can create a signature chain that can link identities together. So if i move to a new URL i update the chain hosted by my primary identity to include the new URL. If i have an archived feed that the old URL is now dead, we can point to where it is now hosted and use the current convention of hashing based on the first url:
The signature chain can also be used to rotate to new keys over time. Just sign in a new key or revoke an old one. The prior signatures remain valid within the scope of time the signatures were made and the keys were active.
The signature file can be hosted anywhere as long as it can be fetched by a reasonable protocol. So say we could use a webfinger that directs to the signature file? you have an identity like frank@beans.co
that will discover a feed at some URL and a signature chain at another URL. Maybe even include the most recent signing key?
From there the client can auto discover old feeds to link them together into one complete timeline. And the signatures can validate that its all correct.
I like the idea of maybe putting the chain in the feed preamble and keeping the single self contained file.. but wonder if that would cause lots of clutter? The signature chain would be something like a log with what is changing (new key, revoke, add url) and a signature of the change + the previous signature.
# chain: ADDKEY kex14zwrx68cfkg28kjdstvcw4pslazwtgyeueqlg6z7y3f85h29crjsgfmu0w
# sig: BEGIN SALTPACK SIGNED MESSAGE. ...
# chain: ADDURL https://txt.sour.is/user/xuu
# sig: BEGIN SALTPACK SIGNED MESSAGE. ...
# chain: REVKEY kex14zwrx68cfkg28kjdstvcw4pslazwtgyeueqlg6z7y3f85h29crjsgfmu0w
# sig: ...
@bender@twtxt.net On twtxt, I follow all feeds that I can find (there are some exceptions, of course). Thereās so little going on in general, it hardly matters. š
And I just realized: Muttās layout helps a lot. Skimming over new twts is really easy and itās not a big loss if there are a couple of shitposts⢠in my ātimelineā. This is very different from Mastodon (both the default web UI and all clients Iāve tried), where the timeline is always huge. Posts take up a lot of space on screen. Makes me think twice if I want to follow someone or not. š
(I mostly only follow Hashtags on Mastodon anyway. Itās more interesting that way.)