Why not CDE? or KDE? or GNUStep?

Because GNOME is better! Seriously though, each of these desktop systems have issues which encouraged us to start fresh with the GNOME project.

CDE is not Free Software, it isn't even close. Many people also find it lacking in features, performance and functionality.

At the time of GNOME's inception, KDE had serious licensing problems, which they are still trying to resolve. KDE is based on a non-free library called Qt, which has a very liberal license, but it is not Free Software. TrollTech has promised to change the Qt license, but they have not yet done so. In addition there were compatibility problems between KDE's license and Qt's. Rather than dwell on this issue, you can read RedHat's position on Qt and Debian's position on KDE. The GNOME people like the KDE people, and we consider this an unfortunate situation that is in the process of being fixed. Hopefully, this will cease to be an issue soon, and GNOME and KDE can compete friendlily on technical merit and design.

This matter has been hashed out time and time again on the gnome-list mailing list. Asking this question on gnome-list is discouraged behavior. If you want to go somewhere and start a flame war on this topic, then please do it somewhere far far away where we don't have to listen to you.

There are significant design differences between KDE and GNOME. Top of the list is a difference in widget set. We find GTK+ to be nicer, more customizable, more friendly to development in various languages, and more flexible than Qt; others may disagree. In all, the projects are different enough so that both should be able to coexist and even collaborate.

GNUStep is another desktop environment that has a lot of good things going for it. One issue with GNUStep are that they are trying to reimplement the OpenStep desktop and API, with GNOME we'd rather develop something new and good rather than just redo something old, even something old and good. Also, just like Qt strongly pushes C++ on KDE developers, GNUStep strongly pushes Objective C on its developers. GNOME wants to remain language agnostic, and support development in whatever language you wish to use.