GPL issues with commercial app (again)

Started by martinhering, April 22, 2017, 04:11:15 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

martinhering

I like to publish a commercial application that deals with MLV footage on MacOS. So far it's free for download and I have really positive feedback and users like it.

But recently I came to the conclusion that it is just not possible for me to publish the app as it is right now and not violate the GPL as it is regarded by members of this project. I wrote all the code myself and don't use any GPLed source code. However after talking to @a1ex I also think it's still a derivative work and no matter what I do, it will always be derivative work, because it is simply impossible to provide a clean room implementation. You have to look at the Magic Lantern source code to even understand the MLV file format.

So, I don't want to violate the GPL and I don't want to be a dick to everybody that is developing for this wonderful project. I am writing this post here, because I like your input. I am in a dilemma and I like to know what behaviour is acceptable.

I don't want to publish the source code of the whole app, because 1) there is a big issue with asian and eastern Europe based developers who just take your source code from GitHub and put it into the App Store for money and 2) I like to support my family and bring in a little money. As far as I can see, I have 2 options:

1) Stop developing my app and remove all downloads from the internet. The current version is time bombed and expires May 15.

2) Find a solution to publish some of the source code, that is actual derivative work as open source under GPL and keep the rest commercial. I was thinking about a command line tool, that can be interfaced from any app.

What would you guys prefer? And what is the technical acceptable way to go with option 2?
5D Mark III, EOS M, 700D

Greg

I spent with ML code several thousand hours for free.
Do you think it's fair?
If I worked for money. Today I should buy a house, a car and a camera. But I can not because I worked for free.

Alex should be a millionaire. But he also works for free.

The only person here who collects private donations is g3gg0.
Of course, he spent with ML much more time than me. But it's a little unclear.

Will this thread lead to the end of ML?

Wayne H

Hi martin,
Tricky subject
Firstly your app has become a integral part of my workflow, and makes MLV files an absolute seamless pleasure and joy to work with on the mac, us mac users who exclusively work with fcpx have a very limited choice of post apps to choose from in terms of ease of use log support and speed,

if anything your app makes me want to use magic lantern even MORE, however it is a kick in the teeth for those who have spent hours and hours for free developing magic lantern.

I would say in my humble opinion either 1, add a donation link, 2 continue to develop the app with one version with all the current and future features for free with publishing some of the sorce code as you touched on, and a second exactly the same but with batch export and some more pro features for a small fee, (that way your adding to the magic lantern community & catering to us pros WHO NEED YOUR APP)

Fact of the matter is us mac users have been crying out for an app just like yours, and im sure as more people know about your app, more people will want to use magic lantern (or start using it again), becuase to my understanding some people love magic lantern but can sometimes find MLV cumbersome to use in post on the mac platform, (workarounds or app no longer developed, or no log support or UI is ugly etc) your app is the all in one app that has all the features for a SERIOUS AND FAST workflow, footage app with fcpx is gold.

Magic lantern deserves a badass app for mac, and that would only open to the door to even more pros using it i hope a solution is found because your app is wonderful. And if a solution is not found WE ALL LOSE OUT.

(Ps i totally understand the whole open sorce under gpl thing, but bottom line is as great as magic lantern is us mac users NEED a equally great post MLV app to work with, and becuase of the GPL thing no app developer has catered to us mac users, or at least a app that has all the features we need for a viable pro workflow, (counter productive thus far) Im happy to pay for it, but i understand thats slap in the face for others have devoted so much time in ML, us Pros need this app.

Martin PLEASE find a soltuion thats suits everyone,

Have a great weekend.

Lars Steenhoff

First, please dont kill the project.

Try not to worry about what chinese app copiers do because they will always be around.

Think also about the benefits of releasing the app for free and accepting donations.

You will build a good name and this will benefit any other commercial project you will launch on the appstore under the same publisher name.

in that way you get free marketing and goodwill.


bouncyball

Quote from: Greg on April 22, 2017, 04:47:56 PM
I spent with ML code several thousand hours for free.
Do you think it's fair?
@Greg:
Haha :) yeah good question. IMHO as far as one thinks it's ok and fair with him then _it_is_fair_. I may sound trivial but we all do this not for someone but for ourselves initially. We love it, we play with it and as a side effect it's good for the community. After while we get to the point when it's not interesting anymore or we found another more important thing to do. I can name 2 obvious examples here: Trammel Hudson, Andrew Baldwin. You can name others. And I really appreciate your contributions to this community :)

@martinhering:
I think there is always possibility to go with option 2. GPL part of the code which you think is obviously derivative is a good starting point.

regards
bb

lostfeliz

I'm glad that you brought this up. Obviously this is a community that has donated tens of thousands of hours for something that believed in. But... we all have to pay our bills.

I don't know anything about the intricacies regarding the rights to the ML code, etc., but if you keep developing it I will definitely be donating. Your software is very helpful for a daily workflow that's moving fast. I rarely have time to go the MLVFS to Resolve route for a work project.

This subject also reminds me that I need to figure out Bitcoin so I can donate to ML!

g3gg0

Quote from: Greg on April 22, 2017, 04:47:56 PM
The only person here who collects private donations is g3gg0.
Of course, he spent with ML much more time than me. But it's a little unclear.

not quite correct. that money is used for the ML server rent i pay from this account.
just that all money that came in during years doesn't even make up one month of server rent :)
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!

DeafEyeJedi

Quote from: Wayne H on April 22, 2017, 06:22:37 PM
..I would say in my humble opinion either 1, add a donation link, 2 continue to develop the app with one version with all the current and future features for free with publishing some of the sorce code as you touched on, and a second exactly the same but with batch export and some more pro features for a small fee..

That's not a bad idea at all.

Quote from: Lars Steenhoff on April 22, 2017, 06:44:45 PM
...Think also about the benefits of releasing the app for free and accepting donations.

You will build a good name and this will benefit any other commercial project you will launch on the appstore under the same publisher name.

in that way you get free marketing and goodwill.

This is actually quite intriguing. It has a nice approach w a steady formula.

Quote from: bouncyball on April 22, 2017, 06:58:46 PM
@Greg:
Haha :) yeah good question. IMHO as far as one thinks it's ok and fair with him then _it_is_fair_. I may sound trivial but we all do this not for someone but for ourselves initially. We love it, we play with it and as a side effect it's good for the community. After while we get to the point when it's not interesting anymore or we found another more important thing to do. I can name 2 obvious examples here: Trammel Hudson, Andrew Baldwin. You can name others. And I really appreciate your contributions to this community :)

Perfectly well said there, @bouncyball!

Quote from: bouncyball on April 22, 2017, 06:58:46 PM
@martinhering:
I think there is always possibility to go with option 2. GPL part of the code which you think is obviously derivative is a good starting point.

+1

Quote from: g3gg0 on April 23, 2017, 02:05:15 AM
not quite correct. that money is used for the ML server rent i pay from this account.
just that all money that came in during years doesn't even make up one month of server rent :)

:o Well thank you for keeping them up and running!
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

g3gg0

@martinhering:
well, during an early phase of your program a1ex asked about the "usual GPL questions" first
to remind you that ML's code is GPLed and you won't run into a situation where you make a living
from the tool and realize that you are stuck in a dilemma between violating GPL and providing a
state of the art program for processing ML raw footage.

wait...? that just happened? oh no

okay, enough sarcasm.

a) i (and for sure other ML devs) don't want good tools to suddenly disappear.
b) especially not using a time bomb that refers to an discussion that more or less points out that "since ML guys are insisting on GPL causes the tool to disappear"

maybe this wasn't your intention, but it feels like you put pressure on us.


anyway.
in which way do you interface GPLed code?
which headers do you include and which functions do you re-use?
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!

dfort

Quote from: martinhering on April 22, 2017, 04:11:15 PM
2) I like to support my family and bring in a little money.

Let's make that number one, in fact let's make that the only issue because you can't really do much about software piracy.

I work in the film industry and believe me, despite all the illegitimate copies of movies floating around, somehow the studios and their top executives keep getting richer. These guys really know how to make money and the industry has embraced open source software big-time. The animation and VFX render farms are running huge farms of Linux servers which they pay no licensing fees for the operating system. What is surprising is that instead of hiding some of their most valuable tools that were developed in-house, studios are releasing them to the open source community. Take for instance OpenEXR developed by Industrial Film and Magic, OpencolorIO by Sony Imageworks and OpenVDB / OpenDCX from DreamWorks Animation. I recently had a chance to talk with some of the developers at DreamWorks Animation and asked why they would spend hundreds of hours developing software for the studio then releasing the source code. The answer surprised me--it was because it made the programs better. Instead of having to support customers, users submitted bug fixes and improvements they made to the main repository.

