*** 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.