Hi,

On 05/18/2013 01:31 AM, Pete Batard wrote:
On 2013.05.17 14:43, Hans de Goede wrote:

<snip>

Now, if you tell me that, no, we shouldn't really change the major
there, and that updating the minor would do, then I'm going to touch
what I am really after here:

Why the heck do "we" seem so hell bent against simply introducing 1.1
for this and the other stuff, and then declaring that 1.1 is where
libusbx happens now.

This is even more true as, with it being a game changer, and even if it
doesn't break the API, hp's logical place is in 1.1, not 1.0.

There are 2 separate things being mixed here, one is the version number
for the tarbal (and reported through the libusb_get_version call),
and the other is the soname (in Linux terms), or in other words our
ABI major version.

I agree that adding hotplug warrants using 1.2.0 for the
next version. But I disagree that we should break ABI here! We can
call the next release 1.2.0 and still keep the ABI (and thus soname
under Linux).

> So here we are, with a golden opportunity to sort everything that's not
experimental and that we really oughta sort, such as USB 3.0, hp,
MaxPower, ctx removal and probably a couple other stuff, but we're not
going to take it because you say that 1.x is off limits? Why?
What can possibly be the reason that makes you not to want to break from
1.0 ever, rather than, like every other library seems to do out there,
bump the micro once in a while, and let the previous version die a slow
yet deserved death, with thanks for the ride.

Most libraries don't break ABI when bumping the minor, they add ABI
but never break it.

I've been in the Linux distro "business" for a long time now, and
there is a HUGE cost to ABI breaking library releases. And almost
always the old and new version will need to be maintained in parallel
for a long time. For example gtk+ (aka gtk-1.0) is still around,
while we've 10 years of gtk-2.0 behind us, and 2 years of
gtk-3.0! Also notice there have been 8 years between gtk-2.0
and gtk-3.0 and the latest gtk-2 release, gtk-2.32 is fully
backward ABI compat with gtk-2.0

So iow doing an ABI breaking release means maintaining 2 trees,
the 1.0.x tree, and the new tree, whatever version we give it.

But we want to cleanup a lot more then just the ss ep comp stuff,
like sort out how to change our poll abstraction, so that it can
be used with windows handles too.

As said before I've no problem with starting a 2.x branch, and
doing ABI breaking API cleanup work there. I'm however very much
against doing an ABI breaking 1.2 release, shortly (relatively
shortly) followed by a 2.0 release which will break ABI again,
then we will likely end up maintaining 3 trees, which is a
way to high price to pay for a few cleanups / API improvements.

And let me also try to debunk the myth that apps will simple
move to the latest version, so we can stop supporting the older
trees soon-ish. I just did a "repoquery -q --whatrequires libusb"
which gives me all the packages still requiring the old 0.1
libusb (so libusb-compat now a days), and there are 86 packages
in Fedora still using this! I've attached a log file with the list

I'm afraid that this is the price we pay for success, libusb is
a successful, widely used lib, which means we need to maintain
older versions for a long long time ...

No matter how I look at it, switching our development focus to an
improved 1.1 is really the best logical solution here. I would go
further, with saying that if we are afraid of embracing such a change,
then there's something quite wrong with our development model. Yeah,
this means another libusb in /lib, and developer having to make a
choice. Big deal.

As you may guess, I'm starting to have my fill with this let's not
evolve the API outside of major, _EVER_, policy. We're developers. At
which point did we take a wrong turn and become so adverse to evolution
and change?

I'm not adverse to change, as said before I'm fine with branching of
1.0.x (or 1.2.x if we decide to bump the minor because of hotplug),
with you taking care of master, with all the API cleanups we want,
with master to eventually become 2.x, but with no ABI / API stability
promises until the official 2.0.0 release.

And I'll maintain the 1.0.x branch, for as long as needed.

What I'm against is having a 3th branch which is somewhere in the middle,
that is just creating a lot of extra work for very little gain.

So yes, lets cleanup our API, but lets do all the cleanups we want, not
just a small set of them. Which means it will be a while before 2.0.0
comes around, and in the mean time I would like to not only add
bugfixes to 1.x.y, but also new functionality, even that sometimes
means using a less then ideal API.

So my plan forward with the BOS / Endpoint Companion USB 3.0 descriptors
is too
merge Pete's patch into my darwin-integration tree, with the part I
NACK-ed above
fixed using the solution I suggested above.

I'd rather you didn't.

I hope the above explains why I still believe this is the best way
forward for 1.x.y, and I'll continue working on this.

As long as we don't agree on this I won't add it to my darwin-integration
tree, as I want to keep that ready for pushing to master.

Once I've something which I think is ready for review / testing I'll
publish it in a separate branch and ask for more feedback.

Regards,

