Brian Lovin
/
Hacker News
Daily Digest email

Get the top HN stories in your inbox every day.

gumby

When I originally wrote the LGPL (v1, back around 1991) we could not imagine anything like an App Store or signed binaries. Dynamic linking provided an easy way for users to upgrade the library code.

Since the user doesn’t have the freedom to update the libs on ios etc I don’t see how you could deploy LGPL code on those platforms; since one of the points of using unity is its cross-platform support, that suggests you’d have to find another library unless you were only deploying on real OSes.

But is that Unity’s problem?

freedomben

> When I originally wrote the LGPL

This might be the best opening line of a HN comment I've ever seen :-D

Don't feel obligated to respond, but how do you feel about the LGPL now? How do you feel about it's evolution given the way the world has changed? Would you do anything differently now?

gumby

Well, TBH it didn’t have the impact I thought it might (and that RMS feared — obviously I disagreed with him). Libraries qua libraries aren’t distributed / sold so much any more as standalone packages and now we mostly have no-cost binary blobs tied to hardware or a priced API or MIT-ish-licensed stuff (like boost or npm), sadly neither of which empower any right to repair.

That decade of Cygnus was a lot of hard yakka first to legitimize the idea of free software at all (in 1989 it was mostly both obscure and insane outside academia) and then popularize it. Obviously other people started working hard on this too later in the decade.

The thing that made probably the most significant difference was the process of forking gcc which was a lot of negotiation — at that time forking a code base was widely considered a tragedy, despite the whole structure of free software!). Making forking good rather than a tragedy, coming up with an independent steering committee, and in that case getting the FSF to stop complaining decide to try to run out in front of the parade* was really hard but in the long term it became an approach that most important open source projects have taken, providing stability and progress. That’s definitely been an opment!

And then within a few years…I was on to other, more important things. It felt like the free software / open source world was no longer an embryo so didn’t need me. Plenty of other people are doing great work, better than I would have the enthusiasm for these days.

* Yes yet another case where RMS was furious about something that in the long term was a big win for the FSF too.

stolsvik

Thanks! Both for the work, and the answer!

The “.. on to other, more important things” left me wondering! Would it be possible to shed some light on that?

qingcharles

It's basically the HN equivalent of "Well, when I first created the Earth in 7 days I didn't really imagine..."

Tommah

God made the world in six days, not seven, so try to be a little faster next time.

captainmuon

I've never understood the problem with (L)GPL code on iOS devices. Sure, users don't have the possibility to replace the code on that platform. But the restriction is not imposed by the people distributing the code, but by external circumstances (Apple).

I can distribute LGPL licensed code to people no problem even if they are then, additionally, forbidden to actually excercise their freedoms by laws, think for example about radio code. I might have to get a special permission to run the code if I make changes and compile it, but that's no concern of the person licensing their source code to me.

Same if, say, the code runs on a box in an inaccessible space, and in order to install their own binaries somebody would have to press a button that they can't reach. That's not a GPL violation.

If I have the OK from Tim Cook and all the secret signing keys, I can compile and run anything I want on my iOS device. And even without that, if somebody provides all the object files of non-LGPL code and build instructions, I can replace the LGPL code and run my own version outside of the app store. Often when people ban (L)GPL code, its just a pretext, because they don't want to deal with the complexities or for other reasons.

Edit: I've been thinking about LGPL 2.1. I think LGPL 3 does explicitly forbid the above mentioned situations?

