I have become a somewhat enamored with Nex and have written two servers and a client so far..
Nex is an exceedingly simple protocol that shares attributes found in Gopher and Gemini, basically
focused on sharing plain text without the need for dedicated browsers, though those as available. Nex
is fairly new and largely an outgrowth of the "smolnet" movement.
The Nex specification on nightfall.city, the very first Nex server.
The original server on which nightfall.city runs is Go-based and available at https://hg.sr.ht/~m15o/nexd .
While targeting OpenBSD it is fairly easy to tweak for building on other versions of BSD or Linux.
Because the Nex protocol is so simple a working server can be cobbled together with most any language
that can move TCP packets over a network. The main challenge is doing so safely, providing a way to monitor,
and optionally auto-generating directory listings lacking an index file. Also the ability to multi-thread or
fork connections is a big plus though not really necessary in these early days of Nex.
While the sonexd server is robust and multi-threaded, its logging scheme is somewhat messy as it combines
streams from socat and the bash reply script. The gnexd server lacks multi-threading but its logging scheme is
much simpler, basically relying on sockstat(1), a native NetBSD utility:
Both are released under the MIT/X Consortium license.
Almost anything can be used as a simple client, ie. $ echo / |nc nightfall.city 1900
Retrieving Nex documents is essentially equivalent to retrieving a Gopher Type 0 item so any Gopher client
that allows non-std ports and in-session URl editting can be used with Nex:
$ lynx gopher://nightfall.city:1900/0/nex/info
edit the URL as needed via the Ctrl+G key combo.
The nexbro browser is still a work in progress however it works for for singular servers, ie. you can't
switch servers in-session (yet). It is written in GNU AWK and so requires the gawk(1) package be installed: