GPL issues with ML post processing software

Started by Thomas Worth, May 15, 2014, 08:12:10 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Thomas Worth

Well, let me just ask this:

Do you want commercial products to support the Magic Lantern file format?

If the answer is yes, then I suggest relaxing the licensing on the vertical stripes code. The reason is the 5D Mark III files written by Magic Lantern, for whatever reason, have errors in them that need to be corrected through post-processing using Alex's code. This needs to be done to get something 100% useful out of the camera. Releasing the MLV format to the public was a very good thing, but this only gets us 90% there.

By keeping restrictive GPL licensing on this in particular, you're basically holding the image hostage until commercial software developers give up all their code, which they're not going to do. The result is commercial developers are discouraged from adding support for RAW and MLV, which hurts Magic Lantern users for the reasons already discussed in the thread.

Audionut

You could consider calling the code as a third party application.  This way, AFAIK, you would only have to release the source code for that third party application, and you are free to keep the rest of your code proprietary.

http://www.gnu.org/licenses/gpl-faq.html#WhyDoesTheGPLPermitUsersToPublishTheirModifiedVersions


I'm the mean time, I believe it is appropriate to respect the GPL, and remove the offending code from your program (as a show of good faith).  The needs and wants of users, do not override the fundamental aspects of the GPL.
This is like saying, lets break the law, because it is useful to a subset of society.

Please note:  This is my opinion, and my opinion only.  Please do not consider my opinion, as a statement on behalf of a1ex, or the ML core development team.

a1ex

Yes, I'm fine with commercial programs that are also free software, working with ML file formats and being supported here on this forum.

I'm also fine with proprietary software (aka closed source) supporting ML file formats, but if they want to make a profit, that should come from their own code, not from a closed-source modified version of my code.

Quote from: Thomas Worth on May 15, 2014, 08:24:17 AM
Alex, you might consider releasing the vertical stripes code as LGPL, or something more permissive.

If you look at the number of ML downloads (it exceeded 1 million downloads, without counting the 5D3, 7D and most recent ports), you will realize right away that relaxing the license for my postprocessing code would be like saying "here you have the perfect recipe to make a small fortune from my work, just take it, it's all free".

Unfortunately for some of you, this is not exactly my intention, and GPL is just a tool to prevent such situations from happening. I could have given this code away as public domain, but I chose to protect my work from being used without giving back.

Instead, I'm trying to build a community that does not just consume whatever we give to them, but I want this community to actually participate in the development process, help each other, and share the knowledge. We gave you some free software, we gave you a proof of concept that you found useful, and now we expect you all to take this software at the next level, and let us build upon your work, in the same way as you have built upon ours. I'm quite far from this utopian goal though, but this is the direction I want ML to go.

Therefore, please give me a good explanation about why relaxing the licensing for my postprocessing code can help achieving this goal.

This is also my personal opinion, I'm not speaking about other ML team members. But I invite them to share their opinions.

A comment from here summarizes my feelings on this matter:
Quote
i find those that argue against the GPL are those that want to use something and not have to bother giving back

P.S. Without the original discussion, this thread may be kinda hard to understand.

Thomas Worth

Quote from: a1ex on May 15, 2014, 09:44:11 PM
If you look at the number of ML downloads (it exceeded 1 million downloads, without counting the 5D3, 7D and most recent ports), you will realize right away that relaxing the license for my postprocessing code would be like saying "here you have the perfect recipe to make a small fortune from my work, just take it, it's all free".
I don't know about that, Alex. Your vertical stripes code (let's limit the discussion to this code in particular) is fairly specific to Magic Lantern, and as far as I see would mainly be used for processing files written by Magic Lantern. The only interest I have in this bit of code is for presenting a clean, correct-looking image to the user.

Quote
Unfortunately for some of you, this is not exactly my intention, and GPL is just a tool to prevent such situations from happening. I could have given this code away as public domain, but I chose to protect my work from being used without giving back.
I'm sure many of your users feel that RAWMagic does give back. It gives back by streamlining many of the workflow issues mentioned by your users, which boosts the value of Magic Lantern as a whole. Furthermore, I am contributing my professional experience as a filmmaker to the project by offering tools that cater to users with professional needs.

And I don't disagree with your decision to GPL your code. You've clearly done an enormous amount of work, and deserve to make that call. But, as this situation demonstrates, this isn't the perfect solution for Magic Lantern as a whole.