(And of course this is just my reading as an interested layperson, you're the expert obviously :-))

kelnos

> I've never understood the problem with (L)GPL code on iOS devices. Sure, users don't have the possibility to replace the code on that platform. But the restriction is not imposed by the people distributing the code, but by external circumstances (Apple).

In the case of the App Store, Apple is the one doing distribution, so Apple must also comply with the terms of the license (in addition to the app developer). Apple has decided they will not do that (that is, people they distribute to will not have the ability to modify the LGPL code, relink the final executable, and run it on their devices), so Apple cannot legally distribute binaries that contain LGPL code.

It only makes sense, then, that Apple should preemptively reject apps that link in LGPL code, as they know that they will not abide by the licensing terms.

> If I have the OK from Tim Cook and all the secret signing keys, I can compile and run anything I want on my iOS device. And even without that, if somebody provides all the object files of non-LGPL code and build instructions, I can replace the LGPL code and run my own version outside of the app store.

That's not permitted by the license. The (L)GPL prohibits a third party from adding extra conditions to exercising the rights granted in the license. "Pay Apple for a developer account and get their permission" is an extra condition. Even if there is a jailbreak-y method of getting around the extra conditions, I don't think that would fly.

> Often when people ban (L)GPL code, its just a pretext, because they don't want to deal with the complexities or for other reasons.

Agreed, but I'm not convinced this is one of those cases.

foota

Does LGPL require that you be able to do so on the same platform it's being distributed on? There's nothing stopping someone from downloading an LGPL binary from the app store and running it in an emulator or something, right?

yreg

> It only makes sense, then, that Apple should preemptively reject apps that link in LGPL code, as they know that they will not abide by the licensing terms.

But that's not the case at all. Apple is accepting apps that include LGPL code.

fragmede

Within limits, all it takes to get the OK from Tim Cook is $99/yr to the Apple Developer Program. Which isn't $0, but the LGPL doesn't say someone else can't charge money to press the button. You don't get arbitrary code execution for those $99, but you get enough access to playback video. You'd have to create your own app and get it blessed by Apple in order to distribute it to other people, but doesn't that satisfy the letter of the law here? As a 3rd party developer with my own developer account, I can get the source and the object code and run my own binary that links against it on the same platform, iOS.

ffgjgf1

> I've never understood the problem with (L)GPL code on iOS devices

AFAIK Apple just doesn’t allow apps which don’t that on the app store regardless of how the developer would chose to interpret the license

wahnfrieden

that's outdated info

mort96

Let's imagine I'm making MortPlayer, a video player for iOS which uses a version of the VLC libraries which are licensed under LGPL 2.1 (since that's what you're focusing on). Let's say I want MortPlayer to be closed source.

In other words, VLC owns the libraries, and I want to license them under the LGPL 2.1.

The LGPL 2.1 says:

    6. As an exception to the Sections above, you may also combine or link a "work that
    uses the Library" with the Library to produce a work containing portions of the
    Library, and distribute that work under terms of your choice, provided that the
    terms permit modification of the work for the customer's own use and reverse
    engineering for debugging such modifications.
Okay, so I must distribute MortPlayer under terms which permit modification and reverse engineering. I can do that. Maybe Apple's terms conflict, but let's assume that's not an issue, let's read on.

    You must give prominent notice with each copy of the work that the Library is used
    in it and that the Library and its use are covered by this License. You must supply
    a copy of this License. If the work during execution displays copyright notices, you
    must include the copyright notice for the Library among them, as well as a reference
    directing the user to the copy of this License.
Okay, no problem.

    Also, you must do one of these things:
Oh boy.

    a) Accompany the work with the complete corresponding machine-readable source code
    for the Library including whatever changes were used in the work (which must be
    distributed under Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that uses the Library",
    as object code and/or source code, so that the user can modify the Library and then
    relink to produce a modified executable containing the modified Library. (It is
    understood that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application to use the
    modified definitions.)
Okay. I can accompany the work (MortPlayer) with the source code for VLC's libraries, no problem. MortPlayer is executed and linked with VLC's libraries, so I need to 'accompany the work with ... the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library".

I think that's doable with app stores? I can certainly distribute a zip file with the object files for MortPlayer so that the user can link them against their own version of VLC. The user wouldn't be able to then run the recompiled application, on their device, but that's not specified in the terms...

Honestly I'm a bit surprised, I fully expected to find that this section a) included wording which requires the user to be able to run the resulting linked application, which Apple forbids (asterisk), and then go through b) and conclude that iOS doesn't have a "suitable shared library mechanism" due to its restrictions etc. But I'm instead forced to conclude that you're probably right, at least by the letter of the license.

I read the corresponding parts of LGPL 3 as well, and I can't find anything which requires the re-linked application to be immediately executable on the user's machine there either.

I think my conclusion is that LGPL, both 2.1 and 3.0, is fully compatible with app stores so long as you distribute your application as object code which can be linked against the LGPL licensed libraries? I would be very interested to hear from someone with opposing views about why I may be wrong. I, as they say, ANAL.

hedora

Are these new changes with LGPL 2.1? I don’t remember it containing the modification and relinking restrictions in the past. It kind of defeats the purpose of the LGPL IMO.

As an aside, it really bugs me that the GPL morphed into this thing that gives developers the freedom to run privacy violating and user-abusing cloud services, but doesn’t allow manufacturers to ship the same stuff on physical (and perhaps offline) hardware the end users have physical control over.

When the GPL 3 added the anti-TiVo clause, it really should have also added AGPL’s anti-google clauses at the same time.

Anyway, I guess the above restriction means I won’t be using LGPL for stuff I write at work, even though most of what we do gets open sourced anyway.

naasking

It should be compatible with app stores. How would the inability to swap out the VLC library be any different from a program that you can't change because it's on a system managed by a sysadmin? Of course you, as a user, can run LGPL programs on mainframes or other third-party managed systems, this was a well known use case when the LGPL was written.

actionfromafar

This is where things start being human and not only technocratic. If I, the user, have (only) an iOS device - how can I do this re-linking? I can't. I must get permission from (Apple Developer Account), buy a Mac, and re-sign binary blobs.

"The user wouldn't be able to then run the recompiled application, on their device" - I think that's where we get into the spirit of the license. It's pretty clear the license was not written to mean "here's some bytes, we write a lot about the freedom of the user" all for it to end with "can't run it though".

I can't understand someone carefully reading the LGPL license and then thinking, "great fit for a locked down app store distribution!"

I rather think that because LGPL historically saw a lot of use for platforms where this is not a problem, like Windows, where all this relinking is pretty doable, people just assume its fine on iOS.

ajross

> I've never understood the problem with (L)GPL code on iOS devices. Sure, users don't have the possibility to replace the code on that platform. But the restriction is not imposed by the people distributing the code, but by external circumstances (Apple).

That seems very forest-for-the-trees. It's true, but it mistakes a micro-statement of a problem (the app vendor isn't "at fault" for the LGPL violation) with the actual problem (copyleft code of any kind is effectively impossible on the most popular mobile platform in the industrial world).

The bottom line is that it's not possible to distribute a binary containing *GPL code on iOS in any way remotely in keeping with the letter of the license. People do it anyway because this code is important and useful. But Apple has effectively banned the license and that's always going to lead to friction like this.

torstenvl

> it's not possible to distribute a binary containing *GPL code on iOS in any way remotely in keeping with the letter of the license.

That is quite audacious to claim.

Do you have a citation to any case law supporting your position?

If not, what would be your argument?

rufwork

This discussion has reminded me why I stopped using LGPL and started using MPL for libs. OWN THE LIBS… I mean share them. Share the libraries.

quotemstr

