Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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?



> 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.


IANAL 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.


This must be why so many proprietary apps require you to manually download FFmpeg binaries during runtime. Thanks for the explanation!


That 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.


Yes, 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.


I 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/#restrict...

[2] https://lwn.net/Articles/478361/

[3] https://twitter.com/id_aa_carmack/status/1412271091393994754...

[4] https://opensource.com/article/17/2/decline-gpl


No, that was the point of LGPL (Lesser or Library GPL)

The point of GPL software is that it's to be used in a GPL system, where users retain modification rights to the system they've acquired, and to prevent proprietary systems from free-loading off of GPL work.


Yep, it's funny to see people complaining about it when it is literally working as intended.


Even LGPL seems to have quite some FUD around the compatibility with distributing resulting software in app stores.

This seems to be quite at odds with the (maybe mistaken?) idea of a license that allows embedding a component without "license contaminating" the entire project, but still requires publishing changes to the component itself.

I wonder if there is a license that actually achieves that, without restricting the ability to publish to app stores?


That's not the only idea behind the LGPL (v3 especially), so it's not surprising it doesn't fulfill that without restricting other things.

MPL might be more what you are looking for.


The original point of the GPL was to ensure that end-users retained their rights to the source code. See https://www.gnu.org/philosophy/free-sw.en.html#four-freedoms.


There’s the philosophical intent of the FSF and then there’s what individual project authors intended by adopting GPL.

I think OP correctly explains the perspective of some/many/or even most authors.

Arguably, given the decline of GPL as the de facto license for OSS might indicate this viewpoint is at least an accurate perspective today and may have been the underlying truth all along. Certainly growing up I think I cared more about the concept of contributing improvements back than necessarily being able to have source to all derivative products and didn’t trust corporations to give back (I still don’t, but the situation doesn’t seem quite so serious for most projects).


That's just one point; but note that the LGPL also ensures that users retain those rights.

Yet here is a difference between the GPL and LGPL.

A GPLed piece cannot be mixed together pieces that have incompatible licenses.

This is true even if the pieces are mixed together in a dynamic way that respects their boundaries, so that users can rebuild the GPL-ed piece from sources, make modifications, and slide the modified piece back into the combination.

This is part of the point of the GPL, and specifically that point which is relaxed by the Lesser GPL, which is called "lesser" for some ideological reason.


This is a bit reductionist but a fun story for those that haven’t heard it. The GPL was created so rms could modify his printer driver: https://www.gnu.org/philosophy/rms-nyu-2001-transcript.txt .


Inspired by that situation, at least


Most "most large open source engaged companies " want to leach off open source and do not want to create end user products that are open source.

They focus on open source development tools, and libraries. Not end-user software products.

This is why they reject GPL because they want to be able to use the Tools and Libraries to package up a commercial software to sell to end users.

They do not actually support the principles of Free Software, it is simply away for them to lower development costs and off shift capital expenses while getting some good PR about being "open source engaged"


You can pay for a commercial license for x264 (or x265) if you don't want to touch the GPL


Oh wow I didn’t realize they did custom licensing (presumably for a good chunk of change). Good to know!


What’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/

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.


IANAL 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.


That 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.


Again 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.


IANAL disclaimer as well but each component (hardware block, x264/x265 instance) is (IIRC) considered a separate "unit" [0].

[0] Slide 10, bullet one https://www.mpegla.com/wp-content/uploads/avcweb.pdf


How does one develop an understanding of all this? I would have completely missed this had I been the author of a similar project.


It 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?


What 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.


Or IPC? Does WebAssembly have something like Web Workers?


Not a lawyer but I’m pretty sure you can’t circumvent the GPL just by running the code in a different thread.


It would be a different process, not a different thread. For example executing GCC from a proprietary IDE doesn't seem to be a problem.


It'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.


My 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).


If 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."


With WebAssembly, it's running in a separate virtual machine. If that didn't insulate it, there would be no reason for the AGPL.


My 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.


What about GitHub Enterprise? Isn't that running it as a service, which happens to be located inside your machine?


That'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/ which is "GPLv2 with a Linking Exception" (equivalent to LGPL)


My understanding of GHE is that it uses libgit2 internally, which in turn has a linking exception in its license (just like GCC and glibc). It’s unlikely that they’re violating GPL in that particular way.


GitHub 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.


As I (not a lawyer) understand it, the spectrum here is tight/loose binding on a conceptual level, rather than the specific technology used to achieve it.

The static/dynamic linking concern seems like a red herring, as it reflects a specific technological instance of such a distinction, but in architectures that do linking differently than traditional Unix systems, it makes less and less sense.


Meh, 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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: