Is cloning a hobby?

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Is cloning a hobby?

Post by mvanthoor »

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?)
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
amchess
Posts: 325
Joined: Tue Dec 05, 2017 2:42 pm

Re: Is cloning a hobby?

Post by amchess »

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: 1754
Joined: Tue Apr 19, 2016 6:08 am
Location: U.S.A
Full name: Andrew Grant

Re: Is cloning a hobby?

Post by AndrewGrant »

amchess wrote: Thu Sep 17, 2020 6: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.
#WeAreAllDraude #JusticeForDraude #RememberDraude #LeptirBigUltra
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
amchess
Posts: 325
Joined: Tue Dec 05, 2017 2:42 pm

Re: Is cloning a hobby?

Post by amchess »

AndrewGrant wrote: Thu Sep 17, 2020 8:02 pm
amchess wrote: Thu Sep 17, 2020 6: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: 1754
Joined: Tue Apr 19, 2016 6:08 am
Location: U.S.A
Full name: Andrew Grant

Re: Is cloning a hobby?

Post by AndrewGrant »

amchess wrote: Thu Sep 17, 2020 8: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



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, ....)
#WeAreAllDraude #JusticeForDraude #RememberDraude #LeptirBigUltra
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Is cloning a hobby?

Post by maksimKorzh »

AndrewGrant wrote: Thu Sep 17, 2020 8:34 pm
amchess wrote: Thu Sep 17, 2020 8: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



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: 1754
Joined: Tue Apr 19, 2016 6:08 am
Location: U.S.A
Full name: Andrew Grant

Re: Is cloning a hobby?

Post by AndrewGrant »

maksimKorzh wrote: Thu Sep 17, 2020 9:35 pm
AndrewGrant wrote: Thu Sep 17, 2020 8: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.
#WeAreAllDraude #JusticeForDraude #RememberDraude #LeptirBigUltra
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Is cloning a hobby?

Post by maksimKorzh »

AndrewGrant wrote: Thu Sep 17, 2020 9:39 pm
maksimKorzh wrote: Thu Sep 17, 2020 9:35 pm
AndrewGrant wrote: Thu Sep 17, 2020 8: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: 216
Joined: Sun Jan 22, 2017 8:30 pm
Location: Russia

Re: Is cloning a hobby?

Post by Tony P. »

maksimKorzh wrote: Thu Sep 17, 2020 9: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 9: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: 1754
Joined: Tue Apr 19, 2016 6:08 am
Location: U.S.A
Full name: Andrew Grant

Re: Is cloning a hobby?

Post by AndrewGrant »

Tony P. wrote: Thu Sep 17, 2020 11: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.
#WeAreAllDraude #JusticeForDraude #RememberDraude #LeptirBigUltra
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )