pygopher

The idea

Gopher is a direct competitor of HTTP. It failed to evolve and is stuck with a basic set of features but it does provide links.\ Thus it is a really light alternative to what became the WWW (websites + browsers).

I always wanted to dig in this world where there are still a hundred (or a thousand) of users.

And I created pygopher and its main library pygopher_server

This project allows me to:

The server

The code uses the impressive Flask-Gopher library maintained by Michael Lazar to handle the Gopher protocol (requests and responses). It is itself based on Flask, the well-known Python Web framework.

The new features:

Todo:

An instance is publicly available here: gopher://gopher.t18s.fr

The client

No need to write a client, lynx runs great.

Exemple:

$ lynx gopher://gopher.t18s.fr

But if you want to use a SSL connection, the use of a third-party tunneling program is needed (like ptlstunnel).

The deployment

The pygopher daemon must be run behind a HAProxy (or an alternative) instance. It adds some features I will never implement:

I use pyenv to manage the Python version.

Of course, there is an Ansible playbook to deploy everything.

Some Gopher proxies (HTTP -> Gopher):

Some resources: - https://gopher.floodgap.com/gopher/