At Maker Faire, I met Philip Torrone briefly. We talked about driver installation issues, and he resolved to find someone at Microsoft if I would send a summary.
Phil ended up
posting on the Make Blog. There've been many reactions, mostly online comments, some in private email.
I'll briefly summarize the responses and offer my opinions here. Just click "read more"...
So far, a couple people at Microsoft or formerly at Microsoft are trying to ask around for the right people......
The most relevant technical response has been to switch from CDC protocol to HID or WinUSB. That's like suggesting a migration from Windows to Mac OS-X, because things work better on the other platform. True in many ways, but then you've faced with the huge cost of redoing everything in an unfamiliar environment, and you must give up a huge base of established software.
There is a HUGE existing software and knowledge base for serial communication. Virtually every programming language offers very a mature, well-tested serial API or object. Arduino and Processing are of course the major ones in the Maker Community, but there are so many others. While generic HID is starting to gain support, in terms of quality API in all languages and environments, HID lags far behind well established serial.
Serial may seem like an obsolete technology. In terms of physical ports on computers, it certainly is. But in terms of protocols actually used by USB devices, serial is still very widely used.
Until recently, most USB serial has been by dedicated chips from FTDI and others. One outdated opinion is that most people use FTDI's chip/protocol instead of standard CDC. Technology is always changing. The clear trend is low-cost microcontrollers are now offering built-in USB peripherals.
Many mass market products using these microcontrollers go with HID, often only because it works without installing any INF file or driver on Windows. That's great (except for improper USB bandwidth allocation) for mass market, high-volume products, but we're talking about Makers here (and small businesses using permissively-licensed technology from the Maker community), especially those using Arduino and Arduino-like boards. CDC serial is the protocol everyone uses. It's so popular that people tolerate the Windows driver install problems.
Some commentators perceived this as merely whining, with "just install the driver and stop complaining". These people, I suspect, have never been involved in running a small business selling and supporting products, and Phil and I are. The point is not that I personally have to install a driver once, but rather thousands of customers have to do it over and over again. Often it goes wrong, where Windows gets into funny conditions with the INF file installed in the (hidden) Windows/INF directory, but the Windows registry has stale info saying the device has no driver.
The point isn't even that we have to answer the same tech support questions over and over. The point is customers are suffering a poor quality experience. Phil and I and others who make and/or sell these products want our customers to have a great experience.
It's not just about sales, but about empowering Makers to build projects.
I will personally go to great lengths, even re-writing device-level stuff 3 times for each operating system, just so people get a "just works out of the box" experience. I personally invest many hours testing and resolving small issues. This isn't about saving myself a few moments work installing one driver. It's actually spending more time working towards the goal of better overall experience.
Of course, many people feel it's unlikely Microsoft will ever respond. I'm skeptical too. But impossible as it seemed, with a substantial effort a couple years ago, I managed to convince Apple to update their CDC driver to support CDC-IAD... which is used by Teensyduino's Serial+Keyboard+Mouse+Joystick option, and is now also used by Arduino Leonardo.
Here you can see a
comment from an Apple developer, offering the USB descriptors from a Teensy-based demo board I sent to Apple in April 2010, which ultimately lead to Lion (10.7) supporting CDC-IAD. It is sometimes possible to reach the right people and make a real difference!
I decided to order this post from the most relevant and constructive feedback to the, well, not-so-useful comments. Those, unsurprisingly, were people who strongly favor one operating system and respond very harshly regarding any other. Most of them didn't appear to have read or understood the article.
One common theme among these negative comments was a notion, which I do not believe is supported by the facts, that Microsoft is attempting to tightly control or "lock down" what types of devices can be used with Windows 8.
First, a tiny bit of tech background. Windows drivers have separate files, where there's a text-only description call an INF file which is gives installation info. The actual binary code is in separate files. In the case of CDC serial, the binary driver is already part of Windows. The problem is Microsoft doesn't have any INF file in Windows which causes it to load automatically when a standard CDC ACM is plugged in.
Windows 8 requires INF files to have digital signatures, even if they only load a binary driver that's already part of Windows. Windows 7 and earlier only required the binary code to be signed. While that could be perceived as attempting to control users, Windows 8 (at least the 1ST customer preview version) also provides a way to reboot to a special mode that allows any unsigned driver to be installed. That's much more permissive than Windows 7, 64 bit.
I believe, looking at the facts objectively (more secure by default, more permissive with specific user consent), Microsoft genuinely wants to make Windows as good as it can be for their customers. That's what I want too, to provide the best customer experience possible.