The tech industry runs on myth and superstition more than most people will admit. One persistent myth is the special role of "linking" in propagating "derived work" copyright status. Are we really supposed to believe that if non-copyleft code A is tightly coupled with copyleft code B, then the copyleft does propagate to A if we summon the ld-linux.so.2 demon for dynamic linking and doesn't propagate if A uses B via system(2) and a pipe? Ridiculous. Whether A is a derivative work of B has to do with the extent to which A is coupled to B in particular, not the mechanism of this coupling.

Personally, I've always found it hard to believe that merely using, e.g. libreadline (or Linux EXPORT_SYMBOL_GPL) really makes one program a derivative work of another. Is there any actual legal precedent for mere dynamic linking propagating copyleft? Common sense suggests that, no, linking to libreadline or libmysql or whatever doesn't make a program that does something totally different a derivative work.

Has the linking-propagates-copyleft theory ever actually been tested? Might we have been making life hard for ourselves for decades for no actual reason?

gumby

The issue ‘One persistent myth is the special role of "linking" in propagating "derived work" copyright status’ has nothing to do with GPL.

If you use any 3P library it’s a derived dependency by law. Is that what you are arguing? It’s settled law at this point.

MS lets you link against their DLLs but only on their platform. You might pay for a special library, but you have to pay them money for programs that link against it (actually does anybody do that any more?). GPL code is no different in any way except instead of paying the FSF cash or buying a Windows OS you agree to provide the user the freedom to change the code.

poizan42

> If you use any 3P library it’s a derived dependency by law. Is that what you are arguing? It’s settled law at this point.

Not it's definitely not. For B to be a derivative work of A it needs to include copyrightable elements of A. But if B merely dynamically links to A then it only contains knowledge of the API surface of A. And SCOTUS refused to rule on the copyrightability of APIs in Google LLC v. Oracle America, Inc. In the EU APIs seems to be explicitly called out as non-copyrightable by Directive 2009/24/EC Article 1(2):

> 2. Protection in accordance with this Directive shall apply to the expression in any form of a computer program. Ideas and principles which underlie any element of a computer program, including those which underlie its interfaces, are not protected by copyright under this Directive.

quotemstr

> If you use any 3P library it’s a derived dependency by law. Is that what you are arguing? It’s settled law at this point.

Is it? So if I, the author of non-copyleft A, want to use copyleft library B, it's illegal if I use `dlopen` but legal if I use a socket or a pipe? That's absurd. Either both are illegal or both are legal, and I've yet to see evidence that it's the former.

IOW, I've yet to see evidence that licenses apply across dlopen bounds. It's a meme in our industry that it does, but does it really? Where's the data?

singpolyma3

Dynamic linking will result in a program in memory at runtime that is under the copyleft terms.

The separate pieces on disk are of course as you say.

undefined

[deleted]

jopsen

I thought that the license for B says you can't distribute it along side A.

Not that copyright propagates.

Obviously, a zip archive containing A and B is a derived work of B. Hence, license of B can say you can't distribute such works.

Does distributing A without B make any sense?

jameshart

> Obviously, a zip archive containing A and B is a derived work of B.

It’s not obvious that any copyright attaches to a zip archive at all, any more than hanging two paintings on a wall makes a derived work copyrightable wall.

To be a derived work something still has to be a ‘work’.

A distribution license can restrict how you are allowed to distribute a work because it can directly restrict your behavior not because it propagates and applies to the container you distribute it in.

That is it can just say ‘you can’t distribute this bundled up with other things’, in much the same way as it can say ‘you can’t distribute this without the copyright notice’, or ‘you can’t distribute this on Wednesdays’.

quotemstr

> I thought that the license for B says you can't distribute it along side A.

Nope. The GPL explicitly says

> In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

im3w1l

I have seen stuff like this. Audio programs asking you to specify the location of lame_enc.dll. Emulators asking you to specify location of some bios.

ffgjgf1

> But is that Unity’s problem?

Well:

1. Unity itself is using plenty of LGPL libraries itself so the same concerns apply.

2. If this is not an issue on desktop platforms where you can comply with LGPL there is nothing wrong with allowing such packages on the Asset Store. Certainly not all developers ship their Unity games on most platforms so it should be up to them to figure whether the specific package they decide to include can be used for a given platform.

jillesvangurp

Using open source development tools is fine. What matters is what you distribute to end users (i.e. the output of those tools). I think the issue with unity is that VLC ends up being distributed as part of unity applications.

I'm not a lawyer but this might indeed have some valid issues associated with it depending on how this is done. So, I can see an argument for Unity simply not wanting to put their customers in a situation where they have to worry about these issues. It seems a bit drastic though given how useful it is.

Banning companies/accounts seems like it's simply unprofessional/rude and unnecessary. Sounds like they need to have a conversation with whomever thought that was a good idea about professional conduct.

ffgjgf1

> Using open source development tools is fine

Yea but the article is claiming that Unity is including LGPL libraries in apps built with Unity, not just the editor itself.

qwertox

> But is that Unity’s problem?

Apparently not. "Unity itself, both the Editor and the runtime (which means your shipped game) is already using LGPL dependencies"

tonmoy

So I could be missing something, but the editor itself is not getting shipped to iOS devices, only the resulting binaries are.

Vinnl

That sounds like the "and the runtime (which means your shipped game)" part?

voxic11

The resulting binaries depend on the unity runtime which itself depends on these LGPL components.

Y_Y

For clarity, I presume you're talking about L(ibrary)GPLv2.0 published[0] in June of '91, since afaik there was never an LGPLv1.

Anyway, do you think it's good or bad if Unity is stopping people from potentially deploying to e.g. iOS when this would violate the LGPL, even if the responsibility for the violation would not lie with Unity?

[0] https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html

gumby

