First, a bit of background: the Universal Serial Bus (USB) is the de-facto standard for wired peripherals. Most USB devices implement one of roughly a dozen standard “device classes” which specify a way for the device to advertize the features it supports and commands and data formats for using those features. Standard device classes include keyboard, mice, audio, video and storage devices. Operating systems support such devices using the “class driver” provided by the OS vendor. There is however a long tail of devices that do not fit into one of the standardized device classes. These devices require hardware vendors to write native drivers and SDKs in order for developers to take advantage of them.
I propose a new API, WebUSB which will give hardware manufacturers the ability to skip over all of the platform specific native code and build Javascript SDKs for their devices. This will be good for the web because, instead of waiting for a new kind device to be popular enough that its capabilities are standardized so that browser vendors can define an API, new and innovative hardware can be built for the web from day one.