On Mon, 2009-06-22 at 19:35 -0700, David Brownell wrote: 
> On Monday 22 June 2009, Zach Welch wrote:
> > On Mon, 2009-06-22 at 19:59 +0200, Dominic wrote:
> > >
> > > Øyvind mentioned the idea of wrapping the JTAG API in TCP/IP. Aside
> > > from performance implications I think this would require some
> > > significant development efforts with little immediate benefits. Even
> > > worse, it would encourage other JTAG interface vendors to implement
> > > their JTAG interface layer as a binary only driver that talks to the
> > > OpenOCD via TCP/IP layer, too.
> 
> FTDI doesn't see themselves as a JTAG interface vendor though,
> and that's part of the problem.  :(
> 
> Getting more driver support wouldn't be entirely bad, would it?

I read his statement as being opposed to more binary drivers, since he
started his last sentence with the words "even worse".  So, yes, I think
that some of us think binary driver support would be bad, but I admit
not "entirely" -- provided any such solutions are GPL-compliant.  ;)

> Most of those JTAG adapter vendors are just ignoring OpenOCD
> right now.  Maybe they talk to GDB through a proprietary GDB
> server engine; maybe they don't talk GDB at all.
> 
> We could be presenting a choice between getting GNU tools
> support by either
> 
>  (a) writing proprietary JTAG engine *AND* proprietary
>      GDB server engine; or
>  (b) writing proprietary JTAG engine but *REUSING* OpenOCD
>      GDB server engine.
> 
> Anyone switching to (b) would necessarily start improving
> the OpenOCD code.  And they'd likely realize that adding
> Linux support -- instead of being Windows-only -- became
> much easier.  That's in addition to
> 
>  (c) propietary JTAG engine plus proprietary non-GNU tools
> 
> Vendors now in category (c) that provide such OpenOCD
> engines seem like incremental wins too.  But if any of
> them do so, I'd be (pleasantly) surprised.

I really would be surprised to see the kind of transition that you
envision happening actually occurring in real life, without the
hand-in-hand support of the vendors.  That said, it seems possible, if
apparently improbable.

> > I am opposed to this as
> > well, for the same reasons.  This is why I did 
> > not suggest it until someone else suggested it.  I want to see libusb
> > and libfdti fixed,
> 
> I think *everyone* wants to see those get fixed.
> "How" is open; Duane's WinUSB note was interesting.

I agree -- WinUSB looks promising, particularly since support for it has
been indicated to be present in SVN builds (if still incomplete).  I am
all for talking about "how," but I think we are getting past having to
explain "why" it needs to be fixed so badly. 

> > and I do not want to open the door to more binary 
> > drivers.  If I were to implement the TCP/IP interface without pay, I
> > would release it under the GPL to prevent this situation from ever
> > occurring.  At this point, I am tempted to implement it simply in order
> > to close this back door to binary drivers.
> 
> It wouldn't work that way at all.  As soon as there's a well defined
> protocol, it could be re-implemented without using your code.
> 
> There are two ways to take that reality.  One is the Microsoft way:
> as a threat, to be responded to by ensuring the protocol is always
> changing and abysmally documented, so that interop using anyone
> else's code tends to be weak in critical areas.
> 
> The other is the IETF/Internet way, to be responded to by making
> sure the protocol is well-documented, well-behaving, and evolves
> cleanly.  This is how we got HTTP and SSL, not to mention TCP in
> the first place.

I am totally in favor of developing an open standard for this. However,
I am not particularly interested in allowing my investment in OpenOCD to
be used in ways that effectively circumvent the GPL, which is what I
ultimately see becoming the impetus to pursue this design.

Since this is being viewed as a viable option, I started to sketch out
this module yesterday.  I am willing for it to be licensed under LGPL,
but I am not willing to do that work for free and see it be used in that
way.  I would rather submit it under the GPL, and it would be a very sad
day to see it rejected because of that license choice alone.  

Would the OpenOCD community refuse an implementation if one was given,
but licensed only under the GPL?  [[How would such a matter be decided
fairly and conclusively?]]  To me, this is where "first mover advantage"
comes into play; you want your code in?  Then write it first.

That said, once it becomes a public protocol... you are totally right.
A clean room implementation can provide a FTD2XX driver.  I believe some
portions of this loophole were closed with the GPL v3, but I have not
studied this version as carefully as v2.  Since we use v2, it's moot;
the proprietary vendors have found their loophole.  That outcome seemed
inevitable really; it did not take long for the idea to surface either. 

I can try to bias the OpenOCD code on the side of the GPL, though.  So
my metaphor about closing the door on this should be clarified.  I meant
to say that I never expected to be able to shut it completely.  I want
to make it both easier for people to find the door and simultaneously
have to make the decision as to whether or not to try to go through it.
I want them to just embrace the GPL, using my baseline implementation.  

This will make it easier to license drivers as GPL than not, but I could
even dual-license my original code to closed driver authors.  Clearly, I
do not want others to use my work for that purpose for free, but I am
not opposed to such use.  Someday, I hope to be able to donate such
works for free, but I would go bankrupt today.  Put simply, I have a
house mortgage, and this kind of work should be paying it off.

It would be nice to get some confirmation from the existing vendors that
they would spend some money on such a solution; however, these folks**
have shown more interest in finding a quick contribution-less solution.
In general, this behavior seems representative of their virtually
non-existent community support resources, but these same vendors are
using OpenOCD to generate sales and profits (one must presume).

Why should anyone be surprised when I offer no quick fixes in return,
beyond my already excessive amount of community support?  You get as you
give, or so I would like to believe.  This plans seems to be the best
approach, given my present perspective on the situation.

The community should consider that I could have just as well said "no,
ask a lawyer".  Or, I could have just kept completely quiet and started
suing the violators into settlement after 0.2.0 was out.  Think about
that folks.  Clearly, I am not out to screw everyone out of money, or I
am doing a very poor job of it.  Indeed, I no longer expect to be hired
by vendors in this community after taking this stance, so I figure that
my ethics have now fully undermined my own potential to profit here.

Cheers,

Zach

** The singular exception to this observation would be Zylin AS.
Interestingly, I think they would accept the TCP/IP driver if it was
provided under the GPL, and I think their word deserves additional
consideration. Oyvind actively contributes to the community on a regular
basis, which puts him leagues ahead of the other vendors in my book.

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

Reply via email to