The Internet Chess Club, Simplified
I could never have summarized the problem better, or asked for a more fitting introduction than Susan Hurst's entertaining article regarding chess on the Internet.
In her article Ms. Hurst introduces the intrepid hero MateMe, whose initial encounters with the Internet Chess Club are so traumatic that she eventually sells her computer and leaves the online chess community behind. MateMe was trying to learn the absolute basics about chess, yet this powerful online resource was simply too intimidating to help her.
Novices are not the only ones who turn away from the Internet Chess Club (ICC) in confusion. Anyone would be overwhelmed when first confronted with ICC's barrage of information-and rightfully so! Yes, ICC does offer helpful advice-as well as online tournaments, lectures, potential friends and the world's longest ongoing series of skittles games-but all that is thrown at the newcomer in such a surge that it's usually easier to walk away and settle for something smaller.
Five years ago, I made my own first cyber-steps through the ICC door. Picture me as I pictured myself then: confident and eager, with years of experience in the game and even longer as a computer programmer and Internet power-user. Online chess, I reasoned, was the natural evolution of the game-and in my opinion ICC was the clear-cut winner for the Place To Be in the chess world. I wanted so deeply to participate in ICC that even weeks of confusion couldn't drive me away. I read the online documentation. I talked with the administrators. I observed countless games and participated in the IRC-like chat sessions. I frequently left in frustration, yet again and again I returned eagerly, always ready to give ICC one more chance. I forced myself into ICC because I quickly realized that if I tried to ease into it, I'd leave and never come back.
The problem with ICC isn't the content or the people; it's the software. ICC participants use a special-purpose piece of software called a client. It is the role of the client software to display chessboards and let you move pieces, to show you the ongoing chat session and to help you navigate the myriad choices that the chess club offers. There are actually several different client programs available for ICC, but easily nine out of ten ICC members use the official ICC client software, BlitzIn.
BlitzIn is actually a fairly good program. It exposes many different ICC features, is very stable, and has a team of capable developers behind it continually fixing problems and adding new features. Many ICC members swear by BlitzIn, and react violently to the mere suggestion that another interface might be preferable-that kind of popularity clearly signifies that the software is doing something right.
However, BlitzIn was never intended to be easy to use, and its creators clearly did not consider how ICC strikes new users. The very first window that BlitzIn opens-a congealed mishmash of buttons and text-entry fields-is confusing enough to scare away most newcomers immediately. Moreover, BlitzIn was not designed to be extended or customized. It offers a small selection of built-in playing boards, and you can change the text colors, but that is essentially the full extent of its forward thinking.
I played on ICC as a guest (a non-paying member) for a full year, learning as much as I could about the club and the software, before I finally couldn't stand BlitzIn any longer: it simply had to go. I joined the club officially, wrote to the ICC administrators to see what kind of programming specifications they had for their server, and set to work.
A week later I had a specification from ICC Headquarters; two weeks after that I had an idea, and six months later I had a design. I picked a name for the new program, sketched out the new architecture on a dry-erase board, and started programming. As a hobby project it was one of my largest, requiring over a megabyte of source code and five megabytes of graphics and sounds, and consuming every minute of my free time for a further seven months. The core communications package alone was more ambitious than most of my other hobby programs in their entirety.
As I mentioned earlier, I am a professional computer programmer. I've worked for many different companies, including both IBM and Microsoft, and enjoy the work so much that when I leave the office I go home and write more programs. (My wife is a very understanding woman.) Much of my hobby work is basically slapdash, small programs never intended for use by anyone other than myself. Certainly it's rare for me to spend even a full week-much less six months--designing a project before I start writing it.
I had two primary goals for this new program: it must help new users become comfortable with ICC, and it must be highly extensible. If it were easy to use it would occupy a niche that BlitzIn didn't; if it were extensible users could easily pick up new features as I had time to write them. The secondary goals sounded like a string of industry buzzwords: I wanted it to be attractive, intuitive, customizable, stable-all the things you would expect from any piece of off-the-shelf software. Nothing less than the best, subject to the restriction that I only had sparse free time and no one else to help me write the beast.
Coming up with a design that merged all those goals into a coherent whole took a long time. Implementing that design took even longer. I had been actively writing code for three months before Icarus was far enough along that I could start using it instead of BlitzIn to play on ICC, and it was another three months before it was ready to beta-test. Finally, after a month of testing, it was ready for the general public.
Icarus presents the Internet Chess Club much more gradually than BlitzIn does. A series of wizards walk new users through the basic concepts of the club, asking only the most basic questions and customizing itself to a user's experience level. The primary sections of its interface are intentionally laid out in a very rigid fashion, so that it presents ICC in a consistent manner and windows never get "lost". The display is uncluttered, presenting only relevant information, and help is always just a step away. The most important aspects of ICC-playing and watching games, talking with other users, examining past games, etc.-are all simplified in little ways: controls customize themselves automatically based on what the user is doing, popup dialogs help simplify complicated tasks and so forth. The overall impact is of a program that's very simple to use yet has all the important bases covered.
Nonetheless, most of that six-month design session involved working out a scheme for making the new client extensible and customizable. My fear was that, as new users became comfortable with ICC itself, they would want more features from their client software: new choices for graphics and sounds and new ways to interact with the chess club.
Making the program customizable was easy. When I wrote the graphics core for Icarus I made sure it was extremely flexible. Anyone with a paint program can create new piece sets and playing boards, and Icarus will pick them up automatically. The sound core worked the same way: copy in a new wave or MIDI file and Icarus will happily add it to its feature set, letting you choose the sounds and music you want easily. The current Icarus distribution contains over 45 different chessboards, over 30 playing piece sets and over 150 sound files.
Making the program extensible was much harder. From the outset I designed Icarus around a plug-in model. The basic application is fairly small, but it supports any number of drop-in pieces that add new features. For instance, the playing board display is written as a plug-in, as is the support for sound effects and background music. By writing the program in modules, I hoped to lay the groundwork for a continual stream of new features: improvements that I, or anyone else, could write as needed. Importantly, I taught Icarus to occasionally check on the Internet for upgrades-fixes and updates that it can download and install with just a button click.
If you look at Icarus today you'll find a very rich set of features, many of which BlitzIn doesn't even try to support. For example, Icarus can record lectures and play them back online. If you were taking online lessons you could record your tutoring sessions and watch the games and analysis over and over, move by move and comment by comment. Icarus can publish a computer opponent onto ICC for other players to play against (or for you to play offline). It even has a "chess phone" to let you use your microphone and headphones to talk with other Icarus users live, anywhere in the world. To be fair, BlitzIn has a few features that Icarus doesn't; neither program is right for everyone. That is as it should be; the two programs are intended for different audiences and have very different goals.
It would be dishonest not to mention that Icarus is not free: it is sold as shareware for $20. Actually, that aspect has generated more hate mail than I ever expected; it seems there is a general rebellion against authors asking people to purchase the software they use. Icarus is fairly forgiving shareware anyway: it never expires, so you can use it forever without ever registering it-the only real incentive is that Icarus withholds a small set of features from unregistered users. I consider the registration fee more of a tip than a purchase price: I'll never make any significant money with Icarus, and never expected to. Primarily I just like seeing the program used: it's very rewarding to be talking with or playing against another ICC member, and to realize we're both using the same client.
If you're interested in trying Icarus, just drop by my web site: http://www.randomly.com/icarus. There you'll find screenshots, information and a download link. My username on ICC is "random"-drop me a message and let me know how it works for you.
I'll see you in the chess club!
"He who fears an isolated queen's pawn should give up chess". Siegbert Tarrasch
"The most powerful weapon in chess is to have the next move"! David Bronstein.