Go home

It almost goes without saying that the web is a mess. Tracking, analytics, JavaScript, WebAssembly, and other anti-technologies all distract from the Internet’s initial goal: sharing knowledge. The solution? The small internet.


Around the turn of the century, there were two competing protocols for the web, Gopher and HTTP. Gopher predated HTTP by just a few months, and held equal popularity for a few years, however as time passed, HTTP gained in popularity due to its increased flexibility and extensibility, becoming the de facto protocol of the web today. Gopher still exists as a niche pocket of content, although not nearly to the extent at which it existed 20 years ago.

People use Gopher today by choice, to escape from the weight of the internet, and to explore what can be achieved in a lighter format. However, for anything beyond plain text, practical limitations and eclectic syntax make it obsolete and difficult to use.

Gopher is now known as a “small internet” protocol, along with a few other of its kind, the biggest of which is Gemini.


The Gemini protocol rises out of the ashes of Gopher, and explores what is possible by being a little bit heavier than Gopher, although still far more restricted than HTTP. It is the best of both worlds, and in my opinion, the most viable small-web option. You can learn more about the protocol at its website.


One of the things that make protocols like Gemini and Gopher special are the communities that have formed around them. Using a small internet protocol requires intention, and a willingness to seek out a solution to a problem. Because of this, they foster strong, albeit sometimes contentious communities. One of the contributing factors to the strength of the community is the adoption of the small web in the tildeverse. The tildeverse is a collection of public access Unix systems and associated services like IRC, internet radio, git, et cetera. Most tilde communities makes Gemini and/or Gopher hosting easily available to its users. This has helped both community adoption of the protocols, and also the community. Because Gemini is intentionally limited, everyone has their own vision on what the protocol should implement, which can lead to some heated discussions on the mailing list. Despite this, the community manages to be a great home to software minimalism and independence.

HTTP subset

A frequent counterpoint to the small internet is “why not just use a subset of HTTP/make simple HTTP websites?” My answer to that question, is about writing software for the protocol, and being able to understand it. Its very possible to write a well-featured Gemini server or client in an afternoon, due to its simple specification. To write a new HTTP server is a huge task, and thus, there are only a handful of well featured HTTP servers. Clients can be even more difficult to implement, depending on the target feature set. To attempt to write a new web browser with a fraction of the capability of Firefox, Webkit, or Blink is futile. A simple Gemini client can be written in less than 100 lines of most high level programming languages (examples: Python, Lua, Golang). Theoretically, you can even use a one line openssl command to request pages, although I have been unable to make this work.


Personal use

This site has HTTP, Gopher, and Gemini versions. The Gopher version simply exists for the sake of existing, and redirects users to the other protocols of the site. The Gemini capsule, as they are called, has most of the same content as this website and is automatically generated. Personally, I don’t really spend all that much time on Gemini. I don’t really know why that is, maybe I just haven’t found the right client for me yet.