Not logged inRybka Chess Community Forum
Up Topic Rybka Support & Discussion / Rybka Discussion / Oh, the shame of it all
1 2 3 4 Previous Next  
- - By user923005 (****) Date 2013-09-04 15:26 Edited 2013-09-04 23:26
{Do you smell burned moth wings?}

As we all know, using the bitboard technique developed by someone else is truly shameful.  The sort of thing that should cause international news bulletins defaming the despicable cad who does it.

If one were to do that without even giving credit to the original author, it would truly be a criminal act.

And yet, in Crafty 21.3, we find Pradu Kannan's magic bitboard code, through and through.  Bob even uses the word 'Magic' over and over.  You would think a smart thief would at least change it to 'Trickery' or something.
Not a single line in all of the code base giving credit to him, either.  Do a grep for 'Pradu' and 'Kannan' though the code base.  Deathly silence.

Since the entire universe is now captured in google, we can even use the wayback machine to go back in time.
But I did not need to.  A simple web search shows the very moment of the theft, and even posts a caption underneath:
http://chessprogramming.wikispaces.com/Pradu+Kannan
Parent - - By Venator (Silver) Date 2013-09-04 16:31
Do I smell a big 'uh oh' here!?
Parent - - By user923005 (****) Date 2013-09-04 17:36
Now, I do not doubt for a moment that Bob has written permission to use Pradu's code.
In fact, the crime that was committed was expunging his name and copyright.
That is what is known as 'plagiarism'.
There is no citation anywhere in the code.
There is no citation anywhere in the readme files or help file.
Further, Bob should obviously have listed Pradu as co-author in all contests crafty participated in since 21.3 onwards (for those contests that request authorship).

You might think that it is no big deal.  But even if Pradu did not mind, it is still a problem.
Imagine someone who reads the crafty code and asks Bob for permission to use a few hundred lines with promise to list him as co-author.
If the code he used was Pradu's code, he would still be using that code without permission, because Pradu holds the copyright to that code.

I guess that it is really a simple oversight on Bob's part and he will take care of it.  Still, it is a serious matter.
If a student were to do that on a student project at UAB, he would definitely be expelled from school.
Parent - - By Lukas Cimiotti (Bronze) Date 2013-09-04 17:49 Edited 2013-09-04 17:52
I guess it's absolutely illegal to take public domain code and publish it under an infectious license.
Parent - - By user923005 (****) Date 2013-09-04 17:52
No.
That is legal.
Parent - - By user923005 (****) Date 2013-09-04 18:27
I can even give you a computer chess example of it:
The original ippolit {and friends} releases were specifically released as public domain software.