Singing praises of open source in this forum is signing to the choir but I've also been on the other side of this argument when I helped with a plug-in for Apple's Final Cut Pro, Cinema Tools. I worked under a Non Disclosure Agreement so I shouldn't tell you much about it other than Apple makes sure that no one person or division holds all of the company's secrets.

I'm not a software programmer or a lawyer so I may be completely off base on this next statement. Open source, free software and making a living are not mutually exclusive. Here's an interesting article on the GNU Operating System website about selling "free software."

At first I was put off by the idea of splitting the project into an open source command line portion and a closed, "commercial," GUI but that's pretty much what Puppet, a software company from Portland, Oregon, is doing. The more I thought of it the more I liked it because we have a mixture of Windows, Macintosh and Linux users and command line tools while more difficult for some people are supported on all platforms.

Another out of the box idea is what Ton Roosendaal of the Blender Foundation did. He was working in a company that went belly up and he was able to take their proprietary software and make it open source. Then he started a foundation to train artists and software developers, got government grants that paid for a commercial space where he set up a small studio and has made several short films. Although I have never used Blender on a project he is one of my heroes. When I was in Amsterdam a couple years ago I got the chance to meet Ton and check out his operation.





OK--so maybe you aren't going to start a foundation but I just thought I'd throw this out there to show that maybe you need to think outside the box.

martinhering

All valid points, thank you, besides this one which does not make any sense to me:

QuoteWill this thread lead to the end of ML?

Regardless. I decided to split the application up.

  • My user-interface application will not be based on MLV anymore, but on DNG. This will open the app up to all kinds of cameras and not be limited to some Canon models and gets rid of the GPL questions.
  • I will be developing an open-source tool (not necessarily command line) that can be interfaced from other applications, that will do the job of converting MLV to Cinema DNG. You are free to using mlvdump, if you like.
Keeping it a commercial app is also better for supporting other commercial technologies like licensing codecs and such.

Quote[...]command line tools while more difficult for some people are supported on all platforms

The conversion tool won't be platform independent, because I am a Mac/iOS programmer and I can do a better and more efficient job when using Apple APIs (when dealing with images e.g.).

QuoteThink also about the benefits of releasing the app for free and accepting donations.

I worked my whole life on commercial apps. That's what I know. I know nothing about donations. I am not the right guy for this model.

I hope everyone, well almost everyone can be happy with this solution.
5D Mark III, EOS M, 700D

Lars Steenhoff

Will the interfacing between the mlv part and the gui be seemless?

the best part of the app for me is the the easy way of exporting to dng and having previews of the thumnails.

martinhering

@Lars Steenhoff
QuoteWill the interfacing between the mlv part and the gui be seemless?

I answered your question over at the app specific thread.
5D Mark III, EOS M, 700D

g3gg0

while i understand your decision, i still wonder what the time bomb is trying to solve.
did someone issue an ultimatum?
get rid of the expiry date in software and then decouple the commercial part from the open sourced.

contribute back to the GPL world with your access libraries.
although ML exists due to the fact people contribute back to the project (GPL-spirit) it is possible
to co-exist if you carefully pick how you interface.

if you read my post at http://www.magiclantern.fm/forum/index.php?topic=7122.msg59525#msg59525
you will find "mlv file structures in C: here (LGPL)" which is a LGPLed mlv.h
maybe it helps with that issues.


unfortunately your tool will only help commercial users as hobbyists probably won't pay for this tool.
thats why we prefer open sourced end user tools.
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!

martinhering

Quotewhile i understand your decision, i still wonder what the time bomb is trying to solve.
did someone issue an ultimatum?

No, no one did. I usually build time bombs into my alpha and beta versions, because I don't want everybody to use buggy software forever. The software expires now, because I don't want to put out an update while the GPL situation isn't clear. I did not know about the "derivative work" issue before and I also thought that I can make it work, but obviously I can't.

Quotecontribute back to the GPL world with your access libraries.

I will.

Quoteif you read my post at http://www.magiclantern.fm/forum/index.php?topic=7122.msg59525#msg59525
you will find "mlv file structures in C: here (LGPL)" which is a LGPLed mlv.h
maybe it helps with that issues.

That's great. But raw_info structure is missing. Also mlv_rawc_hdr_t is also missing. This header needs an update. But that's beside the point. You can't actually make an MLV tool and not make it GPL, because anything you do would be derivative work, because you can't providing a clean room implementation. If you want to interface with MLV, you have to do a lot of stuff, to make the RAW footage usable, like fixing dead pixels, fixing focus pixels, fixing vertical banding, handling Dual-ISO and white balance correctly, etc. All this is impossible without looking at the firmware code. The mlv.h header is not enough information.

