New Tutorial: How to Write an IRC Client in JavaScript

July 2nd, 2008 by Frank Salim

There is a new tutorial for Orbited 0.5 explaining how to write an IRC client with no server-side code! This is a good introduction to using TCPSocket for implementing clients for other protocols.

Shapes on a Plane

July 1st, 2008 by Jacob Rus

I’ve been making various little canvas graphics for an upcoming browser-based pure-JavaScript real-time multiplayer game, and decided to implement some shape primitives. Specifically, I created functions for drawing circles and regular polygons. Then, I decided I could use some curvy and straight stars, and, based on the regular polygon code, made two more functions, regularQuadraticStar and regularStar. Here’s an example of 50 of these shapes drawn on a canvas:

First, and most simply, a circle function. This one is not too much easier than just using the «context».arc function directly, but it makes code a tiny bit clearer, and also saves a couple of lines of code for each circle:

var circle = function (context, x, y, radius) {
  var c = context;
  c.beginPath();
  c.arc(x,y,radius,0,Math.PI*2, true)
  c.closePath();
}

Read the rest of this entry »

Orbited 0.5.0

June 22nd, 2008 by Michael Carter

You may have noticed the lack of a 0.4.x release. We tried to make a number of improvements for 0.4.x, but ultimately we never thought that branch was stable enough to release. The 0.5.0 release, on the other hand, is the most stable and feature-rich version of Orbited yet. This is a pre-announcement that should give you a day or two notice and some information about porting your app to 0.5. You can expect the official release announcement over the next couple of days.

While we still support the old orbited protocol, there are a couple of differences when using Orbited 0.5.x with 0.3.x applications:

Read the rest of this entry »

The Orbited Blog is Back Online

June 22nd, 2008 by Michael Carter

We had a number of technical issues for the past few months. Adrian Weisberg has recently taken over as the administrator and editor of this blog. Now that we’re back on track you can expect blog activity to resume.

Upcoming Orbited 0.4.0 information

February 23rd, 2008 by Michael Carter

The orbited 0.4.0 branch has been under heavy development for the past month and we are finally starting to near an alpha release. While this release won’t be immediately useful to Comet developers, it can give you a good idea of what will be in the final Orbited 0.4.0 release. There’s news on a new website, the ORBIT protocol, the STOMP Protocol, layered communication, CSP, Revolved, deployability, and the goals for the 0.4 branch.

Read the rest of this entry »

Your pyevent Worries Are Over

February 17th, 2008 by Mario Balibrera

One of the most frequent problems people have with Orbited generally surfaces before they write a single line of application logic — before, in fact, they successfully start the Orbited server for the first time. This problem is pyevent. It’s a brilliant piece of software, but many of us want to build small projects or simply prototype without having to install two sets of additional headers and gcc.

To most of you, I’m sure this doesn’t sound like a great hardship. Comet developers, however, are not most of anything. We’re strange people and we often work under strange conditions. My house loses its internet connection every few minutes; other developers are subject to the irrational decrees of their admins, or the arcane limitations of their indie operating systems. People have literally decided not to use Orbited because they couldn’t compile pyevent properly. We’re modern folks, and the rule is: make it work for everyone.

Read the rest of this entry »

Announcing Orbited 0.3.0

December 27th, 2007 by Jacob Rus

The Orbited team is happy to announce the release of Orbited 0.3.0.

Orbited 0.3 is an evolutionary update to Orbited 0.2, with several new and exciting features, improved stability and efficiency, and some groundwork for future improvements.

Most notably, the Revolved publish/subscribe system has been rolled into Orbited. To start it, visit `http://orbited_server:8000/_/revolved/manage/`.

Other improvements include:

Read the rest of this entry »

Announcing Orbited 0.2.0

October 26th, 2007 by Jacob Rus

The Orbited core development team is pleased to announce the release of Orbited 0.2.0.

Core Team:

  • Michael Carter
  • Jacob Rus
  • Mario Balibrera

Our Goals:

  • Support all major browsers without loading bars, clicks, or hour glasses
  • Create a standard, interoperable Orbited js library
  • Refactor transport architecture to achieve greater extensibility
  • Create a plugin system
  • Standardize logging / debugging output
  • Standardize the urls
  • Increase the separation of orbited sub modules

Orbited 0.2 is nearly a complete rewrite of most of Orbited’s internal components. It reorganizes architecture while leaving external interfaces nearly unchanged.

There are many great new features that will be documented over the course of the next few weeks via blog posts and updates to the core documentation. In particular, stay posted for information about the new plugin system. We provide a simple admin application as an example of how to create a plugin. Also stay posted for documentation on creating new transports by extending orbited’s Comet transport system.

We would like to thank the following contributors of documentation, patches, tutorials, and ideas for their time (in no particular order, and apologies to anyone we forgot to list):

  • Paul Johnston
  • Matthew Desmarais
  • Mike Zaic
  • Rob Morris
  • Alex Russel
  • Max Nickel
  • Christian Czura
  • Ciarán Walsh

