Tim Mann's Chess Pages

XBoard Project History

The following is an interview that Frank Quisinsky did with me for his Web site. Someone mentioned to me that Frank didn't have this up on his site anymore, so I've put it here. Some of the information is now rather outdated. I am no longer actively working on XBoard and WinBoard, but others have taken up the mantle. See the GNU XBoard project pages for current information.

Frank Quisinsky interviews Tim Mann about XBoard and WinBoard

2 April 2000


First of all, let me tell you that I am very happy to be in the position to ask you questions about WinBoard and write a report for my my Web pages.

The development in the amateur chess area has exploded in the last two years. More and more WinBoard compatible programs can be found on the Internet. You yourself are probably surprised at the variety of the programs that conform to this standard. At the beginning there were only Gnu Chess, Crafty and The Crazy Bishop, while now we have more than 60 WB compatible programs (freeware, commercial, privateware). I am very much interested in whether you considered this to be possible then, a couple of years ago?


No, I had no idea that so many people were interested in writing chess programs. Originally, xboard and WinBoard were simply graphical user interfaces for GNU Chess, then for GNU Chess and Internet chess servers. Because the GUI and the chess engine are separate programs, several people thought of the idea of connecting their own chess programs in place of GNU Chess, and they began to email me asking how to do it. I think the first person to ask was Shay Bushinsky, in November 1994. Over the years I received so many requests for this information that I was more or less forced into documenting and extending the ad-hoc engine protocol to support them. The document that exists now (chess-engines.html) evolved directly from the original email reply I sent to Shay.

Unfortunately, because the protocol was never really designed, but just grew out of documenting the existing communication with GNU Chess, there are still several bugs and deficiencies in it today. It would be nice to make some major revisions, but then of course it would (at best) take a long time for the existing engines to convert over to the new protocol, so both would have to be supported, probably forever.


To have two programs using the same GUI and pit them against each other is not new. Many users attempted multitasking already under DOS, although it was not possible in a real sense. To do something like this was the main aim of some programmers. It is now relatively simple to compare programs even without the use of autoplayer. Programmers chose WinBoard for this, among other things due to the good documentation and its versatility.

What were exactly your motives to create WinBoard? Was it primarily your wish to create a nice, technically advanced interface, or perhaps the possibility of comparison of different programs? Your reply will be interesting for the fans.


Comparing different chess programs was not at all on my mind as I was working on WinBoard. As with most free software projects, my main motivations in starting the project were to produce something I could use, have some fun programming, and make the results available so others could use them too. My best guideline in designing features has always been to think about the way I would like them to look and work for my own convenience. The next best has been to do things that several users ask me for, or to simplify things that several users have problems with. In those cases I still have to filter the requests through my own taste and make the new features fit in well with the old ones.

Collecting different chess programs and matching them against each other is actually not something that I'm interested in doing myself, so this feature of xboard and WinBoard has lagged a bit behind the others in development. The feature itself has been there right from the beginning. It was present in xboard when I took over work on the program from the original authors in 1992. At that time, of course, only GNU Chess worked with xboard. Perhaps the original authors wanted to compare GNU Chess 3.1 and 4.0, or perhaps to compare GNU Chess running on different kinds of machines.


There is a further reason for the success of WinBoard: the possibility of playing chess on the servers. As the Internet cost in Germany is very high this feature is not very widely spread (I for one do not use it :). Of course, you can choose your favourite program and check its strength against other programs on the servers. That is one of the many advantages of WinBoard that is missing in many commercial programs. WinBoard has become a standard in this area.

Such communication possibilities promote computer chess and an increasing number of people have taken to chess programming.

Could you please explain your concept and trace your ideas starting from the beginning up until the latest development? Did your ideas build one upon another or you may be had a plan of what you wanted even before writing WinBoard? What is the history of WinBoard?


I've never had a plan. I got started working on xboard by chance: Some time in 1991, I wanted to play a game of chess, so I went looking on the Internet for free chess software. I found GNU Chess 4.0, which was then under active development by a team coordinated by Stuart Cracraft, and a graphical interface for it called xboard 1.2 that had just been written by Chris and Dan Sears.

xboard looked pretty good, but as I started to use it I noticed more and more bugs and deficiencies. I started to fix the bugs and fill in the holes -- the first big hole was that underpromotion wasn't supported -- and before I knew it, I had become the maintainer. Now in early 2000, just measuring by number of lines of code, more than 80% of the present version of xboard/WinBoard was written since I started on the project. I wrote most of the new code, though there have been many other contributors.

