AutoLink

DEFINITION

Attempt #1: AutoLink is automatic hypertext linking of usually plain text documents without markup or CamelCase, but instead according to associations carried in a separate file or derived/generated from meta-data such as Filenames, Date-Time, Size, MIME type…

Attempt #2: AutoLink is Automated linking of PlainText source documents into an XHTML cross-reference according to lists such as {Filenames, Regexp->LocalPage?, Regexp->ExternalURL?, SpecialNamesOrForms?->CommandExecution?}.

meta

Would WikiFeatures:AutoLink be a better place to describe and discuss this cool new proposed feature?

Rework of MeatBall:AutoLink

Another possibility for the way a wiki could link would be to make a piece of text a link whenever it matches the title of a page in the database, regardless of capitalization. For example, if I mentioned the word javascript, it would become a link because there is a page in this wiki called JavaScript.

This would not affect things in most cases because most WikiWord(s) would be written apart (like "wiki words") if they were not consciously meant to be a link.

But it would make free links easier when a wiki had a relatively high percentage of content about subjects which do not easily fit into the LinkPattern. For example, on NeuroWiki there are wiki pages called "thalamus" and "2-AG", which i generally link to whenever I mention those words (using <nowiki>[[?]]</nowiki>, now that NeuroWiki has moved to UseMod). So as a slight convenience, it would be cool if NeuroWiki automatically made those things into links if the user forgot or didn’t bother to make them FreeLinks on purpose.

It would be impractical to expect the WikiEngine to do this at the time of page display. The easiest way would probably to suggest the new FreeLinks to the author at the time of previewing an edited page. So the resulting functionality of this would actually be a restricted form of LinkSuggester?.

It would make sense for there to be a TableOfNonAutoLinks? for pages that are frequently (but erroneously) suggested to be AutoLinked.

This idea would not be very earth-shattering; at the best it would be a small timesaver.


The GaGaParser (see MoinMoin:GaGaParser) does exactly this sort of thing, with a few enhancements such as a list of common words that won’t be autolinked.

ProWiki also implements this. But still there is a "word link pattern" so that not every word need to be checked. The pattern is configurable. I don’t think that a common word list is worth the effort, because you have to build a hash of "non-linking words" anyway to avoid rechecking for pages. Any matching word must unconditionally be checked against this hash. In English it might make sense to restrict automatic word linking to words of length>=5. It might be also interesting that ProWiki has a simple mechanism for "word form reduction", so it is able to optionally reduce "wikis" (- "s") to "wiki" or "linking" (- "ing") to "link", which is almost useless in German because of its more complex word forms. I used this extensively in what I call "the Ogden experiment", a kind of wiki-based semantical language analysis I did a while ago (any word in this 1000+ page wiki links). – HelmutLeitner

GeboGebo supports AutoLink, too. It parses the page on display time and checks each word against the (indexed) database. A bit of confusion stays when using NameSpace s; should a matching page name be looked for in all namespaces, only the current or at least the current and the root NameSpace? All auto-generated links appear in a different color as the hand-made do.


Consider to AvoidClutterLinks.


[1] [2]

Discussion moved from CleanLinking

I understand some of the concerns with automatic linking, but if page creation were careful, wouldn’t it be nice if a page with the filename “clean link” (including the space) would be a [mostly case insensitive] link whenever it appeared in text? It could link to a local page, or could be associated with an external URL or with a generated disambiguation page.

For instance, when I write Emacs or Free Software or General Public License or GNU or any “Title” (a filename or an association pair) that is defined, the wiki software would emit an HREF.

Is there something I’m missing? What are some of the disadvantages I didn’t mention?

What are the disadvantages that have been mentioned so far?

Taking a leaf from my bargaining 6-year old daughter:

I’ll give my time to the line of inquiry, if you:

  • (A) volunteer as PageMaintainer for a CommunityWiki AutoLink page,
  • (B) maintain on that page a list of plausible advantages
  • (C) maintain on that page a list of plausible disadvantages
    • ex: unwanted links
    • ex: not linking when we want it to link
  • (D) maintain on that page a list of ways it could work
    • ex: “AutoLink always – whenever the
    • ex: “Opt-Out AutoLinkAutoLink always, except when special syntax deactivates”
    • ex: “1st AutoLink – autolink the first time a phrase shows up, but no others”
  • (E) maintain on that page a list of central questions
    • ex: “If we use AutoLink, how do we force linking or de-linking?”
    • ex: “What sorts of situations would we likely not want auto-linking?”
    • ex: “Where have people done autolinking?”

I’ll commit to the conversation, provided someone puts in a labor commitment to ordering that conversation. I’ve just now put some work into that effort, above. :)

If I see something coming out of the conversation that well addresses the major concerns, I’ll be happy to endorse the AutoLink.