Status of Orbited and AjaxExperience

October 4th, 2007 by Michael Carter

I just received word that my talk titled “Comet for highly scalable applications” has been accepted to AjaxExperience. From the look of it, AjaxExperience will be a much nicer conference than AjaxWorld, at least in how they treat speakers. I’ve had personal assistance with scheduling from the conference organizer and they are paying my airfare. I’ll be giving a similar talk to that which I gave at AjaxWorld. As I’ve mentioned before, you can find those slides here, and the speaking outline here.

Orbited is coming along nicely. I’ve gone over all the patches that were submitted in the last month. I accepted a few directly, but most I had to rewrite. The reason is that we are skipping Orbited 0.1.6 and moving directly to Orbited 0.2.0 as most of the codebase has been changed. There’s been a complete restructuring so it’ll be easier for developers to get involved in specific parts of the project without understanding everything. In particular, creating and understanding transports will be very straightforward and will not require changing the Orbited source. We also moved away from the pipe-based urls like “/location|user,session,transport” in favor of standard query strings: “/location?user=x&session=y&transport=z”. I personally liked the look of the old urls, but the end-user never sees them, so the result was that Orbited sometimes breaks ie with no tangible benefit.

Stay tuned over the next week for Orbited 0.2.0. We’ll need help porting the documentation, though only minor changes will be needed in the javascript and application code.

Good Advice

September 13th, 2007 by Michael Carter

I chatted with Rob Morris this evening via the orbited livehelp demo. He later joined us with a real irc client on freenode (you don’t actually have to use the livehelp app to talk to us. Just join the irc chat.) He had a number of questions that were particularly good, so I asked him to send me all of his thoughts / concerns about orbited in an email. Within an hour he sent me an email with a list of points, all of them very valid. The list is so great that I decided to post it here. To some extent I think you can treat the coming responses as a todo list for the Orbited development team. I’ll answer some of them in my blog, but primarily I want to make the answers more accessible directly from the orbited page.

Note that I’m not suggesting that all of these are open questions — far from it. Rather, not all of these questions have answers that are accessible without reading the mailing list archives, reading this entire blog, or talking with us directly. Without further adieu, here’s his email:



So, here are my thoughts right now. This is basically a brain dump of what my concerns are after a day of looking at and playing with Orbited.

I’m sure I’m missing obvious things, and that some of my concerns aren’t valid/relevant. Take with a large grain of salt!

Documentation Gaps

Lord knows, this is a big one, but here are 4 that jump to mind.

  1. You talk about lots of methods of connecting (iframe, iframe-domain, etc) but no where is there a list, with pros & cons.
  2. The config file is not documented that I could see. That’s kind of a must.
  3. Javascript how-tos related to Orbited would be very nice. Should be possible to build a nice JS library to do simple stuff. Until then, what is the domain of JS problems that a user would need to address to use Orbited in production?
  4. Quick overview of JSON and how you’d use it with Orbited (this is not a universal tech yet, and for those that aren’t familiar, it’s ominous and scary without an introduction).

Support Issues

  1. What browsers fail? (no javascript, no XSS support, IE trusted site issue… others?)
  2. What net connections fail? (bad/old proxies? restrictive firewalls? HTTP 1.0 only nodes in path?)
  3. Other failure cases for users?
  4. What are the server requirements? (run a dedicated orbited daemon, external port, many cheapo hosting plans don’t like this)
  5. How stable is the Orbited protocol? The apis? What’s the roadmap?
  6. How stable is Orbited itself?
  7. What kind of load can it take? Any metrics? X simultaneous connections on Y hardware?

Best Practices

Basically, I’d like to see a map of what a real production Orbited deployment would look like. At the least, you need to address the following:

  1. How best to handle authentication?
  2. Data scrubbing/security: <script>alert(’We have a problem’);</script>
  3. What’s up with the Loading… title and hourglass cursor? How do I avoid/minimize these? Leading to…
  4. Diff connection models, which is preferred? Why? What is required above and beyond the basic model?
  5. Scaling overview: what would this look like for a meebo-sized website? What would be required (broad brush strokes, discussion of issues to be addressed)?
  6. Failure modes: what happens when orbited dies/restarts? Is there a way to rescue the nodes? (ie track all chat messages in DB, resend state as needed, some sort of javascript reset handler for iframe?) What should I do as an orbited dev to minimize fallout from failures?

Other Issues

  1. You need a wiki. :-)
  2. You need info about yourselves, including contact information. Anyone looking to use an open-source app is buying into not only the tech, but the team behind the tech for support, leadership, etc. At least an email address! I had to get yours from the google group.
  3. A list of what to use this stuff for. Chat is obvious, but you can do better than “any app that needs lots of real-time communication”. Give folks a reason to get fired up. Collaborative document editing? Games? Sports scores? LiveBlogging? What are some things you envision to get folks started using the tools?
  4. The Projects link in your site nav bar is broken, goes nowhere.