June 19, 2008

Release of cvxprocessing-1.0-beta1 (+tomography)

by orzel
Categories: KDE, Math, Software
Tags: ,
Comments: 14 Comments

I’m releasing part of the code developed during my PhD. Those are tools useful in the field of convex processing, and more precisely to solve a problem called convex feasbility problem.

This is based on Qt4, and released mostly under the GPL (with an added restriction : you must cite my work if you use this). Oh.. and there are unit tests, examples, and documentation, too.

caution : rest of the post is for those mathematically oriented people, and no more related to free software.

The convex feasbility problem is to find a point in the intersection of closed convex sets inside a Hilbert space. Believe it or not, quite some real-life problems can be formulated as such, for examples some image reconstruction problems in medical imaging, or also in the field of signal processing.

There are a lot of algorithms to solve this, you can find more information about those in the bibliography of my papers, or those from my PhD advisor M. Combettes.

This code provides the necessary tools to play and test those algorithms. Besides all elementary methods on Euclidian/Hilbert Space, it provides a way to compute projections on different interesting convex sets. There are also the needed tools to experiment with tomography, which is one of the main application in my PhD. You can compute the radon transform of an image and use this as data in convex feasibility formulation.

This is of course mostly of interest for those working in convex optimization and/or tomography. I want to highligh the fact that sharing such kind of code is very rare in this community. I would have gained a lot of time at the beginning of my thesis if other people had provided such code.

link : http://labs.freehackers.org/wiki/cvx-processing


  1. Simon says:

    With the added requirement, it becomes impossible to use your code for something other than related scientific work. I don’t think there’s a rational reason for adding such a requirement and by doing so, you will reduce the propagation of your memes set in the code, instead of promoting them.

    I think if you publish it under a full/clean GPL and add a request in a README file to please cite your work when you publish a paper based on using/modifying your code. That will work just as effectively and be less restrictive. (The fact that others don’t even share their code is not an excuse to fall into a restriction trap 😉


    Simon (came here by reading planet KDE)

  2. I dont think so. You can do whatever you want with it (within the GPL requirements), and if you happen to do scientific work, you have the additional requirement of citing the source of the code. I’m not a lawyer and English is not my mother tonguue. The idea is clear, and I would be happy to change the text is someone can provide a better one.

  3. jstaniek says:

    Thomas, I understand your point regarding the extra restriction. But I wonder the restriction makes the code GPL-incompatible. It this is the case, one would also wonder whether it’s possible to use GPL’d Qt to developing code licensed this way.
    If you own commercial or academic Qt license, that’s not a problem, except for problems with linking with other GPL code.

  4. cassens says:

    Being in academia myself, I understand your wish to be cited. Unfortunately, I think that Simon voices important concerns. With this additional clause, you actually modify the GPL, which the FSF (who is the copyright owners of the GPL) does not permit (see [1]).

    Although your added restriction does not affect the software itself, it adds an advertising clause comparable to the original BSD license [2].

    IANAL, but I would not combine your code with GPL licensed code myself. It is copyleft, it is free software, I just think it is incompatible with the GPL.

    Besides that, I always applaud it when researchers make their software available (in fact, when reviewing evaluation papers, I tend to point out that results are not reproducible without supplied code). Thanks for doing so.

    [1] http://www.gnu.org/licenses/gpl-faq.html#ModifyGPL

    [2] http://www.gnu.org/philosophy/bsd.html

  5. Fred says:

    While your intents are fine, I agree that they would be better stated as a request in an optional README.

    Which GPL are you licensing it under?

    if 3.x, section 7 states:

    “If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term.”

    …which seems to be stating it could just be ignored.

    2.0 seems to be completely incompatible with additional restrictions such as your.

    Additionally, under 2.0 + restriction it would appear to be incompatible with the open-source edition of Qt.

    With 3.0, I’m unsure, as the user can ignore your restriction, making it plain GPLV3 (iirc).

    IANAL, but the above worries me.

  6. Simon says:

    I’m not a lawyer and my native language also isn’t English, but to me there’s a golden rule that you don’t modify the GPL restrictions for copying, because the GPL is a well crafted piece of armor that breaks whenever you try to tweak it as a non-lawyer.

    I understand that you only want to ask fellow scientists to cite you when they publish something related to your work, but they would probably do that anyway if they found your work with the code. (If not, they’re assholes!)

    When a lawyer sees your modification to the GPL in a combination with other GPL’d code, he can only conclude that the added restriction isn’t legally compatible with the other GPL’d code.

    If a fellow scientist uses your code and modifies it to suite his purpose, he will have to publish the modifications to the source (if he redistributes) anyway due to the GPL and that contains your copyright statements as well. And it can easily be determined when he didn’t cite you in his paper or whatever. That is all you can do I think, it’s the honour system…

    Anyway, do what you want, it’s only free advice 😉
    Though you could ask the software freedom law center, or ask in an off-topic thread on groklaw.net


  7. Ok, then… there’s no way to enforce people using my code to provide a reference back ? I understand now why so few people release the code. I’m going to try to find some more information about this. How boring is this legal stuff. Thanks all for your input anyway.

  8. Fred says:

    There is, if you don’t use libraries under licenses incompatible with the restrictions you want; however, there are also issues with requiring people to link back (see BSD advertising clause fiasco however many years ago).

  9. cassens says:

    As Fred said, you can of course draft a free, copyleft license which includes a clause similar to yours. But such a license would be incompatible with the GPL, as several people have pointed out.

    And if you want to publish your code and have been using the GPL edition of Qt, you have to use the GPL yourself, ruling out such a “Academic Citation License”. You would need a academic or commercial license to do so.

    Then again, I am still not a lawyer.

  10. cassens says:

    For what it’s worth, the GPL’ed machine learning software Weka asks for citations, but does not require them. Just as an example.

    [1] http://www.cs.waikato.ac.nz/~ml/weka/ check “Getting started” -> “Citing Weka”.

  11. Malte says:

    I don’t know if I can say “Thank you” from the bottom of my heart, because I don’t directly profit by this code in particular, but I wish you the best in being a pioneer outside the cozy open source community and being a good example for all those scientists deceived by the big evil whos name is Bill.

    And please don’t waste too much time in getting entangled in paragraphs and legal stuff. That’s what lawyers are for. (Are there open source lawyers?)

  12. Bluebird says:

    Maybe you could keep the clause, but not in the license.

    You could do:
    1. relase the code under a non-modification license (just see the source) to show your good will and wet appetite.

    2. State clearly that you can also give a GPL, non-restricted version of the code to everybody that asks.

    3. If you do that, ask them kindly to cite you as their sources.

    Not everything has to be in a license to make it effective.

    The typical example being BSD, that eventhough does not enforce sharing back the code taken, still receives contributions.

    With my scheme, you get the additional bonus of talking to the people using your work.

    Only problem: not sure you can do 1 by linking to Qt.

  13. Ian Monroe says:

    Wouldn’t standards of academia require citations anyways?

    Trolltech actually does have “license exemptions” that allow some open source non-GPL licenses. However I doubt any of them are more restrictive then the GPL. Anyways, you should have thought of all this before using Qt Open Source edition. You could have used Qt 3 non-commercial or something probably.

  14. Gilles says:

    Perhaps, do something similar to openssl : http://www.openssl.org/support/faq.html#LEGAL2

Leave a Reply

Your email address will not be published. Required fields are marked *