The original was used, IIRC to license glibc when Steve Chamberlain and I (mainly him I’m pretty sure) were starting out on it — I think that was the motivation. You’re right: I’m not sure we actually shipped a glibc with that version.

This was long before we hired Drepper.

simiones

Given that Unity itself also uses LGPLv2.0 dependencies in its own iOS version, it seems clear that at least Unity believes that there is no issue deploying LGPLv2.0 code to iOS.

dagmx

Or they’ve dual licensed the libraries in question.

kazinator

Cygwin switched to the LGPL back in 2016. That's very useful; it means there is a POSIX run-time on Windows that programs using a wide range of licensing schemes can use.

When I saw the announcement on the Cygwin mailing list, I immediately set off to make a fork of the main Cygwin DLL which brings Windows-like behaviors.

https://www.kylheku.com/cygnal/

OmarAssadi

Tangent, but out of curiosity, what was the more important goal in your mind/whoever else was involved? The ability to relink with newer/patched libraries, or simply the ability to inspect/modify the LGPLed code?

I have a love-hate with the ultra-permissive licenses; on the one-hand, philosophically, I think I prefer the idea of trusting the recipient to just not be an asshole, but at the same time, I recognize [1] that corporations [which tend to prefer permissive licenses] don't always have the best interests of everyone in mind.

Even in ideal cases, like how the LLVM community tends to at least see LLVM most of the LLVM forks patches--even if they are not accepted--simply because it's effort to maintain a downstream fork of something so fast moving, community-wise, I feel like Apache 2.0 and friends end up very different, perhaps corporate, in a way that I don't love.

For example, I used to wonder how GCC still had so much backing since LLVM is generally easier to work with, from my experience, no wild autotools insanity, etc. But after doing the full UEFI -> modern Linux + GCC/LLVM bootstrap, I really appreciate the care taken to avoid constant churn to minimum C++ versions, support for obscure platforms, etc; it feels like LLVM sort of disregards anything that doesn't make a ton of visible economic sense [2], which makes the bootstrapping process so much more awful by limiting the number of potential platforms plus requiring even more steps than GCC, which is brutal on its own.

Anyway, I guess I was wondering, if you were doing it all over again, would something like the MPL 2.0 perhaps have fit the bill better? One benefit of the LGPL, to me, of course, is that you should, in theory, be able to link against a different copy. But at the same time, I guess I am more concerned about the ability to allow useful libraries to remain in the hands of the users to modify than I am about them to be able to fix a bug whatever random proprietary program--worst case, if it's something entirely unmaintained, I can often binary patch whatever bug or similar.

I feel like the LGPL, while nice in theory, probably causes more harm [for me] relative to the MPL simply because people are [unnecessarily] afraid of potential implications with static linking, or perhaps cannot be bothered distributing individual object files alongside the static binary to allow relinking. So, we end up with people choosing non-copyleft alternatives or reinventing the wheel as proprietary software.

I have similar feelings with the less-selective GPL; we've ended up with the horrible situation of people distributing images that pull the entirety of the Ubuntu userspace just to emulate static binaries via containers.

Anyway, tangent over. Also, I wish there was a well-accepted CDDL/MPL 2.0-style license with a network distribution clause; I think I've become a fan of file-based copyleft as a good middleground, but it's annoying that there isn't a popular file-based copyleft license that takes into account AWS and similar.

EDIT: Also, I guess similar to what you already touched on RE: iOS. I feel like GPL 3.0 was probably a mistake. Presumably good intentions, but I feel like the hand was overplayed; it simultaneously went too far for companies like Apple to touch it, so we ended up with ancient Bash and GNU Make with gradual replacement of anything GPL, and yet also simultaneously not far enough to deal with cloud services, containerized RPC-style not-technically-linking-but-basically-linking distribution, etc.

[1]: Personal opinion -- I know this is a VC website at the end of the day and people will disagree with me. I don't really care to argue about it.

[2]: Not meant to be an attack against LLVM. And I know there are loads of independent developers and researchers working on it too. I hope my feelings don't get totally misunderstood.

gumby

> Tangent, but out of curiosity, what was the more important goal in your mind/whoever else was involved? The ability to relink with newer/patched libraries, or simply the ability to inspect/modify the LGPLed code?

The freedom of the user to modify the library and use it was the most important part. It’s a fundamental “right to repair”.

FWIW the people involved were just me, plus John Gilmore who said “why not explicitly make dynamic linking automatically qualify?” which was obviously a good idea, and RMS who was bitterly opposed.

NohatCoder

I wonder how many times that has happened? Specifically someone intentionally modifying the behaviour of a closed source program by changing an LGPL library that it depends on.

toyg

I mean, it's like telling the pope that Jesus is the son of god only on Mondays and Tuesdays, eh...

zigzag312

To me, CDDL/MPL 2.0-style licenses are much more sane than GPL based ones.

The definition of what is a derivative work is IMHO overreaching in GPL based licenses.

gumby

> The definition of what is a derivative work is IMHO overreaching in GPL based licenses.

GPL doesn’t use the word “derive” and specifies modified work in a way that is consistent with the customary legal definition.

People twist things around because they want to use GPLed code without “paying” for it, but really at the end of the day it’s just an ordinary license agreement but instead of paying cash to use it you agree to give users the freedom to modify and/or redistribute the code.

Just like any other licensed code you can agree to the terms and use the code or disagree with the terms and use something else.

simiones

The GPL can't really overwrite the legal definition of derivative work, even if it wanted to. Of course, there is little case law actually going into the weeds, so it's hard to say for sure. However, the GPL's definition seems pretty reasonable to me as to what would constitute a derived work (anything linking with the GPL work OR anything passing very very complex structures between itself and the GPL work).