Kranium {don't recall his real name} made a clone of it and released it as GPL.
Now, he literally does hold a GPL license to his version, and if you use his version of the code, then you must also release your work as GPL.

It's called "public domain hijack" in the industry, and it is definitely not illegal.

If you use (instead) the original public domain release to make a new program, then you can do that safely.

If it turns out that the original ippolit is contains illegal material obtained by unlawful reverse engineering, then I am not sure what the proper standing of the ippolit clones would be.  I would guess that infringing material would have to be removed, at the very least.
Parent - By Lukas Cimiotti (Bronze) Date 2013-09-04 18:32
Thanks for clarifying this.
Parent - - By RFK (Gold) Date 2013-09-04 18:33
But this is something I could never understand. Bob has Crafty embedded in commercial software. I should change my handle to "I'mnotaprogarmmer". How did he get away with going commercial and yet not!
Parent - - By user923005 (****) Date 2013-09-04 18:50
I do not think he is compensated for his crafty versions that are/were used commercially (e.g. the dll used by chessbase).

I do not find any fault with Robert Hyatt in that particular area.
Parent - - By RFK (Gold) Date 2013-09-04 19:29

> I do not find any fault with Robert Hyatt in that particular area.


It was more interested in understanding how he got around it rather then looking to find fault. :smile:

Crafty made its way into more than just Chesebase products. It was for a considerable long time the computer chess software industries utility chess engine for many products.
Parent - By user923005 (****) Date 2013-09-04 19:45
That is not unusual.  Several other engines had this sort of treatment also.
I guess that in every case, the commercial tool vendor contacted the authors first and asked for permission.

In reality, this is a good deal for the end users for several reasons:
1.  For acquisition of the engine there is almost no cost to the commercial software vendor, lowering costs.
2.  The effort of integration of the engine into the GUI is removed from the tool user, since the vendor will have done that for you
3.  The software maintenance is provided by the author of the engine, again lowering costs.

The author receives the pleasure of knowing that thousands of people will benefit from using his engine (including those who have no idea how to download and install a chess engine into their favorite GUI).
So he is also compensated in some way.
Parent - - By Lukas Cimiotti (Bronze) Date 2013-09-05 07:26 Edited 2013-09-05 07:39
But is it legal to remove the disclaimer like in this post: http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?pid=482262#pid482262?
Parent - By user923005 (****) Date 2013-09-05 07:29
No.
Parent - - By Venator (Silver) Date 2013-09-04 18:01
Agreed. And what's up with the ICGA entry form? Shouldn't Pradu's name be on this form as well?
Parent - - By bob (Gold) Date 2013-09-04 20:49
WHAT ICGA entry form?  Which year?  I do not believe any magic version of Crafty has competed.  Last one I remember is 1997 if that was Paris...
Parent - By Venator (Silver) Date 2013-09-05 15:04
Fruit bishop PST, now Pradu's name missing..... I guess we should make a case out of this towards the ICGA. The ICGA isn't interested in versions playing in their tournaments anyway, so they should give you the same treatment as Vas, shouldn't they?
Parent - - By bob (Gold) Date 2013-09-04 20:42
Where did I "expunge his name and copyright"?

This look familiar:

*   21.3    "Magic" move generation is now used, which eliminates the rotated *
*           bitboard approach completely.  Not a significant speed change,    *
*           but it is far simpler overall.  Original code by Pradu Kannan as  *
*           posted on CCC/Winboard forums, modified to work with Crafty. 

Do you know where my magic move generator code came from?  Not from some source distro provided by him.  From code snippets posted on CCC and winboard fora.  Some of the code I had to write for myself since it was not all a "done deal" when this topic came about.  I may well have been the first magic user, I am not sure. But I certainly have not "expunged his name or copyright."  I can't "expunge his copyright" as that belongs to him for the parts of the magic code he wrote.

So what, EXACTLY, are you talking about???  ICGA?  I don't believe any "magic" crafty has participated in any ICGA event, not that this is relevant.  When you say "no citation" how do you reconcile the above in main.c???  Been there since that version.  you have the old versions.  Check.  Before posting.

BTW, NO a student would NOT "be expelled from school".  No school is that draconian.  He'd certainly get a strongly worded warning, and possibly a zero for that assignment...
Parent - - By user923005 (****) Date 2013-09-04 23:05
I heard that there was an organization that called a man a liar and a cheat in the international press for simply having similar concepts in a program once.  The group that did it never followed the required steps (like showing what parts were public domain and which parts were not) and did not even have the original source.  And yet they publicly defamed him before the entire planet in the press.

No, wait.  That's absurd.  No organization is THAT draconian.
Parent - By user923005 (****) Date 2013-09-04 23:11
Probably, in real life, he just got a strongly worded warning and a zero for the tournament.
Parent - - By Venator (Silver) Date 2013-09-05 15:07
I don't believe any "magic" crafty has participated in any ICGA event

Nor did R1.4-R1.6.1 and Rybka 1.0 beta, but they were still used by the ICGA in their investigation.

So if the ICGA uses Rybka versions that didn't play in WCCC's to ban Vas, they have to give you the same treatment.
Parent - By turbojuice1122 (Gold) Date 2013-09-05 20:11
I think that even if the ICGA treated him the same as Vas (they wouldn't, of course--they like Bob a lot more, and Vas doesn't have the same connections with people like Levy), he wouldn't be treated to the same verdict because the mistake was corrected.
Parent - - By siah (***) Date 2013-09-04 16:35
Bob's account should be blocked to punish him. It's a large crime. I even can't believe it. Banned for Life, what is your idea?
Parent - - By Venator (Silver) Date 2013-09-04 16:54
No! Blocking his account would be the same as doing him a big favour. The punishment is that he keeps his account and his lies are exposed :lol:
Parent - By siah (***) Date 2013-09-04 17:15
Really?
Parent - By Banned for Life (Gold) Date 2013-09-04 17:34
I think Bob should be forced to post over 8000 attacks on Vas in the Rybka forum to try to convince people that Vas is a bad man, a very bad man! :lol:
Parent - - By user923005 (****) Date 2013-09-04 17:46
My idea is to reason with Bob until he comes around.
Of course, I get tired quickly, so I doubt if I will ever succeed at that.
Parent - By Venator (Silver) Date 2013-09-04 17:59
We have been trying that for a few years now, it seems an easier task to move the rock of Gibraltar a few inches ;-).
Parent - By siah (***) Date 2013-09-05 07:19
Forget reasoning Bob. I remember that in past, the discussion about icga and Vas was so hot, maybe some thousands of posts were made and Bob wasn't contented. The discussions fires up here time by time and is useless. People discuss it so much here because what icga did made them angry. I don't read the discussions and I have hated talking about that. Because the outline of all discussions is: Vas is innocent, Vas isn't inoccent. In last discussions some source code are added!
Parent - By user923005 (****) Date 2013-09-04 23:19
Tom Paxton said that "some people you don't have to satirize: you just quote them."
Parent - By RFK (Gold) Date 2013-09-04 17:42
Some one should start a petition! :twisted:
Parent - - By Gerd Isenberg Date 2013-09-04 19:05
crafty-23.6, main.c
*   21.3    "Magic" move generation is now used, which eliminates the rotated *
*           bitboard approach completely.  Not a significant speed change,    *
*           but it is far simpler overall.  Original code by Pradu Kannan as  *
*           posted on CCC/Winboard forums, modified to work with Crafty.      *

