10 ms·
FFmpeg is licensed under LGPL which can (albeit carefully) work on the web, but libx264 is GPL. I think that alone makes this project unusable in non-open-sourc
by NightMKoder 5y ago
FFmpeg is licensed under LGPL which can (albeit carefully) work on the web, but libx264 is GPL. I think that alone makes this project unusable in non-open-source projects? (For reference, GPL does not have any dynamic linking exception, so the copyleft terms apply as soon as you include it in your shipped binary in any way)
Aside from the OSS licenses alone, H.264 encoders/decoders have a required patent license. Most users get around this by using an API (e.g. `<video>` tags, AVFoundation) - which means Google/Apple pay for it when they ship the decoder for Chrome/iOS. How does this project get around that requirement?
- robocat 5y agoIt is almost as if JavaScript/WebAssembly need a sandboxing feature that allows a library to be LGPL (or GPL?) compatible - legally callable from your own JavaScript source code. I wonder if a legal sandboxing feature could be designed, perhaps even misusing the technical words to munge the sandbox to be compatible? Misuse words like header file, Library, link, object code etcetera to make the sandbox legally compatible?
- deleted 5y ago[deleted]
- jakelazaroff 5y agoWhat does “need” mean? I think it would be pretty messed up for browsers to ship a way to legally embed GPL code within closed-source binaries. In a sense, though, that feature does exist — it’s called an HTTP request.
- jhgb 5y agoOr IPC? Does WebAssembly have something like Web Workers?
- jakelazaroff 5y agoNot a lawyer but I’m pretty sure you can’t circumvent the GPL just by running the code in a different thread.
- jhgb 5y agoIt would be a different process, not a different thread. For example executing GCC from a proprietary IDE doesn't seem to be a problem.
- vbezhenar 5y agoIt's a problem if your IDE is designed to work only with gcc. It's not a problem, if it could work with any compiler and gcc is just one of the options.
- jakelazaroff 5y agoMy understanding is that it matters whether the GPL software is distributed with your program. If your IDE installed gcc, you would have to license it as GPL — even if it also installed other compilers. (It would be fine for your IDE to use a preexisting gcc installation obtained in some other fashion, though).
- woodruffw 5y agoIf I was a copyright lawyer, I would probably take a dim view of a defense that amounts to "it's not using your client's code, it's using code that directly uses your client's code."
- benatkin 5y agoWith WebAssembly, it's running in a separate virtual machine. If that didn't insulate it, there would be no reason for the AGPL.
- woodruffw 5y agoMy understanding of the AGPL and its history is that it was meant to close a perceived loophole with SaaS: companies selling you access to services built on GPL'd code were not compelled to distribute their changes. The is significantly different a local virtual machine, of which the JVM is one: the code is still fundamentally being distributed to the client, which triggers the release clause in the original GPL. To the best of my knowledge, nobody has ever (successfully) claimed that executing JVM bytecode releases them from their obligations under the GPL.
- benatkin 5y agoWhat about GitHub Enterprise? Isn't that running it as a service, which happens to be located inside your machine?
- woodruffw 5y agoGitHub Enterprise is proprietary software. To the best of my (external observer's) knowledge, it has no GPL code in it. If it does, then that's probably a licensing violation, but IANAL.
- NavinF 5y agoThat's a really good question! Has anyone here used the self-hosted version of GitHub Enterprise? Did they really reimplement git? Edit: Apparently GitHub uses https://libgit2.org/ https://libgit2.org/ which is "GPLv2 with a Linking Exception" (equivalent to LGPL)
- NavinF 5y agoMeh, you don't need any special features to use LGPL libs. As long as the user can recompile and swap out that library with their new version, you're done. This either means dynamic linking the library or making object files for your proprietary code available so that the user can link it. Oh and this will never work for GPL.
- nextaccountic 5y ago> I think that alone makes this project unusable in non-open-source projects? I hope so. I mean, that's the only reason for GPL to exist, right? There's quite a few proprietary programs that decided to relicense as GPL in order to use a GPL library.
- est31 5y agoIANAL but you don't need to relicense your program to GPL just to use a GPL library. You can relicense to something that is compatible with GPL, like say the MIT license. Then the combined form has to be distributed under GPL terms. But when you one day replace the library with something not under GPL, you can distribute combined forms of those under MIT.
- nextaccountic 5y agoYes, that's true. I mean the whole work to be under GPL. The exact terms of your own code is less important, as long as it is GPL compatible.
- kazinator 5y agoThat is correct. If you want to redistribute a mixture of different program components as one program, all the pieces have to have licenses that are compatible. If any of them are GPL, then the whole thing will be GPL; all the other licenses have to be cool with being part of a whole that carries a GPL umbrella license. MIT and BSD pieces are this way.
- greyivy 5y agoThis must be why so many proprietary apps require you to manually download FFmpeg binaries during runtime. Thanks for the explanation!
- dcgudeman 5y agoI think the original point of GPL was to incentivise companies/developers to contribute changes back to GPL licensed project. What is clear is that, minus a few exceptions, most large open source engaged companies avoid GPL because of the risk of compliance [1]. And many authors that originally licensed their projects as GPL see this and regret their choice [2][3]. This is why there is a trend away from copyleft licenses [4]. [1] https://opensource.google/docs/thirdparty/licenses/#restricted https://opensource.google/docs/thirdparty/licenses/#restrict... [2] https://lwn.net/Articles/478361/ https://lwn.net/Articles/478361/ [3] https://twitter.com/id_aa_carmack/status/1412271091393994754?lang=en https://twitter.com/id_aa_carmack/status/1412271091393994754... [4] https://opensource.com/article/17/2/decline-gpl https://opensource.com/article/17/2/decline-gpl
- brigade 5y agoYou can pay for a commercial license for x264 (or x265) if you don't want to touch the GPL
- NightMKoder 5y agoOh wow I didn’t realize they did custom licensing (presumably for a good chunk of change). Good to know!
- kkielhofner 5y agoWhat’s also important to know is that the commercial license (IIRC) doesn’t include access to the patent pool. I presume that when going through the commercial license the x264/x265 people will walk you through or otherwise assist in the MPEG-LA stuff: https://www.mpegla.com/ https://www.mpegla.com/ It trips people up: the commercial x264/x265 license provides alternate use terms on the implementation. The implementation, however, is still protected by various patents worldwide and MPEG-LA is who you go through for access to the patent pool which is (supposed to) include payment to all of the identified patent holders.
- ksec 5y agoIANAL the patent are required only if your devices does not already have an H.264/H.265 license. H.264 is fine as it is literally the MP3 of Video. H.265 is a lot more complicated.
- kkielhofner 5y agoThat is true but if you’re using libx264/libx265 you’re not using hardware encode/decode blocks that include the patent license so MPEG-LA is back in the picture.
- ksec 5y agoAgain IANAL but license are per devices and not per IP blocks so you dont double pay for each and every components ( Hardware Encode Decode in CPU and GPU ). And generally speaking that is up to the OEM and Devices Manufactures to have it done.
- gjs278 5y agonobody cares
- ridiculous_leke 5y agoHow does one develop an understanding of all this? I would have completely missed this had I been the author of a similar project.