Replies: 5 comments 8 replies
-
Hello, thank you for your interest in my project.
|
Beta Was this translation helpful? Give feedback.
-
Just did a quick git-blame exercise, and it seems that the vast majority of (surviving) lines contributed by KyungWoon Cho and cpeacock were entries in userspace/usbip/usb.ids. Quick sampling of other commits shows that most of the remaining lines are also stuff that is hardly copyrightable by the contributors of those lines, like unchanged boilerplate in the project config files, verbatim copies of the GPL and trivial lines like an opening or closing brace that git happened to match on a commit. |
Beta Was this translation helpful? Give feedback.
-
The 'develop' branch has a new license and is ready to be merged into master. What do you think about that, is everything okay? |
Beta Was this translation helpful? Give feedback.
-
The license has changed. But it seems that modifications have added some issues that need to be fixed (I've tested a flash drive, it does not work). |
Beta Was this translation helpful? Give feedback.
-
False alarm, there were the notorious Win11 24H2 network issues. Drivers are OK and work fine. |
Beta Was this translation helpful? Give feedback.
-
Hello there!
After lurking and following this project with great interest I have a few questions, suggestions and recommendations regarding the topics mentioned in the issue title.
Signed driver
Let's start with the most juicy one first: my company would be willing to dance the "Microsoft Partner Portal Submission and Driver Attestation Signing" dance for the Windows kernel components of the solution, meaning making a production-signed copy available that would support Windows 10/11 x64/AMD64 with or without SecureBoot enabled. I see a lot of potential and use-cases in this project and among the forks out there appears to be the most well-maintained and thought-through.
However, next to the topics that are in the way of this adventure.
Use of the GPL-3 license
From my understanding by browsing the projects, the entire repository and all sub-components (Windows/Linux userland libraries, Windows device driver(s)) follow the GPL-3. This is problematic for a multitude of reasons.
Incompatibility with the Windows Driver Ecosystem
Windows device drivers are technically incompatible with the GPL (2 and 3) since their strong copyleft restrictions would demand, that components of the Windows kernel that have to be linked against are available to the public as well. This is an unavoidable and unsolvable conflict, since no matter which device driver architecture you build your driver with (WDM, KMDF, UDE, ...) you have to link against the closed-source DDIs or your binary would basically be non-functioning.
Unfortunately this is not really well-known and the closest public statement to demonstrate this is found in the last paragraph of virtio-win/kvm-guest-drivers-windows. This means that Microsoft even actively rejects WHQL submissions of GPL'ed drivers.
Now, for the hobbyist and private individual this may seem like boring nit-picky details, and nobody may ever raise an eyebrow and turn it into problem, but that is unfortunately not what company lawyers like to hear 😅 ("No plaintiff, no judge.").
I ran into this with my own FOSS driver a long time ago too, I since settled on the 3-Clause BSD License although Apache 2 and MPL are a compatible choice too.
Incentive for contributions constrained
The GPL tries its best to turn users of free work into contributors so the balance between those creating and those merely taking without giving back is more or less maintained.
Imagine the following (fairly common) scenario now: a company would love to build upon this project and is willing to contribute back code whenever there's a need for change (bug fixes as a prime example). Their core app/product is designed as proprietary/closed-source and they simply interface via e.g. the provided
libusbip
with the driver. The GPL would now demand that - even if we link dynamically, not even static - the product interfacing the (unmodified and publicly available) would need to be open-source too. This is in many (most?) cases neither possible nor desired and would also ultimately not benefit this project, since it forces opening up code that isn't really relevant or beneficial to the project.This will immediately drive away any potential contributor that aims for integrating into non-FOSS applications, we now have no winner in this scenario; the contributor may be willing to join forces with the project and provide enhancements, but in return can not even use it themselves? Everyone lost.
Ideas and potential solutions
As you can see, we orbit around the chosen license doing more harm than good, for hobbyists and corporate entities alike. Now not all is lost though, there are multiple ways forward, although none are entirely without obstacles.
Re-license under more compatible license(s)
Someone feel free to correct me but as far as my research got me, there is no way to rectify the shortcomings laid out above without a license change. This is unfortunately not done in one afternoon, the following points need to be covered/resolved:
Offer a dual-license model for commercial projects
It is quite common to dual-license to allow commercial use under a separate commercial license. This is only possible if the licencor owns the majority of the code, since without a CLA one single person couldn't just make this decision for all other contributors.
If both of the above fail, only a rewrite from scratch of the affected components under a more permissive license would be an alternative.
A quick
git-fame
run shows we would have to get at least the top 4 contributors into this discussion:Prologue
Man, that was a lot, sorry in advance 😅 What do you fine folks think?
Cheers
Beta Was this translation helpful? Give feedback.
All reactions