Harald,

Thank you for taking the time to participate in this discussion.

On Sat, 2009-06-20 at 12:53 +0200, Harald Kipp wrote: 
> Zach Welch wrote:
> > On Fri, 2009-06-19 at 18:26 +0200, Harald Kipp wrote:
> 
> >> Dynamic linking to proprietary libraries by adding LoadLibrary and
> >> GetProcAddress to OpenOCD is a gray area. While the FSF would not allow
> >> this, some lawyers may have a different view.
> > 
> > The big problem with gray areas is that you can be sued anyway, and --
> > even if you have lots of money -- you will have no idea as to whether or
> > not you will be able to defend the legality of your actions.
> 
> Same view here. That's why I suggested a different solution, which
> avoids direct static linking of a proprietary library to GPL code.

Static or shared, linked directly or through other libraries: it makes
no difference with the GPL.

> >> IMHO, the best solution is to create a new DLL, which is distributed
> >> under LGPL or GPL with a special exception (may be even BSDL). It should
> >> not provide any problems to link OpenOCD with this new library. And for
> >> this library it should be no problem to link to FTD2XX.dll.
> >>
> >> OpenOCD(GPL) - links - OpenFTD2XX(LGPL) - links - FTD2XX(Closed)
> > 
> > I would be just as opposed to such circumvention as I would to linking
> > to it directly, but I believe the legality of this strategy is suspect.
> > Quite simply, an exception to the LGPL would create a new license, and
> > the modified legal verbiage would no longer be compatible with the GPL.
> 
> Sorry, if I didn't explain this clearly enough. LGPL won't need an
> exception, it explicitly allows linking to proprietary code.

I think you need to get legal counsel to confirm your point; I believe
this case is no different than the GPL.  AFAICT, you must distribute the
source to the library, which cannot be done legally with the FTD2XX
library. You end up in the same place as we find ourselves now with the
GPL, with a new library that tries to obfuscate this fact.

The actual difference from the GPL is that you can link LGPL libraries
into proprietary applications.  When you turn it the other way around,
they treat linking proprietary bits into the library binaries the same:
you must provide all of the source code to reproduce the binary you
shipped under compatible terms.  Others may affirm or disavow this
interpretation, but this is what I recall from my own past research.

The FTD2XX library necessarily imposes "additional restrictions", which
prohibit it from being GPL-compatible.

> Referring to pure GPL: It explicitly allows exceptions and in reality
> there are many Open Source projects make use of this. In fact GPL itself
> makes an exception (V2, clause 3, last but one paragraph). Otherwise no
> GPL program would ever be able to run on Windows.

But all copyright holders must agree to adding one.  I do not.  This
makes OpenOCD "pure" GPL, and you will have a challenging burden of
proof defending distribution of binaries linked to FTD2XX.  

Personally, I believe the FTD2XX driver components fail to meet the
conditions for exemption under the terms of the paragraph you specify. 

> We may also consider to ask the FSF directly to confirm a specific
> exception. If we are able to provide good reasons, they will probably agree.

The problem is that there is no good reason: libusb+libftdi does the
same job and can be made to be equivalent.  They would never grant an
exception, even if they had standing -- which they do not; as far as I
know, no one in the OpenOCD community has assigned their individual
copyrights to the FSF.  

Only through unanimous action could OpenOCD's copyright holders make
changes to the license; my dissenting vote precludes any such change.

> Anyway, for the intermediate library LGPL is IMHO the better solution.

Under the terms of the GPL as I understand them, I believe that libusb
and libftdi is the only legally distributable solution.

> > To reiterate my earlier statements on this subject, I will consider
> > distribution of any OpenOCD binary that links to FTD2XX to be a
> > violation of the GPL.  If the libftd2xx library loads in the OpenOCD
> > process, then distributing the binary would violate the GPL.
> 
> Same view here. That's why I suggested linking OpenOCD to LGPL, which in
> turn links to FTD2XX.
> 
> 
> > The "best solution" is to fix libftdi; it is a replacement for FTD2XX.
> 
> Would you agree, that the "best solution" depends on one's attitude?

My present definition revolves around legality.  The "best solution"
will be one that is legal to distribute.

OpenOCD binaries linked to FTD2XX drivers could never be distributed
legally, even if no one was called out on it until now.  This is not
about attitude, other than compliance with the language of the license
in the manner which its authors intended.

Did you stop to consider that -- by ensuring GPL compliance -- we are
preventing copyright holders from launching submarine copyright attacks
for non-compliance?  It could be that I have just foiled a potentially
profitable plot to do exactly that; who knows what all of major past
contributors are thinking (or how desperate they are for cash).

Oops! I fear that I may have now given them this very idea, if they did
not have it before now....  Silly of me.  At worst, I simply forced them
to move the execution of this plan to the present, before you and other
vendors provide sufficient remedies voluntarily.  Unless this issue has
been raised in the past and ignored, they will be hard pressed to show
willful intent to do damage after such actions.

