by emerentius_ » Tue Jan 09, 2018 2:50 am
I congratulate you on your achievement with JCZsolve. It's an amazing piece of work.
I have a request. Could you, jason, champagne and zhouyundong, make the insights found in the making of JCZsolve available to others?
There is currently no license given for the code other than the informal one by zhouyundong when he first posted his code. Because there is no license given by all authors, it is in my understanding illegal to use the code for anything including personal use, non-commercial use or research. That actually includes you, the authors, too, except for maybe zhouyundong because of his informal license.
I would love to incorporate the JCZsolver algorithm into my own sudoku library and make my code available under a free software license, the AGPLv3, but I can't because of copyright. Now technically there is no copyright on algorithms but you can only find out the details of the algorithm by reading the implementation on which there is copyright. That puts any re-implementation of the algorithm on questionable legal ground as one may reproduce implementation details that don't directly follow from the algorithm.
The AGPLv3 gives everyone the right to use, modify and redistribute the software however they see fit under the restriction that any software derived from it has to be free software itself and preserve those rights and restrictions, meaning in practice that it also has to be licensed under AGPLv3. If you're worried about commercial exploitation of your work, the AGPLv3 does allow you to sell software but this has proven to be a difficult business model because anyone who buys it may then turn around and distribute it freely to anyone who will then be allowed to distribute it, too.
It would be great if you could put your work under a free software license so that people can use your work. It would be ideal for my purposes if that license is compatible with the AGPLv3. If you don't want to do that, then I would ask for explicit permission to build my own program from yours. Your rights over your program would of course not be inhibited in any way. If you don't wish to to do that either I would have to do a clean-room implementation. That is, I would need to find someone who could write a specification of the algorithm from your code and then write my program from that specification. This way I could re-implement the algorithm without violating your copyright. It would be a lot of unnecessary work.
I'm programming in Rust and I will have to structure my code quite a lot differently than your C program to make it idiomatic Rust code. I can't just copy-paste it in place.
I know copyright and licensing are not subjects anyone likes to spend their time with, but I ask that you take the time to think about it so others may benefit from your work. If you give me permission to write my implementation from your source code and put it under the AGPLv3 I could also write down a specification of how the solver works myself. That may be useful for others who want to implement or improve upon it.