Is cloning a hobby?

Discussion of chess software programming and technical issues.

Moderators: Harvey Williamson, bob, hgm

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
User avatar
mvanthoor
Posts: 477
Joined: Wed Jul 03, 2019 2:42 pm
Full name: Marcel Vanthoor

Re: Is cloning a hobby?

Post by mvanthoor » Thu Sep 17, 2020 7:23 am

My personal definition of some of the terms are:

- Clone -> An engine which is a copy of another engine, with only minor differences. (Think: LMR tweaks, PSQT replacements, some additions, deletions, or changes to the search or evaluation, that sort of thing.)

- Port -> an engine rewritten in a different language with the intention of making an exact copy as possible, from the old to the new language. (This will make the new engine a clone as well.) Examples would be CFish, RustFish and ASMFish. However, such a port can also evolve to become a derivative.

- Derivative -> An engine that started out as a clone, but has diverged to such an extent that it is clearly very different from the source, but it does still shows heavy influence of that source. If it diverges even further to become almost unrecognizable as a derivative, it may become an original engine.

- Original -> An engine written from scratch. It can use many known concepts (alpha/beta, PSQT-tables, null move...), but also its own implementation of ideas from other engines. It is possible for a derivative to be rewritten to such an extent that it becomes an original engine because most or all of the source of the parent engine is gone.

As I said earlier... the question then becomes WHEN an engine transitions from clone to derivative. and from derivative to original. I think Weiss is an engine that's clearly on that path. It started out as a VICE clone. It evolved from a mailbox engine into a magic bit board engine, but VICE influences were still apparent if you know both engines. It has had extensive changes to its search and evaluation, and big parts of the rest of the code have been rewritten. Weiss is either close to being an original engine now, or it's already there.

