No, this is not an advertisement for PurpleWiki (although PurpleWiki does support Transclusions). This is a wakeup call. Transclusions already exist and have existed for a long time. No, I’m not talking about Project Xanadu. I’m talking about the World Wide Web and spreadsheets, among others. (IDZ)
First things first. What’s a Transclusion? A transclusion is a link where the content of the link is displayed inline. For example: (IE0)
is a link. This: (IE2)
is the content of that link displayed inline. Which, of course, is example number one. Images on the Web are transclusions. When I include a URL in <img> tags, the content of that URL is displayed. (IE4)
We use Transclusions all the time in spreadsheets. When I write =E27 in a cell, the spreadsheet displays the content of cell E27. (IE5)
Transclusions are useful, and they’re ubiquitous, but not necessarily as “transclusions.” They’re not yet part of a shared conceptual framework for collaborative tools. Once we explicitly acknowledge their existence and their utility, we can think about implementing them across different applications in an interoperable way. (IE6)
Off the top of your head, what systems can you name which have some form of transclusion but which need to deal with detecting remote recursion? I am just wondering how different people have solved the problem.
The C preprocessor and Excel have to detect recursion but they have a pretty easy go of it because they have at hand all the information to handle detection. You can transclude images in web pages but images can’t transclude anything else.
When transclusion is crossing system boundries it is possible that no individual system has enough information to detect the recursion. Some ideas on how to solve the problem were tossed around:
http://www.kwiki.org/?WebServiceTransclusionSolution
http://purplewiki.blueoxen.net/cgi-bin/wiki.pl?RecursiveTransclusion
Do you know of any other systems which have this problem and how they solved it?