Background
I am one of the newer members (a bit over 2 years by now) to a small company based in the US that makes specialized hardware, with software that goes along with it. The company is around 20 people in the office, maybe another 5 or so working remotely. I do some programming work for the company, but also IT and shipping work. I was initially hired for that other work, but gradually they shifted me towards programming over the past year and a half.
A bit over a year ago, shortly after they started having me do some minor bugfixes, I noticed something funny with our dependencies. Our software suite (C# .NET) has several dependencies on three third-party libraries that are not developed by us. These are essential libraries that our core functionality depends upon; nearly all our end-user programs need them. I looked up these libraries and all three are licensed under some version of the LGPL, which is a copyleft license.
This was particularly concerning because of how we distribute our software. Customers do not download our software from a website, they receive it on a USB drive, with a .zip file containing a .msi installer that extracts all our programs and their dependencies onto the user's computer - including the LGPL'ed third-party libraries, as .dll files. I'm pretty certain this means we are redistributing the LGPL'ed software. Worse yet, I'm the one that prepares these USBs, so I am literally the one redistributing.
I spent several days gathering as much information as I could on the LGPL and how we make use of these libraries. I scoured the LGPL text itself, read numerous guides on what a proprietary program must and must not do with an LGPL'ed library. I put together a very detailed email, listing out how we use and distribute these libraries, what I believe is a violation, and presented a solution on what we need to do to fix it.
In most cases it should be a relatively easy fix. At the very least we should:
- Include a copy of the LGPL for each library we depend upon, on the USB we redistribute
- Include the source code (also on the USB) of the LGPL'ed library at the revision of the build that we link to (this one I'm a little uncertain of, and no matter how many times I read the section I still can't tell)
- Include notice in a
Help > About
or similar UI element in each of our distributed applications, declaring the dependency upon the LGPL'ed library
I also mentioned that it was possible that there was some agreement between the company and the authors of these libraries, that we had bought an "enterprise license" that I wasn't aware of. I asked that if that was the case, to let me know so I can rest my concerns. (Though I doubt this is the case with how lax and cowboy-ish this company is with software.)
I sent the email to the head of the company (who I report to directly and sometimes work with on software tasks, it's a small company), as well as HR. I printed a copy of what I sent and took it home.
Response
After two weeks of radio silence, HR pulled me aside for a conversation - verbally. They said that they understand my concern and that legal matters like this are taken seriously. They said that the company doesn't randomly grab libraries as dependencies without thinking.
They also said that when they started using open-source dependencies, they contacted the company lawyer and made sure it was okay to do so. They told me that according to the lawyer, as long as they simply acknowledged the dependency in our official documentation, we were abiding by the license. (We have about 5-6 different pdfs, it's only mentioned in one of them, the biggest and most outdated one. We don't even distribute documentation to all our customers.)
As someone who's had passion for open-source and free software, and has used the LGPL multiple times on my own projects, I was rather stunned. It was like a middle schooler going up to class and saying that so long as they "gave credit" they could do whatever they wanted.
I said there was probably a misunderstanding, because not all open-source licenses are alike. I said that some licenses are more strict than others, and LGPL is one of the stricter ones, and described how. I suggested they double-check with their lawyer to make sure that this license (LGPL, versions 2.1 and 3.0) does actually allow us to redistribute this software this way. They said they would do so and check back later, and I should not do anything about it yet, and the conversation ended there.
About 15min later I realized that because this whole conversation was verbal, I had no record of them making these claims. By that time they had already left (they tend to only be in the office for about an hour every couple days).
They never checked back later after that conversation. While at the time I believed I had done my "due diligence", I still don't believe what HR said was true. I think someone in that chain of discussion was either misinformed or is lying.
While it's perfectly plausible that the company does have an "enterprise license" or similar agreement with all three libraries allowing usage with minimal requirements, they never stated so even though I specifically asked about it in my email to give them an easy out. I can only assume the silence here means they do not; if they did then they would've told me.
However, I was in no position to press the issue further, I had to drop it.
Further Developments
A few months later, I noticed something far more egregious. It turns out, we also ship an "SDK", which is basically an API of a large portion of the library parts of our code (around 30-40 .dll binaries), all of it combined into a single dll, and obfuscated with Dotfuscator.
This .dll is sent to a reseller of our hardware (a much larger company), who uses it as a dependency for their own software suite, and sends it out to their customers. I don't believe the reseller is fully aware of our usage of LGPL'ed dependencies.
I believe this to be a very, very blatant violation of the LGPL. One of the main points of the LGPL is to ensure end users can swap out and modify the FOSS library however they like; with a static-linked and obfuscated binary without source or separation tools they can't do this.
I know if something I wrote and licensed under LGPL was used like this, I'd be furious; I'd probably look at suing. And if one of the reseller's customers discovered this dependency, and notified the reseller that they are now unknowingly redistributing, they'd probably sue us for fraud.
But I was in no position to press the issue. HR had already stated that their lawyer said it was okay to just give notice in documentation. If I were to press the issue I'd be calling the lawyer wrong or HR a liar, and I feared anything I said further would be threatening legal action.
Current Status
The reason I'm worrying so much again now is that everyone in the office just got handed a "company handbook" from accounting yesterday. I am to sign an acknowledgement form stating I understand and agree to everything stated in the handbook, by this Friday. That handbook states the following:
If you become aware of any unauthorized distribution or copying of software or related documentation within the Company, notify your supervisor immediately.
My fear is that signing this acknowledgement form, in combination with my past report, would be to admit to being complicit to the LGPL violations in the company. I fear that my signature would be used as ammo against me if it comes to a lawsuit. I have write-access to the codebase. I prepare the USBs that we redistribute the LGPL'ed software to end users. I reported it once, but chose not to press the issue when the response wasn't satisfactory.
I have kept a careful eye on our dependencies and our build script in the source code repo, and nothing has changed in our dependencies or distribution method. If these were violations before, they're still violations now.
Lately the higher-ups have been especially busy, and most have taken to ignoring almost all of my emails. Even if I say something now, it'll probably just scroll past and get ignored.
I know that if this ever gets out, regardless of how, the company will instantly put the blame on me. I am the only one with interest in this kind of thing, and I am the one that stuck my neck out enough to say something.
As much as I'd like to fix these violations (a couple changes in the build script and UI would be easy), I was told not to do anything about it.
As much as I'd like to send an email to the authors of these libraries and the FSF about this (they aid free software project authors when it comes to violations), I know I'll be fired on the spot, and never be hired as a programmer ever again. Nobody wants to hire a rat.
As much as I'd like to leave proudly on principle, this job pays well, respects work-life balance, and doesn't give me an unreasonable workload, which is an extremely rare venn diagram. I've been told this by friends and family members on multiple occasions, that I need to hold on to this job as long as possible.
Additionally, I have no degree, no prior professional programming experience, no noteworthy FOSS projects under my name, and honestly I'm not a great programmer. I'd have a very hard time finding a programming job again if I leave, even more so if I'm fired.
Again, it is perfectly possible that the company has a business license for all three libraries. If that is the case, there is no infringement or wrongdoing. However, I specifically asked if that was the case both in the email and in conversation, and the question was sidestepped. Not "yes, we have a business license with these, there's nothing to worry about", but rather "we made sure with our lawyer that we were abiding by all licenses, and we only need to provide acknowledgement in documentation". This avoidance to answer, combined with refusal of proposed changes, feels like unspoken confirmation that we don't have the rights to do this.
What can I do?
So, a few questions:
- How screwed am I? Am I complicit in this? How urgently do I need to lawyer up?
- Can I safely sign the acknowledgement form without suddenly becoming more liable to the violation? Does it even matter?
- How doomed would my programming career be if this gets out?
- Is it possible to convince management that this is a real issue that shouldn't be dismissed, despite the fact that they've previously stated otherwise?
TL;DR I noticed we were redistributing LGPL dependencies with our code with nothing more than a subtle reference tucked away in documentation. Brought it up a year ago with president and HR, the latter of which dismissed it verbally, claiming their lawyer said it was okay. I didn't believe them, but only suggested they double-check. They never followed up. Later I discovered more blatant violation, finding we're static-linking and obfuscating these binaries into one dll, which we send to a reseller, who distributes it to customers with their software. I feared I couldn't report without risking my job. Now, after a document from payroll, I fear I've been complicit the entire time because I only spoke up once.