MeatballWiki | RecentChanges | Random Page | Indices | Categories

InterMap is a simple implementation of the InterWiki idea. Its primary function is to allow for easy linking between wikis. The InterMap defines HostPrefix:Page as a link pattern linking to a page on a host (or to some other resource on non-wikis). The host prefix is will be translated into a partial URL. It acts as an URL Abbreviation. The prefix is often called the moniker.

Wiki:FrontPage is an example of a link defined by MeatballWiki's InterMap. Wiki is the host prefix (in this case it is refering to the original WikiWikiWeb), and ''FrontPage'' is the name of the page on that wiki.

One way of looking at it is to see the prefix as a NameSpace qualification. Every wiki has (at least) one namespace, and the prefix tells you that the page exists in another namespace. See WikiNameSpace for a discussion of namespaces in the wiki context.

For UseMod wikis the map of URL abbreviations is stored in a text file on the server (the intermap.txt file). For MeatballWiki, which has a PublicallyEditableInterMap, the file is generated from the InterMapTxt page. For OddMuse, the map is stored directly on a wiki page that is usually locked by the administrator.

To add a site to MeatballWiki's InterMap, suggest it on InterMapSuggestions first. InterMapDiscussion is for comments on accepted and rejected sites.

Unobvious and interesting uses of the InterMap

In addition to its main useas a connector between wikis, the InterMap can be used to abbrevate any URL. A website need not be a wiki to be listed; MeatballWiki currently lists AdvoGato, and LiveJournal, for example. However, these shortcuts are only useful when linking to pages with proper titles. It's easy to link to Advogato:person/ralph, but linking to Advogato articles requires you to know the number (e.g. Advogato:article/732.html ), and this is not very readable.

Non-wiki sites can use an InterMap to link to wikis. AdvoGato and the #wiki IRC channel have InterMap implementations. Wikimedia projects have an huge [Interwiki map].

Other uses:

Technical Issues

What characters are permitted in InterMap entries? The regex would look something like