Internet Chess Server support was an early addition, in November 1992. I had been thinking idly about adding ICS support to xboard, but unexpectedly John Chanak (then an ICS admin) sent me patches to implement it. John's version needed some work, but it was a great start. I became an enthusiastic ICS player and adminstrator myself and made a lot of additions to the ICS features over the next few years.

"Zippy mode," the feature that lets a chess engine act as an automatic player on ICS, came about in an unplanned way too. Zippy was not the first computer player on ICS. In fact, at first Zippy was not a player at all; it was just a shouting machine. The first computer players on ICS could only play chess, not talk, but in 1993 a new computer named "Norm" came on-line that shouted Norm Peterson lines from the "Cheers" TV show. I found this annoying, and to retaliate I put up a bot (robot) that shouted Zippy the Pinhead quotes. Unexpectedly, people liked the Zippy quotes, and they started asking me to teach Zippy to play chess too. Eventually I did, and I made the resulting code part of the standard xboard/WinBoard distribution so that others could use it too. You can find more about Zippy's history on my Chess page; follow the "biography" link in the Zippy section.

WinBoard came about as part of a work project. I was working at a computer systems research lab, mostly on projects related to operating systems and software development tools. Historically our lab had done most of its work on Unix-compatible systems, but when Windows NT came out, around 1993, we decided that we'd better start learning about it. As a learning project, I chose to take a sizable graphical program and port it to NT, and the program I picked was xboard. In doing the port, I split the program into a frontend that knows about the operating system and window system, and a backend that knows about chess rules, chess notation, chess engines, and ICS. All of the backend was extracted from xboard, while the front end was new. I added some new features along the way, such as a new look for the main window with a menu bar instead of an array of buttons. After getting the port working on Windows, I also went back and made an X frontend with the new look. xboard and WinBoard still share all their backend code, and when I release new versions, I always release both together.

By the way, WinBoard was a bit ahead of its time. It runs only on 32-bit versions of Windows, so it had very few users until Windows 95 came out. After that, WinBoard's user community grew rapidly, and now I'm sure there are far more WinBoard users than xboard users.


It is interesting to note that a certain type of criticism has been expressed recently regarding commercial products and their compatibility with WinBoard. Some professional programmers wish to protect their programs and avoid making them WinBoard compatible. I simply cannot understand that kind of logic.

However, there is also a new development: more and more professional GUIs are now offering compatibility with WinBoard engines.

A couple of examples:

  1. Chessvision
  2. Chess-base GUIs
  3. Millennium Chess systems
  4. Bookup 2000
  5. Chessmaster 8000
  6. Chess Academy
  7. Chess Assistant

Do you believe that this new development is conducive to the development WinBoard programs in general and good for the customer? How do you feel about commercial programs using your own product freely and do you think that they should do it the way it has been done so far? Do you welcome this new development?


I have slightly mixed feelings. Mostly, I think all this is great. I did my work on xboard and WinBoard in order to give it away, because I wanted to, not in order to advance some political agenda that says commercial software is bad. So I have no problems with commercial companies making their GUIs work with WinBoard engines, making their engines work with WinBoard (does anyone do that?), etc. I only insist that everyone give proper respect to the copyright on xboard and WinBoard themselves: their code is owned by the Free Software Foundation and released under the GNU General Public License, so no one is allowed to distribute modified versions or to incorporate pieces of the code into their own programs, unless those programs too have their source code released freely under the GPL. I hasten to add that there has been no problem with this from any of the legitimate commercial chess software companies! There is no restriction whatever on using the xboard/WinBoard chess engine protocol.

I'm sure it's good for the customers when different chess software products can be used together. This is not something that I personally need, though: I actually don't own any commercial chess software products besides Chessmaster, and I've only tried that one briefly. I haven't even looked at demo versions of any of the others for several years.

The only thing I'm not happy about is that, in hindsight, I wish I'd taken the time several years ago to redesign the chess engine protocol, make it cleaner, and fix all the deficiencies I know about. Now that it's become a sort of industry standard, the problems affect a lot more people than when it was just a way for xboard to talk to GNU Chess. It's also rather embarrassing to have my name attached to such an ugly piece of non-design.


There is a further question that is of interest to many WinBoard users. When under WinBoard, a WB program performs more or less perfectly. When converted for use under commercial interfaces the very same program encounters problems and requires winboard adapters or the like. What could be some of the problems in this area?


