(2023-04-05) Why is Gopher important to me?
-------------------------------------------
If you end up here somehow, chances are that you already had read a famous
text hosted on Floodgap, named relevance.txt and titled "Why is Gopher Still
Relevant?" I'm not going to discuss all the points made in that document and
whether or not I agree with each of them, but I want to share my own vision
on the topic and tell you why it is not only relevant, but important to me
personally.

You see, I'm now working (as a contractor) for a multinational BigTech
company that, among other things, constantly babbles about transition to
sustainable energy. The thing is, when their employees actually find
themselves under power outages, it looks like an apocalypse to them as it
turns out every single time they weren't prepared for this themselves. We
here, on the other hand, have survived over half a year of bombings of our
power grid infrastructure, yet I was able to work remotely almost as if
nothing happened. Because my own peak energy consumption never exceeded
~80W, and I was able to provide this power with several portable charging
stations during the scheduled power downtime periods. Now, if only I had _a
bit more_ solar panels than one and at least one wind generator here, I'd
cover my own autonomous electrical supply needs by 100% even during the
winter time.

But what does Gopher have to do with all this? Well, it's about reducing
energy consumption. It doesn't take a friggin' Ryzen to serve hundreds of
gopherholes from a single embedded node, and it doesn't take a latest NVidia
to create a functional browser to correctly and neatly display them. Unlike
Web, Gopher is just as usable on the 1993 hardware as it is on the current
one. It is, in fact, usable on anything that can talk plain TCP/IP and parse
tab-separated strings. It just works there. Works without the TLS overhead
(hello Gemini), without complex XML parsers (hello WAP), without client-side
scripting, same-origin policies, cookies and other nonsense that made Web
engines impossible to reimplement from scratch (if you want to support
current standards, that is) and killed all competition. Meanwhile, a
barebones Gopher client, Bopher, was written in pure Bash for educational
purposes within half a day, using just Bash's own /dev/tcp pseudo-devices.
Everything else written on top of it under the Bopher-NG umbrella, was
created to adapt this educational prototype to the actual day-to-day usage.
And it, while being written in a purely interpreted command language, still
consumes much less RAM, CPU and disk space than any Web browser in existence
for the same OS. Needless to say, Gopherspace can be browsed with no trouble
on platforms like DOS, Win3.1, OS/2, Classic Macintosh (with MacTCP),
Commodore 64 (with Turbo232), AmigaOS, Acorn RISC OS, VAX, NeXT, PalmOS...
and even J2ME. Yes, if you still have J2ME-enabled phones that support
MIDP2.0 profile or higher (i.e. expose the raw socket API), you can install
a wonderful 15KB-sized PocketGopher.jar on them (btw, I have some plans to
modernize it a bit, and if I do, there's going to be a separate post about
this effort) and have just as much of fun experience as with browsing
Gopherspace from your PCs or modern smartphones. Unlike the difference
between HTTP and WAP where everyone served different content for one and
another, here the content is absolutely the same regardless which client is
requesting it. And, since the content is basically either a binary you
directly download or a text file you display (probably with some additional
TSV parsing if it's a map), you don't need to separate the PC and mobile
versions anyway: the client itself decides how to display it best.

Speaking of mobile experience and continuing the old cellphones topic, I
won't stop repeating one thing: Gopher actually is what WAP should have
been. It offers the same content delivery and basic interactivity features
while not requiring any transcoding servers, any complex XML markup or
scripting. I actually have the first WAP-enabled phone in the world, Nokia
7110, and one of the first GPRS-enabled phones in the world, Nokia 8310, in
my collection. And I can't imagine how much faster the 8310's browser would
have been and how much less battery charge it would consume if it just used
Gopher with its dead-simple request-response flow instead of
WML/WMLC/whatever else it has there. Same about the plague of the following
decade, Opera Mini. One could just avoid so much trouble with that
transcoding overhead and everything. Besides, having all my internet traffic
fully processed unencrypted with a centralized third-party proxy makes me
feel much more uneasy than knowing that only my mobile carrier can see it.
But then, WAP was just gone with (almost) all its WML sites and carrier
transcoders. And the number of WAP/WWW sites I can currently browse on my
Nokia 8310 (which is still working) is next to zero. With Gopher, this
planned obsolescence can never happen. My point is, any client (or even
server) device already considered useless for Web is still useful for
Gopherspace.

But why, may you ask, is Gopher the primary focus of my attention here, and
not FTP, IRC and other similarly ancient protocols? Well, unlike IRC and
Telnet, it doesn't require us to constantly maintain the TCP connection.
And, for instance, whenever GPRS disconnects on the phone I use Pocket
Gopher on, I don't need it until I make the next request (again, saving
precious battery life). Unlike FTP, it doesn't require setting up two
different ports for control and data transfer. Unlike email, it doesn't
require setting up a store-and-forward facility that provides two completely
different services to send and receive messages. The only other protocol on
par with Gopher I can think of is Finger... well, because technically it is
absolutely the same protocol, and any Finger query can be represented as a
Gopher selector. To me, Gopher looks like the perfect balance between the
human-scale level of implementation from bare TCP stack, frugal computing
and functionality for everyday usage under even the harshest conditions of
network connectivity.

This is why I consider Gopher important to me, as well as to everyone else
who wants to be prepared and to actually make some move towards reducing
their own energy footprint and overall consumerism. If you're reading this
via a webproxy, go ahead and install a proper client. Stop babbling, start
acting.

--- Luxferre ---