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?)
Is cloning a hobby?
Moderators: hgm, Rebel, chrisw
-
- Posts: 347
- Joined: Tue Dec 05, 2017 2:42 pm
Re: Is cloning a hobby?
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
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
-
- Posts: 1847
- Joined: Tue Apr 19, 2016 6:08 am
- Location: U.S.A
- Full name: Andrew Grant
Re: Is cloning a hobby?
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.
Friendly reminder that stealing is a crime, is wrong, and makes you a thief.
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
-
- Posts: 347
- Joined: Tue Dec 05, 2017 2:42 pm
Re: Is cloning a hobby?
You're right if you also consider ethical questions, but, objectively speaking,AndrewGrant wrote: ↑Thu Sep 17, 2020 8:02 pmMight 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.
-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
-
- Posts: 1847
- Joined: Tue Apr 19, 2016 6:08 am
- Location: U.S.A
- Full name: Andrew Grant
Re: Is cloning a hobby?
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
Code: Select all
if (slagOfPromotie || geeftSchaak || pos.vooruitgeschoven_pion(zet))
verlenging = PLY;
Code: Select all
&& (!Threads.tactischeModus || diepte < 12 * PLY || st->ply > 3))
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, ....)
Friendly reminder that stealing is a crime, is wrong, and makes you a thief.
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
-
- Posts: 775
- Joined: Sat Sep 08, 2018 5:37 pm
- Location: Ukraine
- Full name: Maksim Korzh
Re: Is cloning a hobby?
I'm just wondering WHY people actually doing this(cloning)? Do they make money on it or it's just a wicked ambitions?AndrewGrant wrote: ↑Thu Sep 17, 2020 8:34 pmIs 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,
2. Extensions at Root NodeCode: Select all
(540 + 66 * ((unsigned int)diepte / PLY) // <-- Tactical (480 + 76 * ((unsigned int)diepte / PLY) // <-- Non Tactical
3. An LMR conditionCode: Select all
if (slagOfPromotie || geeftSchaak || pos.vooruitgeschoven_pion(zet)) verlenging = PLY;
4. ThisCode: Select all
&& (!Threads.tactischeModus || diepte < 12 * PLY || st->ply > 3))
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, ....)
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???
Didactic chess engines:
https://www.chessprogramming.org/Maksim_Korzh
Chess programming YouTube channel:
https://www.youtube.com/channel/UCB9-pr ... KKqDgXhsMQ
https://www.chessprogramming.org/Maksim_Korzh
Chess programming YouTube channel:
https://www.youtube.com/channel/UCB9-pr ... KKqDgXhsMQ
-
- Posts: 1847
- Joined: Tue Apr 19, 2016 6:08 am
- Location: U.S.A
- Full name: Andrew Grant
Re: Is cloning a hobby?
Reasons to clone a project and be honest about it:maksimKorzh wrote: ↑Thu Sep 17, 2020 9:35 pmI'm just wondering WHY people actually doing this(cloning)? Do they make money on it or it's just a wicked ambitions?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, ....)
So what are the reasons for cloning???
* 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.
Friendly reminder that stealing is a crime, is wrong, and makes you a thief.
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
-
- Posts: 775
- Joined: Sat Sep 08, 2018 5:37 pm
- Location: Ukraine
- Full name: Maksim Korzh
Re: Is cloning a hobby?
Thanks Andy. I loved the first part with honest intents.AndrewGrant wrote: ↑Thu Sep 17, 2020 9:39 pmReasons to clone a project and be honest about it:maksimKorzh wrote: ↑Thu Sep 17, 2020 9:35 pmI'm just wondering WHY people actually doing this(cloning)? Do they make money on it or it's just a wicked ambitions?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, ....)
So what are the reasons for cloning???
* 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.
Didactic chess engines:
https://www.chessprogramming.org/Maksim_Korzh
Chess programming YouTube channel:
https://www.youtube.com/channel/UCB9-pr ... KKqDgXhsMQ
https://www.chessprogramming.org/Maksim_Korzh
Chess programming YouTube channel:
https://www.youtube.com/channel/UCB9-pr ... KKqDgXhsMQ
-
- Posts: 216
- Joined: Sun Jan 22, 2017 8:30 pm
- Location: Russia
Re: Is cloning a hobby?
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 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 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?
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 knowmaksimKorzh 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.
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.
-
- Posts: 1847
- Joined: Tue Apr 19, 2016 6:08 am
- Location: U.S.A
- Full name: Andrew Grant
Re: Is cloning a hobby?
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.
Friendly reminder that stealing is a crime, is wrong, and makes you a thief.
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )