until Linux comes up with a working device driver API.
Somebody who wants to sell a piece of hardware that works with Windows merely has to build a single binary image that will work with all builds of a major Windows version. One driver binary for all builds of Windows 10, for example.
Linux's unstable driver API, kernel-version-dependent symbols and run-time late linking means that the only viable path for a hardware device driver is for it to be adopted/maintained by the kernel team (or a distro maintainer) and built/distributed as part of a kernel release.
Otherwise, the poor guy trying to sell hardware either has to build the driver for every single kernel release/variant, or expect the user to compile the driver on their system. Neither path is viable.
Getting your driver accepted by the kernel team is a chicken/egg problem: The Kernel team is unlikely to bother with it unless your hardware is widely used under Linux, wide use is unlikely without a driver.
Linux will never be a viable desktop operating system until it has a stable device driver API comparable to what Microsoft provides for the Windows kernel.