I have no direct knowledge about this. What I've heard from posts in the various discussion forums is that under at least one of the adapters, the engines are not used in the intended way. Normally, xboard/WinBoard conducts a game against an engine by alternating moves with the engine. After an engine makes its move, the engine knows the resulting position and is able to "ponder" (think on its opponent's time). Also, even if pondering is turned off, the engine is able to save the results of the "thinking" that it did on the last move to speed up its search on the next one. As I understand it, under at least one of the adapters, the GUI does not send individual moves to the engine in this way. Instead, after the user makes each move, the GUI sends the engine a complete new board image, using the protocol feature that is meant to support xboard/WinBoard's Edit mode. As a result, the engine does not "realize" that the new position is only one move away from the previous position, so it throws away all the information it has saved from past thinking and pondering. Obviously this will weaken its play.


Back to WinBoard itself. WinBoard offers many features: reading pgn files, playing on the servers, playing against a program locally, etc. The user can let a program analyze positions as well. WinBoard takes up only about 2 MB and offers all the above. Have you limited WinBoard to only those options you consider important, or perhaps you plan to include some further features such as automated tournaments, scrolling analysis, etc.?


As I mentioned, I've mostly concentrated on adding features that I wanted myself. I must say that in recent years, my interest in chess has waned quite a bit, and I've really added very little to the program since version 4.0.0 was released in June 1998. There are a lot of items in the ChangeLog between then and the recent 4.0.7 release, but the vast majority are bug fixes or small tweaks.

I would welcome seeing another skillful programmer or team take over future work on xboard and WinBoard. Unfortunately I don't see that as likely to happen. One problem is that these programs (much like the engine protocol) were never designed, but just evolved into their present state over many years starting from the very buggy xboard 1.2. So they are pretty ugly inside, and it's hard to add major new features to them. Even as simple a thing as displaying more than one chessboard at a time would require a rewrite.


Commercial firms (Chess Base, for example) have also become interested in amateur chess and WB programs like Comet, Exchess and Crafty are now offered as Chess Base native engines, just like Doctor (Bobby). The Chess Base GUI offers fantastic possibilities and this has happened because amateur engines have become well known thanks to WinBoard. All this is, naturally, profitable to the user.

There are already 46 programs running under WinBoard that can be downloaded freely on the Internet. There are also free sources of various programs, including the WinBoard source. The source code of Crafty is freely available too, and offers a great deal of information for chess programmers. It is easy to link Crafty to WinBoard and it is also possible to use the free library offered by Remi Coloum. One can now study well-documented sources, clean them up and perhaps improve on them.

What is your opinion on the issue of free source codes; what are advantages and disadvantages?


I personally like to write things and give them away for the common good, when I can. I'm also pleased to see that one can sometimes build a business on maintaining, extending, and packaging free software, but I don't believe that model can always work. The software that I write as part of my job is normally proprietary, although sometimes my company decides to give some of it away for various reasons.

I could go into a lot of technical details here on the pros and cons of various different free or "open source" licenses from the point of view of the software author, but I think that would be boring to you and your readers.

Instead, just let me make one point: Those who take should also give. If you take free software and use it, then you should do something to give back to the community, according to your abilities. You could learn to program and write some useful code of your own. You could write some documentation or a Web page to help beginners. Or you could give back to the larger community of mankind: work for your church or your favorite charity, feed the hungry, visit the sick. Do something, however small or large, to benefit others.

And do remember that, even when software is free, the author's time is still valuable. Please try to do things yourself before you send mail asking me to do them for you. Please read the documentation carefully, do a Web search or two, and ask your friends for help before you ask me to write a customized explanation just for you. If you notice a bug, please describe the problem in complete detail, including the exact wording of all error messages, instead of making me write back to ask you lots of questions. Don't expect me to read all chess discussion boards in the world, or your mind; if you notice a bug, do tell me about it, or I might never know. Remember that there are thousands of you, and only one of me!


Closing I would like to thank you both on my behalf and the behalf of all "WinBoarders" for your effort and the great program that you gave us. WinBoard and the Nalimov / Edwards tablebases appear to be the most significant developments in the recent years. It is evident that in the age of dual boards, and the operating systems such as Windows NT, Windows 2000 and Linux, the engine-engine comparison and related WinBoard activities will become even more fascinating. --Frank Quisinsky


Thank-you, Frank. --Tim Mann

Return to top | My home page | My work