In fact, I suspect that a legal definition of exactly what constitutes a derived work of a program may be more broad than the GPL's definition. For example, it's plausible to me that a program which calls `sh` as a fundamental part of its functioning could be found to represent a derivative work of `sh` per copyright laws.

teddyh

IIUC, GPL based licensed do not define what what derivative work it, but leaves it to the law.

zackmorris

It might be time for a mutually-assured destruction lobby/guild.

In this case, when a company like Unity bans this VLC project for using LGPL software, the guild would open individual lawsuits against them to remove each of the other projects using LGPL code, based on various legal precedents around discrimination. Which would make it untenable to single out projects like this.

This is a negative or low-vibration idea, I realize. Which is actually my point. If a policy causes one to go down these anger/fear/ego-based rabbit holes, then something is suspect with it. This is the litmus test I use.

Somewhere along the way, we lost the wisdom or will to understand the difference between the letter of the law and the spirit of the law. And we sold our souls when we allowed wealth and power to override our discernment of right and wrong.

If Unity wants to step into its power, it can start by abandoning knee-jerk policies designed to protect itself from liability against stupid laws. It can start saving a war chest to go to bat against patent/copyright/trademark trolls for the rest of us and protect the projects within its ecosystem instead of throwing its contributors under the bus. It can set an example for other large companies to follow so that we can eventually reform the system.

But whatever all this malarky is has got to stop.

I really want to like Unity for how it aligns with my goals as a shareware game developer in my formative years and a lot of other reasons, but they make it very hard to do so.

flkenosad

> This is a negative or low-vibration idea, I realize. Which is actually my point. If a policy causes one to go down these anger/fear/ego-based rabbit holes, then something is suspect with it. This is the litmus test I use.

This is brilliant.

cmeacham98

> based on various legal precedents around discrimination. Which would make it untenable to single out projects like this

What precedents are those? Can you link or name the cases? I've never heard of such legal theory.

zackmorris

IANAL but you identified the core issue. I'm having trouble finding precedent for this, mainly because private businesses are legally allowed to choose who they do business with, which can be a form of legally protected discrimination.

The closest thing I found is the 2023 Students for Fair Admissions v. Harvard Supreme Court decision which effectively ended affirmative action in the US, since Harvard is a private college "doing business with" its students (customers):

https://en.wikipedia.org/wiki/Students_for_Fair_Admissions_v...

https://www.scotusblog.com/2023/06/supreme-court-strikes-dow...

SCOTUS said that race/ethnicity and gender identity are protected classes, so discriminating by them is illegal, meaning that affirmative action can't legally be imposed on universities anymore.

Now, there are extenuating circumstances with that due to the US's civil rights battles and entrenched practices in other areas like policing and access to capital which impose additional struggle on individuals, depending on which protected classes apply to them. So throwing out affirmative action may give individuals unaffected by those practices an additional advantage (privilage). Meaning that the court's decision may have an effect opposite to the one intended, as stated by the dissenting justices. I'm providing this for context, because it's an example of how the letter of the law can be in conflict with the spirit of the law.

As a private entity, Unity must still follow federal antidiscrimination laws. It's not allowed to remove an app from its store based on the race/ethnicity/gender of its author(s) for example.

But prominance/budget and potential liabilities from lawsuits by intellectual property trolls are not protected classes. Currently Unity appears to be free to de-list any app for any reason outside protected classes.

But that discriminitory freedom is also being challenged for antitrust reasons. If a store is dominant to the point that competitors are not widely known by the mainstream, then any type of discrimination could potentially become collusion. For example if Apple delisted an app that competed with its own in order to noncompetitively boost its own sales, then that can be challenged in court. And two or more companies collaborating to remove competing apps in each other's stores can also be challenged in court.

The realities of software development are daunting. It often takes many years of work by countless individuals and budgets in the multiple thousands or even millions of dollars to ship an app. The libraries which the app relies upon are also unique in that an alternative may not be available, either for budgetary reasons around refactoring or for compliance with controversial laws like the DMCA. So an app's dependencies and licenses could be thought of as an ethnic identity for software because they can't be changed in practice. It's what they are.

Main takeaways:

1. A unilateral ban of an app by a company can represent a power imbalance resulting in injustice because the guidelines the app must follow to regain entry are not tenable. In other words dependencies, licences and other nonfungible aspects of software may need to become protected classes.

2. Is the law being applied unequaly between VLC and other apps with LGPL dependencies, or with preferential treatment?

3. What recourse do developers have other than to sue? Will their case have merit? Are there financial barriers and opportunity costs to such actions? The realities of such recourse can impose such hardship on injured parties that their involuntary surrender represents a kind of injustice that favors moneyed parties.

Keywords and avenues to pursue:

unequal application

preferential treatment

protected class

Would lawsuits against other companies along these lines reduce productivity in the tech sector by making it more difficult to do business, highlighting a need to reform legislation around this issue?

moss2

Wouldn't be surprised if Unity is developing their own multimedia engine they want to sell. Shitty practices like this is what makes me want to get into politics.

UberFly

This was my first thought. They can then sell some poorly-executed knockoff, ignoring that a partnership with actual experts would have been the best for their customers.

yard2010

Ikr if you can't beat them join them and hf

chrismorgan

> The packages "VLC for Unity (Android)", "VLC for Unity (UWP)", "VLC for Unity (Windows)" have been deprecated.

This is not deprecation. This is removal and banning.

chii

What's the rational for not allowing LGPL code on the unity store? It makes no sense for the ban imho (tho i m not very familiar with unity store's model so i might just be missing something).

larschdk

