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.
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].
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.
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:firstname.lastname@example.org
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
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
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
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
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
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? :-)
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]
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.