(It's even possible for an engine to evolve in the other direction: start out as an original, and then taking so many concepts and ideas of other engines, implementing them the same way as the other engines do, that it becomes a mashup of different engines instead of being original. It seems the just discussed BEEF may be in this category. What name should that have? FrankenEngine?)

amchess
Posts: 148
Joined: Tue Dec 05, 2017 1:42 pm

Re: Is cloning a hobby?

Post by amchess » Thu Sep 17, 2020 4:51 pm

Imho, simply

a.clone is a no functional change engine from the original one. This to be rigorous at linguistic level
b.a derivative is an engine developed started from the original one.
Clearly b type engines are from the quality perspective.
So, of course, the opinions can differ because it's no math, but subjective opinions, but, anyway, there are two objectives aspects to be considered as a first filter:
-the true programming skills of the author: only a copy/past "expert"?
-how many people uses the engine and how long?

Andrea

AndrewGrant
Posts: 813
Joined: Tue Apr 19, 2016 4:08 am
Location: U.S.A
Full name: Andrew Grant
Contact:

Re: Is cloning a hobby?

Post by AndrewGrant » Thu Sep 17, 2020 6:02 pm

amchess wrote:
Thu Sep 17, 2020 4:51 pm
-how many people uses the engine and how long?
Might be a bit dubious of a criteria. Both Houdini and Fire have been used for years and years, yet both are Stockfish. Or at least are Stockfish in their most recent versions. Houdini used to be something else, and Fire used to be IvanHoe.

amchess
Posts: 148
Joined: Tue Dec 05, 2017 1:42 pm

Re: Is cloning a hobby?

Post by amchess » Thu Sep 17, 2020 6:18 pm

AndrewGrant wrote:
Thu Sep 17, 2020 6:02 pm
amchess wrote:
Thu Sep 17, 2020 4:51 pm
-how many people uses the engine and how long?
Might be a bit dubious of a criteria. Both Houdini and Fire have been used for years and years, yet both are Stockfish (even now!). Or at least are Stockfish in their most recent versions. Houdini used to be something else, and Fire used to be IvanHoe.
You're right if you also consider ethical questions, but, objectively speaking,
-Houdini has a very original tactical part permitting it to solve a lot more positions than stockfish. This can explain its use
-Fire has been used, but not at this level
Moreover, we have also to see how many competent people (programming skills and chess strength) there is, but more users there are less probably they are absent...

Andrea

AndrewGrant
Posts: 813
Joined: Tue Apr 19, 2016 4:08 am
Location: U.S.A
Full name: Andrew Grant
Contact:

Re: Is cloning a hobby?

Post by AndrewGrant » Thu Sep 17, 2020 6:34 pm

amchess wrote:
Thu Sep 17, 2020 6:18 pm
Houdini has a very original tactical part permitting it to solve a lot more positions than stockfish. This can explain its use
Is that true though? Are you saying this because it has a "tactical mode", or because you've looked at the source code? Because the source code is out. The tactical option is named "tactischeModus" and appears

1. NMP:

Computes a slightly different NMP factor for this mode. Namely,

Code: Select all

(540 + 66 * ((unsigned int)diepte / PLY) // <-- Tactical
(480 + 76 * ((unsigned int)diepte / PLY) // <-- Non Tactical 
2. Extensions at Root Node

Code: Select all

		  if (slagOfPromotie || geeftSchaak || pos.vooruitgeschoven_pion(zet))
			  verlenging = PLY;
3. An LMR condition

Code: Select all

&& (!Threads.tactischeModus || diepte < 12 * PLY || st->ply > 3))
4. This

https://pastebin.com/raw/tcvXVGjK

So, no, Houdini is not special for its tactics. It has a Trivial tune of NMP, a root node extension that mostly only happens in test positions, a LMR condition which is seen and used by a dozen "tactical" SF forks, and that blob 4, which does reduced depth searches on varying aspiration windows. 4) is the sole contribution that Houdart made to search.


Houdini is an unimpressive fork of Stockfish. __unimpressive__. Half the users on this form have come up with better search tweaks for tactical positions than are present in this code base. I suspect Fire is just the same, as Norman was not even smart enough to adjust the values of the tables he copy pasted from Stockfish (Piece-Square Tables, Storm Danger tables, Half-density Bit Mask Thread Scheduling Tables, ....)

User avatar
maksimKorzh
Posts: 346
Joined: Sat Sep 08, 2018 3:37 pm
Location: Ukraine
Full name: Maksim Korzh
Contact:

Re: Is cloning a hobby?

Post by maksimKorzh » Thu Sep 17, 2020 7:35 pm

AndrewGrant wrote:
Thu Sep 17, 2020 6:34 pm
amchess wrote:
Thu Sep 17, 2020 6:18 pm
Houdini has a very original tactical part permitting it to solve a lot more positions than stockfish. This can explain its use
Is that true though? Are you saying this because it has a "tactical mode", or because you've looked at the source code? Because the source code is out. The tactical option is named "tactischeModus" and appears

1. NMP:

Computes a slightly different NMP factor for this mode. Namely,

Code: Select all

(540 + 66 * ((unsigned int)diepte / PLY) // <-- Tactical
(480 + 76 * ((unsigned int)diepte / PLY) // <-- Non Tactical 
2. Extensions at Root Node

Code: Select all

		  if (slagOfPromotie || geeftSchaak || pos.vooruitgeschoven_pion(zet))
			  verlenging = PLY;
3. An LMR condition

Code: Select all

&& (!Threads.tactischeModus || diepte < 12 * PLY || st->ply > 3))
4. This

https://pastebin.com/raw/tcvXVGjK

So, no, Houdini is not special for its tactics. It has a Trivial tune of NMP, a root node extension that mostly only happens in test positions, a LMR condition which is seen and used by a dozen "tactical" SF forks, and that blob 4, which does reduced depth searches on varying aspiration windows. 4) is the sole contribution that Houdart made to search.


Houdini is an unimpressive fork of Stockfish. __unimpressive__. Half the users on this form have come up with better search tweaks for tactical positions than are present in this code base. I suspect Fire is just the same, as Norman was not even smart enough to adjust the values of the tables he copy pasted from Stockfish (Piece-Square Tables, Storm Danger tables, Half-density Bit Mask Thread Scheduling Tables, ....)
I'm just wondering WHY people actually doing this(cloning)? Do they make money on it or it's just a wicked ambitions?

Isn't it more interesting to walk through the entire path absolutely from scratch - from complete noob to at least working engine and then hopefully gain a skill to learn from stronger engines?

I don't even feel that engine I'm now covering in youtube series to be my own even though I'm writing it from blank file and untill it plays chess because even though it has some of my own ideas (more likely making it worse) still every video regarding search I'm giving credits to the sources all the time hence feeling more like learning rather than teaching.

So what are the reasons for cloning???

AndrewGrant
Posts: 813
Joined: Tue Apr 19, 2016 4:08 am
Location: U.S.A
Full name: Andrew Grant
Contact:

Re: Is cloning a hobby?

Post by AndrewGrant » Thu Sep 17, 2020 7:39 pm

maksimKorzh wrote:
Thu Sep 17, 2020 7:35 pm
AndrewGrant wrote:
Thu Sep 17, 2020 6:34 pm
Houdini is an unimpressive fork of Stockfish. __unimpressive__. Half the users on this form have come up with better search tweaks for tactical positions than are present in this code base. I suspect Fire is just the same, as Norman was not even smart enough to adjust the values of the tables he copy pasted from Stockfish (Piece-Square Tables, Storm Danger tables, Half-density Bit Mask Thread Scheduling Tables, ....)
I'm just wondering WHY people actually doing this(cloning)? Do they make money on it or it's just a wicked ambitions?

So what are the reasons for cloning???
Reasons to clone a project and be honest about it:
* You want to work on parts of an engine, but don't want to write it from the ground up
* You think you might be able to do better than the original, but only after large refactoring

Reasons to clone a project and pretend its your own:
* Houdart : Make Money apperantly -- he sold tens of thousands of copies, if not more.
* Others just have large egos and not large enough IQs or willpower to sate it.

User avatar
maksimKorzh
Posts: 346
Joined: Sat Sep 08, 2018 3:37 pm
Location: Ukraine
Full name: Maksim Korzh
Contact:

Re: Is cloning a hobby?

Post by maksimKorzh » Thu Sep 17, 2020 7:51 pm

AndrewGrant wrote:
Thu Sep 17, 2020 7:39 pm
maksimKorzh wrote:
Thu Sep 17, 2020 7:35 pm
AndrewGrant wrote:
Thu Sep 17, 2020 6:34 pm
Houdini is an unimpressive fork of Stockfish. __unimpressive__. Half the users on this form have come up with better search tweaks for tactical positions than are present in this code base. I suspect Fire is just the same, as Norman was not even smart enough to adjust the values of the tables he copy pasted from Stockfish (Piece-Square Tables, Storm Danger tables, Half-density Bit Mask Thread Scheduling Tables, ....)
I'm just wondering WHY people actually doing this(cloning)? Do they make money on it or it's just a wicked ambitions?

So what are the reasons for cloning???
Reasons to clone a project and be honest about it:
* You want to work on parts of an engine, but don't want to write it from the ground up
* You think you might be able to do better than the original, but only after large refactoring

Reasons to clone a project and pretend its your own:
* Houdart : Make Money apperantly -- he sold tens of thousands of copies, if not more.
* Others just have large egos and not large enough IQs or willpower to sate it.
Thanks Andy. I loved the first part with honest intents.

Tony P.
Posts: 203
Joined: Sun Jan 22, 2017 7:30 pm
Location: Russia

Re: Is cloning a hobby?

Post by Tony P. » Thu Sep 17, 2020 9:06 pm

maksimKorzh wrote:
Thu Sep 17, 2020 7:35 pm
Isn't it more interesting to walk through the entire path absolutely from scratch - from complete noob to at least working engine and then hopefully gain a skill to learn from stronger engines?
It depends on the personality. One may find some stages of the path boring but necessary for the overall success. Personally, I'm not thrilled about bit twiddling nearly as much as about the higher maths of tuning :mrgreen: However, the low-level parts of the design will affect the overall performance too, and they do deserve thinking through, as an exercise in delayed gratification.
maksimKorzh wrote:
Thu Sep 17, 2020 7:35 pm
I don't even feel that engine I'm now covering in youtube series to be my own even though I'm writing it from blank file and untill it plays chess because even though it has some of my own ideas (more likely making it worse) still every video regarding search I'm giving credits to the sources all the time hence feeling more like learning rather than teaching.
Even if the ideas are weakening your current implementation, they might become bricks in the foundations of future top engines where they'll suddenly work better, you never know :D

Thank you for the speed test of move generators; it was a surprise to me that a hybrid board representation (that makes eval easier) was almost as fast as pure bitboards. That small idea from Aiki may eventually put your name onto the acknowledgement lists of stronger engines, like Pyrrhic will put Andrew's name on more engines than the rest of Ethereal would.

AndrewGrant
Posts: 813
Joined: Tue Apr 19, 2016 4:08 am
Location: U.S.A
Full name: Andrew Grant
Contact:

Re: Is cloning a hobby?

Post by AndrewGrant » Thu Sep 17, 2020 9:09 pm

Tony P. wrote:
Thu Sep 17, 2020 9:06 pm
Pyrrhic will put Andrew's name on more engines than the rest of Ethereal would.
I think you may be surprised actually. Almost every open-source engine thats 1) Not Stockfish, and 2) Not a Leela fork, has Ethereal mentioned in small or large parts. I think Ethereal has become the Stockfish of learning. Once you have a working engine, then you can go take snippets from Stockfish.

Post Reply