Archive

Archive for the ‘Gopher’ Category

Seems a Gopher just can’t get no love… Redux

2011 - 02 - 22 @ 17:03 No comments

(Ok, why not! One more page dedicated to the gopher protocol. This time it’s the record of a brief conversation that I had with Asa Dotzler that resolved nothing, but did give me a few cheap thrills.)


This is the record of a short comment discussion I had with (someone who may, or may not, have been) Asa Dotzler, Mozilla’s head of QA, on the subject of removing gopher support from Firefox. It was originally a blog post over on www.noneotheabove.com (before I allowed they site to die), and has been preserved here for posterity (assuming they would want anything to do with it at all). It was originally posted 30 August 2007.

With the exception of changes to characters due to character encoding difficulties, and adjustments made to the layout to render the text more readable in txt format, no changes have been made. The words that appear here are exactly the same as they were back when they were first written.

I wandered over to the floodgap gopherspace to see what was new, and I noticed a directory comment that said “updated 21 August 2007″. Checking the directory title, I was shocked to see “Keep Gopher support in Mozilla Core”. Surely the Mozilla folks couldn’t be thinking of taking gopher support out of Mozilla-based browsers, I thought. Such a thing would be preposterous. It’d put them on par with Internut Exploder. But following the link, my fears were confirmed: some no-brain hack (or group of no-brain hacks, I’m not sure which) wants to take gopher support out of Mozilla-based browsers.

They’ve even got two bug reports dedicated to this effort:

* Bug 388195-Remove gopher protocol support for Firefox
* Bug 351748-Remove UI for Gopher proxy settings

I must say that this is very disturbing. As it is, the only thing that really keeps me using Firefox over Konqueror is the fact that it has native gopher support (likewise for Camino on the Mac). And while the average web user might have no clue what gopher does (it’s a protocol, like http), or has (a lot of archived information, but also a lot of new stuff; it’s still alive folks, just smallish) I can’t see what advantage there would be in removing gopher support from the Mozilla core.Apparently their reasoning has something to do with a potential security vulnerability. Of course no protocol is supremely secure; that’s wishful thinking. Http has it’s problems, and yet no one’s talking about removing support for it from the Mozilla core.

Even more disturbing; a couple months ago there was a debate about removing ftp support from the Mozilla core. Why: for security reasons, and because it had a small user base. How long will it be before that’s revisited (and implemented)?

For now I shall cross my fingers and hope that the Mozilla developers will see the light, otherwise, I guess I’ll be looking for a new and better graphical web browser with real protocol support.


(Well… I sound positively shrill… Like some kind of demented harpy, convinced that the loss of gopher will open the gates of Hell, and usher in the apocalypse… Oh youth, how I want to smack you with a clue-bat. In any case, on to the responses. Arguably the best part of this post.)


4 Responses to “Seems a Gopher just can’t get no love…”

1.
Asa Dotzler Says:
August 30th, 2007 at 1:09 pm

What’s your definition of “a lot of archived information” and “a lot of new stuff”? thousands of archives? hundreds? dozens?

- A

2.
dan Says:
August 30th, 2007 at 3:51 pm

I must admit I’m slightly surprised that this garnered a response. But a question’s a question, so I shall (try to) answer.

I’ll start by stating the following: I don’t operate a gopher server, or site. My interest in gopher has as much to do with how different it (and its underlying culture) is from the realm of http, as it does with whatever information I find. I find it to be sort of a zen garden in a sea of noise and clutter (this site no doubt adding to such clutter).

Now to the question (had I known someone would call me on my statements, I would have chosen my words with a bit more care (probably…) — lesson learned: “teh internetz = srs bsns”).

So, a definition is sought. It probably wouldn’t serve to claim 100 documents is “a lot of archived information”. Truth be told, I’m not sure I can give an appropriate definition for what constitutes “a lot of archived information” (henceforth: “aloai”). I’m not sure that an appropriate definition could be provided for the http based web. Does porn count as “aloai”, or forums debating the relative merits of Kirk, Picard, Sisco, and the two ladies? Is it of value? I don’t know. Suffice it to say, I’d call “aloai” 100,000 documents. It’s a small number compared to the rest of the net, but vast compared to most personal libraries.