As I see it, two major stake-holders are MattisManzel and PatrickAnderson. MattisManzel, because AutoLink implies "clean" links, and PatrickAnderson, who is the primary proponent.

I personally like the idea, but need to see the rough edges, which I know are there, worked out. AlexSchroeder is by necessity most conservative amongst us, but I suspect might be swayed, should he see a well organized line of reasoning, and so on.

I think there is potential here to meet both the elegance of clean linking, and avoid the hastle of the recurring question, “Should I link this here, or not?”

There’s potential overlap with LocalNames, as well, because links to external sites are just as much a part of this as links to sites within the wiki. And then there are HansWobbe’s concerns about TransClusion that we may want to bring into he pot as well.

Who knows; Perhaps we should just call this thread, [[RethinkingLinking2007?]].

Well, I do have an automatic linking extension for Oddmuse. The problem is that it’s very slow for large sites. I bet that it could be improved with some appropriate trade-offs, however. Simply an engineering problem. Multiword automatic linking is a bit tricky, and the user interface for creating new pages is a bit tricky, too.

Check it out: Oddmuse:Link All Words Extension.

Some problems collected so far:

Cwrite necessary code, and applying to CW – probably requires imagination and perhaps examples to overcome

PatrickAnderson, I hope you’re thinking about organizing all this, … I believe this is “your cause” primarily, and I think this has potential, and I do like to see progress. I can’t dedicate myself to this full time right now, though. It seems to me like it is reasonable that you would organize this. I can’t spearhead this.

Thanks for the encouragement and caution. Separating link creation from text authorship is an interesting and large problem space.

Controlling when to link should be made by the user except when anonymous or working on public property (such as DEFINITION areas and new-user defaults for stylesheets and other community-wide functionality).

Link creation should be separate from text authorship when writing in the DEFINITION area of a document, or when quoting another user or when quoting a DEFINITION.

Secure accounts will allow each user to define their own vocabulary. The site wide vocabulary would be in effect for the DEFINITION part of a page, while a user’s vocab and stylesheet would apply to that User’s homepage and all comments/annotations on other pages.

More at: PlainLink, PlainTextWiki and http://EcoComics.org/.runtime/axon.el

Title ideas: LateLink?, LazyLink?, ImplicitLink?, JustLink?

Not only for the elegance of clean linking, no …

Assuming the wiki-net grows, assuming that “clouds of neighbors” evoke and assuming that we have a or several connected wiki-net servers then - somehow - it could be as follows:

Someone has an idea, makes a page called WorldCommunicationMachine? on wiki A. The page has an editable title: world-communication-machine. This title is fed to the wiki-net server and it passes it on to the wikis in the neighborhood of wiki A (just to the neighbors, not further). If now somebody writes world-communication-machine on any of these wiki (only the neighbors, the “cloud”) it automatically turns a link to the page WorldCommunicationMachine? on wiki A.

Link language emerges from repetition, not from CamelCase and link language emerges from repetition, not from CamelCase. Link language emerges …

Nice page btw.

Hey Mattis,

There are many ways to interpret the idea of AutoLink.

I’m confused why you would write WorldCommunicationMachine? instead of World Communication Machine.

Wouldn’t it be ok if the {filename, DB entry, or regexp association} included the spaces in the Title - even when storing the data? A CamelCase, [] or - version would never need even be thought of because the software would not respect those characters in that way.

There are many ways of looking at this, but one of the most central in my view is that whitespace and capitalization should be preserved and therefore link without any deviation from plain, standard unadorned text.

However you do the skeleton insides - the PageNames? will be covered by [PageNames? skin]. Even the RecentChanges will show EditableTitles. The PageName? could be [FlgmWorgrs? skin], whatever (as long as the others can read it). I started with CamelCase and the skeleton grew camel-caseish out of it. More important: all engines support it (until docuwiki came along, but they can be convinced) ;).

Mattis.

Thanks for your patience, but I’m afraid it still looks like you are claiming the source text will always require an association outside of the mere appearance of the term itself.

Maybe you are still talking about CleanLinking, or maybe you just have a different idea of what AutoLink means. Please write another DEFINITION Attempt so I can understand your ideas.

Define external redirect: FlgmWorgrs ExternalURL PageNames WorldCommunicationMachine RethinkingLinking2007 CommandExecution LocalPage ImplicitLink LateLink TableOfNonAutoLinks SpecialNamesOrForms PageName LazyLink LinkSuggester JustLink

EditNearLinks: CategoryUncommonWikiTechnology UseMod JavaScript PatrickAnderson WikiWord CamelCase WikiEngine FreeLink GaGaParser LinkPattern GeboGebo AvoidClutterLinks ProWiki

Languages:

The same page elsewhere:
MeatBall:AutoLink