Wednesday, December 10th, 2014

Remember the Gopher protocol?

Depending on how old you are and if you were on the Internet before the World Wide Web became the norm, you may not have heard of a rather awesome Internet protocol called Gopher. I, unfortunately never had the chance to experience Gopher in the day it ruled the information highway(at this point in time the highway wasn't super). Late last year I finally managed to into gopher and experience it for what it is. It is a rather awesome system, very easy to navigate, and is basically pick-up and play. It works using a very simple menu system concept, and every gopherhole as they are called, works the exact same. It is sort of similar to say the FTP protocol, but more descriptive and can actually run server-side scripts to perform database look-ups and such. In fact, the main search engine, which is basically the Google of Gopherspace called Veronica is still active and can search of the current Gopher spaces and any archived servers from days past.

The reason I am bringing this up on my Python Blog, is that there are some new Gopher servers actually written in Python, and Python can obviously be used to create server-side scripts. However, this isn't the main reason why I bring this up. I bring this up on my Python blog because of a little program called XBMC. If anybody reading this recalls Gopher or has used gopher recently, you may notice a similarity to XBMC apps, where all XBMC apps are all consistent and look and function the exact same way. Each XBMC app has a root menu, and then many virtual sub directories generated by the XBMC VFS API in the apps code itself. Then, depending on what type of app you are using let it be a picture app, video app, or music app, the final content type to load will be of that type. This last tidbit is the least similar to Gopher, as gopher supports mixed content, where you can have a directory with images, music, and video files. I believe that XBMC would be a great place to have a gopher client on, since a gopher server can also act as a proxy to WWW content, it would be perfect. If you have ever seen Gopherpedia, then you will understand what I mean.

Python used to support gopher in the standard library, but support has since been removed. I found the old standard library module and completely updated it to be more modern and along the lines of how current Python standard library modules function, and it's now class based. If your interested in checking out this module, you can obtain a copy on my Gopherhole, if your browser no longer has native gopher support you can use a gopher proxy server or configure Squid to proxy it for you. Here are both the Gopher and Gopher Proxy links. Originally, I was going to use these links to develop a more take on a Gopher client, but now I am thinking of creating an XBMC Gopher client, as I think that would be a really fun project. If you want to seamlessly explore Gopherspace, you should install the Firefox add-on or use Lynx. I once had a Lynx proxy running on my server, where you would be-able to use Lynx directly from within any HTML5 compatible web browser. I am either thinking of bringing this back or running a basic Gopher-WWW proxy, although Floodgap does have a really nice Gopher proxy server. If you want to check out my Gopherhole and see what content I have there, it can be accessed using Gopher or the Gopher Proxy. I have plenty of interesting and fun content available there.

Comment #1: Posted 2 years, 11 months ago by tosky

Sidenote: for kdelibs-based applications you can also use https://userbase.kde.org/Kio_gopher :)

About Me

My Photo
Names Kevin, hugely into UNIX technologies, not just Linux. I've dabbled with the demons, played with the Sun, and now with the Penguins.




Kevin Veroneau Consulting Services
Do you require the services of a Django contractor? Do you need both a website and hosting services? Perhaps I can help.

This Month

If you like what you read, please consider donating to help with hosting costs, and to fund future books to review.

Python Powered | © 2012-2014 Kevin Veroneau