Quote
Instead, I'm trying to build a community that does not just consume whatever we give to them, but I want this community to actually participate in the development process, help each other, and share the knowledge. We gave you some free software, we gave you a proof of concept that you found useful, and now we expect you all to take this software at the next level, and let us build upon your work, in the same way as you have built upon ours. I'm quite far from this utopian goal though, but this is the direction I want ML to go.
I understand that, and I agree to a point. But I am getting the impression that the developers' definition of "progress" is strictly how clever you can make the code and not how usable Magic Lantern is to the non-software developer. I think there should be a balance here. What about the ability for users to be more creative, and the resulting content? Is that not a positive result of your work? Just because people aren't fixing bugs doesn't mean they're not being productive in other creative ways.

Quote
Therefore, please give me a good explanation about why relaxing the licensing for my postprocessing code can help achieving this goal.
The vertical stripes code in particular is a key component to getting usable images from the 5D Mark III in the way adopters of your file format would expect. You mentioned you're fine with closed source software supporting ML file formats, which suggests you support commercial software working with your files. Unfortunately, the files straight out of the 5D Mk III aren't 100% usable, and this isn't simply a case of requiring post-processing with a well-established technique (e.g. debayering). No, the files require processing in a way that you understand because your software is actually writing the files. Therefore, it seems fairly common sense that if the files require post-processing to look correct, you'd facilitate that in any way you could to all types of developers, open source or otherwise. Again, I'm not talking about post-processing software that performs general image processing that can be used to "make a small fortune" as you mentioned. This code is fairly specific to ML. In other words, I'm not looking to convince you to relax licensing on your vertical stripes code so I can integrate it into all my products as a general image processing algorithm for the purpose of making money from it. I just want to be able to provide ML users with a clean, usable image. I will happily handle any subsequent image processing from there with my own code.

I'm only asking that you relax licensing on the minimum code required to get a clean image out of your files. If people want to make a fortune off your vertical stripes code, they will. They'll just go download it and use it and not tell anyone about it. I'm not going to do that though, and instead am going to hope you grant the community a more permissive license so we can move on from this issue and redirect our time to helping ML users be more creative.

Midphase

Quote from: a1ex on May 15, 2014, 09:44:11 PM
Instead, I'm trying to build a community that does not just consume whatever we give to them, but I want this community to actually participate in the development process, help each other, and share the knowledge. We gave you some free software, we gave you a proof of concept that you found useful, and now we expect you all to take this software at the next level, and let us build upon your work, in the same way as you have built upon ours. I'm quite far from this utopian goal though, but this is the direction I want ML to go.

I wish we could have a conversation about this on Skype, because it's so difficult to convey the concept I'm trying to convey simply through text.

In essence, what you're asking for is impossible due to the huge knowledge gap between who your product is used by vs. who can develop the product. ML appeals to users who are interested in taking still photography or shooting video with a very specific (and narrow) line of cameras. Those users (including myself) have a great deal of knowledge of lenses, lighting, frame composition, and so on. A very small minority of those members have knowledge of how to write code, or even how to properly test code and report bugs. The best that can be expected from your end-user base is to provide some feedback on improvements that they would like to see. Unfortunately, more often than not, this feedback is misinterpreted by the developers as criticism which is responded to with the same retort "If you want to do ... then why don't you program the code yourself?"


The basic conclusion is this -- We (the users) by and large have no desire to "participate" in the development of ML. We are excited about ML inasmuch as it allows us to capture better looking video with cameras we already own. We look on with excitement at new possible developments and your upcoming ability to unlock even more functionality out of our old and tired DSLR's. At the same time, we want to invest the least amount of time as possible online, or reading manuals. We want to pretty much install ML as fast as possible, and get back to doing what we are actually interested in doing which is to shoot.

Sorry if this doesn't fit your utopian goal, but if we're all honest about the world we live in; this is in effect the truth.

g3gg0

what about a:

"hi alex, i want to make a commercial tool. do you see a chance to somehow fix vertical stripes without violating GPL?"
Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: [email protected]
ONLY donate for things we have done, not for things you expect!

Thomas Worth

Anyone trying to implement RAW or MLV format in their commercial products will need these functions in raw2dng.c to repair the vertical stripes artifact:

add_pixel()
detect_vertical_stripes_coeffs()
apply_vertical_stripes_correction()

You could change the license for these functions to make it more appealing to commercial developers. That would be the only license change to the entire Magic Lantern codebase, just those three functions, to allow a basic image to be correctly rendered from a RAW or MLV file without the GPL threat. Any additional processing like debayering or stuck pixel removal would be a separate matter.

Without these functions, a proper image can't be rendered from a Magic Lantern file without GPLing your own code. I'd suggest something very permissive, like a BSD-style license. That's the only way to not scare off big companies like Adobe.

