2 of 6
"I am not a lawyer" is not a needed statement, even if you were that has no impact and you are safe either way.

Can I have a separate, more permissive license for MyLib and MyClient?

Absolutely, you said they dependencies of MyLib have permissive licenses. I assume you are referring to the MIT & ISC license types here. For these two licenses you just need to convey the copyright and license information to be compliant.

Does static linkage between MyLib and MyServer change how the GPLv2 license applies to distributed binaries?

Yes. If you are distributing a binary in which MyServer has statically linked (would also apply to dynamic linking too) in MyLib, then the combined work is licensed under the GPL2. Hence, you would have to treat both MyLib and MyServer as licensed as GPLv2 if you are distributing the binaries of the two things linked together. If you are only distributing the source, you are free to license MyLib under a license that is compatible with the permissive licenses that it depends on.

What happens if I or some user of this project does modify the GPLv2 network stack?

If you distribute the binary that has included a modified GPLv2 network stack, then you must also distribute the source that includes these network stack changes. It's important to note which files you have modified if you care about your copyright. Supplying the modifications via a patch file would be an appropriate way to convey your changes.

Would the following project structure comply with the GPLv2 license?

Sure, that structure could comply with the GPLv2 terms and conditions, but you run the risk of licensing cross contamination by placing differently licensed software in the same repository. Just be careful that MyLib doesn't accidentally start using headers and other source files from MyServer. If MyLib starts using components from MyServer, you may end up having to license MyLib under the GPLv2. I think your structure is fine as long as you have the diligence to make sure your permissively licensed software isn't using the code from the more restrictive GPLv2 components. Personally, I would make it a configure time option to specify which library MyServer links to, if that is applicable in this case. That makes it a little more clear that MyServer and MyLib are distinct components. Putting them in separate repositories may also help prevent any confusion or contamination.

airfishey
  • 1744
  • 7
  • 23