GNUstep has three backends available. That means three different ways of drawing the windows on the screen. Each one has benefits and problems. On BSD, the cairo backend tends not to work well. The ART backend can't handle X.org's default 16 bit depth properly resulting in windows that won't draw, and xlib is very old and not supported well.
According to GNUstep developers, art is the best choice.
How do I change the backend?
defaults write NSGlobalDomain GSBackend libgnustep-art
defaults write NSGlobalDomain GSBackend libgnustep-cairo
defaults write NSGlobalDomain GSBackend libgnustep-back (xlib)
If using xlib, also do this
defaults write NSGlobalDomain GSFontAntiAlias NO
If you choose xlib, be sure to reindex your fonts (font-cacher or something like that tool) It may do that when you run an app the first time after resetting the font aliasing feature above.
Most commonly, GNUstep can't find fonts or needs a hack to fix the bit depth.
Setting up the environment
The easiest way to setup GNUstep is to have your shell source the GNUstep.csh or GNUstep.sh files in /usr/local/GNUstep/System/Makefiles when you log in. Most versions of MidnightBSD will do this for you (if you're not the root user).
GWorkspace is available. From the GNUstep site, "GWorkspace is a clone of the NeXT workspace manager with some added features as spatial viewing, an advanced database based search system, etc."