This is a particular problem with network devices. Everybody uses this device and there must be hundreds of thousands devices out there. Most of which don't have Linux support natively. For others, there's a driver for the chip set made by Realtek, Marvell, Atheros and there are other chip set manufacturers. Which have an open sourced driver or have Linux proprietary drivers. There is another solution called ndiswrapper, this enables Linux users to run the Windows drivers under Linux, to use their device.
Using ndiswrapper how ever is not always the best option. Sometimes drivers are not developed well and this causes ndiswrapper to crash.