MeatballWiki | RecentChanges | Random Page | Indices | CategoriesInterMap 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.

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.

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.

InterMap can be used for accessing a local file area, for example with a prefix of "Files:".

Technical Issues

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

[A-Z][a-zA-Z]+:[^\s"<]+

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).

Standard

Moniker matches [a-zA-Z.]+ It represents the local website's nickname for the foreign website. It does not have to be canonical for the foreign website. e.g. both FooBar and fb would be acceptable nicknames for the Foo Bar wiki.

first_part represents the first part of the URL. The target will be appended to the first_part to form the URL.

second_part represents additional parts of the URL to be appended after the target. The second_part is optional. Whitespace (but not a carriage return, newline, linefeed, or vertical tab) must separate the first_part from the 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 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.

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

the title attribute on the <a/> tag.

for implementations that don't want to display a soup of logos, but rather just the monikers as the LinkText.

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

I just added basic InterWiki support to Advogato. So, in a diary or article, to link to this page, you'd type <wiki>MeatBall:InterWiki</wiki>. All it does is save a bit of typing, but I still think it's pretty cool. My implementation uses Cliff's intermap.txt, but right now I install it manually. -- Advogato:person/raph

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 InterWikiLinkPattern 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

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)

standard urls for trading of map files and logos (or at least accessible by translating into a url via the wikimap itself!)

synchronize maps between multiple servers (like dns: a wikiadmin could increment his serial number in his local map, which indicates it has changed. When other Wikis pick up the list, they only update a map entry if the serial number is higher than the one already on their list.)

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

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.

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 InterWikiInterMap. 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.