On the image text: there is a question mark. ACCA 2008 was one year after Bob already had magics.
Parent - - By user923005 (****) Date 2013-09-04 19:10
I am glad to see that Bob came to his senses.
It was missing from earlier versions.

Directory of F:\project\dcorbit\crafty-fossils\crafty-21.3

09/04/2013  08:14 AM    <DIR>          .
09/04/2013  08:14 AM    <DIR>          ..
01/26/2010  10:39 AM             7,071 analyze.c
01/26/2010  10:39 AM            32,602 annotate.c
01/26/2010  10:39 AM             2,841 attacks.c
01/26/2010  10:39 AM             4,806 bench.c
01/26/2010  10:39 AM             7,421 bits.c
01/26/2010  10:39 AM            59,432 book.c
01/26/2010  10:39 AM             2,222 boolean.c
01/26/2010  10:39 AM            36,961 chess.h
01/26/2010  10:39 AM             2,130 client.c
01/26/2010  10:39 AM             3,174 cluster.c
01/26/2010  10:39 AM               947 crafty.c
01/26/2010  10:39 AM            32,302 data.c
01/26/2010  10:39 AM            11,217 data.h
01/26/2010  10:39 AM             4,623 dgt.c
01/26/2010  10:39 AM            22,871 dgtdrv.c
01/26/2010  10:39 AM             3,141 drawn.c
01/26/2010  10:39 AM             6,686 edit.c
01/26/2010  10:39 AM           277,485 egtb.cpp
01/26/2010  10:39 AM           119,518 epd.c
01/26/2010  10:39 AM             6,050 epd.h
01/26/2010  10:39 AM            21,640 epddefs.h
01/26/2010  10:39 AM            75,257 epdglue.c
01/26/2010  10:39 AM             1,255 epdglue.h
01/26/2010  10:39 AM           149,943 evaluate.c
01/26/2010  10:39 AM             4,281 evtest.c
01/26/2010  10:39 AM               408 exam.c
01/26/2010  10:39 AM               401 final.c
01/26/2010  10:39 AM               732 fut.c
01/26/2010  10:39 AM               331 grade.c
01/26/2010  10:39 AM            14,865 hash.c
01/26/2010  10:39 AM             2,109 history.c
01/26/2010  10:39 AM            48,672 init.c
01/26/2010  10:39 AM             2,356 inline32.h
01/26/2010  10:39 AM             1,521 inline64.h
01/26/2010  10:39 AM            11,511 input.c
01/26/2010  10:39 AM             7,743 interupt.c
01/26/2010  10:39 AM            27,275 iterate.c
01/26/2010  10:39 AM               118 killcrafty.c
01/26/2010  10:39 AM             1,659 killer.c
01/26/2010  10:39 AM            11,531 learn.c
01/26/2010  10:39 AM               740 legal.c
01/26/2010  10:39 AM             3,901 lock.h
01/26/2010  10:39 AM               487 logscan.c
01/26/2010  10:39 AM               493 lsb.c
01/26/2010  10:39 AM             1,291 mailsift.c
01/26/2010  10:39 AM           307,501 main.c
01/26/2010  10:39 AM            22,637 make.c
01/26/2010  10:39 AM            15,602 Makefile
01/26/2010  10:39 AM               389 makefile.c
01/26/2010  10:39 AM            54,354 movgen.c
01/26/2010  10:39 AM             7,752 next.c
01/26/2010  10:39 AM             6,978 nexte.c
01/26/2010  10:39 AM             5,165 nextr.c
01/26/2010  10:39 AM             1,676 oddsearch.c
01/26/2010  10:39 AM           154,471 option.c
01/26/2010  10:39 AM             6,356 output.c
01/26/2010  10:39 AM             8,740 ponder.c
01/26/2010  10:39 AM             4,358 preeval.c
01/26/2010  10:39 AM             5,896 probe.c
01/26/2010  10:39 AM             6,306 quiesce.c
01/26/2010  10:39 AM             1,302 random32.c
01/26/2010  10:39 AM             6,572 repeat.c
01/26/2010  10:39 AM             5,580 resign.c
01/26/2010  10:39 AM               775 results.c
01/26/2010  10:39 AM             1,048 resultsx2.c
01/26/2010  10:39 AM             9,290 root.c
01/26/2010  10:39 AM             1,015 scramble.c
01/26/2010  10:39 AM             1,015 scramblex.c
01/26/2010  10:39 AM            28,489 search.c
01/26/2010  10:39 AM             7,611 searchmp.c
01/26/2010  10:39 AM            11,057 searchr.c
01/26/2010  10:39 AM             2,044 server.c
01/26/2010  10:39 AM            10,654 setboard.c
01/26/2010  10:39 AM                90 setuid.c
01/26/2010  10:39 AM             6,354 swap.c
01/26/2010  10:39 AM            27,816 tbdecode.h
01/26/2010  10:39 AM            13,693 test.c
01/26/2010  10:39 AM             6,542 testepd.c
01/26/2010  10:39 AM            16,230 thread.c
01/26/2010  10:39 AM            18,071 time.c
01/26/2010  10:39 AM            15,109 unmake.c
01/26/2010  10:39 AM            94,818 utility.c
01/26/2010  10:39 AM             6,713 valid.c
01/26/2010  10:39 AM            12,171 validate.c
01/26/2010  10:39 AM             1,411 vcinline.h
              85 File(s)      1,947,671 bytes
               2 Dir(s)  187,055,972,352 bytes free

