StockFish engine

Discussion of chess software programming and technical issues.

Moderators: bob, hgm, Harvey Williamson

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
zamar
Posts: 613
Joined: Sun Jan 18, 2009 6:03 am

Re: StockFish engine

Post by zamar » Wed Jan 12, 2011 11:15 pm

mcostalba wrote: Personally I don't see problems in this, actually I could even foreseen the possibility of a double GPL / LGPL licensing alltogheter, indipendently from the target platform, but Tord and Joona agreements are both mandatory in this case.
As stated by others, releasing under LGPL won't solve the problem. Personally I might agree on GPL exception under certain strict rules:

* There must be no other way around to use SF-engine in product.
* Full source code of the product in question must be sent for SF-team for examination
* Author of the product must report all the changes made to SF source to SF-team. Changes must be trivial in nature (no functional change).
* Each new version of the product must be sent for SF-team for examination before releasing.
* SF-team can deny releasing the product or new version of it any time without needing to explain anything.

Even then there is a risk that we are opening pandora box, and our development team turns into a post office.
Joona Kiiski

User avatar
michiguel
Posts: 6389
Joined: Thu Mar 09, 2006 7:30 pm
Location: Chicago, Illinois, USA
Contact:

Re: StockFish engine

Post by michiguel » Wed Jan 12, 2011 11:29 pm

kinderchocolate wrote:Stockfish team? What do you think? iPhone doesn't allow a separate process to spawn,
Droid does.
Sorry, I could not resist :-)

there's no way to create a new process in iPhone. Fundamentally, it's really the same thing, unmodified executable -> UCI communication. The only technical difference is static linking. If the Stockfish team is happy for it, there wouldn't be a problem.

I think the team should give approval, because it will benefit the community (more iPhone apps), since the sources aren't modified, forcing the sources to open wouldn't benefit anyone in the community. We should give some credits to the GUI developer by not forcing him to open source.
If they open the source, it will benefit the community even more. Wouldn't it? My point is, if somebody releases software under GPL, it is pointless to make exceptions like this. It beats the whole purpose.

Miguel

Andriy Dzyben, how do you think you will static link Stockfish? You can't link dynamically, Apple wouldn't allow. If you link statically and spawn Stockfish with a new thread, that wouldn't work because the engine assumes the inputs are from standard input and you can't emulate standard input in C++.

andrejcher
Posts: 12
Joined: Tue Jan 11, 2011 12:58 pm

Re: StockFish engine

Post by andrejcher » Thu Jan 13, 2011 12:01 am

zamar wrote:
mcostalba wrote: Personally I don't see problems in this, actually I could even foreseen the possibility of a double GPL / LGPL licensing alltogheter, indipendently from the target platform, but Tord and Joona agreements are both mandatory in this case.
As stated by others, releasing under LGPL won't solve the problem. Personally I might agree on GPL exception under certain strict rules:

* There must be no other way around to use SF-engine in product.
* Full source code of the product in question must be sent for SF-team for examination
* Author of the product must report all the changes made to SF source to SF-team. Changes must be trivial in nature (no functional change).
* Each new version of the product must be sent for SF-team for examination before releasing.
* SF-team can deny releasing the product or new version of it any time without needing to explain anything.

Even then there is a risk that we are opening pandora box, and our development team turns into a post office.
As for me the last two rules will make some rstrictions:
1) how long it will take to be approved by SF team? Day? Week? What about holidays and vacations when someone just trying to upload hot fix for Apple review that doesn't contains any changes to engine but team want be sure and check it anyway?
2) What about "I have no time for checking that just will say them to not release it without any explanation"?


I haven't tried but is it possible to create library for static linking and custom license (GPL with ability for static linking :)) for iOS devices only? Is it possible to use engine in that way (static linking)?

kinderchocolate
Posts: 411
Joined: Mon Nov 01, 2010 5:55 am
Full name: Ted Wong
Contact:

Re: StockFish engine

Post by kinderchocolate » Thu Jan 13, 2011 12:12 am

Since it's too easy to submit a product on iPhone, releasing the source for the entire product is not considerable.

I personally agree Joona Kiiski's requirements. But, each version of the product must be approved is a bit harsh. I don't expect there'll be any change to the engine after the initial release. All subsequent releases will be interfaces-based. Sending a zip of the entire sources to the SF team just because I need to fix a null exception doesn't make too much sense.

kinderchocolate
Posts: 411
Joined: Mon Nov 01, 2010 5:55 am
Full name: Ted Wong
Contact:

Re: StockFish engine

Post by kinderchocolate » Thu Jan 13, 2011 12:19 am

