The definition of Comet?

by Greg WilkinsJune 16th, 2008

In recent weeks, there has been an ongoing battle at wikipedia over the definition and details of the Comet (programming) page, with the end result being that a 6000 word page on the history, techniques and implementations of Comet, has been cut down to three sentences that barely define what Comet is.

Much of this dispute has been due to culture clash and strange wikipedia policies that result in the contributions from those with direct experience in Comet having their contributions devalued due to fears of advertising and conflicts of interest, with the result that the text that is favoured is written by people without Comet experience?

However, at the root of the issue is that there is no really good definition of what Comet is! I think some of the contributors to the wikipedia page were hoping that it would become that good definition, but there is a wikipedia policy that prohibits any original thought, so any clarification of the term cannot be organized there.

“Ask Alex Russell for the definition, as he created the term!” I hear you say. Unfortunately, as far as wikipedia is concerned, we can’t look at the creation of the term by Alex, as he is apparently a self publishing non-notable tech blogger (in wikipedia terms), and thus the original blog is not a sufficient citation. In some part I agree with wikipedia on this, namely that we should look to current usage rather than historical intent when seeking a definition of what is and is not a Comet web application.

Thus I’d like to pose a couple of questions in this musing about the definition of Comet:

Is Comet Ajax, or just Ajax-like?

This question goes somewhat to what is the definition of Ajax. But if the use of plugins such as flash or applets is sufficient to render an in-browser application non-Ajax, is it enough to render it also non-Comet? In Alex’s original blog, he only describes Comet as Ajax-like. Does the display technology of the application have to be Ajax? If Cometd was used to deliver events to a Java applet, would that application be Comet? Is it simply sufficient for the communication to be delivered to an Ajax capable environment (i.e. JavaScript callback) for it to be Comet?

Is Comet HTTP only?

The original definition, and many Comet articles use the phrase: “long-lived HTTP connections” to describe Cometd transports. Can a Comet application use a raw TCP/IP socket from flash and still be called Comet? Can a Comet transport used the FTP protocol from the browser and still be called Comet?

Does a browser have to be involved

If Bayeux is used to communicate over HTTP to a non browser client (e.g. a Java swing application), is that Comet?

Does any of this matter?

Ajax itself is probably not the most well defined term. Is a good definition of what Comet is needed (other than to permit a more complete page to be created on wikipedia)?

My opinion

In my not so humble opinion, I believe that a good definition is Comet could be: “An Ajax web application that uses open standards based protocols to transport asynchronous events from the server to the client with minimal latency”. I like this definition because declaring Comet as a subset of Ajax means that any browser developments that become an acceptable part of Ajax, become an acceptable part of Comet. I also believe open standards are important for Ajax, and thus should be important for Comet. Using flash plugins would render a transport to be Comet-like, but not Comet.

To answer my questions above:

  • Comet is a subset of Ajax
  • Comet is not HTTP only, but it does need to use an open standard. FTP and BOSH would qualify, but something over a raw TCP/IP socket would not, unless socket access became part of the browser.
  • Comet is to the browser. A swing client using Bayeux would be using a Comet transport, but would not itself be a Comet app
  • Not really, but I’d like to hear some feedback and alternative thoughts anyway.

