I kind of like it this way.Michael Sherwin wrote:You have seen many source codes with some of them being private. You have learned many useful private things that could give your engine a big advantage. So, just keep your source private. Put out an engine just for competing on Play Chess. Or write an engine that gives up some strength for a lively sacrificial style with lots of really nice features. Have you seen the code for any commercial engines? Then do not go commercial. As long as someone cannot make the case that you are costing them money because, they showed you their code under special circumstances then their is no moral issue at stake. If your engine is stronger than a private but free engine there is no moral issue. You do not need to be a closet chess programmer. There is a place for you out in the open!Dann Corbit wrote:I have a program I call 'bean counter'.Don wrote:Dan, do you have your own program? I thought I remembered seeing somewhere you mention it, but I may be remembering something else.Dann Corbit wrote:Your code is not publicly available so I do not know if I am interested.
If I were to help you, I would define my own role and do what I pleased.
I have, on occasion, been helpful to other chess programmers.
I will probably never release it. I tear it down and build it up and rebuild it. I try all kinds of crazy ideas. I went from C to C++ back to C and back to C++. I use database ideas. I use algorithms that other people do not use (for instance, in move ordering for non-root, I use quickselect to collect the top 4 moves into a partition and sort them, and then do not bother sorting any of the others). I have an actual database for opening book.
Because other people show me their source code very often, I sometimes learn things from their programs. For that reason, I think it would be unfair for me to ever release my program. Knowingly or unknowningly, I might be releasing a private idea and I would never want to do that.
A model that seems to work for chess is to write a reasonably strong program, then let somebody else improve on your code. They will take your code base and produce a stronger program that you could have written by yourself, or they could have written by themselves.
Assuming you don't have highly specialized roles such as book builder or a chess master (who cannot program) it's probably reasonable to let everyone have a crack at the code base, do what they want and then sync up every once in a while by mutual agreement. Or if one of the team guys is a natural (or designated) leader he can make final decisions with constant input and patches from the others.
Linux follows this model to an extent with Linus Torvalds and it seems to work. Of course there are team members with specific pieces of code they are responsible for in this case - but it doesn't always make it into the kernel unless Linux approves.
I have seen many commercial codes.
I have never intended to go commercial.
If I ever do release an ending, for sure it will be open source.
But if I do that, I will run it by all of the programmers who could possibly be affected first. I strongly doubt if I will ever release an engine.
For me, the journey is *far* more interesting than the destination anyway.
I have been involved in many, many open source projects (as a by-product of being an old guy, I guess). Chess is peculiar in that the other projects never had the sort of competition for writing the best tool. I can tell you that the competition aspect I find a little displeasing because at this time, I feel strongly that it is stifling rather than encoraging innovation.
IMO-YMMV