I love Gopher, it's a nice, extremely light protocol with none of the added BS I hate about the web. The only people who use it these days are a particular type of person, the type that I generally enjoy reading the thoughts and work of.
I actually setup a new service on Gopher recently, a lightweight Google News reader[1] and it works better than I could have really hoped.
Thanks for this. I’m going to attempt to get it working today. I’ve always wondered if this would work given the data models seem to be a very close match.
I run a site on Gemini, which is a modern sibling of Gopher.
I haven't really put the effort into it necessary to generate a "following," which in the Gemini world really seems to just mean people emailing each other. That hits a nostalgia vibe for me.
Gemini is a lot of fun. It feels like the mid-90's web. As a reader, I stumble upon interesting content all the time. As a developer and hacker, it's neat to play with. Currently its about 500,000 pages, so crawling and indexing it is easy. There is no way to commercialize it, so people are just experimenting and having fun. One person hooked up some interactive text games from Infocom like Zork.
mid-90's web embraced weirdness and creativity. Primarily recognizing that we get so much info visually.
Gemini says: no, it's only text, no creativity or weirdness allowed. While I sort of understand where the authors are coming from, I think they threw the baby (or some of the baby) away with the bathwater.
Yes, some of this can be rectified by clients (like the insistence that images must be external), but clients can only take it so far.
It’s not text only. It’s 1 page == 1 request. Meaning that a page can have links to images but a client will not fetch them and display them inline. This prevents cross-site tracking where view a page forces the client to also make a request to a 3rd party like an ad or web bug
I built an entire geography guess game in Gemini. It uses images.
> Status codes beginning with 1 are INPUT status codes, meaning:
> The requested resource accepts a line of textual user input. The <META> line is a prompt which should be displayed to the user. The same resource should then be requested again with the user's input included as a query component. Queries are included in requests as per the usual generic URL definition in RFC3986, i.e. separated from the path by a ?. Reserved characters used in the user's input must be "percent-encoded" as per RFC3986, and space characters should also be percent-encoded.
I like Gemini, and I am increasing my use of it. Its killer feature is that it's great at writing technical documentation, in my view. Gopher is more finicky, so Gemini is the way to go.
If I'm permitted a little plug: gemini://tozip.chickenkiller.com/ . I also run a gemini to gopher bridge, so the site can be assessed via the url gopher://tozip.chickenkiller.com/ Its works via a perl script I knocked together using inetd on FreeBSD. So if you like gemtext, but can't be bothered with the hassle of setting up security keys, then the bridge may be the way to go.
One idea for a cool project for Gemini that no-one seems to have done is a Twitter clone. What's interesting about it is that Gemini has the concept of an identity baked in, so you wouldn't need to register for an account to start posting.
pros: CLI, nice interface, quite intuitive, smol :-), neat. good use of colors and nice centering in the terminal. <3.
cons: actually has/suggest dependencies, but not their versions. i did some trial and error attempts to install stuff, and for example after installing readability package with the current version, it just crashes on startup.
after uninstalling it, I adore the ability to view a picture on a linked HTML page though!
could you please write me your details about the crash (distro/readability version). I would like to fix this issue. You can mail me at offpunk@ploum.eu if you don’t want to register to open a bug.
Sometimes I imagine what a post-apocalyptic Mad-Max style internet would be like, I would like to see gopher, archie, ftp, irc to come back, maybe over packet radio or something.
There are a number of BBSs still operational too. Most use telnet over port 21, some use ssh and there are even a few that you can access with dial up.
Does it has functions for sending data, i.e. submitting forms? I'm curious if gopher could be a sufficient lightweight web protocol for all normal real life tasks including internet banking and shopping.
No, it's entirely read-only. That's probably the main reason (outside of the University of Minnesota trying to charge licensing fees for using the protocol) that HTTP ended up replacing it. The other reason is that Gopher without non-canonical extensions can only transmit plaintext, images and binary files.
Gopher is extremely simplistic to implement because it basically can only do GET requests (but without all the header overhead).
All you need to do to retrieve a document is open a TCP connection and send the path you want to retrieve suffixed by CRLF. The server will then just return the requested data. For full text search (the only serverside expected feature for type 7 documents), add a tab character and then the search string.
The only other special feature on the client are Gopher menus which are a dedicated response type (type 1). They're basically the closest you get to rich text on Gopher - they're formatted text files which contain reference links to other addresses on Gopher.
It's all in all easy to see why Gopher got replaced. That said, I still recommend experimenting with it. It's very much a relic of a different time period, but that doesn't have to be a bad thing. HTTP and the general web stack has become rather bloated over the years due to its versatility. Gopher is laserfocused in its simplicity which gives it its own charm.
You could send search requests. The reason I remember this is because I was writing a Gopher server which had a built-in search engine.
I say "I was building" rather than "built" because two things happened: someone showed me a graphical web browser that actually was usable, and whomever owned Gopher wanted to charge money for using v2 of the protocol (I think?). So I ditched all the gopher code I had written and made an HTTP-server instead.
update: I think it was Goper+, not Gopher v2 which was the new version
No. The protocol seems very simple: connect, provide a document reference, server responds with the document, and the connection is closed. Document may contain references to other documents.
Imagine HTTP with only GET, no headers, no request bodies. RFC 1436 explicitly says:
Huh. The original HTTP (later renamed HTTP/0.9 in order to differentiate it from HTTP/1.0) is really quite similar: it appears to basically be gopher with an additional method (always GET) prepended to the document reference; no request headers, no response status code nor response headers.
I actually setup a new service on Gopher recently, a lightweight Google News reader[1] and it works better than I could have really hoped.
[1] http://muezza.ca/projects/gophernews/