Just a heads up for everyone out there. I stumbled onto this during my work to create a Linux application for the FX3 device.
I believe that Cypress inadvertently made a licensing mistake for their cyusb library which is a thin wrapper on top of libusb. The Macintosh and Linux SuperSpeed library CYUSB from Cypress has been licensed as GPLV2. I suspect they wanted it to be LGPLV2. Big difference in the library effects.
The issue is that the FSF takes the stance that linking with GPL code causes your code to fall under the GPL:
It has always been the FSF's position that dynamically linking applications to libraries creates a single work derived from both the library code and the application code. The GPL requires that all derivative works be licensed under the GPL, an effect which can be described as "hereditary." So, if an application links to a library licensed under the GPL, the application too must be licensed under the GPL. …
That is clear. If it is legally binding, then there is a dilemma for applications built with that library.
However, if I understand things correctly, Cypress has the option to ignore use of its GPLV2 code in proprietary applications by not pursuing the end customer. In addition, the original copyright holder of the GPL license can give anyone they wish a "commercial" license version of the code if they wish.
But, to be safe, I would recommend that you *do not* use the Cypress' CyUSB library on macintosh or linux platforms unless you are ready to open all of your code, or can get a "commercial" license from Cypress.
Note there is a general provision in the GPLV2 that can help you if you really need it. You are able to charge a transfer fee (unspecified) for access to your source code. If you have not yet given the source code to any customers whatsoever, you can effectively protect your code by making the transfer fee extremely large, to the point you would not be damaged if it gets out into the wild. AFAIK, you have no say over what the people receiving the source code do with it, in terms of their transfer fee.
The libusb library, on the other hand, is LGPL. Under that license you can *dynamically* link with that library and keep proprietary your code. You are under no obligation to open your internal code. If you make modifications to the libusb library source, you are under obligation of LGPL to publish those changes. The transfer of those source code changes can, again, be subject to a transfer fee, if I understand the license properly.
In the end, it does not matter what I think. It matters what copyright holders and customers think. If a customer thinks that you owe them the source code, you need to be prepared. Either give them the code, present a large transfer fee, or supply a copy of the commercial license you were granted.
A good lawyer once told me the following: If they take you into court, you lose. Even if you win, the costs of protecting against litigation are so high that you lose, because you have to pay those costs.
Coincidentally, I've been in the process of writing my own. I started with the Cypress thing and was going to clone it in C (totally not for license reasons)... Then I started to see a lot of very awkward things that were going on in the way they handled things in theirs. I'm currently gearing mine only for use with isochronous transfers, but it could do more.
Right now it's only Windows, but I am primarily a Linux developer so shouldn't be hard to wrap libusb, or anything else, really.
I am confused about this too and I would like to hear from Cypress directly.
FX3 Programmers Manual
Doc. # 001-64707 Rev. *
Dowloadable from EZ-USB FX3 Software Development Kit states
Any Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by
and subject to worldwide patent protection (United States and foreign), United States copyright laws and international treaty
provisions. Cypress hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use, modify, create
derivative works of, and compile the Cypress Source Code and derivative works for the sole purpose of creating custom soft-
ware and or firmware in support of licensee product to be used only in conjunction with a Cypress integrated circuit as speci-
fied in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source
Code except as specified above is prohibited without the express written permission of Cypress.
Which seems to mean that CyAPI for Windows is OK to use so long as you use it with Cypress devices.
But the issue is that libcyusb seems to be both owned by Cypress and ATR-LABS.
Does this license still apply or does the GPL license take precedence?
I contacted their help support and this is what they said:
An Interaction has been added to the case#00416794 by Abhinav Garg.
Hi Mark Harfouche,
Apologies for the delay. Your emailID was not linked to the case initially. So our response did not reach you.
Based on the decision made during the development phase of libcyusb the licensing was chosen to be GPL. So as of now you have to make your code open source. But in the next release of libcyusb the license would be LGPL only.
Thanks & Regards
You may view your case here:
Alternately, posting a response via reply e-mail will append your comments directly to the case.
To view or download attachments, please access the case on our support website by clicking on the link provided above.
For us, this is basically a deal breaker in terms of using Cypress + Linux (or Mac)
A few back and forths later, they agreed to send us an attachment containing the extra "L" I requested.
For those thinking of developing for Linux, I think you can now safely assume that the libcyusb will be released as LGPL v2.1 shortly, if not, contact their support directly by email.