> I understand your point and I agree, that in general it makes a lot more
> sense to put some effort in GPL code than in trying to integrate
> proprietary libraries.
> 
> I also understand, that many contributors (you, probably also Øyvind) do
> not care much about FTDI libraries, because they simply don't need them.

I helped improve the high-speed patch for the FTD2XX driver, and I now
own a couple of FTDI-based interfaces.  Furthermore, I have been
improving and maintaining all of the code in the tree, regardless of
whether or not I will ever have the related hardware.  Judging only by
the number of patches, I care about this code more than you do. ;)

You are the second person to reach this erroneous conclusion, so I guess
it deserves say that this has nothing to do with my own preferences
beyond wanting to see the code that I contributed used in accordance
with the terms under which it has been licensed.

> But please consider, that GPL is in competition with proprietary
> software. Many OpenOCD users are already convinced, that OSS is the
> better choice, but the proof needs to be furnished for every new user again.

You are correct to say that we are in a competition with closed source. 
As a result, the proprietary driver deserves to be handicapped.  This is
an intentional "subsidy" for code that uses Free Software licenses,
which is exactly what the GPL licenses were designed to do.  

This was not an accident; it was very intentional.

> I do have a clear interest in FTDI library support. My company
> manufactures and sells the Turtelizer 2, which includes an USB-RS232
> bridge. RS232 is still in wide use on embedded systems. Packed with
> OpenOCD/Eclipse we are able to offer a nice solution for Windows users,
> which are still the majority of our customers. I assume, that the
> OpenOCD user base created by our products is at least several hundreds,
> the figures of Amontec (manufacturer of the JTAGkey) are probably higher.
> 
> To put things right, sales of Turtelizer add less than 1% of our
> revenue. We published all informations and allow hobbyists and
> competitors to copy the hardware design. Our key products are embedded
> Ethernet systems (based on BSDL, for good reasons ;-) ). We simply want
> to provide a convenient tool at a reasonable price.
> 
> In summary, with Turtelizer and OpenOCD our embedded boards (all Open
> Source hardware, btw.) are able to compete against products based on
> closed source software.
> 
> As far as I understood the current discussion: If we are no longer able
> to distribute OpenOCD with FTDI support, the RS232 port on the
> Turtelizer will become useless for Windows users and the JTAG speed will
> be reduced by up to 2.5 times. This will definitely hurt our ARM based
> products. In that case OpenOCD is no longer a good solution for us and
> the majority of our customers.

Let me say it again.  As far as I can tell, no one has ever had the
legal right to distribute OpenOCD binaries with FTD2XX support included
in them, and it is only by the good graces of the existing copyright
holders that violators are not being held accountable with consequences.
In this way, that driver has never been a viable commercial solution.

I am not willing to turn a blind eye to such violations, but I do not
want to harm anyone's business either.  Personally, I have no standing
claim on past releases, so my principle concern is with 0.2.0 and
forward.  Moreover, I recognize that these transgressions were probably
not made maliciously; however, they will no longer be excusable.  I will
never permit changes or exceptions to the OpenOCD GPL license.


If you are making money from selling products supported by OpenOCD, then
you (and other vendors) -- above all others in the community -- need to
be contributing to help the libusb and libftdi projects to remove
remaining limitations.  If its deficiencies posed that big of a problem
for your users, you should have 1) fixed them before ever distributing
OpenOCD binaries with FTDI chip support or 2) selected a similar tool
with a license to which you could comply.  If the FSF's own legal
interpretation of this license can be defended in court, then you have
never had any other alternatives for binary tool distribution.

Developers exist that would be happy to solve these problems for you,*
or you could contribute the required patches yourself.  The limitations
of libusb+libftdi are solvable, because the FTD2XX drivers have solved
all of them (or they would not be limitations).  You just need to hire
someone that realizes this fact and will do the required work to reach
functional parity; the same goes with libusb support for the secondary
UART on those chips.


I hope that you chose to continue to support the OpenOCD project, but
that does mean abiding by the terms of the GPL.  To this end, I want you
to ask this chip vendor to release their library under the LGPL.  As
their customer, you should have both a channel and some amount of
leverage to help the open source community accomplish this goal. 

I hope everyone thinks this is the absolutely "best solution."  It makes
me wonder what would happen if all of the OpenOCD JTAG vendors made a
concerted push on this front....  Want to organize such an effort?
Maybe work toward a Slashdot write-in campaign?  I have heard that
vendors are starting to respond quickly to such grassroots movements,
when they see the mob headed toward them with torches and pitchforks.

Sincerely,

Zach Welch
OpenOCD Leader, Pro Forma
Corvallis, OR

*  I am available for hire, and I believe that I can solve some of these
problems for you.  They will go away if you throw enough money at them.
I do not care who gets the work -- just help fix the problems.

_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to