F:\project\dcorbit\crafty-fossils\crafty-21.3>grepcarl pradu *.*

F:\project\dcorbit\crafty-fossils\crafty-21.3>grepcarl kannon *.*
Parent - - By user923005 (****) Date 2013-09-04 19:12
F:\project\dcorbit\crafty-fossils\crafty-21.3>grepcarl kannan *.*
Parent - - By user923005 (****) Date 2013-09-04 19:13
This is the notice in main.c found in 21.3:

*                                                                             *
*   21.3    "magic" move generation is now used, which eliminates the rotated *
*           bitboard approach completely.  not a significant speed change,    *
*           but it is far simpler overall.                                    *
*                                                                             *
*******************************************************************************
*/
Parent - By user923005 (****) Date 2013-09-04 19:18 Upvotes 1
Crafty 23.5 is the first version that mentions Pradu's name.
Parent - - By bob (Gold) Date 2013-09-04 21:11
:)  of course it was.  It was not IN CRAFTY until version 21.3.  :)  21.2 still had this stuff:

#  define AttacksRank(a)                                                   \
      rook_attacks_r0[(a)][((tree->pos.w_occupied|tree->pos.b_occupied)>>  \
                           (((a)&56)+1))&63]
#  define AttacksFile(a)                                                   \
      rook_attacks_rr90[(a)][(tree->pos.occupied_rr90>>                    \
                             ((File(a)<<3)+1))&63]
