I had some time left over today and I spent it porting David Meade's Wordpress plugin to Drupal. It has almost identical features: A couple of extra fields are added to comment forms allowing each commenter to link to a video and a video thumbnail. Those videos are then played inline in the comment thread if the Embed QuickTime Drupal module is turned on.
You get two extra values on the comment object to use in your template. If you're using Embed QuickTime you would add the following to comment.tpl.php
<?php if ($comment->video && $comment->video_image): ?>
<div class="hvlog">
<a href="<?php print $comment->video; ?>" rel="enclosure">
<img src="<?php print $comment->video_image; ?>">
</a>
</div>
<?php endif; ?>
This is not the first time I've dabbled in video comments. This post from August 2004 accepted video comments. That was around the time I wrote long posts about how to create a distributed video commenting system.
Apparently anything warrants a press release these days. RavelBabel has created a system for video comments (via) and they're calling it a hyblog. Part regular blog, part videoblog — a “true hybrid blog”. I'm wondering why they wanted to use this term instead of just calling it a videoblog. After all videoblog implies blog.
But get how you are supposed to add your video comment: You have to upload your video via FTP and they will review each video manually. They turnaround will be no longer than 24 hours on weekdays (if you post during the weekend your comment will be posted the following Monday). Come on, RavelBabel. Get with the program, join the 21st century, wake up and smell the coffee. This isn't 2001 anymore. As Steve points out there are other companies who are much closer to solving the video comments issue. Hell, even the video comments prototype I hacked together in one evening in 2004 is better than this. Comments were automatic and everything. And I didn't even send out a press release.
Lucas Gonze posted a response to my longwinded case for using pingbacks. I was going to wait and reply on this weblog, but I got caught up in it all and took the discussion on videoblogging list. I'm not a fan of Lucas' suggestion. Although it is very easy to implement, it is almost impossible to get data out again (since you'd have to search through all pages on the entire internet to find all comments on a single webpage). Below I have linked to the e-mails sent to the list.
There is a bit more from other people at the videoblogging list.
I see that Lucas has ammended his entry since I read it the first time (quoting Daring Fireball for example). Not that there are any new argument. The ‘links are enough’ doesn't hold up, because the entire internet would have to searched through the find all links to a resource. A huge waste of time and energy. Referrers are not a good way to handle the issue either, because the signal-to-noise ratio is terrible. Just take a look at the referrers on Daring Fireball. I refute both issues using more words in the two e-mails linked above.
PS. At the bottom of the Fireball post there is a section called “Miscellaneous Other Things I Don't Like About TrackBack”. It is worth reading, because he lists the three things I don't like about trackbacks. Fortunately pingbacks doesn't have these limitations. Pingbacks are easy to send because they use XML-RPC, autodiscovery is very easy and there is no problem recording pingbacks on static pages. Of course showing dynamic content on a static page is always troublesome, but that's a problem trackbacks, pingbacks and referrers share!
Last month I tested a simple system for collecting video comments. It was fun and all, but from the begining I wanted something more. Now it's time to get a bunch of testers for the next version. My goal was to make as much as possible automatic, and to make it distributed (so that everyone hosts their own comments). I've argued the case for pingbacks more and thus it should come as no surprise that I think a video commenting system should be based on pingbacks. Basing it on existing technology also makes the system more open and flexible.
The client isn't quite done yet, but it'll be easier (and I'll be more motivated) to finish if I have some videoblogs to run tests against. What you can do to help can be summed up in four easy steps below.
The first step is naturally enough to enable pingbacks on your own weblog. In order to recieve comments on your entries you need a pingback server. If you're using Wordpress as your weblog system you already have a pingback server. If you are not using Wordpress I have written a quick-and-dirty pingback server you can use. Your server needs to support PHP. Download the pingback server (zipped; 2.45 kilobytes; instructions are in the .php file). If you can't run this on your server I can offer to host a pingback server for you (if you're a videoblogger). Contact me and we'll talk.
Next you need to advertise that your weblog is supporting pingbacks. Again, if you're using Wordpress this is handled for you. Others have two options: An HTTP header or a <link>-element. If you have the ability to send the HTTP header, do so. It lessens the bandwidth requirements because people commenting on your entries don't need to download your post to find the pingback server. They can do with just fetch the HTTP headers for it.
The header needs to go out with all documents you want to pingback enable. Usually you just want to pingback enable your individual entries. In PHP you would just add the following line to the very top of your template: <?php header("X-Pingback: http://www.yourdomain.com/url/to/server/\r\n");?> where http://www.yourdomain.com/url/to/server/ is the URL of the pingback server.
If you can't use PHP (in this case I'm probably hosting the pingback server for you) you need add a <link>-element manually on all pages you want pingback enabled. You need to add the following in the <head> section: <link rel="pingback" href="http://www.yourdomain.com/url/to/pingback/server/" />. If you're using a blogging system you need to add that to the template for the individual entries.
Since you are posting an HTML file that contains your audio/video entry, you will need to mark the entry as an audio or video entry in a way that a computer can read and understand. There are two ways to do this: With a <link>-element or with a normal link (<a>). The <link>-element should go on the page with the individual entry. It would look like this: <link rel="alternate" type="video/quicktime" href="http://www.yourdomain.com/url/of/video.mov" />. The type should of course correspond to the type of audio/video, and the href should point directlyto the audio/video file. The alternative is to place a normal link inside the blog post pointing directly to the audio/video file. It would looks like this: <a rel="alternate" type="video/quicktime" href="http://www.yourdomain.com/url/of/video.mov">Watch my video</a>.
What you are doing is telling anyone who downloads the webpage that this webpage has an alternate version, and that alternate version is an audio or video file. That will allow pingback clients to distinguish between normal links and alternate version, and act accordingly (ie. download the webpage, but then extract the video and add that to a playlist).
The <link>-element is the best solution because it will only show up on the idividual blog entry page, while the <a>-element will also show up on monthly archive pages, front page and the like. At the same time it is most likely a lot of work to configure any blogging software to output these <link>-elements correctly, while adding the <a>-elements are very easy to add (because you add them to each audio/video entry yourself).
You need to send out pingbacks whenever you link to someone else (whether it's video, audio or text). Again this is easy for Wordpress users. Simple include a normal text link to the entries you are commenting on in your entry, and make sure the pingback checkbox is checked. Wordpress will then handle everything for you.
Everyone else must manually send pingbacks. For your convenience I have added the ability to send pingbacks in my pingback client. For now you will have to send each pingback seperately. The target is the permalink of the blog entry you are linking to. The source is the permalink of your blog entry. In the future it'll be possible to pingback several targets in one go, but this'll have to do for now.
And that's it! It's time to post and comment. Post a lot, and comment on the work of others. You can do text, video and audio comments as long as they're marked correctly (and as long as you remember to send the pingbacks).
While Wordpress is the only blogging system to support pingbacks the support isn't perfect. It lacks one crucial feature: The ability for other servers to retrieve a list of pingbacks recorded. Fortunately the Wordpress people are both very nice, and very fast to add features. Only two days passed between my asking about adding the feature on the Wordpress IRC channel to the actual code being written (thank you, Michel_V!).
The code is not yet in any of the stable releases, but I would like to ask all Wordpress users who wants to participate in my little experiment to download a nightly build of Wordpress from September 18th. Grab the xml-rpc.php from the zip file and use that instead of the one that came with your Wordpress installation (remember to do a backup!). You probably have to change line 6 from include('../wp-config.php'); to include('wp-config.php');. That's the price of living on the bleeding edge.
Finally I would like to hear from you if you want to participate. So shoot me an e-mail or pingback this entry (pingbacks are enabled, you just can't see them here yet). That way I know which sites I can test out.
I tested a first version of a video commenting system last week. As I'm writing this nine people have uploaded their own video comment to my original video. But as I've said before I'm a bigger fan of a distributed hyper-structure than a centralised linear structure like my first video commenting system. Just for fun I'll see if everyone can get the best of both worlds with version two. My goal with this text is to make a case for pingbacks and how they can be used to create a video commenting system.
The World Wide Web is a chaotic network of documents linked together by… well, links. If we have a random document (b) the connections would look like this:
There will be a series of documents (a) that have links to our document. And our document will itself contain links to other documents (c). With the web and our browsers work right now it's only possible to move right in the model. You start at a document where you can follow links to other documents, but you can't see which documents are referencing the one you're reading. I can't help wondering why this is has not been a part of the web forever. Only by going left in the model you can get an overview of a topic, and only then you can enable ‘conversations’ between documents.
That's where trackbacks/pingbacks enter into the picture. With trackbacks/pingbacks it is possible to contact a document (b) and recieve a list of documents (a) that have links to it. This is effectively a distributed comments system.
I'll focus on pingbacks for one simple reason: Trackbacks only works with HTML pages, pingbacks work with any kind of file. Since we are talking about creating a video comment system it only makes sense to talk about pingbacks.
Fortunately the pingback system is so simple that it should be a crime. Whenever you create or edit a document (eg. when you post a new entry to your blog) you send off small messages to the documents you're linking to. The messages are then picked up by the server of that document where they'll sit and wait to be retrieved.
In the perfect world your browser would then be able to display all the documents that link to the one you're reading in a sidebar (or whatever). In the real world only a very small fraction of servers support the pingback system, and an even smaller fraction of these support the part of the system that makes this possible. I have to start somewhere, and history shows that if you create a demand from users the people who run the servers/create the software will get up to speed.
That's all that's need really. If all servers and all software that create web documents supports the pingback system it is trivial to make a small piece of software that takes any document, retrieves a list of referencing documents and outputs a list of links. If you had this for all documents you would be able to go both right and left in the model above.
Out of the box pingbacks work just as well with audio and video files as it does with text documents. There are things to consider of course. If one of the goals is to make playlists of these files they must be able to stand alone without a containing HTML file. Our media players don't display HTML pages, nor should they. Therefore all relevant metadata must be saved in the rich media file itself. Otherwise it can't be displayed to the listener/viewer.
I have tried to figure out how to extract metadata from Quicktime files, but so far I've not been succesfull. It must be doable though. In my perfect world I would be able to save at least:
In the real world audio and video files are more often than not contained in HTML documents. It's much easier for the readers/listeners/viewers that way. They only need one program open: Their browser. If we are just making links from (b) back to (a) in the model above this doesn't matter. However for an automated video commenting system to work well it would be really useful not only to know that a reference exists, but also know what type of reference it is (text, audio or video). If you don't know what type of file you're fetching it's not possible to collect all video comments in a playlist for example.
If all files stood alone this wouldn't be a problem. Whenever a file is sent over the web a bunch of so-called headers precede the actual file. One such header (Content-Type) tells you what type of file is being sent, so it's very easy to distinguish video comments from text comments and vice versa. But if a reference is a video file contained within an html document there are issues. A model with the referencing document in the middle looks like this:
Suddenly there are two documents (one text, one video). The easiest way out of this problem is to treat the documents as alternate versions of the same document instead of two seperate documents. For that to work there needs to be links between the HTML document and the video file. The goal is that when you retrieve the HTML document you would know that an alternate video version exists (and vice versa). In HTML this is easy. You just add the following in the <head> section: <link rel="Alternate" type="video/quicktime" href="http://www.yourdomain.com/path/to/video.mov" />
For this to be 100% effective the video file would have to include a similar mechanism. For the time being no such mechanism exists. Instead anyone who posts their videos contained in HTML documents (that's probably 100% of all videobloggers) must ensure that pingbacks go to their HTML document and not directly to their video file! Then each HTML document must have the <link>-element so that it's possible for an automated service to find the alternate video content.
In fact, by using this <link>-element it would be possible to use trackbacks as well as pingbacks. Using the <link>-element should be seen as a patch-solution and not the real deal as it adds quite a bit of overhead (the HTML document would have to be fetched far more time than it would be viewed). On the other hand it is a nice compromise.
This is the point where I go to bed instead of finishing the piece. I thought I would be able to finish tonight, but I'm way too tired and I have to get up in the morning. Tomorrow I will finish up with all the good stuff: Automating the link gathering (ie. how to fetch all the videos), possible uses (like audio and video playlists) as well as a quick guide on how to turn pingbacks on.
The most obvious use for pingbacks is to simply show a list of webpages that link to the current one right there on the page — just like normal comments. Unlike normal comments visitors will have to follow links to read what people have to say. This encourages longer, more thought out comments than the quick fire-and-forget comments fields. A simple, first implementation would look like a list of Trackbacks (with the exception that not a lot of metadata (like author and an excerpt)can be displayed about videos at this point). Since all browsers have sidebars of one kind of another it would be a nice browser feature of the list of pingbacks would be displayed in the browser instead of on the page.
The next step would be to include information on what type of comment is being listed. For example a small icon could be displayed next to each comment.
And that's where the playlists come into the picture. When you know who have sent a pingback, and you know what kind of content the pingback is, you can easily make a playlist. You could either do this on your own server (if you have access to a programming language) or on a site like videoblogging.info. The process could go like this:
The format of the playlist needs to be somewhat standardized. For audio files I'm pretty sure M3U can be played by most players. For video SMIL is the obvious choice. If you wish to share your playlist with others it would also be trivial to server each playlist in the XSPF format for easy integration with services like WebJay.
It is the process of gathering links, sniffing for the content-type and finally creating playlists I'm working on implementing right now. The programming itself is not hard (school is just taking time away from sitting at the computer). The hard part is that currently there is not many pingback enabled websites and thus I hardly have any data to test with. Most importantly I don't have any audio/video comments to test my system with. More people need to pingback enable their websites.
You need to have two things to enable pingbacks. First you need to send out a notice with every document that it's pingback enabled, then you need a pingback server to save all the pingbacks you'll recieve.
The first part is the easy part. You have two options: Either to send out a custom HTTP header, or — with HTML documents — use a <link>-element. If you are on your own domain you can most likely add the HTTP header easily. It should look like this: X-Pingback: http://www.yourdomain.com/path/to/pingback/server/ This header should be sent out with every pingback enabled document.
If you for some reason can't send out the HTTP header you can use the <link>-element. Since this can only be applied in HTML documents it's less usefull than than the HTTP header. The link element must look exactly like this: <link rel="pingback" href="http://yourdomain.com/path/to/pingback/server/" />, or if you are not using XHTML: <link rel="pingback" href="http://yourdomain.com/path/to/pingback/server/">
If you are not on your own server (if you're using TypePad for example), you need to lobby your provider to enable pingbacks (and probably to provide a pingback server as well). The pingback specification as well as the information on pingback.extensions.getPingbacks(url) contains all the technical information. In addition to that you need to be able to add the <head> section: <link rel="Alternate" type="video/quicktime" href="http://www.yourdomain.com/path/to/video.mov"> code to your video entries.
Pingback servers require more work. If you're lucky you're using Wordpress as your blogging tool. Wordpress already has a pingback server included. There is only one problem with the Wordpress pingback server. It doesn't include support for the pingback.extensions.getPingbacks(url) function. This is crucial if you want to make playlists of video comments. I doubt it would be hard to write a plugin for Wordpress to add this function, but I don't have any experience with Wordpress so I can't write it myself.
If you're not running Wordpress, but you are a videoblogger I can help you out. As a part of my research I'm writing a pingback server, and I can provide pingback services for any videoblogger who wants it (I hope). So if you want to try all this out, but can't get your own pingback server up and running contact me and we'll talk.
If you're on a hosted service it doesn't make sense for me to run your pingback server. If your provider can be lobbied into enabling pingbacks for your documents they can be lobbied into providing a pingback server.
NB. I'm having trouble getting the videos in this post to play correctly. More specifically the video won't load ahead of time and so the playback might even completely finish before anything has loaded! A solution is to click play and then click pause when quicktime starts to load the first clip (you'll see a Quicktime loading screen when this happens). When the loading screen turns into a still frame from the video you are ready for playback. Simply start the video over. It's annoying, but it's all a part of my enabling of video comments on this entry.
This is my small confession. I was looking for a topic for my next video and Jay suggested that I made a confession. I thought long and hard about it and this is what I came up with. My goal was to edit things a lot more, but I have had the hardest time getting any kind of software to cooperate with me today. Rather that sit up all night convincing iMovie and Adobe Premiere to work I just scaled down the editing.
Play the movie (around 3 mb, Quicktime required).
It is possible to add video comments to this entry! Record your comment (your own confession or whatever) and upload it by filling out the form below. Only the last field is required, the other two are only used to give you credit. There are some guidelines:
I might close comments at some point. Mostly because I risk running out of storage space on the server at some point (it shouldn't happen any time soon).
Jay would like to have video comments on his weblog. What he proposes is simply the ability to attach a video file when filling out the comments form on a website. The topic has been raised on the mailing list before. I've said it before, but I'll repeat myself here: I'm not a fan of this solution.
There are obvious concerns with a feature like this. They all come from the fact that all the videos will reside on the original poster's website. Problems include bandwidth usage, storage requirements, spam (on older entries mostly) and last but not least: Copyright (the poster becomes responsible since everything is on his website).
What bothers me though is that there already exist technology to handle video ‘comments’ — technology that doesn't have these issues. It's not hard to slap an upload field on a comments form, but there is no reason to create problems where there is none to begin with.
The existing technology is either TrackBacks or Pingbacks. While the two are similar Pingbacks might be more interesting in this regard because they can be applied directly to a video file (TrackBacks can only be applied to XHTML documents). What TrackBacks and Pingbacks do is to provide a way for an author to let someone else know that they are talking about them.
For example: At the same time as I posted this message I used TrackBack technology to send a message to Jay's server to let him know I'm talking about him. As a result a link to this post should now be located on Jay's blog entry. Making references like this is a very important thing when trying to create a complete hypertext-map of subject. You can call it external commenting if you'd like. It's a fundemental part of a good hypertext structure.
So instead of collecting all the videos on the poster's website I would much prefer to have the ‘comments’ distributed on the commentee's own website. You won't run into the same bandwidth and storage trouble as every speaker in the conversation shares the bandwidth/storage. Spam is much less attractive since the spammer would be hosting their own video file — any income for the spammer would quickly be eaten up by their bandwidth costs. Copyright is less of a problem since everyone is responsible for what they contribute to the conversation. Legislation varies from country to country so it's impossible to say anything definite — you do have a much better case if you're not hosting the video yourself.
After any TrackBacks/Pingbacks has been recorded it would be simple to display these on the website based when they were recorded. That is after all how things already work. If more than one person links to Jay's entry the two or more TrackBacks would be displayed in chronological (or reverse chronological) order below Jay's post, creating the ‘conversation’ Jay wants.
Now I know what Jay will say. He will want a playlist so he can play all the videos in a linear, movie-like fashion. While this may be positive with some conversations it most likely would be pretty bad in most. This comes from taking a hypertext/media structure and trying to play it as one linear sequence. This isn't a problem if there is one main post and all comments are on this post, but this isn't a movie, it's the internet. What you will most likely have is person A creating a video that is commented on by B, C and D. D will also comment on E. E and F will comment on B and finally G will comment on F and A. You don't make an automated playlist of that. Instead you let the user (the reader) make their own navigation through the conversation, just like you navigate through webpages to create your own story.
If you want to make a linear movie, or a linear conversation you can do that of course. And if that's what you want you would be much better off with an upload field on your own website. But at the same time you would be throwing away all the advantages of the internet's hypertext structure. To me the advantages of a distributed comment system like TrackBacks/Pingbacks by far outweigh the advantages of a linear comment thread.
I probably have more to say on this topic, but I will stop now. This entry is much longer than I intended already.
PS. It is very ironic that I should write an entry about TrackBacks and Pingbacks when my own blog doesn't support either. Currently I can only send TrackBacks to other websites, but I neither recieve TrackBacks nor send or recieve Pingbacks. I am however working on it, and all should be possible by this time tomorrow (I hope).
This is the personal website of Andreas Haugstrup Pedersen: commentary on media, communication, culture and technology. Read more»