Quoteunfortunately your tool will only help commercial users as hobbyists probably won't pay for this tool.
thats why we prefer open sourced end user tools.

Sorry, my idea is not yet fully backed. Still thinking about this. I don't know if you know Apple Compressor. It's a batch processing tool. That's what I have in mind for the open-source MLV tool really with an additional XPC component to communicate with other processes headlessly. So, it is an end user tool that does all the fixing work, it's just not developing, managing and archiving all the footage.
5D Mark III, EOS M, 700D

g3gg0

mlv_structure.h: the missing things can be easily implemented.

but yeah, all that pixel-algorithmic stuff is kinda hard.
btw this was *not* reverse engineered from the firmware.
this was just done by looking at the images and trying to compensate errors in them.
(as far i can remember what alex did)

i don't know apple compressor, sorry. as long it doesnt violate licenses, i am fine with it :)

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!

martinhering

Quotebtw this was *not* reverse engineered from the firmware.
this was just done by looking at the images and trying to compensate errors in them.

Ok, but if you actually do this all by yourself again, nobody would believe you anyway and accuse you of violating GPL (not saying I did this work by myself, I actually looked at the code, so I am guilty). So then you would be back at square one. It's really not worth it to go through all this trouble.

Quotei don't know apple compressor, sorry. as long it doesnt violate licenses, i am fine with it

If it's GPLed, it's fine right?
5D Mark III, EOS M, 700D

Wayne H