dmilligan

or you could just re-implement them yourself,
or you could put them in an external library and release the source of that library,
or you could just release your code (which IMO is what you should do)

it's not fair that you would get to take all the work done by the developers here, build on top of it, and then not share the work you did back, unlike those who came before you who did SIGNIFICANTLY more work than you did without whom your own work would be worthless, and then profit from it.

Marsu42

Quote from: a1ex on May 15, 2014, 09:44:11 PM
Unfortunately for some of you, this is not exactly my intention, and GPL is just a tool to prevent such situations from happening. I could have given this code away as public domain, but I chose to protect my work from being used without giving back.

Next to thanking alex, g3gg0 and the rest of the devb team again I'd like to comment that building a community seems to work (even though I'm lagging behind what I'd like to share back. The reason I sit down at all and polish up code for merging is that I feel obliged to the project and it's essentially non-commercial.

Imho the current community building is only possibly because of the gpl system, my understanding of lgpl is that this is created for cases when the oss software wouldn't be adopted at all because vendors cannot or don't want to share their source and would use (probably inferior) commercial libs instead... so lgpl is a "2nd best" option to inject oss software into the closed software industry and to creat alternatives to existing commercial software, not to enable making money from integrating other people's work into source code.

My observation: the current gpl seems to work with the exception of the "usual suspect" big lgpl projects - there are lots of companies out there successfully packaging gpl software and providing support for it. With the lacking ML docs, this is surely a field that could generate money w/o undermining the "share code back" idea.

g3gg0

Quote from: Thomas Worth on May 16, 2014, 08:22:19 PM
Anyone trying to implement RAW or MLV format in their commercial products will need these functions in raw2dng.c to repair the vertical stripes artifact

this is open source. it is readable code. it explains what it does and what you would have to implement on your own.
i am sure there is even a thread explaining the backgrounds, if the comments are not enough.
this algorithm is simple and not patented...

you want to sell a product, you want to earn money. please do so, thats a good idea.

so what about contributing back to the community?
understand what the code does and present your version that is free of any license (public domain).
that way you can use it in your tool without any fear and the solution you are demanding is done.

i dont understand why ML devs should give everything for free and people earning money dont have to give something back.
especially if things are so simple.
Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: [email protected]
ONLY donate for things we have done, not for things you expect!

Thomas Worth

Quote from: g3gg0 on May 17, 2014, 01:00:30 AM
i dont understand why ML devs should give everything for free and people earning money dont have to give something back.
especially if things are so simple.
Not everything, just enough to get usable footage from your file format. I just want to be able to give your users a clean image. Do you think that request alone takes things too far?

The fact is I would be accused of stealing the above code even if I wrote my own implementation. That's why I'm asking you to release it under a more permissive license, so we can avoid this conversation altogether in the future.

Audionut

Quote from: Thomas Worth on May 17, 2014, 01:30:07 AM
Not everything, just enough to get usable footage from your file format.

If I understand you correctly Thomas, if the vertical line code contained, say, 1,000,000 lines of code, you would agree with the wishes of the developer of that code?

You have been given various methods, by which you can still maintain the code in your application.  But since these methods involve you actually doing the leg work, you seem to deem it appropriate to continue to insist, that the world would be a better place, if a1ex made the changes.

a1ex, of course, being the same person who did all of the initial leg work in helping to develop, and release the actual raw recording feature, and the vertical line code, and everything else he does.

Still, after all of that, and after personally advising you, that he is happy for your application to be supported here at these forums, when using his code in commercial manner, you continue to insist that he should make further allowances, to make life easier for you, to make money.

Quote from: Thomas Worth on May 17, 2014, 01:30:07 AM
I just want to be able to give your users a clean image. Do you think that request alone takes things too far?

You Thomas, have the option of, "giving users a clean image", from your application, by using any of the methods described in this thread.  a1ex has already given, "his users", the ability to obtain "clean images", from the code developed for Magic Lantern.  Your opinion on the usefulness of your application, vs the usefulness of the applications already available, is simply that, your opinion.  It is not a justification!

Quote from: Thomas Worth on May 17, 2014, 01:30:07 AM
The fact is I would be accused of stealing the above code even if I wrote my own implementation. That's why I'm asking you to release it under a more permissive license, so we can avoid this conversation altogether in the future.

The fact is, you could be accused of stealing code, because people choose to act in a manner, that I otherwise do not even want to get into here.  I have never coded a proprietary application myself, but common sense dictates, that many developers of these applications, probably deal with this as a matter of course.  This is certainly nothing special to you, or your application.

