I evaluated the option of supporting linux for gfxapi earlier this year. I supported Mac OSX already before that. I ended up realizing that
- naturally OSX -> linux transition is easier than Windows -> linux transition, but there are multiple OSX-specific platform (e.g. Cocoa) code that need to be rewritten for linux (e.g. X11), so cannot naively assume "osx == linux since both are unix-based".
- There is no single linux, but there are hundreds of them. This is the big problem. Testing is a BIG pain. System distro, 3D drivers, exact OS version, HW setups, user's custom installed packages, creates a huge combinatiorial explosion of targets to test on. In practice, even big companies simplify this and e.g. Valve goes "linux == ubuntu" to avoid having to test on everything.
- There is no way to build a binary app and have a guarantee it will run on any other linux than what you built it on. You need to be aware of the exact dylib and runtime dependenices your app has for it to be portable across linuxes that have chosen to host different system runtimes. Different distros have different file system directory hierarchies, different packaging managers, and different sets of dylibs. This is much worse than the "DLL hell" on Windows, due to the previous bullet point. Trying to go the route of "I'll make a single installer exe for my game that linux people can run to install/launch/run the game" just is not possible, because there are no standards that are guaranteed across linuxes. In practice if you invest the time and effort to become knowledgeable of all the distros and distro versions that you are interested in, you will most likely be able to solve this, but you can already see that it will take a lot of time and effort to accumulate all that distro-wide knowledge.
- The OSS people say that none of the above should be a problem, since "if you make a project that is interesting enough, then people will come and port your game on their distro", but that's a very utopistic attitude, and assumes that you are releasing your game and assets free as open source.
In the end, I set up a single Ubuntu 12.04 box, and implemented gfxapi for linux against that, and I'm now running unit tests on that system to check that it works. For deployment, I build a single executable file that has all the required assets built-in. As far as other distros than Ubuntu 12.04 go, I just assume they don't exist. In the end, I think porting from OSX to linux took about a week for the actual "meat", i.e. the platform-specific code, and about three weeks with testing, GL driver debugging, deployment, X11 woes, and build system, a lot of which are this kind of "invisible" issues that are not in the code itself.
There was one surprising benefit to making the linux port, which is valgrind. I now run that as part of my automated unit test suite, and it is very helpful in finding certain types of errors, and has helped me to fix bugs for other platforms as well. Valgrind alone is perhaps a good enough reason to port a C++ codebase to linux (or OSX <= 10.7), even if the game will not be published on that platform.