17 Responses to “The definition of Comet?”

  1. Martin Tyler Says:

    My opinion:

    I think the client has to be a browser, this part I am certain of.

    Display technology and transport technology I am not so certain of. I think the idea behind the Comet name is for HTML based displays - since Comet is about interactivity of the page (specifically server driven events), and other display technologies like Flash/Flex are naturally more interactive.

    As for transport technology, this is a grey area for me. I dont think using something like flash or java for transport purposes goes against the idea behind Comet at all, but it does muddy the waters of the Comet definition.

  2. Geoffrey Lee Says:

    “that uses open standards based protocols”

    As you said, this is important, but that doesn’t mean it’s necessary. For example, Ajax’s XMLHttpRequest is a proprietary IE feature.

    Here’s my personal opinion:

    “Is Comet Ajax, or just Ajax-like?”

    Ajax-like. It’s not necessary to use Ajax technologies to achieve low-latency communication. But then again, the definition of Ajax itself is murky.

    “Is Comet HTTP only?”

    Yes - Comet technology was intended to circumvent the limitations of HTTP. If we bring other protocols into the fold, then we risk diluting the definition into simply being “push”, at which point the definition becomes pointless.

    “Does a browser have to be involved”

    Yes, by argument of Comet being HTTP only.

    “Does any of this matter?”

    Yes and no - No single person or group can enforce a definition unless it’s composed of facts. In the end, it comes down to mainstream consensus on a definition, and that’s the nature of human language.

  3. DylanSchiemann Says:

    Problems with the Wikipedia process are apparently quite widespread. Simon Willison’s blog discusses the issues, and a length discussion is currently taking place at reddit.

    Tim Bray has a post about Deletionist morons, and the same situation with respect to _why, a highly relevant member of the Ruby community. As James Bennett says:

    The thing I learned from my first couple of forays into more “serious” use of Wikipedia is that there is not one Wikipedia. There are two:

    One is the public-facing reliable-enough-on-average encyclopedia that people read every day, which makes for nice fluff pieces in the media about “these new Web thingamajigs that the kids are building, aren’t they neat?”

    The other is the insular behind-the-scenes bureaucracy, which reads like an improvised performance of the collected writings of Clay Shirky.

  4. Mete Atamel Says:

    The only reason why we have Comet is because HTTP is a request/response standard between a client and a server. If you look at different Comet technologies, all of them do the same thing. They go beyond the traditional HTTP response by either delaying it (i.e. long polling) or by keeping the response open (i.e. streaming).

    My definition of Comet is the following: “Any HTTP based technology that tries to improve interactivity between a client and a server by modifying the traditional HTTP request/response paradigm”.

    I know this definition is a little open ended but I think it captures what people are trying to do with Comet. So according to this definition, answers to the original questions are:

    -Comet is NOT a subset of Ajax. The problem Comet is trying to solve applies equally well to Flash/Flex clients and Comet has been used in these technologies to address these issues. One example is Adobe Flex/BlazeDS.

    -Comet is HTTP only simply because the need for Comet arouse from HTTP request/response model.

    -Comet is NOT to the browser. Adobe AIR is an example where a desktop application might need Comet. To me, any client that uses HTTP can potentially need Comet. I just don’t think that Comet should exclude non-Ajax and desktop clients. Comet is a technique that can apply to any client that uses HTTP.

  5. Robert Says:

    Your totally right about Wikipedia. It’s a complete and total disaster over there.
    I laughed out loud when I saw that the so called ‘editors’ who have no experience with comet nor ajax labeled ajaxian.com as ’some guys blog’.
    There are so many power hungry editors over there that slaughter page after page after page of content. Content that they have ZERO knowledge about themselves. They just go around, find anything that doesn’t match perfectly every single rule and remove it.
    Their main tools tend to be ‘Conflict of Interest’ and ‘Verifiable’.
    If you post content that your an expert on, it’s considered a conflict of interest unless you can point to some other source that you have zero ties to at all that backs you up.
    It seems the only content they want on Wikipedia is content that has been written multiple times by multiple independent organizations or groups.
    Sadly these so called ‘rules’ reduce Wikipedia’s value greatly. It also tends to piss a lot of people off :)

  6. Comet Daily » Blog Archive » Enough Already with the Connections! Says:

    [...] before we all go renew the battle of Cometd at wikipedia, we should realize that the reason that wikipedia has these incorrect definitions, is that almost [...]

  7. anjan Says:

    Here I’m trying to understand how streaming works or how long polling works and how to implement it and so on… basic level stuff.
    And here I’m trawling the net in the hope of enlightnment……
    And Mostly all I hear is ‘COMET-the glorified word’ and a bunch of people (Or shall I say the same bunch of people over and over) indulging in arguments and discussions that pack no punch. The whole comet community ( which comprise of the same bunch of people by the way) seem to love indulging in discussions that goes nowhere, which points out that the elitist bunch of people in question just seem to love to hear themselves talk and push their own personal agenda’s disguised as collective good in the name COMET - or push the agenda of the company they own or work for.
    There’s no glory in discussions without conclusions….. and as they say ‘every donkey loves to hear themselves bray’….
    Will comet server and client implementaitons suddenly stop working if one fine day some mysterious divine force changed the definition of comet in texts found littered in the internet written by glorified enlightened elite bunch of people??
    What if the same divine force decides to take the joke further and twist the definition of comet in the heads of that the bunch of people -who seem to own the very word ‘Comet’ by the virtue of being in that bunch?

    Is that going to change anything at all?? Except well, confusion, that too only for the bunch of people in question.

    I for once coudn’t give a rat’s arse ( excuse my chinese here) as to how Comet gets defined as long as I can push data to browser from server when I please.

    And to give everyone in that elitist bunch a different perspective here’s some food for thought:

    In Nepal from where I come things work bit differentlly.
    We aren’t obsessed with definitions, the same way we aren’t obsessed with words. Language serves us and not the other way around.
    To drive my point, we don’t have names for everything.
    When people talk about ‘coffee machine’ we don’t generally call it ‘coffee machine’, in our conversations we just give it alias and call it ‘ That thing to make coffee with’.
    And Toaster will be called ‘ that thing to toast bread with’.
    It sounds silly in English, but that style of naming things without naming things has a natural flow in our language. It sounds as good as saying ‘coffee machine’ and u can bet your arm n legs that people won’t try to correct you and force you to use the right term or name.
    You see our cognition is not hindered by lack of specific words. And we all know damn well that toasters won’t start spitting out coffee just because we mistakenly call it a ‘coffee machine’.

    So, back to my original question,
    –Will comet server and client implementaitons suddenly stop working if one fine day some mysterious divine force changed the definition of comet in texts found littered in the internet written by glorified enlightened elite bunch of people??

    And like I have come to know, server push was there long before there was ‘Comet’.
    If comet is a term for a technology has been there for a while, isn’t it true indulgence to try to put the good old whisky in a new bottle and fight over the name?
    And isn’t it indulgence that in the process of giving new name to the good old whiskey, the conjuror of the new name even try to change the definition of whiskey itself to some degree??

    My oh my, this is one complicated world….. I think its a signal for me to hang my programming boots and give myself a new name and find a new job…
    And my name will be ‘that dude that tried hard to understand the elite world of comet and hung his boots in frustration’.
    And I have great flexibility here. while I’m looking for new job in new profession , my name will be ‘that dude that tried hard to understand the elite world of comet and hung his boot in frustration and is in process of finding new profession’.
    Later on say I got a job as a cleaner, I can realign my name to ‘ that cleaner dude from Nepal’. How simple.

    You see, life can be simplified. u just have to find different angles and perspectives to tackle complexities ….. with minimal indulgences………

  8. anjan Says:

    And by the way, I’m surprised that people like me who is so outside the elite circle can post comments in this site.
    Maybe its time to give censorship a new name - maybe call it meteorite- just for the glory of the word and in hope of leaving a lasting legacy in this world by adding another fancy word to the dictionary that already contains that word by the way- and define meteorite protocols.
    We in the geek world love words like protocol and words like architecture … anything that sounds fancy.

    The algorithm of meteorite protocol can be damn simple.
    if( ONE_OF_US)
    Allow indulgence
    else
    Shoot the bugger

    Maybe meteorite or censorship can be added as a protocol to comet architecture. Then the glorious comet community will again have something to bitch about. Oh, how wikipedia got the whole definition of meteorite wrong ….. and blah ri blah..

    By the way , I’m thinking of cooking up my own messaging protocol.
    And I want to call it ‘Black Hole’.
    It will be true to its word and no wikipidia or fools can change the definition because it will literally behave like a blackhole in that data that gets transported using applications that implement this protocol will never see the light of the day again…everything will be consumed by the appliacitons developed using the protcol.
    It will be true to its name.
    And I have already found plenty of interested parties… namely governments.
    People can lodge complaints online about all aspects of governance of governments and the web application’s underlying protocol makes sure that those complaints never see the light of day….. such a wonderful thing….
    Personal glory is such a sweet thing……. I love it… i indulge in it….

  9. GregWilkins Says:

    Anjan,

    what was that you couldn’t give?

    oh yes - a “rat’s arse”! I think you meant to say that you didn’t wish to exhange that thing in the back of a small furry rodent that is used for defiication.

    I think some inner circle of elite linguist must have decided that transactions conducted in rodent ani are equivalent to things one cares little about. Obviously you care so little about what comet means, that you searched google, read many articles and then posted two long rants on this site. Your level of care is obviosly so low, you could parachute out of a snake arsehole and still free fall!

    Wow is the no end the the levels of communication that can be achieved with rectal terminology? I think not. I bet you will understand perfectly what I mean if I just say: “arsehole!”

  10. anjan Says:

    Greg:

    Its funny how different techniques and tricks have to be employed to catch attention.
    At least now I know how to get some response from the so called Comet community.

    If u read my comments as RANT, too bad u lack judgement… if you read it without getting worked up - it reads FRUSTRATION with all letters in capital.

    At least it seems true that the elitists i mentioned in my rant have a tight grip on that thingy called comet and they seem to own the very word and anything to do with the word.

    Sometimes communication with rectal terminology makes whole lot of sense than self-indulgent gaffs from a bunch of elitist whose reckon they have a mission to change the world and they-and-they-alone can accomplish such feat.
    Give me talks full of rectal references and defication any given day, if I have to choose between that and awful talks full of technical jargons that requires another elitist to write a complex decrypter to take the message to the general mass.

    I haven’t seen a worse community than this so-called comet community. If all open-standard proponents and communities were half as bad as you guys are, we’d still be running using 5-10 ton computers to do simple mathematics.
    Because, we’d be goin nowhere…
    Indulgence never changed the world. But I bet you want to be around to claim credit for all server-push technologies that mushroom out.
    Because you can scream - One of us coined the term, and we spend endless hours gaffing about what the technology should be called, what should be its definition - is it HTTP request , is it HTTP connection, does it fall from the sky, or does it free-fall from a snake’s ass and so on…

    Oh, by the way, if snakes live as high up the bunch of elitists live, I can gurantee that I can free-fall from a snake’s arse and never actually land.

    And I bet if i check the comet sites and blogs around, you guys will still be fighting battles (Battle of Bayeux - hmm…) and still indulging in discussions in the hope of outsmarting and outdoing one another……

    And yes I perfectly understand what you mean when you said: “arsehole!”.
    Unless arsehole has been coined as another messaging protocol by some self-proclaimed experts who think they have a mission in this world and they and they alone -without the not so smart programmers and developers that are supposed to implement the so called protocol - can accomplish the feat of changing the world.

    A kindom without people ,…only king, his family, courtiers, and some clown to amuse the king… sitting in the court all day and holding discussions in a language only they understand …

    That sums up the whole comet thing for me….

    The king and his jesters should go out and see the world… ……

  11. MichaelCarter Says:

    anjan: I really like how you’ve illustrated your perspective — I don’t think you are the only one who sees the Comet community this way. We are all figuring out what kind of content to put on Comet Daily. You see, we have a very diverse audience. Some of the readership isn’t interested in the technical aspects of Comet. As for the Battle of the Bayeux, we could have done that over the phone or an email list, but we figured that we might as well let readers in on our thought process.

    Personally, I’m just trying to build the best Open Source browser push stuff possible. You should come hang out in our chat room #orbited on freenode (you can use http://www.orbited.org/wiki/LiveHelp). We talk all the time about the specifics of implementing the various transports, as well various applications we’re building.

  12. DylanSchiemann Says:

    @anjan: As Michael said, some of the articles here are intended to engage people or explain something from different perspectives. The Battle of the Bayeux was inspired by a feature of an investing web site in the US, where people quickly debate opposing points of view. It was an intentional attempt to explain a topic that’s pretty complex.

    The purpose of this post in particular was because of a dispute on Wikipedia. Believe me, we’d much rather spend our timing improving low-latency data transit to and from the browser than having philosophical discussions.

    If you have a specific set of questions, we’d all be happy to try and answer them. Tell us what you’d like to know about in order to build a better web app… if we have something useful to add, we’ll do so.

  13. anjan Says:

    Michael Carter , Dylan Schiemann -Thanks for the response and thanks for the offers to help me out and also for the invitaiton to the chat room. Much appreciated.

    I believe the first step towards solving a problem is ‘acknowledging there’s a problem’ and I’m glad that at least there’s some acknowledgement on the existence of the problem.

    I’m pretty sure that Greg doesn’t see things much differently on this matter, if only that furry rodent hadn’t caught all his attention……. :-)

    I was kinda afraid that I would have to face the wrath of the whole comet community for my sarcasm and criticism and I was thinking I might need to spend considerable time responding to all the indignant outpourings, not that I intended to wage a fruitless war here.

    My first year as a developer, I was doin mixed job, I was working on swing-based CRM and a few Database-driven PHP applicaiton. And around that time, I hated javascript. I tried to avoid having to use javascript as best as I could. 6-8 months down the line I decided, like it or not javascript was necessary evil and I started looking around for good tutorials and articles.
    I came across a tutorial on Prototype library written by Sergio Pereira. That pretty much changed the way I looked at javascript. His article was so enjoyable I was reading his article and laughing by myself in the middle of the night.
    Since then, I’ve been diving into javascript using libraries like YUI , JQuery ,TinyMCE (although not Dojo yet )and writing up my own utilities and small libraries as required.

    Now, before anyone start wondering why the hell I’m giving my background and describing my late night experience reading an article.
    Its because the amount of effort Sergio put in to write a tutorial for a library he didn’t write and make it so thoroughly enjoyable is very commendable. By getting an insight into Prototype library, i got an insight into Javascript and made me realise Javascript isn’t such a mean-evil thing as I believed it to be. I owe that to Sergio, although I haven’t been such a good boy as to thank him for it…..

    So, if comet community had spent some time and effort in educating the mass to some extend rather than drowing themselves in abstractions , then those educated mass might have felt compelled to write up tutorials with varying levels of complexity and entertainment values.
    Whatever it takes to ensure comet community is a happening community with actual community following…….

    A month back I did offer to write up some tutorials if someone helped me implement what I needed. http://cometdaily.com/2008/03/27/colliding-comets-battle-of-the-bayeux-part-7/

    As for now, Since I’m not trying to change the world, I have thought up a solution that will cater to my need. Since our main applicaiton runs on port 443, I can run any server I please for server-push on port 80 and not worry about firewall and proxy issues.
    All I need is is a socket on the browser, and I have ppenty to choose from, Flash, Java Aplets, or Michael’s Javascript socket :-)

    Although I have my own reservation on using exception as part of the rules of my applicaiton, I would still like to build my server applicaiton on top of Jetty if Gerg doesn’t mind :-)

  14. GregWilkins Says:

    Anjan,

    Of course I don’t mind if you use Jetty and I would certainly help you where I could.

    As you have felt free to criticize with pretty robust style, I hope you do not take my equally robust response to mean that I would not engage with you as I would any other member of the community, when it comes to technical questions etc.

    However, when you say: “had spent some time and effort in educating the mass”,
    it is true “we” the comet mafia oops I mean family - have genarally done a poor job of documentation and education. But effort is being expended - both within individual projects and with cometdaily to improve documentation and education. However, we also need to clarify some of the language we use and the mixed messages that we are sending - and hence the are some public articles to that effect.

  15. anjan Says:

    Just to clear some misunderstanding,
    I enjoyed reading the ‘Battle of bayeux’ series, and its a great thing to have open debate on issues.
    And I’m glad that it was done publicly rather than through personal emails as it does shed some light on the whole comet thing and it gives insights into the brains behind the movement too :-)

    Its just that I couldn’t resist bringing that in to drive home my points :-)
    Sorry guys.

  16. anjan Says:

    Greg,

    Firstly, congratulations on your work on Jetty, I’m looking forward to hacking into it.

    And I did enjoy reading your colorful response, and I appreciated your confidence in me in being able to understand the word ‘arsehole’.

    Keep up the good works.

    Meanwhile what are the chances of me being able to get my hands on a proof-of-concept tutorial/article that doesn’t require Dojo, Jetty, Grissly and DWR ?
    Client-side implementation in plain javascript and server-side implementaiton in plain java.
    In other words, that doesn’t use anything out of the box……
    I realise that javascript side may get messy and might be beyond the scope of a simple tutorial…..

    Just wishful thinking on my part……

  17. Suzanne Says:

    Hi I’m a novice In Server Programing.

    And I’m currently working on project that works like Jotlive.
    I used GWT toolkit to create the drawing interface, can someone help me or give a guide or advice me on some books I should used to create the Client server communication using the Server Push Comet?

    I will be vrey grateful.


Copyright 2015 Comet Daily, LLC. All Rights Reserved