I'll start with some comments on distro packagers.

With regards to the bMaxPower specific issue (which I understand wasn't 
your point, but still worth mentioning), they had what I consider 2 easy 
ways to address it: Apply the straightforward usbutils patch we would 
have provided to them as soon as they engaged us, which they could do 
regardless of Greg's decision, or, in case our timing didn't suit them, 
stick to 1.0.12 for a while. I kind of expect distros maintainers to 
have some capacity to apply out of band fixes when they pop up, and the 
bMaxPower compatibility patch, though not a bug fix, isn't that 
different. Besides, unless we're not doing our job properly, we're not 
going to find deviations from the specs every other year, so this was 
very much intended to be a one-off thing.

So, at least with regards to bMaxPower alone, distro packagers weren't 
that much of a concern to me.

But with regards to your actual point, even as I have  little intention 
to "burn through ABI/API breaking releases (...) quickly", there are 2 
aspects to consider:

1. We have a huge backlog of potentially API breaking features that are 
a consequence of the lack of libusb releases over the past few years. 
Had libusb been a well oiled machine, we'd probably have had something 
like a 1.1 release some years ago already (it's been in trac for a few 
years) and would probably be looking into 2.0 right now, if not 
releasing it. But we haven't been in a position to get that. So we are 
in an exceptional state, compared to other libraries, in that we have to 
play a huge catchup game with our backlog. IMO, the sooner we are done 
with this all too painful exercise, the better it'll be for everybody. 
But that also means that, as much as we'd like to avoid it, users might 
have to contend with some of the consequences of trying to get to a much 
more breathable position, such as our trying to slide an API breakage 
without a version change on what we estimate (rightly or wrongly) to be 
a low impact change, so that we can avoid having users go through 
versions upgrades more frequently than they're going to be happy with...

2. Even if we were to issue more API bumps than everybody would like, I 
don't see the multiplication of APIs over a relatively short period of 
time as much of a threat for distro packagers: they are the one group of 
people who have the ability to force an application to stick to one and 
only one specific API/ABI, should they decide it'll make their lives 
easier. Do you have examples, for instance, of packages that are being 
maintained for both libusb 0.1 and 1.0?
It sounds like a huge waste of resources to me to have spent time on 
package upgrade from 0.1 to 1.0, and then keep supporting both of them, 
let alone more than two. But maybe you are talking about the work 
required during the API upgrade transition period itself? If that's the 
case, then I don't see that as a major concern either, as, even as our 
1.0 API has been stable for years, way too many apps are still relying 
on 0.1 and seem nowhere close to transitioning to 1.0. Therefore, I 
doubt we're going to require more resources from app maintainers, should 
we ever think that bumping our APIs twice a year is fair game. Empirical 
evidence seems to indicate that that established apps are unlikely to 
try to follow such a quick release cycle, and will skip the ones that 
are too close.


Now, with regards to the other matters:

Great, at last somebody else is proposing some rebranding and moving 
away from a potentially conflicting libusb space.

>>> "libusbx-2.0\libusbx.h"
>> "include <libusb.h>"

I think we should to go all the way with our header rebranding, and use 
libusbx.h, even as we keep libusb_api_call(). Be it only from a 
support's perspective, if someone only sends us code, it may help to 
have some evidence that they are actually using libusbx just by looking 
at it, and that they has a clear intent to do so. Plus, I think the 
libusb guys would also be quite happy not to end up with libusbx users 
that got confused by the presence of a libusb.h.

Besides, we are a fork. And while we of course want to make it easy for 
our users to switch, we also have to make it clear that we are a very 
separate entity from libusb. As such, we should request our users to 
willingly choose which one they really want to use, be it only with a 
one letter change in their header. Proceeding any differently seems very 
unhealthy to me, as it still leaves some of the uncertainty I would like 
to see us break free from.

And yeah, this makes our own 1.0 -> 2.0 process (slightly) more 
difficult. But then again, the real reason for the above was our 
decision not to break clean from libusb when we first released, so it 
seems a bit of a catch 22.

>> But I assume we are going to keep calling all the functions / structs
>> libusb_foo and not libusbx_foo,

That's the way I see it too. While I'm all for helping our users 
understand that they need to choose between fork and original, once 
we're past that, the need for code modifications should be as close to 
zero as possible.

> BTW, I do not quite understand the current roadmap page with
> regard to 1.1,0 and 1.1.1. I think they will not be materialized,
> right?
> https://github.com/libusbx/libusbx/issues/milestones?direction=asc&sort=due_date

Yeah, I will fix that. Or you can if you want... ;)

As to going 1.9 with big EXPERIMENTAL notices, I'm also all for it.

Finally, with regards to figuring out some of hotplug, I'll have to dig 
up the 3 phase plan that we kind of talked about previously. In the 
meantime, this [1] is one way the initial phase (non event related) of 
hotplug addition can be approached.

Regards,

/Pete

[1] 
http://git.libusb.org/?p=libusb-pbatard.git;a=blobdiff;f=libusb/libusb.h;h=f5eb81110d7ef9698c6c2b1783b681a5a3fa3a2f;hp=d46c68b4512b15b06a547100d47e638766f82f0c;hb=6cb025b4c853f2c034f72e12b1ab243d9d6e2a59;hpb=f62bae968fc07aff6e7f1e77b70e10010652a0df;js=1

------------------------------------------------------------------------------
Got visibility?
Most devs has no idea what their production app looks like.
Find out how fast your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219671;13503038;y?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
libusbx-devel mailing list
libusbx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusbx-devel

Reply via email to