Hardware created for Windows
Unfortunately, Linux users have to use hardware that has been created specifically to work under Windows. As a result, you end up with 14 people coming up with 14 different ways to get the hardware to work, and none of those ways is compatible with the other. Gain some ground over on the left, give up some ground over on the right. It's a constant tug of war, especially when it comes to getting hardware created specifically for one OS to work under a different one. It really SHOULDN'T be that difficult.
The whole process is made even more difficult by manufacturers of this hardware ONLY supporting (or creating) hardware drivers for Windows, leaving Linux users to "roll their own" drivers. As unfortunate as it is, Linux users may never fully unleash the true potential of their hardware components, thanks to the hardware manufacturers not releasing full specs on the hardware, nor revealing the "backdoor" tricks they've embedded into the hardware components to improve performance under Windows.
As a Linux user for the past 5+ years, I now carefully read reviews of hardware components before purchasing my hardware items. If there are good reviews showing that a piece of hardware works well under Linux, that item goes onto my list of hardware components I will consider buying in the future. Otherwise, that item -- and frequently that manufacturer -- go onto my "do not buy" list. When I purchase a hardware component that works well under Linux, I am also vigilant about posting a review of its performance with Linux. Most hardware reviews, unfortunately, are full of the "works well under Win7" or "works well under WinXP" drivel. Really? NSS! The vast majority of hardware IS created to work under Windows. Thanks, Mr. Reviewer Guy, for shedding some light on the fact that a piece of hardware that was DESIGNED TO WORK WITH WINDOWS actually works under Windows! The real feat is getting a piece of hardware designed specifically to work with one OS, working under a different one. More often than not, that endeavor ends up delivering the user down a dead end path.
Which brings us full circle to PulseAudio. While I'm aware of why it exists (trying to take a heap of Windows sound cards and make those interfaces easier to use under Linux), it fails miserably. IMHO, it unnecessarily complicates the whole process and hides the real control of the hardware from the end users. It almost makes you think that PulseAudio was thought up by the Gnome developers, who think that they need to insulate and "protect" the end user from actually being able to control the many aspects of their computer. Personally, I've not had one lick of problems from ALSA. It gives me direct access and control of the individual sound channels and functions of my sound card. I like it like that. Whenever possible, I try to eliminate the use of PulseAudio. I've yet to find it useful, and I wish the developers of it would redirect their energies somewhere else -- anywhere else but my sound or video card.