#  define AttacksDiaga1(a)                                                 \
      bishop_attacks_rl45[(a)][(tree->pos.occupied_rl45>>                  \
                                bishop_shift_rl45[(a)])&63]
#  define AttacksDiagh1(a)                                                 \
      bishop_attacks_rr45[(a)][(tree->pos.occupied_rr45>>                  \
                                bishop_shift_rr45[(a)])&63]

Seem familiar?  Rotated bitboards.  What about 21.3?

#define AttacksBishop(square) *(magic_bishop_indices[square]+((((tree->pos.w_occupied|tree->pos.b_occupied)&magic_bishop_mask[square])*magic_bishop[square])>>magic_bishop_shift[square]))
#define AttacksBishopSpecial(square, occupied) *(magic_bishop_indices[square]+((((occupied)&magic_bishop_mask[square])*magic_bishop[square])>>magic_bishop_shift[square]))
#define AttacksRook(square) *(magic_rook_indices[square]+((((tree->pos.w_occupied|tree->pos.b_occupied)&magic_rook_mask[square])*magic_rook[square])>>magic_rook_shift[square]))
#define AttacksRookSpecial(square, occupied) *(magic_rook_indices[square]+((((occupied)&magic_rook_mask[square])*magic_rook[square])>>magic_rook_shift[square]))

See those references to the magic tables.

Here's my take, which is NOT going to be pleasant.  I now believe you to be one of the lowest of the "low-lifes" I have EVER known.  There were no magic numbers in 21.2 and earlier.  I didn't "come to my senses and add Pradu's name later".  I added his name in the release where his code appeared.

Now that I see just how low you are willing to go, to imply outright lies (He obviously should have mentioned Pradu earlier...) you can continue this discussion by yourself.  I have absolutely no interest in having ANY discussion with someone that resorts to that kind of nonsense.

Been nice knowing you.  I am now wise enough to know I wish I never had...

ciao...
Parent - - By Nick (*****) Date 2013-09-04 21:13

>  I added his name in the release where his code appeared.


Why is Pradu's name not in crafty 23.4 then?
Parent - - By bob (Gold) Date 2013-09-04 21:15
It is in EVERY last version since 21.3.  The comments (change log) in main.c continually grow with new versions.  Nothing gets deleted.

what ARE you talking about?
Parent - By Nick (*****) Date 2013-09-04 21:16

> what ARE you talking about?


You do realize that people download the crafty source over the years right?

I've attached the main.c of crafty 23.4 to this post.  WHY IS PRADU'S NAME NOT MENTIONED IN IT??
Attachment: main.c (334k)
Parent - - By user923005 (****) Date 2013-09-04 22:02
23.5 is the first version that his name appears.
As I said up above, it was probably an oversight and you would probably correct it.
It was and you did.
Parent - - By Nick (*****) Date 2013-09-04 22:05
You wrote: "Still, it is a serious matter. If a student were to do that on a student project at UAB, he would definitely be expelled from school. "

Was that correct or tongue-in-cheek?
Parent - - By user923005 (****) Date 2013-09-04 22:12
A little of both.

I don't know for sure about UAB.
I would definitely have been expelled from the University of Washington if I had done that while I was a student.
They spell out penalties for plagiarism in the entrance paperwork.
I suspect that they have a policy like that at UAB, but I can't say for sure.

