twtxt 純文字迷你馬離譜風的推文網絡

作者:   發佈於:   #software

幾天前我發了一則推文說:

twtxt.net 想到所謂無中心的網絡,除了聯邦式的,也有點對點式的。好比直接訂閱個人站的 RSS/Atom,或是如 twtxt 這種純文字風的。

https://twitter.com/gugod/status/1348065369760518144

結果沒過多久 twtxt.net 的站長就捎了封電子郵件過來介紹 twtxt.net 等等,真是熱血啊。

雖然我在推文裡面提到 twtxt.net,但其實 twtxt 核心部分只是一支軟體程式,而跟那網站沒有直接關係。

源起為這個 github 倉儲:https://github.com/buckket/twtxt

其簡單扼要的介紹文為:

twtxt is a decentralised, minimalist microblogging service for hackers.

雖然自稱是「service」,但其實並沒有這成分在。這名為 twtxt 的程式,主要功能是將使用者推文添加到某個名為 twtxt.txt 的檔案裡面,以及時線(也就是很多其他人的 twtxt.txt)之下載及閱讀。

所以這個純文字風的「網絡」,其實簡單的來說就是:

  1. 使用者自有一個網址,指向自有的那份 twtxt.txt。(例如我的是: https://gugod.org/twtxt.txt
  2. 使用者自行取得他人的 twtxt.txt 網址,集結成冊作為訂閱列表。
  3. twtxt 程式能下載訂閱列表內的所有網址,並綜合成單一時線,以便閱讀
  4. twtxt 程式能輔助使用者製作新推文於 twtxt.txt 當中

至於「把 twtxt.txt 放到自家伺服器上」這一環節,twtxt 程式其實沒有直接處理。使用者必需自購伺服器,自備 http server ,並自行處理檔案之同步。

而這 twtxt.txt 文字檔案格式也是超簡單。基本上每一行都代表一則推文資料。而一行的格式為:

<推文時間> \t <推文內容> \n

例如我那則推文,在 twtxt.txt 內就是這樣:

2021-01-10T09:37:55+09:00       想到所謂無中心的網絡,除了聯邦式的,也有點對點式的。好比直接訂閱個人站的 RSS/Atom,或是如 twtxt 這種純文字風的。

就是這樣,沒有別的了。算是簡化到不能再簡化了(連作者名都沒有)。

如果有 github 帳號。其實可以用 github gist 或者是 github pages 來當存放 twtxt.txt 的場所。

比方說我先建立了一個 gist,內有一個空檔名為 twtxt.txt,然後:

git clone git@gist.github.com:59d552cea07a683162c2c1fe740d0f92.git ~/p/twtxt.txt

然後修改 twtxtconfig.ini,指定 twtfilepre_tweet_hookpost_tweet_hook 三個設定值(該檔內有很多設定值,不只這三個,請參考其文件):

[twtxt]
twtfile = ~/p/twtxt.txt/twtxt.txt
pre_tweet_hook = "git -C ~/p/twtxt.txt/ pull"
post_tweet_hook = "cd ~/p/twtxt.txt/ && git add twtxt.txt && git commit -m '.' && git push"

如此一來每次以 twtxt tweet 去發推文時,就會自動發佈至 github gist 去。

而 github gist 中單一檔案的內容網址,就是在 gist 網址後面加上 /raw/ 與檔名。

比方說我的這個放 twtxt.txt 的 gist 網址為:

https://gist.github.com/gugod/59d552cea07a683162c2c1fe740d0f92

twtxt.txt 檔案本身(不含 github gist web UI) 的網址則為:

https://gist.github.com/gugod/59d552cea07a683162c2c1fe740d0f92/raw/twtxt.txt

其實把這個網址分享給朋友訂閱就可以了。

如果進一步想用自家網域,可於自架的 nginx 伺服器中加設 location proxy_pass 如下:

    location = /twtxt.txt {
            proxy_pass https://gist.github.com/xxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/raw/twtxt.txt;
    }

這種無中心的網絡機制主要的缺點,顯然是比較不容易去找到既有的內容來訂閱(所有類 p2p 系統的課題)。但看來 github 上有不少「twtxt registry」列表可以參考。想來是社群內人們這幾年來自行蒐集而成的結果吧。

twtxt.net 站長自己的 twtxt.txt 網址位於:

https://twtxt.net/user/prologic/twtxt.txt

看來更新十分之頻繁。

純文字迷你馬離譜風,不推廣一下怎麼行?