Wednesday, October 28, 2009

Section 3.1.  What Is Hyperbola?










3.1. What Is Hyperbola?


Hyperbola is an instant messaging chat client developed expressly for this book. The instant messaging domain is compelling because it is simple and easy to understand. In fact, you most likely have used an instant messaging client at some point. Whether it is Yahoo messenger, AOL instant messenger, MSN messaging, or Sametime®, the idea is basically the samethe client connects to a server, which routes messages from one client to another.


What's so interesting about writing yet another chat client? Even though the idea is straightforward, instant messaging clients themselves are rich in challenges and feature needs. Enumerated below are a few of the challenges in putting together a full-featured chat client:


Third-party libraries Writing a messaging library is time consuming at best. Rather than writing your own, most prefer to use one crafted by experts. Hyperbola is no differentit is based on the Smack eXtensible Messaging and Presence Protocol (XMPP) messaging library from Jive Software (http://jivesoftware.org).

Extensibility Simple instant messaging is quite straightforward. Hyperbola, however, is based on the Internet Engineering Task Force's (IETF's) XMPP messaging standard that evolved out of the Jabber protocols. Remember, the "X" in XMPP is for eXtensible. And it certainly is that. There are XMPP extensions for multi-user chat (MUC), file transfer, eXtensible HyperText Markup Language (XHTML) messaging, user location, and so on. This implies that a full-featured chat client must also be extensible.

Varied execution environments Instant messaging is pervasive. People use it from their desktops, handhelds, cell phones, and integrate it with other applications. Servers and other machines use it to alert administrators, etc. The challenge here is to write a client that is useful in as many of these environments as possible.

Update Given that the domain is so extensible, the ability to update a deployed chat application's existing capabilities and add new capabilities is crucial. Updating should happen with minimal intrusion on the use of the running client.

Complex workflows The domain is simple, but it gives rise to some interesting work and execution flows. Even simple things like logging on can be complex and messaging is inherently asynchronous and decoupled.

Customization Chat clients seem to be quite personal. Everyone likes to customize them. Whether you are the end-user or product designer, customizing the look and feel is becoming mandatory.

Generic Perhaps the most compelling part of the instant messaging domain as an example is that many of the challenges described above are relatively genericyou have probably identified with at least some of these as you read the list.


Stepping back and looking at these challenges, you should notice that they are driven by the richness of the domain rather than the details of the infrastructure. That is, the Hyperbola example highlights that RCP is easy; it's the domain that is hard.












No comments: