I am intrigued by the concept of transclusion. Briefly, transclusion is defined as the inclusion of part of a document into another document by reference. Ted Nelson conceptualized the approach in his 1982 book Literary Machines. Ted Nelson is arguably one of the great visionaries of the field not only proposing transclusion but also the more fundamental concepts hypertext and micro payments.
Until recently, there have been limits on the adoption of transclusion. The biggest issue I have seen with the implementation has been the expectation that web authors are encoding their content with ‘tags’ to provide anchor points for copying blocks of text or images. It takes effort to do so and serves no semantic purpose. These tags take the form of “purple numbers” or sections. Without a body of content built to support transclusion, the technique has limited adoption.
Over at Blue Oxen, they have introduced an AJAX based solution solution called Purple-Include which provides a way for web authors to bring in content from other web sites. The solution has two parts:
- A server based back end which pulls the information from the target web site; and
The Purple-include technique builds on implementations by supporting several syntax’. Most valuable is the support of the XPath language. The XPath language allows you to address part of an XML document. XPath provides simple navigation through an XML document down to a specific paragraph. While Purple-Include supports the ability to reference content by tag name, the XPath support effectively jumps around the the chicken and the egg paradox transclusion has faced to this point.
But this is a geek’s solution. The percentage of general population bloggers who understand XPath has to very small. The implementation does not support the casual blogger. A good deal of experimentation would be required to reference a single section of a web page. The effort of tagging content for transclusion has been replaced with the consumer’s effort to properly navigate through an XHTML document. People who care and who are technical enough will invest the time, but otherwise it is too much effort.
We are so close to having a solution. A single enterprising (and I’m certain technically gifted) developer can beat this problem. I am proposing a mash up of several proven tools that would open this capability to general population bloggers. Envision a tool embedded in any rich text editor which when triggered would open a series of panels. Here’s the sequence:
- Set the insertion point where you want the transcluded code.
- Press the transclude button.
- A dialog box is opened with a prompt to enter the target URL.
- After pressing enter, the target page is opened in a new window with a floating tool bar to select the code to be referenced.
- For casual users, the means by which text is referenced is not important. More technical users can select one of several selection methods: XPath, DOM or named reference.
- After selecting the text/images, the user closes the dialog box and the selected text is transcluded at the insertion point with proper attribution.
In fact, most rich text editors have the starting point for this solution in place already: blockquotes. For some reason, the editors have not automated the selection of the referenced code. The concept is the same except that instead of storing the content in two places, in a transcluded world only the reference to the text stored – not the text.
And finally, transclusion works one of three ways (to my knowledge):
- Remote transclusion via proxy (Purple-Include)
- IFrame inclusion
The latter two solutions are clumsy and ignore the simple solution presented by Purple-Include via Ajax style development. RTE vendors aren’t in the business of developing ajax solutions so asking them to produce this capability is not a natural act. A better option are the vendors producing blogging tools themselves. Blogger, WordPress and Six Apart are all well positioned to provide this solution. They have development staff to produce Ajax based editor solutions and a host platform on which to run the backend code.
I am hopeful this well placed missive will prod someone to scratch my itch.
Originally posted on villiageidiot.vox.com