Hans
0xFFFF-0:0.3.9-7.fc18.x86_64
ardour-0:2.8.16-1.fc18.x86_64
avarice-0:2.12-2.fc17.x86_64
avrdude-0:5.11.1-2.fc18.x86_64
barry-0:0.18.3-3.fc18.x86_64
barry-libs-0:0.18.3-3.fc18.x86_64
bluez-0:4.101-6.fc18.x86_64
bluez-hid2hci-0:4.101-6.fc18.x86_64
dahdi-tools-0:2.4.1-6.fc18.x86_64
dfu-programmer-0:0.5.4-4.fc18.x86_64
digikam-0:3.2.0-1.fc18.x86_64
digitemp-0:3.6.0-7.fc18.x86_64
flashrom-0:0.9.6.1-2.svn1639.fc18.x86_64
garmindev-0:0.3.4-5.fc18.x86_64
gnokii-0:0.6.31-4.fc18.x86_64
gnomad2-0:2.9.6-4.fc18.x86_64
gnupg-0:1.4.13-2.fc18.x86_64
gnupg2-smime-0:2.0.19-7.fc18.x86_64
gpsbabel-0:1.4.4-1.fc18.x86_64
hamlib-0:1.2.15.3-1.fc18.x86_64
iguanaIR-0:1.0.3-1.fc18.x86_64
isight-firmware-tools-0:1.6-3.fc18.x86_64
kdebase3-0:3.5.10-25.fc18.x86_64
lcd4linux-0:0.11-0.5.svn1143.fc18.x86_64
lcdproc-0:0.5.6-2.fc18.x86_64
libapogee-0:2.2-8.fc18.x86_64
libconcord-0:0.24-1.fc18.x86_64
libftdi-0:0.20-2.fc18.x86_64
libftdi-c++-0:0.20-2.fc18.x86_64
libgphoto2-0:2.5.2-1.fc18.x86_64
libhid-0:0.2.17-12.fc18.x86_64
libhid-python-0:0.2.17-12.fc18.x86_64
libifp-0:1.0.0.2-14.fc18.x86_64
libnfc-0:1.7.0-0.4.rc7.fc18.x86_64
libnjb-0:2.2.7-3.fc18.x86_64
libnjb-examples-0:2.2.7-3.fc18.x86_64
libnxt-0:0.3-5.fc18.x86_64
libphidget-0:2.1.8.20120912-1.fc18.x86_64
librfid-0:0.2.0-6.fc18.x86_64
libsigrok-0:0.2.0-1.fc18.x86_64
lirc-0:0.9.0-10.fc18.x86_64
mrpt-apps-0:0.9.6-2.fc18.x86_64
mrpt-base-0:0.9.6-2.fc18.x86_64
mrpt-bayes-0:0.9.6-2.fc18.x86_64
mrpt-detectors-0:0.9.6-2.fc18.x86_64
mrpt-graphs-0:0.9.6-2.fc18.x86_64
mrpt-graphslam-0:0.9.6-2.fc18.x86_64
mrpt-gui-0:0.9.6-2.fc18.x86_64
mrpt-hmtslam-0:0.9.6-2.fc18.x86_64
mrpt-hwdrivers-0:0.9.6-2.fc18.x86_64
mrpt-maps-0:0.9.6-2.fc18.x86_64
mrpt-obs-0:0.9.6-2.fc18.x86_64
mrpt-opengl-0:0.9.6-2.fc18.x86_64
mrpt-reactivenav-0:0.9.6-2.fc18.x86_64
mrpt-scanmatching-0:0.9.6-2.fc18.x86_64
mrpt-slam-0:0.9.6-2.fc18.x86_64
mrpt-topography-0:0.9.6-2.fc18.x86_64
mrpt-vision-0:0.9.6-2.fc18.x86_64
mspdebug-0:0.21-2.fc18.x86_64
multican-0:0.0.5-10.fc18.x86_64
nbc-0:1.2.1.r3-6.fc18.x86_64
novacom-server-0:1.1.0-0.7.rc1.fc18.x86_64
nut-0:2.6.5-9.fc18.x86_64
obex-data-server-1:0.4.6-4.fc18.x86_64
obexfs-0:0.12-5.fc18.x86_64
openct-0:0.6.20-5.fc18.x86_64
openobex-0:1.5-7.fc18.x86_64
openobex-apps-0:1.5-7.fc18.x86_64
openocd-0:0.6.0-2.fc18.x86_64
piklab-0:0.16.1-3.fc18.x86_64
pilot-link-libs-2:0.12.5-13.fc18.x86_64
player-0:3.0.2-21.fc18.x86_64
pyifp-0:0.2.2-6.fc18.x86_64
r5u87x-firmware-0:0.2.0-4.a9b2171d762b.fc17.x86_64
sane-backends-0:1.0.23-7.fc18.x86_64
sane-backends-drivers-scanners-0:1.0.23-7.fc18.x86_64
sane-backends-libs-0:1.0.23-7.fc18.x86_64
serdisplib-0:1.97.9-3.fc18.x86_64
serdisplib-tools-0:1.97.9-3.fc18.x86_64
tucnak2-0:2.31-6.fc18.x86_64
urjtag-0:0.10-3.fc18.20111215gite1a4227.x86_64
usb_modeswitch-0:1.2.5-1.fc18.x86_64
usbsoftrock-0:1.0.2-4.fc18.x86_64
vfrnav-0:20130429-1.fc18.x86_64
vfrnav-utils-0:20130429-1.fc18.x86_64
xfce4-cellmodem-plugin-0:0.0.5-11.fc18.x86_64
------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
libusbx-devel mailing list
libusbx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusbx-devel

Reply via email to