Xaraya J. Robeson 
Request for Comments: 0047 D. Daulton 
Category: Informational Xaraya Development Group 
 July 2003 

RFC-0047: Trackback in Xaraya

Status of this Memo

This memo provides information for the Xaraya community. It does not specify an Xaraya standard of any kind. Distribution of this memo is unlimited.

Copyright Notice

Copyright © The Digital Development Foundation (2003). All Rights Reserved.

Abstract

This RFC documents the trackback functionality in xaraya. Trackback has had lots of attention by the growth of blogging lately. The principle of trackback can however be applied to other content than just weblogs pretty easily. A thorough understanding of what trackback is and how it should be used is necessary though. This RFC serves two goals:


Table of Contents


1. Introduction

As blogging has become very popular (quick search for estimate: between 2.4 and 2.9 million webloggers), it's time to give Xaraya a good backend for blogging.

An important part of blogging is the so-called TrackBack facility. In short it can be described as linking the weblogs together in a special way to created an interlinked space of the weblog entries. It appears that the concept of trackback creates some confusion, so we do an attempt to explain it here in simple terms and describe how the concept applies to Xaraya.

This document is largely based on the specification located here [1]. MT is one of the most widely used blogging systems and their implementation is leading for most client developers.

1.1 What is trackback?

From the MT website:

                    In a nutshell, TrackBack was designed to provide a
                    method of notification between websites: it is a
                    method of person A saying to person B, "This is
                    something you may be interested in." To do that,
                    person A sends a TrackBack ping to person B.
                    

How does this work in real life? It's convenient to view at it from two distinct goals:

  1. content aggregation: having one place to read about one topic
  2. remote comments: comments on something published elsewhere

The first can be translated into sending a notification the the one place that something is published on a certain topic. The central place functions as the place where this type of content is aggregated. The publisher sends a notification to the central place, stating that something was published. The central place records enough information about the publication so it can be "tracked back"

The second is more pro-active. Someone reads an interesting publication and wants to write a comment about it, or just write something related. Instead of commenting on the site where the publication is, he comments on his own weblog (because it fits his own list of subjects for example. After publishing the comment or the related publication a ping is send to the original location, so the comment can be "tracked back" from that location to the location where the remote comment is.


2. Requirements List

The main objective of this API is to allow a TrackBack enabled site to send TrackBack pings and recieve them. Then the system must route them to the appropriate Xaraya content item.

  1. Send Trackback Pings
  2. Receive TrackBack Pings
  3. When items on other sites change or are created as a TrackBack to a xaraya item a TrackBack ping is received This ping needs to be handled by xaraya and stored in relation to the item remotely referenced.
  4. Receive and parse TrackBack ping
    Route information (based on URL) to the right module and store the info there
    Use display hook to display TrackBack links and show the TrackBacks
  5. Auto-Discovery of TrackBack Ping URLs
  6. When creating a new item, the TrackBack module should offer the possibility to retrieve trackback info from an url. This can be both manually or automatically

3. Sending a TrackBack ping

                   POST http://www.foo.com/index.php?module=trackback&type=user&func=ping&tbid=1
                   Content-Type: application/x-www-form-urlencoded
                   title=Foo+Bar&url=http://www.bar.com/&excerpt=My+Excerpt&blog_name=Foo
            

Successful Response:

                   <?xml version="1.0" encoding="iso-8859-1"?>
                      <response>
                          <error>0</error>
                      </response>
            

Failed Response:

                    <?xml version="1.0" encoding="iso-8859-1"?>
                        <response>
                            <error>1</error>
                            <message>The error message</message>
                        </response>
            


4. Receiving a TrackBack ping

Example TrackBack ping receive

To retrieve the list of pings sent to a particular Xaraya TrackBack Ping URL, send an HTTP GET request to the TrackBack Ping URL with the query string ?__mode=rss

A sample GET request might look like this:

                GET http://www.foo.com/ws.php?type=trackback&tbid=3?__mode=rss
            

The response to this request will either be an error in the same format as returned from the above request, or the list of TrackBack pings for that item in RSS markup, wrapped in <response> tags.

For example:

                <?xml version="1.0" encoding="iso-8859-1"?>
                    <response>
                        <error>0</error>
                        <rss version="0.91">
                            <channel>
                                <title>TrackBack Test</title>
                                <link>http://this.is/the/trackback/item/link/</link>
                                <description>Description of the TrackBack item</description>
                                <language>en-us</language>
                                <item>
                                    <title>TrackBack Demo</title>
                                    <link>http://this.is/the/permalink/</link>
                                    <description>Excerpt</description>
                                </item>
                            </channel>      
                        </rss>
                    </response>            
            

The portions between <rss> and </rss> are the actual RSS data; the rest is simply the response wrapper, and can be discarded.


5. TrackBack Auto-Discovery

TrackBack clients need a method of determining the TrackBack Ping URL for a particular URL or weblog entry. Server implementations should include embedded RDF in the pages they produce; the RDF represents metadata about an entry, allowing clients to auto-discover the TrackBack Ping URL.

Sample RDF looks like this:

                <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                      xmlns:dc="http://purl.org/dc/elements/1.1/"
                      xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">

                <rdf:Description
                rdf:about="http://www.foo.com/archive.html#foo"
                dc:identifer="http://www.foo.com/archive.html#foo"
                dc:title="Foo Bar"
                trackback:ping="http://www.foo.com/tb.cgi/5" />
                </rdf:RDF>
            

The dc: elements are standard Dublin Core elements; the trackback:ping element comes from the TrackBack Module for RSS 1.0/2.0 at http://madskills.com/public/xml/rss/module/trackback/.

Given a URL my_url, clients should follow these steps:

  1. Send an HTTP GET request to retrieve the contents of the page at my_url.
  2. Scan the page contents for embedded RDF. Pages can contain multiple instances of embedded RDF--clients should pick the block whose dc:identifier matches my_url.
  3. Extract the trackback:ping value from the block of RDF. This is the TrackBack Ping URL.

Once the client has determined the TrackBack Ping URL, it can send a TrackBack ping see Sending a TrackBack Ping.

Example Auto-Discovery

               example in javascript:
               window.open('http://your.xaraya.com/ws.php?type=trackback&url=currenturl');
            


6. Solution proposals - database tables

xar_trackback_pings:

                CREATE TABLE xar_trackback_pings (
                    pingid INT(11) NOT NULL AUTO_INCREMENT,
                    modid INT(11) NOT NULL DEFAULT 0,
                    itemid INT(11) NOT NULL DEFAULT 0,
                    url INT(255) NOT NULL DEFAULT '',
                    blog_name VARCHAR(255) NOT NULL DEFAULT '',
                    title VARCHAR(255) NOT NULL DEFAULT '',
                    excerpt TEXT,
                    created_by INT(11) NOT NULL DEFAULT 0,
                    created_on INT(11) UNSIGNED NOT NULL DEFAULT 0,
                    modified_by INT(11) NOT NULL DEFAULT 0,
                    modified_on INT(11) UNSIGNED NOT NULL DEFAULT 0,
                    PRIMARY KEY(pingid),
                    INDEX(xar_trackback_pings_modid),
                    INDEX(xar_trackback_pings_itemid),
                    INDEX(xar_trackback_pings_url)
                }
            


7. Solution proposals - functions

user:

                trackback_user_display();
            

userapi:

                trackback_userapi_getpings();
            

admin:

            

adminapi:

                trackback_adminapi_sendping();
                trackback_adminapi_
                trackback_adminapi_create();
                trackback_adminapi_delete();
                trackback_adminapi_deleteall();
            


8. Code that will need to be rewritten


9. Tools that need to be written from scratch


10. Current Issues


11. What is a Permalink?

               permalink (pûrma-lingk) n.
               A permanent marker or reference point to a certain document on the world wide web.
               Most commonly used for weblogs, news sites and newspapers.
               A permalink is denoted through the use of a symbol (pound sign, arrow, dot),
               date of content creation, the word permalink or image.
            


12. Revision history

2003-08-04: Johnny: added info from trackback spec

2003-07-25: MrB: added TrackBack explanation

2003-07-24: MrB: created

13. Reference title

[1]MovableType, “http://www.movabletype.org/docs/mttrackback.html”, 2002.

Authors' Addresses

Johnny RobesonXaraya Development GroupEMail: URI: http://www.xaraya.com
Doug DaultonXaraya Development GroupEMail: URI: http://dougdaulton.com

A. Example appendix

Any section which is present after the references will become an appendix


Intellectual Property Statement

The DDF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the DDF's procedures with respect to rights in standards-track and standards-related documentation can be found in RFC-0.

The DDF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this standard. Please address the information to the DDF Board of Directors.

Acknowledgement

Funding for the RFC Editor function is provided by the DDF