Which means a group of letters (first letter capitalized) followed directly by a colon followed by a group of characters excluding whitespace, a double quote (") and a less than sign (<).

The first group is the site identifier. If the site identifier is unknown, the match fails and the text parsing falls through to the regular wiki parsing. So, Foo:aBunchOfText doesn't do anything.

The second bunch of text gets concatenated onto the end of the partial URL in the intermap file. The resulting string is the target link. This wiki uses two double quotes to break LinkPatterns, er MeatBall:LinkPatterns (ala LinkPattern""s).


If you grant that an InterWiki (or TwinPages or NearLink) link consists of two parts, the foreign website and the target page, then the InterMap should be in the format:

 Moniker first_part second_part

Websites, such as WikiFarms or FractalWikis or TwikiClones that want to describe a hierarchical structure to an InterMap Moniker can do so via dotted notation. This can either be done in reverse-domain notation, as in com.usemod.MeatBall, or in something that makes sense to the information architecture of the wiki, as in Twiki.Main. Aggregators of the InterMap can opt to parse the dotted notation as they choose, including stripping the dots, ignoring the entries, using the lastmost part of the dotted entry, or by recognizing the hierarchical structure.

For example, with the example InterMap

MeatBall http://usemod.com/cgi-bin/mb.pl?
FooBar http://www.foobar.com/index/ .html

MeatBall:InterMap would link to http://usemod.com/cgi-bin/mb.pl? + InterMap to form http://usemod.com/cgi-bin/mb.pl?InterMap

FooBar:InterMap would link to http://www.foobar.com/index/ + InterMap + .html to form http://www.foobar.com/index/InterMap.html

For targets that include spaces, punctuation, or other special characters, use the standard URL encoding schema. To link to "Inter Map" on MeatBall, the format would be http://usemod.com/cgi-bin/mb.pl? + Inter%20Map to make http://usemod.com/cgi-bin/mb.pl?Inter%20Map.

Websites should publish their InterMap in Content-type: text/plain for easy discovery and aggregation. See for example, http://usemod.com/intermap.txt.

SisterSites extension

On top of this format, SisterSites in its typical implementation via TwinPages or NearLinks often require a logo URL (although this is not strictly necessary). Despite suggestions otherwise, the Moniker is still useful for

We can add an extra part for the logo URL to the existing format

 Moniker first_part [second_part] [logo]

Which might look like

MeatBall http://usemod.com/cgi-bin/mb.pl? http://usemod.com/meatball-rss.gif
FooBar http://www.foobar.com/index/ .html http://www.foobar.com/small.png

Detecting the logo part is simple enough. By definition the second_part should not match the URL BNF, whereas the logo must. Some might argue that the second_part might indeed match a URL BNF in some theoretical exception, but since the protocol part is alphanumeric, and it would be immediately following the target page name, it would be difficult to isolate one from another. e.g. http://www.example.com/wiki?FooBarmailto:foo@example.com


Non-Wiki Implementations

From MeatballWikiSuggestions:

PublicallyEditableInterMap (rejected, read to see why)

In any case, editing the InterWiki prefixes will probably become an "admin" capability. Sites that want to give away admin capabilities will be free to do so. For simplicity, the first version will allow the admin to edit the entire InterWiki file much like an ordinary Wiki page. I hope to add a feature for users to submit names and links in a form which could be easily copied into the official InterWiki file.

Finally, different wikis have different levels of trust and abilities for their users. UseModWiki is not likely to be the most "trusting" wiki in it's default configuration. For some uses (like a private wiki for a group of friends) UseModWiki may be too restrictive. --CliffordAdams

You should at least automatically publish the list online (in a clean format) so other wikis can come and grab it automatically. We could make MeatballWiki the central InterWiki name server. Actually, we can hook into all sorts of other trusted communities (InterCommunity??) this way, much like you did with AdvoGato. -- SunirShah

I've considered changing the name of this feature to something like "link abbreviations", to make it obvious that it can link to arbitrary sites. Wikis seem to be the most useful targets for now, however. --CliffordAdams

On second thought, it would be just trivial to just publish the list for MeatballWiki and let anyone who wants it suck it up. Other wikis can publish their own list too, and so on, making a distributed name list of sorts. Well, whatever--no "central" required, at any rate. This is low energy. Some flat ASCII, a little Perl and you're good to go. -- SunirShah

I'll add a feature to display the current full list with minimal markup. The InterWiki list format is trivial: each line contains an alphanumeric site name, a space, then the URL prefix. Anyone who wants to use my list is welcome.

I'm not very interested in standardizing a single list of site names. For now the general idea of "InterWiki links" is much more important than particular implementations. (I am hoping that the "Site:remotename" format becomes standard, however, and that implementations do not impose many limits on the remotename component.) --CliffordAdams

It's not important to standardize the format. Sites that aren't compatible will just be excluded. Other wikis can use whatever InterWiki LinkPattern they want, really. (Who cares?)

If you simply publish (i.e. copy) the intermap file into webspace, other people can fetch and parse it. We can at least create a simple mechanism for requesting additions and changes, ala post a note on "InterMapSuggestions". A wiki solution.

Anyway, this is entirely more work for you, I understand. But it would be cool and simple. -- SunirShah

O.k. I'm stupid. Check out http://usemod.com/intermap.txt --ss

You're not stupid--I was just quick to implement the suggestion. :-) Right now I just copied the current file, but I'm still planning to add features to list the file and (eventually) edit the file remotely. [see InterMapPublic] (I'd like for UseModWiki to be fully remotely controllable.) --CliffordAdams

Cool. Thanks. Now the ObviousNextStep is to fill the intermap with a lot of (good) data so its worth it for foreign wikis to use it. By the way, I just realized that ZWiki uses LinkPattern:LinkPattern as their format, which screws them for using the UseModWiki intermap. So, if others are going to use it, then they will have to adapt their styles. And back onto the InterWiki debate from hell... well, there are simple solutions to this problem too. --ss [I like the simple solution of "everyone follows Cliff's way". ;-] --ca

UseMod wiki supports locking pages to editors/admins, so if there also was a way of specifying that a given page should be returned as plain text (no html parsing), you could have a wiki editable intermap file (and a wiki editable stylesheet, javascript, etc). I'm guessing that should really wait until the database architecture is overhauled though. -- EricScheid

I just opened the Wiki:WikiForum, named Wiki:WikiReviews, where I use your InterMap conventions in browse-mode, hiding the rest in edit-mode text. E.g. In browse mode you see Wiki:WikiForum, whereas in edit-mode you have to type *Wiki:WikiForum>http://c2.com/cgi/wiki?WikiForum*. At least a way to promote the conventions. -- FridemarPache

I started helping out with PhpWiki: and I love the idea of sharing InterWiki maps and would like to help this grow. There seem to be a ton of Wikis on the list already, time to go WikiWalking.

Some ideas I've been wondering about, no doubt these problems have already been solved for similar systems (eg DNS)

Is the Wiki:Page notation standard? How about Wiki?page? --Wiki:CarstenKlapp

There are no standards, of course, but the de facto standard is the Moniker:Page syntax. MoinMoin uses wiki:Moniker:Page along the lines as the other URI protocol prefixes (e.g. http, ftp, mailto). WhyClublet did its own thing with moniker?Page but that's really irrelevant as WhyClublet is not really interested in wikis other than itself and WikiWiki. The other option is TwinPages, but that is limited in effectiveness.

The next version of the MeatballWiki script will have a PublicallyEditableInterMap. Maybe that will become the de facto standard listing, but I'm not entirely sure how that will go. InterWiki prefixes are a limited resource like domain names. Earlier we rejected "Python:" as not being specific enough. Also, I don't like the idea of putting WikiAsPim sites into the intermap. Another option is to use RichSiteSummary to publish intermap data, maybe as part of ModWiki.

Finally, I would like to upgrade the intermap format to be more in line with the metamap (see MetaWiki). This would handle more cases, especially non-wiki cases. -- SunirShah

Apologies if i'm just blind, but what is the delay period? I can't find it specified anywhere. InterMap hasn't been edited since October 12, so i waited to make a change til October 26 (thinking two weeks), but it still hasn't saved to intermap.txt. --JohnAbbe

Ah, yes. Um, well, cough, yes.. Technically someone still has to manually run the maintenance once in a while. Since I did all the script changes and then basically left for Europe, I decided it was prudent to keep back ups of the PageDatabase before running the maintenance just in case something goes horribly wrong with PageDeletion or whatever. Right now while the back up system is functional, there is no diskspace to store the tarballs. With the recent KeptPages failure, I don't think I really want to run the maintenance every 24 hours without back ups. Also, I need a ssh telnet session to modify the maintenace script on sunir.org, which is somewhat difficult to acquire when travelling. Nonetheless, magically I will run a maintenance session even from Times Square. -- SunirShah

P.S. Secretly my plan was to let Wikipedia keep munging their URLs until I got back. Fortunately, they were quite happy to oblige me in this, until JimboWales? opted not to rename www.wikipedia.org to en.wikipedia.org in some sort of language equality move. Bummer. --ss

Thanks. Is the disk space a $ issue? We could take up a collection. Anyway, i've gone ahead and made the edit; Someone had written there anyway (moved to below). --JohnAbbe

How often do you update? (The PeriPeri prefix is stuck in limbo :) ) -- ChrisPurcell (Kritter)

Every two to four weeks. The InterMapTxt has another week to go before it rolls over as of today. -- SunirShah

Looking at the InterMapTxt list, I realize that there are so many links below I would like to check out immediately, but have no clickable links for. Would a link to homepages of the wikis listed below be a good thing to have here. e.g.

and so on for InstantGratification? :-)