Quote from: g3gg0 on May 15, 2014, 11:45:27 PM
what about a:

"hi alex, i want to make a commercial tool. do you see a chance to somehow fix vertical stripes without violating GPL?"

Communication goes a long way towards an harmonious relationship.  And I can assure you, that as a moderator of these forums, I would take appropriate action towards any members, claiming your application was stealing code, without any sufficient evidence.

As it stands now.  You have stolen code, and you are using it to help you make money.  This is poor form!

Thomas Worth

Well, thanks anyway for hearing me out.

This is really too bad. :( With a little help from you with this issue, I think Magic Lantern users could have benefited greatly.

dubzeebass

So are you giving up? There's got to be a happy medium.

kontrakatze

In my humble opinion this problem has been discussed in the past millions of times if you take a look at the linux community. Here we have two paties as very often:
A) party one thinks of a community based project, open to everyone to his own personal degree.
You get
- a broad community
- a project getting bigger by its userbase
- support by people who wouldn't do anything if it would be a commercial thing
- transperancy for everyone who can follow the technical stuff up to a certain degree

In my personal opinion, very strong points to think abaout.

B) party two wants to make a business aka money
- they need a broad community
- they need a big project, otherwise no one would be interested in buying anything
- for small parties, they need the support by a userbase
- transperancy is nothing they are interested in, as any other guy could copy their basis for business and maybe make it somehow better.

In my personal opinion, we all need some kind of bread and butter to live. So making money is NOT an evil at all.

In the end both parties have good reasons for their points of view, but they are opposing each other and always will. And, as usually in situations like these, as done with linux, mozilla and all the others, its first come, first serve. The ones who started the project, set up the rules. Without them, there would't be the project at all.
For the second party there are still possibilities to go their own way without violating the basic ideas of the founders. Some of them are already mentioned above. So, there should't be anything to complain about, but only new ways to approach their goal.

Regards, and keep on going doing a great job.


Toffifee

It's been very interesting to follow this discussion and I do hope you guys find a great solution!

Great solutions always exists. Some just take longer than other to find.
I mean, even Apple and Google announced today that they would drop all lawsuits towards each other and work towards better solutions.


g3gg0

Quote from: Thomas Worth on May 17, 2014, 01:30:07 AM
The fact is I would be accused of stealing the above code even if I wrote my own implementation.

we know (after this discussion) that you are honest and not want to violate licensing.
thats not the point.

noone is accusing you that you have stolen anything.
we just want to hear:
a) yes, i use GPL code and will relicense my tool as GPL
b) no, i implemented it on my own
c) no, i implemented it on my own, you want to throw a look at it to make yourself confident?

with GPL you have two options:
a) use it as it is and contribute back (GPL spirit)
b) do it on your own and do whatever you want


Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: [email protected]
ONLY donate for things we have done, not for things you expect!

Phil Rhodes

First a disclaimer: I'm an acquaintance of Thomas's, but I'm not financially involved in his business. I'm also an admirer of both Magic Lantern and Thomas's past efforts with 5DtoRGB and his other work.

I think the issue here is one of standardisation and compatibility more than it is of who wrote the code.

The banding mitigation code at the core of this issue is intrinsically a best-guess at the ideal correction; it isn't completely perfect and nor can it ever be. That being the case, it is of course perfectly possible for other implementations to be written which would do a similar or better job.

Regardless of the quality of the solution, though, the problem that would create is that we now have two pieces of postproduction software that give different results from the same camera originals. This is not a new issue with any raw-shooting camera, but with a piece of fault-correction code like this, I think it's particularly important that efforts are pooled - which is what GPL is designed to do - but also that a consistent approach is taken, which GPL serves to limit in this case.

My recommendation would be for the anti-banding code to be released to LGPL on the basis that it's very important that everyone is doing the same thing, and that the widest possible group of people can (or are willing to) contribute to the code. Otherwise, MLV is intrinsically an obfuscated file format. That's extremely unhelpful, and might limit the deployability of Magic Lantern in a lot of circumstances.

Phil

dmilligan

Quote from: Phil Rhodes on May 19, 2014, 01:50:06 AM
Regardless of the quality of the solution, though, the problem that would create is that we now have two pieces of postproduction software that give different results from the same camera originals.
Why is that a problem? Every single piece of post production software ever written yields different results for the same input. I've never heard anybody complain about that before now.

Quote from: Phil Rhodes on May 19, 2014, 01:50:06 AM
the widest possible group of people can (or are willing to) contribute to the code
You do realize that the only thing LGPL would accomplish is fewer people contributing to the code? GPL does not hinder contribution, in fact it only hinders non-contribution. That is what you are arguing for is it not? that people would be able to take this code and not contribute back.

