(2024-10-28) Meet ii, a new old distributed plaintext communication network --------------------------------------------------------------------------- Remember FidoNet? Now, imagine something like that but much simpler and over TCP/IP (as of now, even over HTTP(S)). This is a very vague description of what I'm gonna talk about. As lightweight protocols are among my hobbyist interests, I was delighted to find out about the existence of such a protocol as ii. Gopher, Nex, Spartan, Gemini etc. are nice but they don't solve the problem of distributed communication. Email does but it's too complex and bulky. Misfin is fine for one-to-one communication but totally impractical for mailing lists or so. We really need something like Usenet/FidoNet but without all the crutches of the past. This is what ii is about. It was developed in the spring of 2014 and its initial author had abandoned it long ago, but it lives in the form of the "IDEC network" (where IDEC stands for "ii-like Data Exchange Convention") that implements some extensions to the original protocol, which are fully optional, and is backwards-compatible with ii. I have tested some of those extensions myself but eventually deemed all of them unnecessary for my own client purposes, so my client only implements the basic ii standard as described in ([1]), and yes, I think my doc is more concrete and concise than the original GitHub. Maybe I'll also add it to the Gopherspace to make sure it doesn't get lost somewhere. As for the client, it's called tii, written in Tcl/Tk 8.6 (of course) and distributed in the same repo ([2]) as a suite of several scripts, including the tiifetch.tcl CLI fetcher, tiipost.tcl CLI poster, tiiview.tcl CLI viewer and tiix.tcl GUI client. As of now, tiix.tcl depends upon the tiifetch.tcl and tiipost.tcl for corresponding functionality, so tii is not a single-script solution and wasn't designed to be one. By the way, I couldn't find any existing GUI clients for the ii/IDEC network, so tiix.tcl might be the first one. Besides Tcllib, the tii suite also depends upon the sqlite3 package because this is the actual backend for ii message storage. As for the server side, there exist several ii/IDEC node (aka station) implementations in various programming languages (mainly C and Python), but they have some inconsistency in terms of following even the basic ii specs, so I've decided to start working on tiid, my own ii station software. It is only going to serve basic ii requests (GET /list.txt, GET /u/e, GET /u/m and POST /u/point) and have a message DB format compatible with the client-side one. Ideally, it should reuse the same codebase and algorithms from tiifetch. The only thing left to design before I start coding this up is the mechanism of secure anti-spambot signup without requiring JS or any Web browser whatsoever on one hand, and without any manual approvals on the other hand. Essentially, this part will probably be more complicated than the rest of the node codebase, but we'll see how it goes. Overall, I think this network has some potential to become a lightweight censorship-resistant environment island in the ocean of centralized locked-down Web bloatware. This is why I'm totally in. --- Luxferre --- [1]: https://git.luxferre.top/tii/file/ii-doc.txt.html [2]: https://git.luxferre.top/tii/file/README.html