I can say with certainty that I’ve found information in gopherspace that I never managed to find within the realm of http. That’s not to say it wasn’t there, but the sheer quantity of information stymied my efforts to locate it (it was probably on page 44 or 45 of Google’s search results).

As to “a lot of new stuff” (did I really say that… crap…), that was probably a poor choice of words. A better statement likely would have been: “and new stuff being added”. This I shall blame upon misplaced overzealousness. I was having a good morning. Still, there is new stuff that’s added to gopherspace, and personally, on average it seems more useful (or at least entertaining) than what’s added to the http servers.

And of course there’s the history to think of. Won’t someone please think of the child… history.

3.
Asa Dotzler Says:
August 30th, 2007 at 6:18 pm

:D

Thanks for the honest and entertaining answer. These kinds of decisions are difficult to make. Every piece of unowned code, especially in the lower levels like networking and layout, is scary. More capability in those lower levels means increased attack surface so you’ve got the trade-off between security and functionality with no one responsible for managing that risk (an owner for that piece of code). For Gopher, where the functionality is, as best I can tell, only interesting to a very small population of users, but the security risk is there for all users, the balance is going to lean towards removal.

On top of that, Mozilla, Microsoft, and other software vendors have of late come under a lot of fire for exploits in specific protocol handlers or mechanisms for content handling handoffs between different programs. With increased scrutiny, it makes a lot of sense to either audit and own well the existing niche protocol handlers or to push them out of the product.

The cool thing about Mozilla though, (well, one of the cool things) is that our networking stack has very extensible protocol handling capabilities. That’s why we even have Gopher there to start — because it was pretty darned easy to implement. We had/have finger:// support too. One thing that I think results from this pluggable protocol handler architecture is that it shouldn’t be too difficult for someone to build a simple protocol extension for Firefox that added Gopher support back in. It could probably be done in JavaScript, making it cross-platform. Then, anyone that wanted Gopher support in Firefox could install a simple extension while the other 99.99% of Firefox users would be somewhat safer.

- A

4.
dan Says:
August 31st, 2007 at 7:02 pm

It does all makes sense. Not that I wouldn’t/won’t be a bit sad if/when gopher support is pulled from Mozilla core. But under the light of realism, there doesn’t seem to be an alternative. If 30 or 40 percent of web surfers used Gopher, there probably wouldn’t be this move to pull support (of course with that kind of support, Gopher would be searchable by Google… To dream the impossible dream…).

Ah well. I shall hope for the best, prepare for the inevitable and salute Gopher with a pint when the fateful day arrives (whenever that might be). And then I’ll find a Gopher plug-in.

Categories: Gopher, Internet

An introduction to the Gopher protocol

2011 - 02 - 22 @ 16:34 No comments

(This is the remainder of the old page I wrote of at the beginning of ‘So You Want to Surf Gopherspace‘. Now to find MORE gopher-related pages!)

I first came across the gopher protocol in the fall of 1999, about 3 or 4 years after first stumbling about the internet (courtesy of my high school), and well after the gopher protocol had faded from the public’s mind. But for some particular reason, I was favourably disposed towards the protocol, more so than I was to http.

Gopherspace was what I imagined the internet, prior to commercialisation, was like: a vast sea of text documents, some pictures, perhaps a video, or sound clip, or two, and nary an advertisement in sight (excluding those websites maintained by corporations, which may or may not qualify as ads). There was something elegant about the stark simplicity of gopherspace, and that elegance appealed to my spartan nature.

And so it remains, almost ten years later, that gopherspace still holds the same appeal for me today, as it did when I first came across it. Granted I have yet to setup my own gopher server (a long-standing, but unfulfilled, goal), so until then, this page will have to serve as my small contribution to the promotion of the gopher protocol.

Ave Goopher://!
A Short & Incomplete History
The gopher protocol began its life at the University of Minnesota way back in 1991. Developers there were looking for a way of efficiently sharing documents amongst academics and researchers using a consistent interface, and lo-and-behold they came up with gopher.

