As a starting place for porting, you can think of GNU/Hurd as not very different from GNU/Linux and just port the various pieces you need in straightforward ways as you would port them to any new unix-like platform. The substantial thing missing now for proceeding that way is the X server, but you can just ignore that issue by not trying to use it. That is, you can't right now easily get an X server running on your Hurd. The reasons for this are not deep or very interesting, and certainly not what I would recommend thinking about for an introduction to Hurd programming issues. The X server will run fine just as soon as someone gets around to doing the various bits of moderately dull work involved, but when it does it will just be an X server and you know what that gets you. The approach I would recommend for now is to just port GNUstep and the pieces it needs (windowmaker and whatever) that are part of the X client side, and test/debug that using another X server over the ethernet (an X terminal, your linux box, whatever). There may well be little bumps along the way in terms of smaller features the Hurd lacks, those will come out in the wash. Once you have all the pieces working as X clients like they do on GNU/Linux, then we can start thinking about places you could do things differently to take advantage of the Hurd's architecture.
The active Hurd community (such as it is) is now pretty Debian-oriented. So with anything being ported from GNU/Linux to GNU/Hurd, the path we'll recommend is starting with the debian source packages for the packages you're interested in, and getting those ported and running to the point of making a binary hurd-i386 debian package. (If you're not into debian, you can just get your porting changes into the sources and make patches available or whatever is convenient for you, and leave the debianizing to someone else. But you're not likely to get much in the way of user testing until there is a debian binary package for people to install.)

