A Look At The Small Web
In the early 1990s I was privileged enough to be immersed in the world of technology during the exciting period that gave birth to the World Wide Web, and I can honestly say I managed to completely miss those first stirrings of the information revolution in favour of CD-ROMs, a piece of technology which definitely didn’t have a future. I’ve written in the past about that experience and what it taught me about confusing the medium with the message, but today I’m returning to that period in search of something else. How can we regain some of the things that made that early Web good?
We All Know What’s Wrong With The Web…
It’s likely most Hackaday readers could recite a list of problems with the web as it exists here in 2025. Cory Doctrow coined a word for it, enshitification, referring to the shift of web users from being the consumers of online services to the product of those services, squeezed by a few Internet monopolies. A few massive corporations control so much of our online experience from the server to the browser, to the extent that for so many people there is very little they touch outside those confines.
The first ever web page is maintained as a historical exhibit by CERN.
Contrasting the enshitified web of 2025 with the early web, it’s not difficult to see how some of the promise was lost. Perhaps not the web of Tim Berners-Lee and his NeXT cube, but the one of a few years later, when Netscape was the new kid on the block to pair with your Trumpet Winsock. CD-ROMs were about to crash and burn, and I was learning how to create simple HTML pages.
The promise then was of a decentralised information network in which we would all have our own websites, or homepages as the language of the time put it, on our own servers. Microsoft even gave their users the tools to do this with Windows, in that the least technical of users could put a Frontpage Express web site on their Personal Web Server instance. This promise seems fanciful to modern ears, as fanciful perhaps as keeping the overall size of each individual page under 50k, but at the time it seemed possible. (I will NEVER use any Micro$oft products to create webpages, and in general if I can do it on Linux, I WILL!).
With such promise then, just how did we end up here? I’m sure many of you will chip in in the comments with your own takes, but of course, setting up and maintaining a web server is either hard, or costly. Anyone foolish enough to point their Windows Personal Web Server directly at the Internet would find their machine compromised by script kiddies, and having your own “proper” hosting took money and expertise. Free stuff always wins online, so in those early days it was the likes of Geocities or Angelfire which drew the non-technical crowds. It’s hardly surprising that this trend continued into the early days of social media, starting the inevitable slide into today’s scene described above.
…So Here’s How To Fix It
If there’s a ray of hope in this wilderness then, it comes in the shape of the Small Web. This is a movement in reaction to a Facebook or Google internet, an attempt to return to that mid-1990s dream of a web of lightweight self-hosted sites. It’s a term which encompasses both lightweight use of traditional web technologies and some new ones designed more specifically to deliver lightweight services, and it’s fair to say that while it’s not going to displace those corporations any time soon it does hold the interesting prospect of providing an alternative. From a Hackaday perspective we see Small Web technologies as ideal for serving and consuming through microcontroller-based devices, for instance, such as event badges. Why shouldn’t a hacker camp badge have a Gemini client which picks up the camp schedule, for example? Because the Small Web is something of a broad term, this is the first part of a short series providing an introduction to the topic. We’ve set out here what it is and where it comes from, so it’s now time to take a look at some of those 1990s beginnings in the form of Gopher, before looking at what some might call its spiritual successors today.
It’s odd to return to Gopher after three decades, as it’s one of those protocols which was for most of us immediately lost as the Web gained traction. Particularly as at the time I associated Gopher with CLI base clients and the Web with the then-new NCSA Mosaic browser, I’d retained that view somehow. It’s interesting then to come back and look at how the first generation of web browsers rendered Gopher sites, and see that they did a reasonable job of making them look a lot like the more texty web sites of the day. In another universe perhaps Gopher would have evolved further to something more like the web, but instead it remains an ossifed glimpse of 1992 even if there are still a surprising number of active Gopher servers still to be found.
With the benefit of a few decades of the Web it’s immediately clear that while Gopher is very fast indeed in the days of 64-bit desktops and gigabit fibre, the limitations of what it can do are rather obvious. We’re used to consuming information as pages instead of as files, and it just doesn’t meet those expectations. Happily though Gopher never made those modifications, there’s something like what it might have become in Gemini. This is a lightweight protocol like Gopher, but with a page format that allows hyperlinking. Intentionally it’s not simply trying to re-implement the web and HTML, instead it’s trying to preserve the simplicity while giving users the hyperlinking that makes the web so useful.
It feels a lot like the early 1990s Web, doesn’t it!
The great thing about Gemini is that it’s easy to try. The Gemini protocol website has a list of known clients, but if even that’s too much, find a Gemini to HTTP proxy (I’m not linking to one, to avoid swamping someone’s low traffic web server). I was soon up and running, and exploring the world of Gemini sites. Hackaday don’t have a presence there… yet.
I first launched this Gemini service on September 23rd, 2023 once I found a Gemini server compatible with my hardware (Agate) - I run a Raspberry PI with aarch64 CPU.
We’ve become so used to web pages taking a visible time to load (and often > 10 seconds, URGH!), that the lightning-fast response of Gemini is a bit of a shock at first. It’s normal for a web page to contain many megabytes of images, Javascript, CSS, and other resources, so what is in effect the Web stripped down to only the information is unexpected. The pages are only a few KB in size and load in effect, instantaneously. This may not be how the Web should be, but it’s certainly how fast and efficient hypertext information should be. And pictures do not load inline, but upon request.
This has been part on the Small Web, in looking at the history and the Gemini protocol from a user perspective we know we’ve only scratched the surface of the topic. Next time we’ll be looking at how to create a Gemini site of your own, through learning it ourselves.
When I put my own site, gemini://dfdn.info online in September 2023, I was astonished how quickly the search engines knew about it! To get a website listed on Google can take months!
There is now a new compliment to Gopherpedia:
Gemipedia is Wikipedia mirrored on Gemini!
Well, working as I am in China, I soon noticed a very notable fact about both Gopherpedia and Gemipedia - unlike Wikipedia they are NOT blocked in China; the government here never thought if it! It is known that the Wikipedia page about Turkey is blocked in Turkey - as the government does not like it. I wonder if Gopherpedia andd Gemipedia are accessible - I have no confirmation either way thus far.
List of known Gemini 'i 'capsules' - mine is right there!
Introduction to Gemini and the Small Internet - from July 2023
I recently read about Gemini, a new internet protocol that aims to do things kind of similar to the web but while also being more simple. I found it quite interesting and ended up spending a good while exploring the small (but growing!) constellation of servers hosting content over Gemini. I’ve found it quite refreshing and nice and would recommend checking it out.
However, while talking with a friend (hi, Nezchan!) I noticed that the Small Internet can be a bit tricky to figure out, so I’ve decided to write this post as an introduction and a beginner’s guide to accessing content on Gemini (and Gopher).
The Small Internet
The World Wide Web is the standard “Internet” we are most familiar with. The WWW is built on a protocol called HTTP and web documents are often served in the form of HTML, along with CSS for styling and Javascript for interactivity.
The Small Internet, as I’ve seen people call it, is built on alternative protocols. Previously that meant a protocol called Gopher, which was popular in the 90s but ultimately lost the battle to HTTP. It has, however, maintained a small user-base of hackers and hobbyists who enjoy the technical simplicity and text-oriented nature of Gopher. Recently a new protocol called Gemini was collaboratively designed as a kind of middle ground between the simple Gopher and the more complex HTTP. It aims to better serve certain use-cases that Gopher cannot quite fulfill while still keeping things simple compared to the WWW. For example, Gemini mandates the use of TLS to encrypt traffic between a Gemini server and a client and supports MIME-types, so servers can better instruct clients to deal with different types of files. Generally speaking Gemini and Gopher seem to be co-existing peacefully and many Gopher clients have added support for Gemini as well. It’s also not unusual to link to Gopher content from Gemini sites.
The Small Internet is in some ways similar to the Big Internet we know. It consists of servers, from which people serve documents and files. People host their own journals on it (called “phlogs” on Gopher or “gemlogs/flight journals” on Gemini) similar to how people host blogs on the regular web. There are search engines and content aggregators. Some people even mirror web content on the Small Internet, you can for example read Reddit on an unofficial Gopher mirror.
Where the Small Internet differs is in presentation. Pages are mostly plain-text, you cannot serve scripts to your users and you cannot embed images into pages directly. This means that Small Internet pages tend to be relatively snappy and simple compared to their WWW counterparts. That doesn’t necessarily mean they are ugly, however. ASCII art is frequently used to spice up pages in lieu of style sheets and banner images.
Gaining access
Accessing the Small Internet isn’t nearly as straight-forward as accessing the regular web. Your regular web browser likely doesn’t support the protocols needed. I’m going to go over a couple of clients you can use to access Gemini and Gopher content.
Web proxies
The easiest way, which doesn’t require installation of any client software, is to use a web proxy. These are basically just web applications that allow you to view Small Internet content. I don’t think they are particularly amazing and they come with limitations, but they are an easy way to get started.
A couple of Gemini proxies exist:
https://proxy.vulpes.one/gemini/gemini.circumlunar.space
https://portal.mozz.us/gemini/gemini.circumlunar.space/
Floodgap also maintains a Gopher web proxy:
https://gopher.floodgap.com/gopher/gw
Castor, a graphical Gemini/Gopher client
Castor is a graphical client for Gemini and Gopher written with Rust and GTK. It’s probably the most user-friendly way of accessing the Small Internet due to it’s modern, browser-like interface. Links will be visible as buttons.
Castor client
For Ubuntu the installation process would look a little something like this:
Download the source code using Git
$ git clone https://git.sr.ht/~julienxx/castor
$ cd castor
#Install dependencies
$ sudo apt install build-essential rustc cargo libgtk-3-dev libgdk-pixbuf2.0-dev libssl-dev
Build and install Castor
$ make
$ sudo make install
Arch users get away with a bit easier, since Castor can be installed from the AUR.
Castor’s colours can also be tuned in the settings file. Castor’s web page above has instructions for how that can be done. My ~/.config/castor/settings.toml file looks as follows:
[general]
start_url = "gemini://gemini.circumlunar.space"
[colors]
h1 = "#24F866"
h2 = "#66ff66"
h3 = "#66ff66"
list = "#55ff88"
text = "#55ff88"
background = "#00230F"
[monospace]
gemini=true
gopher=true
finger=true
Castor is generally a pleasant way to browse the Small Internet. It has some stability issues and may crash sometimes but the crashes are not random but instead related to certain servers or doing certain actions on these servers.
Bombadillo, a terminal Gemini/Gopher client
Bombadillo is a Gemini/Gopher client designed to run in a terminal. It also uses keybindings that are familiar to Vi/Vim users.
Bombadillo can be found over at http://bombadillo.colorfield.space/ with build instructions. However, it’s easier to just use the pre-built binaries: http://bombadillo.colorfield.space/releases/binaries.html
Bombadillo’s keybindings may take a bit of getting used to, if you aren’t already familiar with Vim. Here’s a list of basic keys and commands to get started:
“q” to quit Bombadillo
“j” and “k” will scroll down and up
“b” to go to previous page, “f” moves forward in history
“:” or Spacebar (referred to as “SPC”) enters command mode
To access a Gemini site you first need to enter command mode and then type in the address and press Enter:
SPC gemini://gemini.circumlunar.space<ENTER>
Bombadillo uses a number-based system for accessing links. Each Gemini or Gopher link on a page is assigned a number, which is used to refer to that link. A link on a Gemini page might, for example, look like the following:
[3] Have free words of wisdom
To access that link, enter command mode, enter the number of the link and press Enter:
SPC 3<ENTER>
Bombadillo, as a terminal-based client, is particularly well-suited for use in Cool Retro Term
Bombadillo in Cool Retro Term
The main problem with Bombadillo is that it seems somewhat strict regarding the TLS certificates on servers. Technically this isn’t a fault of Bombadillo, it just happens that many of the Gemini sites have outdated or otherwise incorrect TLS certificates. You may need to use another client in conjunction with Bombadillo to access all the content on Gemini though. Castor is much more lenient in this regard.
AV-98
AV-98 is a primitive but pretty effective Gemini client. It doesn’t speak Gopher itself, but you can browse some Gopher content through a Gemini->Gopher proxy. It’s available on https://tildegit.org/solderpunk/AV-98 and basically just requires Python 3 and Sqlite 3, making it easy to run. I had to make sure I created ~/.config/av98 directory first before it agreed to launch, but after that it ran fine.
AV-98 has a number of commands that are used for navigation. A pretty good way to get started is to just type help<ENTER> and do a bit of experimentation to get going. Personally, AV-98 is a bit cumbersome and I seem to get lost on which page I’m on, but the commands are user-friendly and the setup process easy.
Other clients
The main Gemini site has a list of other Gemini clients: https://gemini.circumlunar.space/clients.html I’ve tried a few of these and they seem okay with some caveats. Elpher (a Gopher client for Emacs) seems to do fine on Gopher sites but struggles with certain Gemini servers.
Update: After having been contacted by the Elpher developer and doing a bit of debugging, it seems like this is a problem related to my Doom Emacs configuration and not Elpher. If you are using Emacs with your own configuration it probably works just fine with only minor missing features.
Update 2: Elpher has now been patched to work correctly under Doom Emacs as well. I can now highly recommend Elpher as a Gemini and Gopher client if you already happen to be an Emacs user.
Asuka, made by the same person as Castor, is okay but IMO doesn’t look as neat as Bombadillo.
However, if Castor and Bombadillo aren’t for you, go through the options on the site and see if any of the other clients are for you.
What is there to do on the Small Internet?
Like I mentioned before, Gemini and Gopher are highly text-oriented, so most of the content is text. Plenty of people write blog-style journals on the Small Internet. So, pages on the Small Internet are kind of like this website, mostly textual and relatively static.
However, the Small Internet can do a bit more than just host static text documents too. You can share all sorts of files over Gemini and Gopher. Some people share post their own mixtapes on Gemini (gemini://konpeito.media), others have libraries of PDFs. Gopher and Gemini can also be used to host games and apps, for example you can practice a bit of virtual botany (gemini://astrobotany.mozz.us).
So, the only real limits are those imposed by the protocols, and the protocols allow for plenty of creativity. The best way to see what you can do on the Small Internet is to go an experience it yourself.
The Small Internet is, like you might tell from the name, pretty small. However, it is also relatively tight-knit and well connected. A few hubs exist that provide good starting points for browsing sessions.
In addition to that they have a link to a Gemini search engine called “Gemini Universal Search” (aka GUS) and two Geminispace aggregators: CAPCOM and Spacewalk. These aggregators track Gemini journals (“gemlogs” or “flight journals”) and provide a timeline of content.
gopher://i-logout.cz/1/bongusta/
Bongusta is a content aggregator for Gopherspace. It tracks Gopher logs (“phlogs”) and provides a timeline of journal entries. It’s a bit more populated than CAPCOM or Spacewalk on Gemini, and is definitely a good place to look for interesting journals.
Pubnixes and Tildeverse
Many of the Gopher and Gemini sites are operated as pubnix systems of some sort. They are publicly available Unix/Linux systems that provide their users access to a Unix shell for free. They also often offer users a Gopher or a Gemini space.
SDF is one of the bigger public Unix groups over at gopher://sdf.org and has a pretty big number of users. On the Web side of things, you may also want to check out https://tildeverse.org/ which lists a number of so called “tilde communities” which have different goals and provide different things. Even if you aren’t too interested in gaining membership, I recommend checking out https://cosmic.voyage/ which is a collaborative science fiction community of writers.
I got pretty excited about all this Gemini stuff, so I decided to set up my own Gemini server. It has a “super secret gemlog” which I’ll probably be using in conjunction with this regular blog. My current plan for it is to host the kind of stuff that is longer than a tweet but less developed than a blog post over on the Gemini server. I might also try some more experimental stuff there, which I would feel uncertain about posting here. I also have a little bit CGI scripting in place to do some semi-dynamic content on the site and I might do more of such CGI experimentation if I happen to come up with fun ideas for it.
… and so much more!
There is plenty more that I didn’t touch on here. People have set up all sorts of apps, mirrors etc. on both the Gopherspace and the Geminispace. There’s plenty to find and hopefully the constellation of different servers continues growing.
The links mentioned here should hopefully provide a pretty good springboard to dive into the realm of plain-text.
Hopefully this post has been useful as an introduction to the weird and wonderful world of Small Internet.