*** 20140102, GNUStep and what could have been. *** There's a post on hacker news pointing to the beautiful etoileos. It's a desktop environment based on GNUstep. In the hacker news forum, a user asks, "How viable nowadays is cross-platform application or server software development in Objective-C compared to the same in C++? GNUstep appears to be the best (only) solution for the former; is that so? Edit: To clarify, I'm asking this as a developer who does most work on Linux. My interest in Obj-C is primarily due to its Smalltalk-like message passing mechanism. Edit 2: clarity." The immediate response itself is straightforward: not viable. But I wanted to go on and explain why it's a damn shame. These thoughts are too long for an inline reply. = GNUStep is not mature I've had two periods playing with GNUStep. Once in 2005, after attending an openbase conference. And then again last weekend. I was hoping for a nice cross-platform development environment. But even after I finally get something working I didn't see any evidence of progress since 2005. * The ubuntu packages do not produce a viable working environment. It crashes, the gorm editor doesn't function properly. This is the first time in five years that I've encountered broken tools in the stable ubuntu install. * The development tools are ridiculously mouse-oriented. Development is every bit as laborious as I remember WebObjects for NT being, and that was well more than a decade ago. Someone in the position of the poster who wants a solution doesn't get that from gnustep in its current state. You can get a VM that works from Richard Stonehouse's home page. You could do dev work in this, but it's not serious. My general impression is that you'd have an easier time getting work done in Haiku - which is still in alpha - than you would in GNUstep even for a single platform. That's pretty damning. = Quick diversion: use Qt and Py I'm not an experienced GUI guy, but have been evaluating desktop gui platforms for a while for some mad projects I'm tapping away at. Use-case: You want to move bitmaps around, and you don't care about having widgets that feel right for the platform. Example: building multi-platform games or reinventing Bloomberg. For this you want SDL. Use-case: Anything else. You want Qt. One of my requirements is no C++, and I've found I can still get Qt working without touching C++ by using PySide: The pyside python bindings for Qt are now high-quality, and Qt itself is featurefull and the development tools (e.g. the designer) are among the best of those out there. You can get python to (1) wrap C or Objective C and (2) package to produce multi-platform binaries (use the *development* version of pyinstaller) and thereby get a first-class GUI environment. Yes, it's a hell of a fiddle and there will be swearing while you do it, but it's a one-time sunk cost per platform, and then you'll wrap it up in build tools and it'll be done and out the way. The approach this produces feel just right on linux and windows, and as good as non-cocoa gets on OSX. The stuff you create will even work on Haiku. = We should be upset about the state of GNUStep Some quick history. In the 90s, there were two notable OS breakaways by ex-Apple teams * Gasse got pushed. He and Sakoman went off and build BeOS, which is currently being reimplemented as Haiku, which is a fairly undernourished project but may get to version 1 within the next twelve months. * NeXT. They took BSD, and put a GUI layer on it and some mouse-based development tools. NextStep became Openstep became WebObjects. This then split into WebObjects/Java and Cocoa. The API under all of them is very similar. You could take a NextStep developer out of a time machine, and put them in front of X-Code, and they'd be able to get to work pretty quickly. Let me stress again how mouse-oriented the NeXT dev tools were: thse tools were unbelievably laborious. When I was working in Webobjects dev, James Hercus got so frustrated at it that he systematically reverse-engineered all of the webobjects tools and rebuild command-line versions of the build scripts and tool workflow in perl. It really opened up the potential of the awesome API. In short: great API, awful tools. Also in the 90s, the free software crows were madly reimplementing free versions of commercial unix platforms. These groups have been awesome at reimplementing and improving on existing platforms, and fairly weak at building genuinely new things. There were no good GUIs in the unix world. So we ended up with KDE and Gnome. These sporadically copy features from mainstream desktops, but don't really produce a coherent outcome. Even in 2014, hotkey configuration doesn't work properly on my desktop. = Also in this period = People don't think As much as I like Qt, I The KDE/Gnome situation on linux is a big mess. I sometimes imagine guys like Gates and Jobs must have sat around in wonder as they watched hard-working but incompetent foes spin on hamster-wheels, leaving the field open for them to stride in and take what they wanted.