As a developer, I gave up on supporting other operating systems because it was simply not worth it after a decade of trying to write platform independent software. Spending time to get software working for Windows is a pain in the ass. So now I'm writing software for Linux only because it's a lot more convenient in so many ways. Compatibility with BSD/OSX is something I can still think of (but for now, I'm Linux only and using Linux-only APIs like epoll, timerfd and SOCK_NONBLOCK).<p>If you actually get your software working on Windows, that's only the beginning. Windows users expect to find a binary zipball or installers and/or MSVC binary libraries. Making binaries is a fair amount of effort which I see as largely pointless because they're always lagging behind the source.<p>Catering to Windows users is also frustrating, since there are so few Windows coders and even fewer who are willing to contribute their effort to an open source project. Instead, you'll get bugged with a variety of support requests as if you have some kind of responsibility to "fix" your software to do what someone else wants it to do.<p>But the biggest problem in writing cross platform software is the lack of good cross-platform API's available. Windows users are never happy with x-platform GUI's like GTK or Qt. There are some frameworks for other tasks than GUI, but they tend to go with the lowest common denominator of the platforms they run on, which is usually worse than working with native api's.<p>Finally, I feel that there's no need to try to lure more Windows users to migrate to Linux. Linux has already passed the threshold of immortality and it will stay alive and well whether it attracts more user from Windows or not.
I've come to this conclusion myself, for similar reasons. Fighting with software that has been poorly ported to Linux as an afterthought has burned me too many times. The solution is to reverse the flow (<i>and</i> do better.)