I'm shopping around for hardware I can use to program and debug ARM microcontrollers. I used the Keil ULINK 2 at my last job, and it worked just fine. Now that I'm on my own, I can't afford to drop hundreds of dollars on debug hardware. What's more, the ULINK is proprietary hardware and is only officially supported with Keil products on Windows. That just doesn't jibe with ShareBrained philosophy. So I'm shopping around for other options that are compatible with OpenOCD, have open hardware and open protocols, and use USB (not parallel or serial ports). Here's what I've found so far (corrections and changes welcome):

Device Hardware Protocol Software Performance
Dangerous Prototypes Bus Pirate Open Open All Poor (designed for human-rate interface)
Dangerous Prototypes Bus Blaster Open FTDI Proprietary (but works with open libFTDI All OK
Embedded Projects GmbH usbprog Open Open, supported by OpenOCD All Bad (improved with alternate firmware and OpenOCD driver)
Keil ULINK2 Proprietary Proprietary Windows only OK
Segger J-Link Proprietary Public but proprietary, supported by OpenOCD All OK
Nuvoton Nu-Link Proprietary, Nuvoton target devices only? Proprietary Windows only OK
ST Microelectronics ST-Link/V2 Proprietary Proprietary, provided to OpenOCD under NDA Windows only? OK?
CooCox CoLink Open Proprietary? Windows only OK
CooCox CoLinkEx Open FTDI Proprietary (but works with open libFTDI?) Windows only? OK
KrisTech KT-LINK Crude schematic in user manual FTDI Proprietary (but works with open libFTDI?) All
Amontec JTAGkey FTDI Proprietary (but works with open libFTDI?) All
NGX ARM USB JTAG FTDI Proprietary (but works with open libFTDI?) All
Micromint PicoJTAG FTDI Proprietary (but works with open libFTDI?) All?
Olimex ARM-USB-OCD FTDI Proprietary (but works with open libFTDI?) All
Goepel PicoTAP Proprietary?

At some point in my research, I noticed that the Dangerous Prototypes Bus Blaster might be the solution to all my concerns. It's open (except for the FTDI chip, which works with the open libFTDI library), inexpensive, and should support SWD soon. This is the interface I'm going to try.