Check out my list at YpsiEyeball?:PublicWikis? for some form of i.g. or a grimace. . . MarkDilley

Great idea! Such lists do exist, try Mark's or Wiki:PublicWikiForums (both links are now on the InterMapTxt page). Turning InterMapTxt itself into an index page would hinder its current use of publicly editing the active intermap.txt file. --JohnAbbe

I added links in InterMapTxt to the [community cards] system of the [free community] project. The cards project is an unusual type of wiki, I hope you like it. I hope you think the wiki and the cards system are worthy to be linked to meatball :)

The link to the cards wiki which I added was removed from InterMapTxt at some stage; I can put it back if you like, please contact me if you think that would be worthwhile. --[Sam Watkins]

Sam, you can link to the wiki directly from some appropriate page. The InterMapTxt is for sites we have linked to directly on pre-existing pages, usually because they cover topics germane to the MeatballMission. It's not a matter of worthiness :) -- ChrisPurcell


OpenWiking (an ASP Wiki) has a WebForm?-based Import/Export facility for its InterWiki InterMap. This is done via the MS ADO Text driver to a CSV file. This CSV file is easy for MS Windows users (main OpenWiki userbase) to edit using MS Excel. The CSV file can be exchanged with other OpenWiking implementations with ease, and re-imported just as easily online.

-- Gordon

CategoryWikiTechnology CategoryInterCommunity CategoryUncommonWikiTechnology


MeatballWiki | RecentChanges | Random Page | Indices | Categories
This page is read-only | View other revisions | Search MetaWiki