The Baron and TSCP
Posted: Mon Jan 27, 2014 8:41 am
I'm not a frequent visitor of this forum anymore and I just noticed a thread on the origin of the Baron. As that thread is locked due to the copious amount of speculation in it I start a new one providing some details. I haven't read all of that thread but suspected most questions will be answered below.
Work on the Baron started in August 2001. I had quite a lot of programming experience, was an active chess player, but had no experience in chess programming.
I wanted some chess analysis tools that were not available at that time and decided to try and modify an existing engine (Crafty) to incorporate my ideas on that.
Looking at that source code I quickly gave up. I did not understand enough of it to be able to modify the search code. Instead, I looked around for simpler engines to try and test the idea with. I selected TSCP. My first task was to understand the source code, and while looking at it I found some pretty straightforward improvements. Implementing these made me go and look for more (I contacted Tom to show him the improvements I found and he basically encouraged me to do that) and before I knew it I forgot about the original goal for which I started to look at TSCP in the first place. I started to read a lot of online resources, looking for things missing in TSCP that could enhance it further. All of the search and evaluation (there isn't much of it in TSCP anyway) was replaced in that process, as well as the supporting functions and some of them kept their original name as given by Tom.
The statement found by Miguel actually belongs to the 0.x versions that I started to release in December 2001. Although the code was rewritten, some of the TSCP heritage could still be found if you know where to look for it. Some of the function names, support for TSCP specific commands like 'on', 'off' and 'bye' are a few of them. And of course, many things were added, as well as rewriting most functions of the engine multiple times.
The change in major revision numbers was done because of some fundamental changes in the engine.
In 1.x I changed all of the GUI interfacing code with a parser generated by flex and bison (not the best idea, I'm willing to admit now), and in 2.x a different book format was introduced.
Therefore I do not consider the released versions of the Baron (not even the 0.x versions) as a derivative of TSCP. The statement was included in the README file in the distribution to honour Tom as well as the authors of other engines I took a close look at, like Beowulf and Crafty (once I started to understand it ). I never made a secret of that.
The current Baron versions (3.x) are an evolution of a rewrite I started in 2006 (I think). For quite some time the development of the Baron 1.x and 2.x versions were done in parallel with the development of Crashtest Dummy (CTD). CTD was started from scratch, and no code from any engine was used as a base. No code from the Baron 1.x and 2.x was used for it either as I wanted a 'clean' new engine. There is still some 'knowledge' inside the older Baron versions that would probably be useful for 3.x but has not made it in so far. The good thing though: I did implement the ideas I had more than 12 years ago in 3.x!
I hope this clarifies this 'issue'
Richard.
Work on the Baron started in August 2001. I had quite a lot of programming experience, was an active chess player, but had no experience in chess programming.
I wanted some chess analysis tools that were not available at that time and decided to try and modify an existing engine (Crafty) to incorporate my ideas on that.
Looking at that source code I quickly gave up. I did not understand enough of it to be able to modify the search code. Instead, I looked around for simpler engines to try and test the idea with. I selected TSCP. My first task was to understand the source code, and while looking at it I found some pretty straightforward improvements. Implementing these made me go and look for more (I contacted Tom to show him the improvements I found and he basically encouraged me to do that) and before I knew it I forgot about the original goal for which I started to look at TSCP in the first place. I started to read a lot of online resources, looking for things missing in TSCP that could enhance it further. All of the search and evaluation (there isn't much of it in TSCP anyway) was replaced in that process, as well as the supporting functions and some of them kept their original name as given by Tom.
The statement found by Miguel actually belongs to the 0.x versions that I started to release in December 2001. Although the code was rewritten, some of the TSCP heritage could still be found if you know where to look for it. Some of the function names, support for TSCP specific commands like 'on', 'off' and 'bye' are a few of them. And of course, many things were added, as well as rewriting most functions of the engine multiple times.
The change in major revision numbers was done because of some fundamental changes in the engine.
In 1.x I changed all of the GUI interfacing code with a parser generated by flex and bison (not the best idea, I'm willing to admit now), and in 2.x a different book format was introduced.
Therefore I do not consider the released versions of the Baron (not even the 0.x versions) as a derivative of TSCP. The statement was included in the README file in the distribution to honour Tom as well as the authors of other engines I took a close look at, like Beowulf and Crafty (once I started to understand it ). I never made a secret of that.
The current Baron versions (3.x) are an evolution of a rewrite I started in 2006 (I think). For quite some time the development of the Baron 1.x and 2.x versions were done in parallel with the development of Crashtest Dummy (CTD). CTD was started from scratch, and no code from any engine was used as a base. No code from the Baron 1.x and 2.x was used for it either as I wanted a 'clean' new engine. There is still some 'knowledge' inside the older Baron versions that would probably be useful for 3.x but has not made it in so far. The good thing though: I did implement the ideas I had more than 12 years ago in 3.x!
I hope this clarifies this 'issue'
Richard.