<?xml version="1.0" encoding="utf-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: libusb-1.0 enters beta</title>
	<atom:link href="http://www.reactivated.net/weblog/archives/2008/05/libusb-10-enters-beta/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.reactivated.net/weblog/archives/2008/05/libusb-10-enters-beta/</link>
	<description>they got a skin and they put me in</description>
	<lastBuildDate>Thu, 18 Mar 2010 08:51:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: dsd&#8217;s weblog &#187; Blog Archive &#187; libusb-0.9.1 released</title>
		<link>http://www.reactivated.net/weblog/archives/2008/05/libusb-10-enters-beta/comment-page-1/#comment-17075</link>
		<dc:creator>dsd&#8217;s weblog &#187; Blog Archive &#187; libusb-0.9.1 released</dc:creator>
		<pubDate>Sun, 29 Jun 2008 02:00:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.reactivated.net/weblog/?p=182#comment-17075</guid>
		<description>[...] development version of libusb-1.0. It incorporates all the feedback I&#8217;ve received from the v0.9.0 release, and includes some API changes, so be sure to update and recompile your apps if you were previously [...]</description>
		<content:encoded><![CDATA[<p>[...] development version of libusb-1.0. It incorporates all the feedback I&#8217;ve received from the v0.9.0 release, and includes some API changes, so be sure to update and recompile your apps if you were previously [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff</title>
		<link>http://www.reactivated.net/weblog/archives/2008/05/libusb-10-enters-beta/comment-page-1/#comment-17058</link>
		<dc:creator>Jeff</dc:creator>
		<pubDate>Tue, 17 Jun 2008 18:04:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.reactivated.net/weblog/?p=182#comment-17058</guid>
		<description>Hi Daniel,

First off, thanks for taking up this project!  A fresh start seems sorely needed.

I am brand new to USB development, so I&#039;ve been trying to figure out the best way to start playing with it, and libusb seemed like a good start (as opposed to kernel tinkering).

Unfortunately with libusb-0.1, documentation and examples are very, VERY weak.  While I understand that writing a device driver is going to be device-specific, it simply doesn&#039;t cut it for an API to not even explain its function parameters.  I found it fairly frustrating trying to find any useful information, and this coming from a young (read Internet savvy), professional engineer and general code hacker.

By contrast, your documentation (http://libusb.sourceforge.net/api-1.0/) looks fantastic so far!  Couple that with some great example code (maybe there are and I haven&#039;t found them yet?), and your adoption rate will be huge.

I have a couple ideas for possible example code (maybe they&#039;re not feasible - as I said, I&#039;m just starting with this stuff):

- A &quot;debug console&quot;, intended for toying with USB devices, enumerating the bus and allowing you to select a device to connect to, trying to read/write it&#039;s endpoints, etc.

- An example using a device that everybody is likely to have available, such as a mouse (HID) or USB thumb drive.  It wouldn&#039;t necessarily have to properly operate the device, but just perform some simple probing to show how to use the libusb-1.0 library.

I&#039;d be willing to help in development of these examples, but I admit my C skills are so-so and my time limited.

Thanks again!
-Jeff</description>
		<content:encoded><![CDATA[<p>Hi Daniel,</p>
<p>First off, thanks for taking up this project!  A fresh start seems sorely needed.</p>
<p>I am brand new to USB development, so I&#8217;ve been trying to figure out the best way to start playing with it, and libusb seemed like a good start (as opposed to kernel tinkering).</p>
<p>Unfortunately with libusb-0.1, documentation and examples are very, VERY weak.  While I understand that writing a device driver is going to be device-specific, it simply doesn&#8217;t cut it for an API to not even explain its function parameters.  I found it fairly frustrating trying to find any useful information, and this coming from a young (read Internet savvy), professional engineer and general code hacker.</p>
<p>By contrast, your documentation (<a href="http://libusb.sourceforge.net/api-1.0/" rel="nofollow">http://libusb.sourceforge.net/api-1.0/</a>) looks fantastic so far!  Couple that with some great example code (maybe there are and I haven&#8217;t found them yet?), and your adoption rate will be huge.</p>
<p>I have a couple ideas for possible example code (maybe they&#8217;re not feasible &#8211; as I said, I&#8217;m just starting with this stuff):</p>
<p>- A &#8220;debug console&#8221;, intended for toying with USB devices, enumerating the bus and allowing you to select a device to connect to, trying to read/write it&#8217;s endpoints, etc.</p>
<p>- An example using a device that everybody is likely to have available, such as a mouse (HID) or USB thumb drive.  It wouldn&#8217;t necessarily have to properly operate the device, but just perform some simple probing to show how to use the libusb-1.0 library.</p>
<p>I&#8217;d be willing to help in development of these examples, but I admit my C skills are so-so and my time limited.</p>
<p>Thanks again!<br />
-Jeff</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: davidz</title>
		<link>http://www.reactivated.net/weblog/archives/2008/05/libusb-10-enters-beta/comment-page-1/#comment-16941</link>
		<dc:creator>davidz</dc:creator>
		<pubDate>Mon, 02 Jun 2008 20:42:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.reactivated.net/weblog/?p=182#comment-16941</guid>
		<description>Hi,

A number of libraries use this pattern; for example libgphoto2, gvfs file system backends, libhal, most GObject-based based libraries. One example of a pure C library that does this is libpolkit

http://hal.freedesktop.org/docs/PolicyKit/polkit-polkit-context.html

Hope this helps.</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>A number of libraries use this pattern; for example libgphoto2, gvfs file system backends, libhal, most GObject-based based libraries. One example of a pure C library that does this is libpolkit</p>
<p><a href="http://hal.freedesktop.org/docs/PolicyKit/polkit-polkit-context.html" rel="nofollow">http://hal.freedesktop.org/docs/PolicyKit/polkit-polkit-context.html</a></p>
<p>Hope this helps.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Drake</title>
		<link>http://www.reactivated.net/weblog/archives/2008/05/libusb-10-enters-beta/comment-page-1/#comment-16937</link>
		<dc:creator>Daniel Drake</dc:creator>
		<pubDate>Sun, 01 Jun 2008 10:34:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.reactivated.net/weblog/?p=182#comment-16937</guid>
		<description>Hi David, thanks for the feedback.

Sounds like a sensible change to make. It should not have too much impact on the API: the session context could be stored inside the devices and handles and automatically inferred internally, so only a few function interfaces would need modifications. For convenience the user could also pass a NULL context, which would indicate the first initialized context, or something like that. I&#039;ll think more about the details then raise it on the mailing list.

For reference, could you give an example of an existing library that does this well?</description>
		<content:encoded><![CDATA[<p>Hi David, thanks for the feedback.</p>
<p>Sounds like a sensible change to make. It should not have too much impact on the API: the session context could be stored inside the devices and handles and automatically inferred internally, so only a few function interfaces would need modifications. For convenience the user could also pass a NULL context, which would indicate the first initialized context, or something like that. I&#8217;ll think more about the details then raise it on the mailing list.</p>
<p>For reference, could you give an example of an existing library that does this well?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: davidz</title>
		<link>http://www.reactivated.net/weblog/archives/2008/05/libusb-10-enters-beta/comment-page-1/#comment-16936</link>
		<dc:creator>davidz</dc:creator>
		<pubDate>Sat, 31 May 2008 23:51:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.reactivated.net/weblog/?p=182#comment-16936</guid>
		<description>eh, s/This is a theoretical example/This is not a theoretical example/.. sorry about that.</description>
		<content:encoded><![CDATA[<p>eh, s/This is a theoretical example/This is not a theoretical example/.. sorry about that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: davidz</title>
		<link>http://www.reactivated.net/weblog/archives/2008/05/libusb-10-enters-beta/comment-page-1/#comment-16935</link>
		<dc:creator>davidz</dc:creator>
		<pubDate>Sat, 31 May 2008 23:50:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.reactivated.net/weblog/?p=182#comment-16935</guid>
		<description>Suppose I write a program that uses libraries libfoo and libbar. Suppose both libfoo and libbar wants to use libuse-1.0. What happens when libbar is unloaded and it calls libusb_exit()? This is a theoretical example; for example Nautilus and the gio/gvfs stack loads a bunch of plug-ins. And more than one plug-in might want to use libusb (for example different volume monitors; one for handling gphoto2 usb cameras, one for MTP usb devices).

Typically libraries provides a context object (e.g. LibUsbContext *libusb_init() or similar) and use this throughout the API. Under some circumstances you can get away with this. But since you have things like libusb_set_debug() it doesn&#039;t look like you can get away with it; this call would affect all users of libusb in the process space; which (typically) is not desired (even though it&#039;s probably not a big deal since it&#039;s just debugging.. just trying to make a point).

Either way, it would probably make sense to at least document if your library is usable in such situations. Ideally it would be.</description>
		<content:encoded><![CDATA[<p>Suppose I write a program that uses libraries libfoo and libbar. Suppose both libfoo and libbar wants to use libuse-1.0. What happens when libbar is unloaded and it calls libusb_exit()? This is a theoretical example; for example Nautilus and the gio/gvfs stack loads a bunch of plug-ins. And more than one plug-in might want to use libusb (for example different volume monitors; one for handling gphoto2 usb cameras, one for MTP usb devices).</p>
<p>Typically libraries provides a context object (e.g. LibUsbContext *libusb_init() or similar) and use this throughout the API. Under some circumstances you can get away with this. But since you have things like libusb_set_debug() it doesn&#8217;t look like you can get away with it; this call would affect all users of libusb in the process space; which (typically) is not desired (even though it&#8217;s probably not a big deal since it&#8217;s just debugging.. just trying to make a point).</p>
<p>Either way, it would probably make sense to at least document if your library is usable in such situations. Ideally it would be.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
