On Sun, 19 Apr 2015 13:31:14 +0200, Emmanuel Blot <eblot...@gmail.com>
wrote:

> A quick note about the licensing scheme of pyftdi (and friends).
> Some parts are LGPL-licensed because I've initially developed cftdi on
> top of libftdi - a Python-to-C wrapper for libftdi, and used an API
> which is very close to libftdi, which is released as LGPL.
> ...
> I have no objection to move to MIT license the whole pyftdi
> package, I just do no want to deal with this licensing nightmare.

I understand. I think what I was proposing was less drastic: I think
the UsbSerial class (and indeed the whole serialext package) is more
general than just for FTDI chips, and would make more sense as a part
of pyusb. Then all different USB-serial chip drivers, including pyftdi,
could share it as common code.

In my first message I wondered whether pyusb wanted to grow beyond just
wrapping libusb, but then I read this in pyusb's README.rst:

> Until 0.4 version, PyUSB used to be a thin wrapper over libusb.
> With 1.0 version, things changed considerably. Now PyUSB is an
> API rich, backend neutral Python USB module easy to use.

That convinces me even more that for pyusb to absorb the serialext
common code and UsbSerial base class from pyftdi would make sense
all around.

I think everything in serialext already *is* BSD licensed, so that
much should be easy. The only sticking point is that it makes some
incidental use of UsbTools from the LGPL part of pyftdi. The most
significant thing used there is parse_url. Did you also derive
parse_url from something in libftdi? I just looked over the libftdi
API and I didn't see something similar.

If parse_url was something you added, then maybe it is not a
problem for you to BSD license it to match the serialext code,
and it could also be raised to the status of something more
general in pyusb, where it could unify the way you specify a
device whether pyftdi or something else is the driver.

In fact, if we could do that, it might be worth thinking out
a url scheme that applies even to non-serial USB devices. I was
just setting something up recently to talk to a device that needs
only control transfers, not a whole serial interface, and it would
be nice to be able to specify that device as a URL also.

I'm only beginning to think about what a general usb url scheme
might look like, so take this as brainstorming, but maybe the
'scheme' portion should just be 'usb://' and I could pass something
like usb://0x067b:0x2303 as an argument to a script that just does
a pyusb device lookup and a control transfer.  Or if I have a script
that expects some kind of serial port and uses pyserial. I could
pass it /dev/ttyS0 or /dev/ttyUSB0 if the kernel driver is in place,
or usb://0x0683:0x1550?driver=ftdi and it gets a Serial instance in
every case and Just Works.

If the url scheme gets generalized a bit away from what's now in
pyftdi, maybe that also moots the license question around the existing
parse_url. But perhaps it is still good to BSD license the existing
parse_url if that is possible, just so there is less to worry about.

What do you think?
-Chap

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to