My guess; Unity doesn't want LGPL code in component they re-distribute, because the responsibility to comply with the license requirements falls on them, since they are the ones redistributing. It's not that they can't, but they wont take that responsibility, which is understandable. They would basically need to audit every component to ensure that the end user can build and replace LGPL parts with their own.

toyg

Not really. They could just distribute things anyway, and simply invoke the license-termination clauses as soon as any infringement is detected by claimants - similarly to how (I expect) they would treat claims of copyright infringements on game assets.

They are just being obtuse - which looks fishy when coupled with VLC's claims that they wouldn't allow them back in even if all LGPL code was removed. They probably don't want competition for some component.

captainmuon

I'd say it is even debatable whether Unity is really re-distributing in the sense of the LGPL or merely hosting. Redistribution is something between licensor and licensee, your web hoster or your telecom is not involved.

But I guess that's another thing they don't want to test in court and it's easier to say they don't want it.

larschdk

The LGPL license doesn't work that way. The rights that it establishes follows every time you transfer the work between legal entities. If I transfer the work to you, I need to extend the rights granted in the license to you. I can't expect others to do it for me.

maratc

I think your guess is correct. GPL/LGPL is a contract that puts certain obligations on all parties; just by being a redistributor, Unity now becomes a party to a contract they never signed or even intended to sign.

It's easier for them to refuse to be a party to that contract by not allowing any software under that license on their property to begin with.

agsnu

My guess is that they want packages on the Unity store to be usable on all platforms they support.

For example, if you build an app for iOS or visionOS, you have to distribute it via Apple’s stores, and there are technical barriers (code signing, DRM) that get in the way of an end user being able to exercise their right to replace LGPL components with modified versions. I mention this example because there was a big tie up for Unity and visionOS announced with the Apple Vision Pro last summer, but presumably the same applies to Unity games on consoles etc as well.

I can see why from Unity’s perspective it is cleaner to just forbid LGPL entirely, that way it is harder for their customers to mistakenly violate licenses.

palata

> there are technical barriers (code signing, DRM) that get in the way of an end user being able to exercise their right to replace LGPL components with modified versions

I wonder if that is an issue for LGPLv2. Pretty sure that for LGPLv3, the distributor would have to give instructions explaining how to do it (which they could not do), but LGPLv2 does not require that, right?

As in, wouldn't code signing and DRM count as some kind of tivoization?

mihaaly

Would it worth a try reporting other LGPL violations to Unity - as drawing attention to violations of their own 5.10.4 of Provider agreement - in a documented manner? Just to see how they proceed.

paulmd

intredasting, they rather explicitly appear to be tilting against viral licensing:

> 5.10.4 Provider represents and warrants that its Assets shall not contain (a) any software licensed under the GNU General Public License or GNU Library or Lesser General Public License, or any other license with terms that include a requirement to extend such license to any modification or combined work and provide for the distribution of the combined or modified product’s source code upon demand so that Customer content becomes subject to the terms of such license; or (b) any software that is a modification or derivative of any software licensed under the GNU General Public License or Library or Lesser Public License, or any other license with terms similar thereto so that Customer content become subject to the terms of such license.

LGPL doesn't impose combined redistribution requirements, does it? They're just tilting against that whole ecosystem specially. And if you apply the same standard as LGPL, MIT/BSD are basically the same right? Probably CDDL falls in too? that's absolutely a crazy thing but it's pretty straightforward in the licensing agreement.

No, no, they got it all wrong:

"not, invented here!"

adrian_b

LGPL is a regular license, it is not a viral license.

GPL is a viral license.

The GNU glibc uses LGPL and almost any program run on a Linux system uses glibc, regardless in what programming language it has been written, at least for the system calls. If LGPL had been a viral license too, all programs would have been affected.

lmm

> LGPL is a regular license, it is not a viral license.

> GPL is a viral license.

The LGPL's level of "virality" is small, but nonzero - it imposes requirements on a larger program of which you use LGPL code as a part. Those requirements are much smaller than the requirements imposed by GPL code in the same circumstances, but they are real, and much more substantial than e.g. including a copyright notice.

> The GNU glibc uses LGPL and almost any program run on a Linux system uses glibc, regardless in what programming language it has been written, at least for the system calls.

glibc has an explicit linking exception for programs using its public interface.

ghusbands

Doesn't the LGPL give users the right to replace the LGPL part with a modified library of their choice? It seems doubtful that users can modify downloaded Unity apps at their leisure, so that would mean that LGPL cannot be supported on Unity, wouldn't it?

Though then it would seem that LGPL libraries on almost any app store are being used against their license terms, so I must be wrong.

paulmd

This isn't a linguistic disagreement, LGPL and similar licenses are literally forbidden by the direct plain text of the agreement.

> (b) any software that is a modification or derivative of any software licensed under the GNU General Public License or Library or Lesser Public License, or any other license with terms similar thereto so that Customer content become subject to the terms of such license.

davexunit

Calling a license "viral" is a gross pejorative intended to discourage copyleft.

undefined

[deleted]

MaxBarraclough

At the risk of seeming pedantic, the proper term is copyleft, not viral licensing. If memory serves, viral licensing has its origins in Microsoft fear-mongering (predating the modern positive use of viral, as in go viral).

> LGPL doesn't impose combined redistribution requirements, does it?

It does, in that if you modify the source-code of an LGPL-licensed library and distribute the binary, you are required to also distribute the source (i.e. the source of your modified version). Your modified source must also use the LGPL licence.