andrejcher wrote:
zamar wrote:
mcostalba wrote:
I haven't tried but is it possible to create library for static linking and custom license (GPL with ability for static linking :)) for iOS devices only? Is it possible to use engine in that way (static linking)?
Linking statically implies your code is embedded with Stockfish. Fundmentally, it's no different to direct copy-and-paste the sources into the project. A license exception makes more sense and save time in creating a static library.

andrejcher
Posts: 12
Joined: Tue Jan 11, 2011 12:58 pm

Re: StockFish engine

Post by andrejcher » Thu Jan 13, 2011 1:19 pm

To SF team: what is your decision?

mcostalba
Posts: 2684
Joined: Sat Jun 14, 2008 7:17 pm

Re: StockFish engine

Post by mcostalba » Thu Jan 13, 2011 6:32 pm

andrejcher wrote:To SF team: what is your decision?
I agree with Joona proposal.

Tord Romstad
Posts: 1808
Joined: Wed Mar 08, 2006 8:19 pm
Location: Oslo, Norway

Re: StockFish engine

Post by Tord Romstad » Thu Jan 13, 2011 7:45 pm

michiguel wrote:
kinderchocolate wrote:Stockfish team? What do you think? iPhone doesn't allow a separate process to spawn,
Droid does.
Sorry, I could not resist :-)
Pedantic correction: The iPhone does, too. It's pretty much a full-featured Unix workstation, and can do almost anything a desktop Unix box can do, albeit more slowly (but still faster than desktops from one decade ago).

It's Apple, not iOS, that doesn't allow third-party apps to start spawn new processes. An app that tries to do this will get rejected when Apple reviews it before release on the App store. I understand why Apple does this, but it would have been annoying if there was no easy way to work around it. Fortunately, working around it is easy.

:D

Tord Romstad
Posts: 1808
Joined: Wed Mar 08, 2006 8:19 pm
Location: Oslo, Norway

Re: StockFish engine

Post by Tord Romstad » Thu Jan 13, 2011 8:13 pm

andrejcher wrote:To SF team: what is your decision?
I've been slow to reply, because I think it is a very difficult question. I really don't know what to think, and I feel quite uncomfortable about the situation.

In principle, I fully share Miguel's view. There is little point in using a GPL license if we arbitrarily grant exceptions to the license to everybody who asks politely. I also share Joona's concern that we will see a growing list of proprietary Stockfish derivatives and requests for exceptions to the license, and that just replying to the requests and reviewing the code of everything will get a nightmare. The two projects mentioned in this thread won't be the last ones. It is possible to make lots of money from selling chess programs for iOS (and no doubt Android as well), and programmers are only just beginning to discover this.

On the other hand, it doesn't feel right to punish those who are honest and actually ask, rather than just using the code illegally (which will almost certainly happen sooner or later, and may already have happened). If we're too restrictive in what we allow, there is a risk that more people use the illegal approach.

I also think of those who try to bring their own, completely original programs to iOS or Android. As Andriy pointed out himself previously in this thread, writing a chess engine from scratch takes a considerable amount of work. By using Stockfish as the starting point, someone working on an iOS chess app gets a huge competitive advantage for free compared to someone who starts from scratch. And this competitive advantage may matter a lot, because there is potentially a significant amount of money to earn. I fear that the free iOS Stockfish is already hurting the sales of commercial programs somewhat, and this problem will obviously get worse with a growing number of Stockfish-derivatives. The question, therefore, is the following: Is having to publish your source code under the GPL really an unreasonably high price to pay for this competitive advantage? After all, you can still charge for your program, and because there is no easy way for ordinary users to install it other than buying it from the App Store anyway, the public availability of the source code shouldn't hurt the sales much, if at all.

At the moment, although I see strong arguments both for and against, I lean mostly towards not allowing such exceptions to Stockfish's GPL. But I am still very much in doubt, and depending on how the current discussion develops, I may still change my mind.

Tord Romstad
Posts: 1808
Joined: Wed Mar 08, 2006 8:19 pm
Location: Oslo, Norway

Re: StockFish engine

Post by Tord Romstad » Thu Jan 13, 2011 8:19 pm

kinderchocolate wrote: Michel is right, LGPL wouldn't fulfill the requirements anyway. I happen to be on the same boat, my yet-to-published chess app uses Stockfish as the underlying engine. I had to modify the main loop in uci.cpp. Instead of waiting for standard inputs, it waits for a message from another thread. This way, I could spawn a Stockfish thread without modifying any other part of the code.
That's pretty much exactly what the official iOS Stockfish does, too.

Post Reply