Gopher is a network protocol that organises files in hierarchical, text-based lists, and uses the following item-types (which include the original item-types, the gopher+ item-types, and common but unofficial item-types) to identify different files and items that appear in the hierarchy:

  • 0 – text file (original)
  • 1 – directory (original)
  • 2 – CSO phone-book/name server (original)
  • 3 – error
  • 4 – Macintosh HQX (BinHexed) file (original)
  • 5 – PC (DOS) binary (original)
  • 6 – UNIX unencoded file
  • 7 – full text index (gopher menu) (original)
  • 8 – telnet session (original)
  • 9 – binary file (original)
  • + – redundant server
  • : – bitmap image (Gopher+)
  • ; – movie type (Gopher+)
  • < – sound type (Gopher+)
  • c – calendar (original)
  • e – event (original)
  • g – GIF image (original)
  • h – HTML file (original)
  • i – in-line text that is not an item
  • m – BSD format mbox file
  • s – sound file (original)
  • I – image (other than GIF) (original)
  • M – MIME multipart/mixed message (original)
  • P – PDF document
  • T – tn3270 session (original)

For the next few years, gopher was THE protocol of the internet, and gopher servers began to spring up all over the place. By 1995, you couldn’t swing a dead cat on the internet without hitting a gopher server. Unfortunately for gopher, 1995 also marked the year that http began to overtake it due to the ability to integrate text, images, audio, and video, into one page, and the lack of a strict hierarchical file organisation structure.

But even http’s technical advantages need not have spelled quite the doom that gopher has since suffered. Unfortunately (again) for gopher, the University of Minnesota began charging a licencing fee for gopher servers. Thus http’s rapid rise to dominance was assured.

Fortunately, the University of Minnesota eventually had a change of heart, releasing gopher under the GPL in 2000, and while wide adoption of gopher is likely not going to happen (the University of Minnesota has even shut down their gopher server), there are still dedicated hobbyists and enthusiasts out there, tending the remaining gopher servers, helping to keep an important part of electronic history alive.

Origins Of The Name

I have seen three theories as to the origin of the gopher name. Any one, or combination of, which might be true.

  1. It is a play on the words ‘go for’;
  2. Information is accessed through a serious of menus that are analogous to a gopher warren;
  3. It was named in honour of the University of Minnesota’s sports teams, which are named the ‘Golden Gophers’.

Documents
I have accumulated most of these trying to find a definitive guide to the item-types that gopher+ added to the protocol (something I have been partially successful in). The list starts with RFC documents, moves into man pages for gopher, and a couple associated programmes, and concludes with those texts that do not fall into either category.

(Note: I have copies of all of these, but they have not been uploaded yet, so there are no links yet. As they are uploaded, links will be added. Once the last one is up, this note will vanish into the mist.)

  • RFC1436: The Internet Gopher Protocol
  • RFC1590: Media Type Registration Procedure
  • RFC1738: Uniform Resource Locators (URL)
  • RFC4266: The Gopher URI Scheme
  • A Gopher URL Format (Internet Draft)
  • gopher(1)
  • gopherd(8)
  • gopherd.conf(5)
  • gopherindex(8)
  • gopherrc(5)
  • gophfilt(1)
  • jugtail
  • jugtail.conf.txt
  • veronica.ctl
  • Gopher+
  • Gopher FAQ
  • The Gopher Manifesto

Links

Categories: Gopher, Internet

So you want to surf Gopherspace

2011 - 02 - 21 @ 21:29 No comments

(Surprise! Another post resurrected from a deceased site. This was originally part of a much longer page on one of my dead sites. It covered all aspects of the gopher protocol that I could find. But then I decided to move things over to LinuxQuestions.org, with the full intention of regularly updating the blog… Yeah—that didn’t go so well. It’s still there, it just doesn’t get any love. But here it is again. Ready to be poked and prodded all over again.)

Anyone remember the Gopher protocol? I don’t—at least, I don’t remember it at its height. I first came across gopher in 1999, but only really started exploring it about five years ago, well after most nodes had been shuttered and their content moved to http. But even in its reduced form, there was a charm about gopher that drew me in, and which has taken root. And so, every so often, I wander through gopherspace, just to see what might be new, or old, or forgotten, or simply to enjoy the peace and quite of a hierarchical content structure.

Browsers With Full Gopher Support

  • Lynx – provides the most extensive support for gopher.
  • Camino – full support since before version 1.0.
  • Firefox – full support from version 1.5 to 3.x. Support discontinued from version 4. More robust support can be had by installing the Overbite extension.
  • Seamonkey – full support since before version 1.0 to 2.0.x. Support discontinued from version 2.1.
  • Kazehakase – full support, but not the most stable browser.

Starting in Mozilla 1.9.3 (the core of Firefox), support for gopher will be removed completely, so future versions of Firefox, Camino and Seamonkey will not support the protocol either.

For more detailed information on the removal, read the following bugzilla reports:

Browsers With Partial Gopher Support

  • Elinks – by default, it calls on lynx to access gopher sites. It can have reasonable support (but can have difficulty getting page information and menus in certain instances), if you are willing to compile it form source. The features.conf file will need to be edited before compiling; just locate the line that says CONFIG_GOPHER=no and replace that no with a yes.
  • Internet Explorer – support was available up to version 5. Support was disabled in versions 5.* and 6, but can be enabled by editing the Windows registry by adding the following entry:
    HKEY_CURRENT\
         Software\
         Microsoft\
            Windows\
      CurrentVersion\
     InternetSettings\
    EnableGopher = dword:00000001
    

Browsers That Require A Plugin

Browsers With No Gopher Support

  • Safari
  • Opera
  • Internet Explorer – version 7 and up.

If you are using one of the browsers listed above, you’ll need to use a gopher-to-http gateway such as:

Places to Start

Categories: Browsers, Gopher, Internet

Configuring Elinks

2011 - 02 - 16 @ 18:30 No comments

Elinks is one of the handful of text mode browsers that are still out there, wandering the vast, empty plains of the internet (the others being Lynx, W3m, and Links—in a variety of versions). I am not going to say it is the best—but it is the one I turn to first if I want to experience the glory of text-mode-internet.

1) Enabling Native Gopher Support

In the source code, edit the following file:

features.conf

Locate the line:

CONFIG_GOPHER=no

Replace no with yes, compile, and install.

2) Viewing Images

Download and install a suitable image viewing programme. I recommend fbida as it can be used to display images in the console and X.

Fbida can be downloaded here:
http://linux.bytesex.org/fbida/

Edit:

~/.elinks/elinks.conf

Add the desired MIME types:

set mime.extension.jpeg="image/jpeg"
set mime.extension.jpg="image/jpeg"
set mime.extension.png="image/png"
set mime.extension.gif="image/gif"
set mime.extension.bmp="image/bmp"

Add the following handlers:

set mime.handler.image_viewer.unix.ask = 1
set mime.handler.image_viewer.unix-xwin.ask = 0

set mime.handler.image_viewer.unix.block = 1
set mime.handler.image_viewer.unix-xwin.block = 0

set mime.handler.image_viewer.unix.program = "fbi %"
set mime.handler.image_viewer.unix-xwin.program = "ida %"

The unix entry defines elinks’ behaviour in the console, while the unix-xwin entry defines its behaviour under X. 1 = yes, 0 = no. In the last two entries, elinks is being told to use fbi to display images in the console, and ida in X.

Associate the image types with the image viewer:

set mime.type.image.jpeg = "image_viewer"
set mime.type.image.jpg = "image_viewer"
set mime.type.image.png = "image_viewer"
set mime.type.image.gif = "image_viewer"
set mime.type.image.bmp = "image_viewer"

Note: if you are running elinks under screen, you will not be able to display images using fbi.

3) URI Passing

Edit:

~/.elinks/elinks.conf

Add (for Konqueror and Opera—other browsers follow the same pattern):

set document.uri_passing.konqueror = "konqueror %c 2>/dev/null"
set document.uri_passing.opera = "opera %c 2>/dev/null"

Next you will need to define the keybindings for at least one of the three methods of passing the URI to an external programme which are as follows:

* Pass URI of current frame to external command
* Pass URI of current link to external command
* Pass URI of current tab to external command

Add (replace F12 with desired key, or key combination):

bind "main" "F12" = "frame-external-command"
bind "main" "F12" = "link-external-command"
bind "main" "F12" = "tab-external-command"

4) Links

http://elinks.or.cz/
http://www.xteddy.org/elinks/
http://www.calmar.ws/elinks/index.php