If you distribute an unmodified binary for an LGPL-licensed library, you must also provide access to the unmodified source. (This isn't to say you need to bundle it into the same archive file.)

It differs from the vanilla GPL in that an LGPL-licensed library permits you to dynamically link to it from application code that doesn't need to use any particular licence.

(This is at least the gist of the matter as it applies to application code. This isn't legal advice, I'm not a lawyer, etc.)

See the final point on this page from the FSF (authors of the GPL and LGPL) - https://www.fsf.org/bulletin/2014/fall/common-gpl-misconcept...

rerdavies

At the risk of seeming pedantic, who are you to decide whether viral licensing or copyleft is the proper term?

charcircuit

The rational is that you should be able to just install any asset from the store in your game and be good to go. With an LGPL asset now you have to let customers be able to edit that addon and rebuild your game with it which would be a pain, and most developers do not want to give out the unity project files.

Having a simple licensing story for assets on the store lets users have trust in whatever they see they can use in their game worry free.

Edit: Removed bit about LGPL applying to the original code because of static linkage because it was incorrect and distracting from my point

adrian_b

What you say is not correct.

Only linking with a GPL library makes GPL applicable to the whole program.

This is the difference between LGPL and GPL. LGPL is a normal license that applies only to the library.

Since glibc uses LGPL, if your theory had been true than almost all programs run on a Linux system, regardless of their origin, would have been covered by LGPL.

charcircuit

The LGPL code gets statically linked with the rest of your code which means that you have to provide the project files in order to be able to change the LGPL code.

shakow

> With an LGPL asset now you have to let customers be able to edit that addon and rebuild your game

> so now your game code is also under the LGPL and you have to publish your game code.

AFAIK, that's only true of the GPL, not the LGPL.

palata

As a side note, I believe that LGLv3 says that you have to provide instructions about how to do it, but with LGPLv2 is just has to be technically possible if you have access to the binary.

undefined

[deleted]

jbk

(Disclaimer: President of VideoLAN here)

Just a few remarks: VLC-Unity plugin is fully open source, and anyone skilled enough can build it themself.

We've tried for months to discuss with Unity and it was a nightmare. We've had discussions for years with Apple AppStore, Google Play store, and Windows Stores (including Windows Mobile + UWP). It's always challenging, but Unity was a headache an order of magnitude bigger: no answers, 3 different answers contradicting each other, and plain bad faith.

De facto, they use LGPL and open source to build their platform, but we're not allowed to have open source on the store? Not even LGPL with a layer of a different license? Why us? Why not the other people doing it?

Very frustrating.

So, yes, because some people need to buy support or licenses, even if everything is open source (don't want to build themselves, purchase department that needs a support contract, etc...), they need to have a small store. This is different from what we see usually, but there is a need, so this is a small store for that.

For most of HN users, you should just build it yourself. You should be skilled enough for that :)

vertis

Ah, when I was using Unity I would often buy items I could have built myself even though they were open source, for several reasons:

- only so many hours in the day - it's nice to pay people for things they work on - stable release version

I'm thankfully not using Unity any more. Watched the recent installs cluster** from a bemused distance.

yard2010

I would wage against it. It's as shitty as Blockbuster. No reason they won't end up selling for peanuts

readyplayernull

Hope Dang pins your comment.

The only way to get a consistent response from Unity is paying support.

Their store review queue takes months, now with the layoffs it will only get worse.

They are hurting themselves by not having your plugin. Feels like they are building their own solution but I bet it will take years to release and will be broken.

Unless you are selling the plugin, you shouldn't care. You can host it anywhere and the community will find it.

ghusbands

The LGPL gives end users the right to replace the LGPLed part with a modified version, and users presumably cannot alter parts of a downloaded Unity app. So it does seem that software using an LGPL library cannot be distributed on Unity or most any modern app store and still be in compliance with the LGPL.

It's not viral, but it does give users rights that aren't natural under the app store distribution model.

captainmuon

I can give you a right, but that doesn't mean you're neccessary able to excercise that right. I can allow you to drive a tank on my property, but you probably can't afford one, and it would be banned by laws.

I'm curious, does the LGPL state explicitly that the licensor guarantees that the licensee can excercise their granted rights in practice? There can always be external circumstances restricting what I can do.

Or is it more like: The licensee (the unity package developer) can only use the code (VLC) if they guarantee that the sub-licensee (the package user or the end user) can excercise all their rights with no external conditions?

Edit: I think LGPL 3 actually does demand this, in the context of preventing "tivoisation". However, libvlc is licensed under LGPL 2.1 as far as I can see.

troupe

> I'm curious, does the LGPL state explicitly that the licensor guarantees that the licensee can excercise their granted rights in practice?

It feels like such a requirement would mean you would have to test each potential user for technical skills to determine if they are capable of doing the things that you are giving them the right to do.

kelnos

I think you are looking at it the wrong way. The licensor doesn't guarantee that the licensee can exercise the granted rights. But the license requires that the distributor can guarantee that the recipient can exercise those rights.

If I write up a license that says anyone distributing my software must give the recipient the right to drive a tank on their property, I can distribute it, because I am the copyright holder and can do whatever I want. But in practice that software cannot be redistributed, because those license terms probably cannot be fulfilled by any redistributors.

If VLC wants to put something on the Unity Store that includes LGPL code, then their responsibility (and the Unity Store's responsibility, as they are now distributors as well) is that people downloading that Unity VLC bundle in order to use it in their game must be able to replace the LGPL code in it with modified versions. And that part may actually be possible, so this may be ok.

But then the game developer that uses the Unity VLC bundle must also pass along the ability to their end users (that is, the people that buy and play their game, for example) to replace the LGPL code with modified versions. I think that's just not possible with the Unity Store model[0], so the terms of the LGPL cannot be fulfilled.

If this is the case, it's not unreasonable for Unity to ban LGPL code in bundles, because they know that their customers (game developers) will not be able to abide by the terms of the license.

[0] Similarly to how an end-user wouldn't be able to replace LGPL code in an iOS app with a modified version and then run that on their iPhone, at least not without paying Apple for the privilege, which is an added restriction that violates the terms of the LGPL.

ghusbands

IANAL, but when it comes to contracts/licences, intent, good faith and fair dealing are important. Allowing someone a right that you know cannot be exercised would likely fail under all three of those. Your intent is not for them to have that right, you're not acting in good faith in claiming they have the right and you're misrepresenting the possibility.

The law is not as prescriptive on the exact text as many programmers think. What typically matters in court is what people mutually understand/understood terms to mean, and clear attempts to mislead are typically judged against the one doing the misleading.

So, yes, if it went to a court that was otherwise supportive of (L)GPL, providing (L)GPL code on a platform on which users certainly cannot exercise their rights would likely be a failure to provide and hence abide by the licence.

larschdk

It's not impossible to comply with LGPL under the app store model, but the responsibility falls on the distributor, which is Unity in this case. I can understand that that is something they are not able or willing to do. This doesn't mean that they can't comply with LGPL for components included in Unity itself. I don't see any double standard here.

tankenmate

You're right, but there is the large counterpoint of the fact that Unity is doing exactly that for other software licenced under the LGPL.

larschdk

Very different. They can do that, because they are in control of the components and build process. That's much harder for someone else's deliverables.

chippiewill

I don't have experience with tinkering with typical Unity apps. But we have one at work and on Linux it literally has the `.so` files for native libraries in a standalone directory (including one LGPL library that we use) which you can easily replace with a differently compiled version if you so desired.

naasking

> The LGPL gives end users the right to replace the LGPLed part with a modified version, and users presumably cannot alter parts of a downloaded Unity app.

You can use LGPL software on a multitenant mainframe system, where you don't have access to modify installed software. This was a well known use case in the 80s and 90s, so this doesn't seem appreciably different. The LGPL doesn't seem to require you as a software developer to ensure that the user can run the modified software on the same system on which the App Store version is run, mainly it's to make the source code available so they can, in principle, create a modified version that they can run somewhere.

Steltek

LGPL leverages copyright and is triggered under distribution/copying. Users of a multitenant system are not receiving a copy of anything. At least this is how GPL2 worked. I don't know if 3 substantially changed that.

What you're describing sounds more like the AGPL to me.

undefined

[deleted]

undefined

[deleted]

mlaci

The same problem applies to LGPL code and browsers (e.g. ffmpeg.wasm).

tedajax

Seems like another good argument for why the GPL and LGPL are actually kinda shit.

freedomben

If that were true, then if Unity decided to ban MIT and Apache licensed software from the store, that would mean that MIT and Apache are actually kinda shit. Seems there's a pretty clear error in your logic.

Also, your appraisal seems to be assuming that the only goal of the GPL/LGPL is to release software through Unity, which is not correct.

Snow_Falls

The issue is with locked down appstores, your inability to exercise your freedoms given by the license is caused by the store not the software.

m463

Thank goodness there are oracle licenses to save you. :)

tedajax

Yeah because MIT, BSD, etc don't exist or anything

anthk

Without those you would be suffering NT servers, IIS and ActiveX.

cupofjoakim

Not a video game developer - but I wonder if it'd be a good call for videolan to make a vlc plugin for godot? It's still gaining momentum and (afaik, could be wrong) have the same thing as unity with a inbuilt media stack but it's fairly limited.

winrid

Steam also does not allow GPL licensed code: https://partner.steamgames.com/doc/sdk/uploading/distributin...

Edit: if you want to link against SteamWorks

jchw

Note that 1. this is mostly regarding the Steamworks SDK that you link to; sufficient care may be taken to try to make this linkage to Steamworks "compliant" as noted in the article, and 2. this is about GPL, not LGPL. Distributing LGPL code via Steam may introduce some potential murkiness, but it should be mostly kosher since I think Steam doesn't, in and of itself, impede on the user's ability to exercise the rights granted by LGPL.

winrid

Right, sorry, forgot that. Edited!

seba_dos1

Games and applications distributed on Steam don't have to integrate with Steamworks SDK at all, and when they don't this licensing issue doesn't apply.

SXX

You dont have to use Steamworks to be on Steam.

There are a lot of games under GPL on Steam.

DeathArrow

They still can publish their assets outside of the Unity store. Users can download them and install them in Unity. But I agree it's not a nice move from behalf of Unity.

nacs

And in the linked article, VLC mentions they have now done that -- they have their own site to download the plugins.

nojvek

App stores (or generally moderation) is a complex thing to get right.

Once you have humans in the loop, you have bias. Not even humans can follow the set ambiguous guidelines and the appeals process is mostly broken.

AI can somewhat help but language models are just that - language models - they don't have any deep understanding.

Fundamentally I believe moderation will always be broken until we get algorithms capable of understanding the deeper meaning of things and apply them uniformly.

rendall

Why would Unity do this?

Diti

https://www.theguardian.com/games/2023/sep/12/unity-engine-f...

Remember this?

I wonder what’s going on in the Unity executive’s heads right now.

firtoz

"$$$$$$$$$$$$$$$$$$$$$$$"

ecuzzillo

The CEO has been fired since then.

CountHackulus

The CEO was the token the board fired to make it look like they had learned a lesson.

usea

Incompetence is the most likely explanation.

firtoz

Most of the good people have left Unity or have been laid off. Whoever remain are likely ill equipped to deal with anything. So I see these kinds of decisions as the death throes of the company.

hiccuphippo

If you see them release their own video add-on in the next few months then there's the reason.

Daily Digest email

Get the top HN stories in your inbox every day.