Quote from: Phil Rhodes on May 19, 2014, 01:50:06 AM
Otherwise, MLV is intrinsically an obfuscated file format.
That is absurd. MLV is completely open. The spec is open, the code that generates it is open and example code for parsing it is open. Maybe you don't understand what obfuscation means.

Stedda

All the other post processing tools before yours got along fine by doing 1 of the 3 things listed above by g3gg0. Also several other options have been laid out yet still were back to the same one request that the creators of the code should change their ideals and bend to suit your firm position (LGPL over and over again plus the help of a few cheerleaders) to be able to profit from someone else's work. It's almost funny to watch and knowing what I know from these threads I wouldn't spend a penny on the software
5D Mark III -- 7D   SOLD -- EOS M 22mm 18-55mm STM -- Fuji X-T1 18-55 F2.8-F4 & 35 F1.4
Canon Glass   100L F2.8 IS -- 70-200L F4 -- 135L F2 -- 85 F1.8 -- 17-40L --  40 F2.8 -- 35 F2 IS  Sigma Glass  120-300 F2.8 OS -- 50 F1.4 -- 85 F1.4  Tamron Glass   24-70 2.8 VC   600EX-RT X3

Phil Rhodes

The fact that the code is open is largely irrelevant if people aren't allowed to use it. Also, there seems to be a fundamental lack of understanding here as to why consistency and compatibility is important, which I find quite mystifying. This isn't really about opensource flag-waving, it's about usable, consistent postproduction software.

Anyway, if that's the situation, I think the best approach would probably be for Thomas to write an anti-banding implementation and release it to the public domain. It's a reasonably trivial piece of code and it might be possible to do better than the current implementation in any case. Of course, the best solution would be for Canon to release their approach, but I can't see that happening.

With a fresh implementation, anyone can use it, we gain consistency, and the entire concern becomes void. I do echo Thomas's concern that any such reimplementation would risk looking very much like the existing one, though.

For that to be valid, anyway, projects like Magic Lantern would need to make the decision to use it. If anyone were interested in doing that it might be worth opening a second thread dedicated to technical discussion of the problem and the sort of approaches that might be used to fix it.

P

g3gg0

i would appreciate this decision.

reasons:
a) you contribute back know how to the public domain / Magic Lantern
b) you solve that situation without anything that would offend anyone
c) we are not responsible for polishing the code until perfection, but provide a "good reference" and people with profesisonal experience care for their domain

Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: [email protected]
ONLY donate for things we have done, not for things you expect!

Stedda

Quote from: Phil Rhodes on May 19, 2014, 02:30:38 PM
Also, there seems to be a fundamental lack of understanding here as to why consistency and compatibility is important, which I find quite mystifying.

You came to that conclusion in the hour you've had an account here after creating an account to defend your friends position? Really? Do you even own a Canon camera with ML on it? Or use any of the other free conversion tools?

I think you have a fundamental misunderstanding of how post processing software works. As dmilligian stated there's not a one that will render any given image the same way. People choose them for their own style and look or for what works best with the camera they use.
5D Mark III -- 7D   SOLD -- EOS M 22mm 18-55mm STM -- Fuji X-T1 18-55 F2.8-F4 & 35 F1.4
Canon Glass   100L F2.8 IS -- 70-200L F4 -- 135L F2 -- 85 F1.8 -- 17-40L --  40 F2.8 -- 35 F2 IS  Sigma Glass  120-300 F2.8 OS -- 50 F1.4 -- 85 F1.4  Tamron Glass   24-70 2.8 VC   600EX-RT X3

Audionut

Quote from: Phil Rhodes on May 19, 2014, 02:30:38 PM
I think the best approach would probably be for Thomas to write an anti-banding implementation and release it to the public domain. It's a reasonably trivial piece of code and it might be possible to do better than the current implementation in any case.


Quote from: a1ex on May 15, 2014, 09:44:11 PM
Instead, I'm trying to build a community that does not just consume whatever we give to them, but I want this community to actually participate in the development process, help each other, and share the knowledge. We gave you some free software, we gave you a proof of concept that you found useful, and now we expect you all to take this software at the next level, and let us build upon your work, in the same way as you have built upon ours.

g3gg0

Help us with datasheets - Help us with register dumps
magic lantern: 1Magic9991E1eWbGvrsx186GovYCXFbppY, server expenses: [email protected]
ONLY donate for things we have done, not for things you expect!