If Bob could produce a written permission, it would obviously prove that it was a simple oversight and not a deliberate example of intentional plagiarism. (He got permission, but simply forgot to mention it.  Normally if the code is used verbatim, you would say, "used with permission from <copyright owner>" and if modified, a citation of the original source.

So I guess that (just like a student who made such an oversight but could prove it was unintentional and that he actually had permission) he would only be chastised.
But removal of copyright notice is definitely a naughty-no-no.
Parent - - By user923005 (****) Date 2013-09-04 22:14
I just looked up the current UW policy.  The first instance of plagiarism would result in a failing grade for the course and being put on probation.
Parent - - By Nick (*****) Date 2013-09-04 22:36
Thanks for checking.  We have more than one instance of plagiarism in crafty though, we had the copied bishop PST (+8) from Fruit too.  What is the policy for two?  If they need three strikes then perhaps we could throw in the MG/EG interpolation idea?
Parent - - By user923005 (****) Date 2013-09-04 22:43
Don't forget the transcribed assembly that harry wrote.
Looks like we've got a repeat offender here.
:twisted:
Parent - - By bob (Gold) Date 2013-09-04 23:50
IMHO looks like we have a complete jackass here...

IMHO of course...

There was no "transcribed asm".

Yet another fabrication / strawman type of nonsense you have created...

Falsely, I might add.
Parent - - By Lukas Cimiotti (Bronze) Date 2013-09-05 06:04
/**
*magicmoves.h
*
*Source file for magic move bitboard generation.
*
*See header file for instructions on usage.
*
*The magic keys are not optimal for all squares but they are very close
*to optimal.
*
*Copyright (C) 2007 Pradyumna Kannan.
*
*This code is provided 'as-is', without any express or implied warranty.
*In no event will the authors be held liable for any damages arising from
*the use of this code. Permission is granted to anyone to use this
*code for any purpose, including commercial applications, and to alter
*it and redistribute it freely, subject to the following restrictions:
*
*1. The origin of this code must not be misrepresented; you must not
*claim that you wrote the original code. If you use this code in a
*product, an acknowledgment in the product documentation would be
*appreciated but is not required.
*
*2. Altered source versions must be plainly marked as such, and must not be
*misrepresented as being the original code.
*
*3. This notice may not be removed or altered from any source distribution.
*/
This is from Pradu's magicmoves.c
You violated 3.
Parent - - By marcelk (***) Date 2013-09-05 06:22
I wouldn't be surprised if something similar is the case with the numerous changes in epd.c (SJE's host-independent part of the EPD/FEN code). The license requires one to request any changes by email.
Parent - - By bob (Gold) Date 2013-09-05 17:18
There are no changes in epd.c, EXCEPT for whatever Steven did.  You DID know that he wrote the epdglue.h?  You DID know that he sent something tested and ready to use in Crafty directly to me?  :)  I didn't write or modify a thing.  You can thank Steven for all of that.

You look foolish with all this idle speculation that has no basis in fact.  Send Steven an email to confirm what I just told you.  Did Steven request any of the changes with email to himself?  Not a clue.  :)

Keep grasping at these straws, ignoring the primary issue about Fruit.  Seems to be the ONLY way one argues a point HERE.
Parent - - By marcelk (***) Date 2013-09-05 18:25 Edited 2013-09-05 18:33
There are no changes in epd.c, EXCEPT for whatever Steven did.

It is easy to check what the changes over the years are. They are numerous and are consistent with evolution of Crafty, not consistent with evolution of SJE's epd kit: Reformatting to the point that the meta comments don't always match the contents anymore, deletions of stuff that Crafty doesn't need, variable renaming, preprocessor changes. Besides, the epd.c history comments have never been updated accordingly. SJE is meticulous in that, so I have a hard time to believe that he made those changes while Crafty evolved.

I take it that you here claim otherwise: "every version of epd.c appearing in any published version of Crafty came literally from SJE and was not altered". Is that your claim?

Did Steven request any of the changes with email to himself?

Why he would have to do something like that is beyond me. If anything, in your terminology, "looks foolish", that is it.
Up Topic Rybka Support & Discussion / Rybka Discussion / Oh, the shame of it all
1 2 3 4 Previous Next  

Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill