Monday, April 18, 2011

Xanadu vs. the web: Part VI - Wikipedia and GNU

I've spent quite a few words on why Xanadu, sometimes called the original hypertext system (Vanevar Bush's Memex proposal and Doug Englebart's work notwithstanding), is not, in fact, the hypertext system we use.  With that as background, I'd like to take a look at two pieces of what actually developed, namely Wikipedia and the GNU project.

Wikipedia would seem very much in the spirit of Xanadu.  It seeks to create an interconnected collection of documents surveying humanity's store of knowledge.  It is not only freely accessible to anyone with a net connection, it is editable by anyone (or at least, anyone who can get along in the Wikipedia community, which is a great many people).  It remembers past versions.  Indeed, the edit history is an integral part of Wikipedia, not only technically but culturally.  It can be approached from any angle, read in any order and quoted freely.  It even has two-way links of a sort ("what links here").  One might think that, for example, the "Transliterature open standard" would have something to say about it, or at least wikis in general.

Your search - wiki - did not match any documents.

That's not completely fair, as Nelson's work is scattered across many sites across the web and off it, and I'm quite sure he's had at least something to say on the project, but whatever it is doesn't exactly leap to the fore.  You can plug and other sites into the search above and still find nothing.

Wikis are probably the most Xanadu-like, most hypertextual parts of the web.  They're not Xanadu, though.  They do not provide true transclusion, or the side-by-side, interconnected views that Nelson advocates, much less "flying islands" or more exotic presentations.  All they do is provide millions of people the means to explore the world's knowledge in personalized, non-linear, cross-referenced and interconnected ways.

Two conclusions one could draw from this:
  1. Wikis, because they are not transclusive and appear much like traditional media on the screen, merely "simulate paper" and are thus detours on the true path to Xanadu.  We must fight on.
  2. Easy editing, wide access and the ability both to follow links and to search are more important than strictly adhering to any particular vision of hypertext.
Xanadu, unfortunately, seems firmly in camp (1).

(It occurs to me that the back button on a browser would probably get the same treatment.  A one-way link with a generic way to navigate back is obviously not the same as a two-way link, but it turns out to provide significant value nonetheless.)

How did Wikis (or at least Wikipedia, which has by far the lion's share of Wiki-related traffic) get to be what they are?  People put up servers and people used them.

Project GNU and Xanadu would seem to have much in common.  Persuasive, eccentric founders (by eccentric I mean simply "far from the center") with radical, ambitious visions.  A strongly-defined subculture with vocabulary and practices all its own.  A strongly ideological bent (GNU even has its own manifesto) and a willingness to say that mainstream thought and practice are simply wrong.  A conviction that computing must be liberated from narrow-minded corporate constraints.

I've taken issue with GNU founder Richard Stallman's ideas myself (particularly here and to some extent here), but I certainly don't dismiss them out of hand.  To this day Stallman commands a degree of respect and attention, for a simple reason:

GNU shipped useful code.

If you run Linux, you're almost certainly running the GNU tools (among others) on top of the Linux kernel.  The kernel itself is built with GNU tools.  Even if you're not a Linux geek, if you use the web you've interacted with any number of servers running GNU tools.

Actually, there's a second reason, not quite as simple but even more significant.  Tons of code outside the GNU project has shipped under the GNU public license (GPL) or licenses heavily influenced by it.  Because of this, it's easy to, say, download Eclipse and a bunch of Apache libraries and start doing interesting stuff.  Stallman literally pioneered a whole new form of software development and distribution [There had been "shareware" and similar arrangements already, but the GPL is a completely different beast, particularly in its brilliant use of copyright law].

There are a lot of reasons why GNU has been so influential, even if not every hope or prediction has panned out, but none of them would have had much effect at all if Stallman and company had not produced actual, useful running code, particularly GNU Emacs and gcc.

Ironically, the GNU operating system itself, which prompted the whole effort, has fared less well.  Stallman announced in the original manifesto that an initial implementation of the kernel had been written (as indeed it had), and the actual work started around 1983, even before the manifesto.  Nonetheless to this day there is no stable release.  If that had been the whole story, we might well have another depressing tale of non-delivery (or in the case of GNU, not-quite-delivery).  Happily, though, that's not the whole story.  In the event, the kernel itself was effectively supplanted by the Linux kernel, which may or may not be the better result, but other development went on.

This willingness to shift tacks when the winds change is the hallmark of every successful project that I'm aware of.  It's a big reason we have the web we do.


Christophe said...

Actually, isn't GitHub also to some extent close to Xanadu : you clone a repository, you can modify it, but there is a real, managed backlink. Changes get thru to people that clone your repository, so there is transclusion.

Of course, it's also at another "layer" of granularity...

David Hull said...

Thanks for the comment, Christophe!

I like git, but I haven't had any real cause to use GitHub. Also, it's been a while since I wrote the Xanadu pieces, so it's not completely fresh in cache. That said ...

Git itself is Xanadu-like in that it maintains a set of immutable commits. I don't recall whether Xanadu histories can have the same kind of branching structure git histories can, but the idea of tracking a change history as a set of immutable snapshots feels similar (It's not original to Xanadu. Arguably the Countess of Lovelace anticipated this in her Notes on the analytical engine, for example.) However, I don't think I'd say git, or GitHub in particular has Xanadu-style transclusion, even allowing for the different level of granularity.

Transclusion is "the same text knowably in more than one place". I write something, you quote it, the system makes it immediately clear that your quote is taken from my writing and we, or anyone, can easily navigate back and forth.

Git is built on commits and merges. You and I clone the main repository for a project. I make a change (say, writing my piece as in the first example). I commit the change. I choose to push that change up to the public version of my repository. At some later point, the project maintainers choose to pull my change into the main repository. At some still later point, you pull down my change and merge it in. If I understand correctly, your pulling in my change is playing the role of your quoting my text. Except that what you end up with is a private repository that includes all the commits in the main repository, including my commit that got pulled into it.

I don't think this quite counts as "the same text knowably in more than one place." I don't know whether you've merged my commit into your private repository. We can't easily navigate back and forth between our private repositories. GitHub, as the name implies, has a hub-and-spoke architecture. In Xanadu, everything is connected directly to everything that transcludes it and that it transcludes, back and forth.

With that in mind, I'd put GitHub with Wikipedia and GNU, as something that shares some significant aspects with Xanadu, but clearly isn't Xanadu. The comparison between GitHub and Xanadu is interesting and worth thinking about, but it's not direct.

Finally, I hate to keep hammering on the point, but I suppose I have to: GitHub arose because Linus got fed up with SVN, CVS and company (or maybe more accurately, with the choice between them and throwing tarballs around) and wrote his own repository system taking commits (snapshots) as central and the changes between them as secondary, rather than the other way around. This proved useful enough to spread beyond the original use case of the Linux kernel. Not too much later, GitHub put up a server and people used it. Someone wrote some code and people used it.