ID:751668
 
When writing programs in Linux, how does one develop across distributions? From a short investigation, I'm thinking that Linux programs fall under two categories: those developed for GNOME and those for KDE. Am I right in this assumption? If so, which is preferable? From what I've read, it seems that GNOME is more preferred over KDE, and I'm running Fedora 7 through GNOME, but I'd rather support more systems than my own of course in future developments, so I'd like more input! :)

If not a GNOME-KDE split, is it based on the windowing system (such as X)? If, then, would I merely need to develop a program to run under the X windowing environment?

If nobody here is too knowledgeable about developing for Linux, that's understandable and OK; I plan to read a couple of books soon on the very topic of developing for Linux, and so I'm hoping that I can make future applications compatible with Linux and Windows. I was just hoping to get a head start into research if anyone knew so much. :)

Hiead
There are a few cross-desktop environment widget systems out there. The main problem is that those tend to look like crap on both desktop environments, as to where using the took kits for a desktop environment will look good on it, but like crap in the other. wxWidgets is one of the cross ones I believe. If you use GTK(Gnome) it can be run on KDE, but it doesn't look good. The same goes for KDE's widget system.

GTK is nice because there is a MS Windows port. So it is really easy to make it cross-OS as well. The problem I've seen with GTK is that it seems to be pretty limiting. Maybe it's just the programs that I've seen, but GTK programs normally look fugly.
In response to Danial.Beta
Ah, so I was right that it's a GTK-KDE split? In that case, I'll probably just develop for Gnome, but if anyone has opinions otherwise I'd be willing to listen to them.

Hiead
In response to Hiead
GTK would work for either desktop manager. Really, because the way they are made, developing for either will work for both, assuming that the person has the base libraries installed for the one they don't have. I'm far from an expert, so it is probably best to take this question to the Ubuntu forums or IRC(the IRC is a good place to go for this kind of stuff).
I suggest developing your OS and memory-intensive code using C++ and then using WxPython for your OS-specific code, user interfaces, and "glue code". This will give you a very high amount of portability between Windows, Mac OSX, and many Linux distros.

WxPython is built on Python and WxWidgets, both of which are designed for cross-compatibility specifically.