Hi all,
I'm back after an off-line period, and just finished reading this enormous thread. Rather than replying to several posts, I will simply add my opinions about some of the main points raised in the discussion.
Different people are often interested in chess programmings for entirely different reasons. A commonly raised objection against open source engines is that it tends to destroy competition and level the playing field, by making it too easy for complete beginners to produce a reasonably strong program without much hard work. This objection makes sense to those programmers who are mostly interested in the competitive side of computer chess. I do not belong to this group. The strength of my own program compared to other amateur engines has no great interest to me. I am much more interested in advances in the general level of computer chess. The general strength of amateur engines today is, in my opinion, clearly higher than one year ago. The current version of Glaurung is much stronger than Gothmog was at this time last year, but it does not seem to perform noticably better in tournaments. I am very satisfied with this development, and if I could make a small contribution to continued improvement by sharing code and ideas with the community, it would make me much happier than any number of tournament successes for Glaurung.
Some people have stated that they prefer pseudo-code and explanations of algorithms and ideas rather than actual code. I think it is better to have both. High-level explanations have the advantage of being easier to understand quickly, while real code has the advantage of being more precise.
Finally, it seems to be a commonly held opinion that there are already sufficiently many open source chess engines, and that the world just doesn't need another one. I think Glaurung is sufficiently different from other open source engines (at least those I have seen, which is admittedly not a big number) that it may have some value for the community. Some of the e-mail feedback I have received indicates that I am not the only person to hold this opinion. Most other open source engines are either too weak or too complex.
I think a very simple yet at least moderately strong open source engine can be useful for the community in at least three ways. The first, which has already been mentioned at the beginning of this thread, is to serve as an educational resource for beginners. The second is to serve as a starting point for experimenting with new search ideas. Doing this with a complex program like Crafty has the disadvantage that the new ideas will often interact with existing code in unexpected and hard-to-understand ways, and using a program like TSCP has the disadvantage that the base program is so weak that even rather lame ideas may appear to be tremendously effective.
The third way in which I hope Glaurung's source can prove valuable is to illustrate an important piece of chess programming wisdom which most programmers (myself included) learn the hard way: Do not spend any effort on low-level optimisation or advanced techniques until your program is already rather strong. Instead, try to keep everything as simple and straightforward as possible, and be very careful to avoid bugs. This is of course, nothing more than a special case of the general programming advice that premature optimisation is the root of all evil. However, it appears that many beginning chess programmers believe that this piece of advice does somehow not apply to chess programming, at least not to the same extent as to other similarly complex programming tasks. My personal opinion is that precisely the opposite is true: Premature optimisation is a particularly big danger in chess programming.
Tord