Firstly how did pomfort manage to implement native mlv support with there cliphouse app without violating the open source gpl? They had a free version which shipped with there now discontinued digital bolex camera, and a standalone payed version. (Incidently they stopped selling the app at the end of 2016 becuase of the discontiued digital bolex.

Secondly, martin how about somehow integrating your app as a plug in for fcpx i know for a fact that currently there is no plug-in that supports cdng files natively in fcpx (that would preserve the ONE STEP conversion and not violate the gpl)

many pros who use cdng dont want or need to work in da vinci resolve, but are forced to use it or adobe premier or do the dreaded x2 extra conversion process, because of fcpx lack of cdng support, blackmagic users being a prime example, also prores 4444 by design is 10bit, so cdng support would definetly be a BIG DEAL for magic lantern users who use fcpx (full 14bit support) and also cater to many pros wanting to use cdng within fcpx natively with color finale and not have to do the round trip to da vinci (fast turnaround) so that would also fill for your commercial app needs especially with you having extensive experiance on the mac platform.

Part of what makes your app so great is the whole fact that it reads mlvs natively in a lovely simple GUI, and is fast, so in essence its a one step conversion to proress, which most pros do anyway (h.264, sony xvac, canons motion jpeg etc to PR) fcpx works extremely fast with prores as it's optimised for it,

Honestly that EXTRA cdng conversion then to prores is a (pain in the butt) especially when working on a quick turnaround deadline, time wasted converting, extra file management, hard drive space, (its what puts alot of people off using magic lantern) i for one sacrifice that gorgeous 14bit colour for 10bit magic lantern prores files, just to work in fcpx, and not have to mess around with da vinci, or premier.

Your proposal for this new app with cdng only, well there are apps that already do this to one degree or another, and once converted to the cdng format all the tools are readily available in premiere and da vinci with expanded support, So your app then is only needed pixel removal, verticle line striping and all the magic lantern stuff like daul iso, which is still cool but i dont think it will be enough for people to part with there cash when there are already apps that do it for free, like MLVP (but again not a native mac app, ugly UI windows based lol) being a example and can be used on mac via wine.

Magic lantern's only draw back has always been that fast speedy ONE STEP post workflow, now we have it, it's going to be taken away,

Magic lantern really needs a native professional mac app that has one step conversion like yours currently is,  (it's the holy grail for magic lantern work on mac) THIS IS A REALLY REALLY BIG DEAL, it's your USP, i cannot stress enough on this, this is the single biggest factor in why some people dont use magic lantern, mlvfs came close but just not practicle with fcpx.

So i guess the very thing that makes magic lantern so amazing (open source) is it's ultimate achilles heel on the post production side.

We're just never going to get a one step conversion app with all the bells and whistle's that are needed to become a fast professional workflow becuase of the gpl license thing, it's a shame becuase the images that magic lantern produce are just amazing, and is still better than the recently released gh5, (well in my opinion anyway) think about that for a second a 2012 camera beats the latest 2017 gh5, mind blown.

Magic lantern has become a professional tool for years now, but has always lacked that PRO all in one app, it DESERVES a professional app to take it to the next level.

Finally martin if you decide to go down the route that you have mentioned a tight seamless integration mlv to cdng open source then your standalone app with export to prores working together that would still be a decent solution.

Happy sunday people.

g3gg0

Quote from: martinhering on April 23, 2017, 12:45:37 PM
Ok, but if you actually do this all by yourself again, nobody would believe you anyway and accuse you of violating GPL (not saying I did this work by myself, I actually looked at the code, so I am guilty). So then you would be back at square one. It's really not worth it to go through all this trouble.

nah. GPL doesnt mean that a method is patented or smth like that.
it primarily means you must not use the source code (or data artifacts) in your program if it has a incompatible license.

you can look at how the source code works, what it does and how it does that.
then you can reimplement it on your own, with your own source.
thats pretty fine.

(no, simply reformatting/refactoring/translating the code isn't enough. it should be visibly a reimplementation)

Quote from: martinhering on April 23, 2017, 12:45:37 PM
If it's GPLed, it's fine right?

no, independent from GPL or not. as long it doesn't violate the license terms.

e.g. if your program is a simple frontend to mlv_dump then its considered derivative work.
although if your program doesn't solely rely on mlv_dump, but is a processing utility that *supports* calling mlv_dump, thats a different kind of story.
see the LR plugin that adds cr2hdr (GPL) to a closed source program. thats totally okay.

it all depends on the exact setup/situation.
(and there is no pure black or white when it comes to derivative work)

in our case i'd rely on fair use. don't rip off our code (a1ex' and others' dozens hours of free work to get raw image data usable)
and sell this with a GUI frontend in some app store.
that should sound familar to you? :)
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!

martinhering

OK, here we go. I created a project on Github for the mlv conversion tool and published the first batch of code that's interfacing with MLV. Check it out.

https://github.com/martinhering/MacLantern/tree/master/MLV
5D Mark III, EOS M, 700D

ItsMeLenny

Blender has a similar issue with their GPL code. Fanboys of Blender and its GPL licence will type their fingernails off telling people that if your plugin refers to the blender api then your plugin must be also be open source. Stallman himself said that this is not the case. I also wonder how if some company makes some powerful rendering engine why would they open source the whole thing just so it can be used with blender.

g3gg0

same with linux kernel. iirc there were some issues with binary kernel modules. (especially nvidia drivers)
this was extended to "header files having macros can be considered as GPL and closed source drivers are not allowed to use them"
which renders the whole point of APIs useless.
yet including GPL headers was always some grey zone.
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!

squig

Making the user interface app CDNG based works for ML users if it's compatible with MLVFS. I concur with Wayne's suggestion of making the app a FCPX CDNG plugin too. FCPX has a huge user base, many of whom work with proxies of CDNG files. We live in hope that one day Apple will add CDNG support.

DeafEyeJedi

Quote from: squig on April 28, 2017, 01:21:33 AM
Making the user interface app CDNG based works for ML users if it's compatible with MLVFS. I concur with Wayne's suggestion of making the app a FCPX CDNG plugin too. FCPX has a huge user base, many of whom work with proxies of CDNG files. We live in hope that one day Apple will add CDNG support.

+1
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

martinhering

In the open-source MLV processing tool, I am developing, I just encapsulated all the mlv interfacing API into an XPC service. Any commercial application could now integrate this XPC service in binary form and communicate with it via inter-process-communication. It would be great if somebody could review the code and tell me if that would be an acceptable way to go integrating MLV into a commercial app.

https://github.com/martinhering/MacLantern/tree/develop

The XPC process code is here:
https://github.com/martinhering/MacLantern/tree/develop/mlvprocess

There in 1 header file that needs to be integrated into the commercial app, that's why I gave it the LGPL license.

And here is how the commercial app would communicate with the xpc service:
https://github.com/martinhering/MacLantern/blob/develop/MacLantern/MLVJob.m

One caveat, I think that also needs to be true is, that the commercial application can not solely depend on that xpc service. The integration of that service needs to be optional. Otherwise I think the whole commercial app could be seen as derived work again.

I hope you can see, that this issue is very important to me and that I am doing what I can to be compliant. If this method is not working for you, I think I need to give up. I can't think of any other options.
5D Mark III, EOS M, 700D