Tuesday, November 16, 2010

GNUstep Is Not OpenStep...

Hey guys.   I thought I would make this blog post to make a point: GNUstep is not OpenStep.  GNUstep is a Cocoa implementation and has been for quite some time.   I'm concerned that every so often in books or on blogs I see "GNUstep is an OpenStep implementation for Linux."  This statement is blatantly wrong in two different capacites: 1) GNUstep is Cocoa and 2) GNUstep works on Linux, Solaris, BSD, Windows, etc.

Let's also address a few other misconceptions.  GNUstep has been used to port a number of applications to Windows and Linux without any issues.  So when people say "GNUstep is incomplete" they, honestly, don't really know what they're talking about.  In most cases, GNUstep will contain whatever you need and, if it's not there then, for goodness sake, do the thing that supposed to be done in Free Software... implement it and contribute the code to us.

I'm beginning to wonder why so many people have trouble with this very simple concept.   Please, people, stop spreading misinformation about GNUstep.   GNUstep is not OpenStep, OpenStep is a dead standard.  GNUstep is [an attempt to implement a Free Software version of] Cocoa.  While GNUstep does retain some of the OpenStep methods which are useful, it is a Cocoa implementation at this point in time and I'm really tired of correcting people on this point.

45 comments:

Foo said...

Is the problem that many GNUstep enthusiasts are really NeXT enthusiasts living in the past?

If so, what problems has this caused in the progress of GNUstep?

GregC said...

No, that's not the problem. :)

Predictably, you've interpreted the posting backwards. The problem is not that GNUstep folks are "NeXT enthusiasts living in the past." This is, in fact, the precise meme I'm trying to squash like a cockroach. The problem is lack of marketing, we're not getting the message across and people like yourself keep repeating "GNUstep is OpenStep" all over the place and it's difficult to reverse the momentum.

I really and truly wonder why it is so difficult for people to look at the code and really understand what's going on under the hood. A cursory look at the source would tell any developer with half a brain that GNUstep is actually Cocoa.

The only thing which remains in the past is GNUstep's default look. Again, in spite of GNUstep themability... it can look like anything almost... on Windows it blends in, and we even have a GNOME theme that lets it use the GNOME widgets.... but none of this seems to make any difference. All the community at large cares about is the most visceral and easy things. Perhaps what we need to do is stoop to their level and make things just that easy.



GC

Foo said...

I really and truly wonder why it is so difficult for people to look at the code and really understand what's going on under the hood.
[...]
All the community at large cares about is the most visceral and easy things. Perhaps what we need to do is stoop to their level and make things just that easy.


A re-branding (new name, new default theme) may be precisely what you need to break GNUstep out of the mental box that people have put it in. An app developer may perform his due diligence, investigating GNUstep before committing to using the API, but the community at large won't be bothered. OSS used to be about users being developers, but now the user base is far larger than the developer base. (To sell GNUstep as Cocoa to developers, it might help if ProjectCenter could load and export to Xcode project files.)

On a more philosophical note, perhaps a consumerist mentality is just a natural response to a world of increasing complication and specialization. People rely on marketing and reputation to figure out what tools to invest their time in.

Tor said...

Maybe it should be called Gnocoa instead of GNUstep.

stuaxo said...
This comment has been removed by the author.
stuaxo said...

A new name makes sense, but having a name based on Cocoa will probably attract lawyer bees.

(deleted my old post as I wrote layer bees which made even less sense)

Simon Howard said...

This is a very interesting post. A while back I experimented with GNUstep a bit and wrote about my impressions of the project. You may find them relevant to this discussion (see the "Thoughts on GNUstep" section).

Simon Howard said...

And I apologise in advance for having made the exact same mistake that you complain about in this post :-)

LaPingvino said...

Let's call it Cacau then :)

Dag Ågren said...

This argument would carry more weight if GNUstep actually implemented age-old Cocoa features like native exceptions.

Also, if people didn't tell you that they don't want that kind of "shiny new stuff" in GNUstep when you suggest they should be implemented.

GregC said...

@ Dag:

Then consider it to hold more weight, because GNUstep (or GCC, rather) does support native exceptions.

This is another common mistake that is made by people who look at GNUstep. GNUstep is the API, gcc is the compiler. For some reason people lump the compiler in the mix too.

We are just now getting properties and other ObjC2.0 features with LLVM and GCC in GNUstep. GNUstep full supports most ObjC2.0 features using LLVM and an updated runtime and compiler for GCC is on the way, thanks to Nicola Pero.

Does this qualify? :)

GC

Justin said...

From "Introduction to GNUstep" at gnustep.org...

"GNUstep is based on and completely compatible with the OpenStep specification developed by NeXT..."

If you want people to see GNUstep as a Cocoa framework then I believe you need to stay completely away from talking about OpenStep. Put that in a "history" section or something. Everywhere else, stress Cocoa.

Also, I would put some screenshots of even very simple apps side by side on Mac, Windows, and Linux. Make sure that the app does not look like NeXT on any of the platforms. This will drive home for us simpletons that GNUstep is a path to portability for our Mac targeted apps.

Maybe write a blog entry on GNUstep vs. Cocotron (sp?) or something as well since it is explicitly a Cocoa portability option.

Mario said...

Hmmm, that's interesting. But maybe it would help to spread that information if the GNUstep simply fucking chosed a better name then. Why isn't it called GNUocoa if that's what the project in reality does? Why spread more misconception by retaining an inappropriate name?

GregC said...

@Mario: I'd appreciate it if you kept the foul language out of the conversation, but your point is taken.

I've been discussing changing the name with the community this morning.

GNUstep was named this because, at the time, it WAS an implementation of OpenStep, but it is MUCH more than that now.

carver said...

the confusion comes from the fact that the GNUstep website still calls itself an NeXTstep/OpenStep implementaiton. In fact, google description for gnustep.org is "Official site of GNUstep: free implementation of NeXTStep/OpenStep specification." Not very long ago, the main site said this too. And to say "GNUstep is Cocoa" is misleading as well, as its an attempt at implementing the Cocoa API.

cjwl said...
This comment has been removed by a blog administrator.
GregC said...
This comment has been removed by the author.
GregC said...

I deleted Chris' comment because it was basically an advertisement and didn't contribute anything to the existing discussion regarding GNUstep development. Chris, if you have something useful to contribute to the current topic, please feel free to post again.

Thanks, GC

cjwl said...

Then stop saying it and actually do it Greg.

- update the website to actually say that
- update the project names to actually reflect their Cocoa counterparts (Foundation, AppKit, etc)
- clean up the source tree to actually look like something which might resemble Cocoa
- remove or privatize all the API's which are not actually Cocoa
- remove all the auxiliary projects which are not Cocoa
- remove all the dead projects, DGS? really?
- make sure the applications actually compile against Cocoa too.

Every little difference is an obstacle for developers. GNUstep doesn't seem to grasp this and lives in it's own world. If that is what you do with the project then don't bemoan people perceiving it that way.

GregC said...

Chris,

Thank you for the suggestions. They are good.

GC

GregC said...

Chris,

The only point I somewhat disagree with is:

* Make sure all applications compile against Cocoa.

While it's true that Cocoa apps can compile against GNUstep, there's no compelling reason to make sure that GNUstep-specific apps must compile against Cocoa. It would be nice, though, but not a priority.

Gorm, for example, uses some features of the GNU Objective-C runtime which are not available on Apple's runtime, so it would be a major pain to build Gorm for the Mac platform.

Later,
GregC

Andre said...

I suggest GNU Coconuts. I like a lot the many meanings it may pose.

Keep improving it. Perhaps, I would go back to use it on desktop if a nice theme appears for linux (was a happy user a long time ago but, time called).

Best regards (and hopes).

Remenic said...

With a name like that, I would definitely want to use it! Awesome!

Luca Cappelletti said...

2 cents about naming ;)

GNU/Cocoa

This help to understand that is the GNU "something" about cocoa.
Due to seems that GNUstep now is the GNU Cocoa implementation this for me make sense to name it simply GNU/Cocoa so instead to reinvent a new name...we use consolidated brand like GNU and Cocoa..and merge the two worlds...

about laws...
as mentioned here:

http://en.wikipedia.org/wiki/Cocoa

"Cocoa may refer to:
Related to chocolate"

So it's clear that in the future we can have an Apple Cocoa that is not GNU Cocoa...

Brejoc said...

GregC,

I'm sure there where very good reasons to build Gorm in a way that it only runs with a GNU ObjC runtime, but don't forget the enormous opportunity that a close similarity and interoperability to the Apple world could mean to GNUstep.

There are a lot of developers that surly would like to see their code compile on GNUStep, if the changes that have to be made are not too big and if they could use at least some of their toolchain.

Jochen

James said...

Why not complete the desktop environment so that more people start to use it and get over the whole NEXT metaphor? SystemPreferences.app is where I'd start, get dbuskit talking to networkmanager so networking is as simple as on OSX and cleanup the etoile menuserver code so that emulating OSX's feel works properly without weird menubar positioning issues. After that it's mainly just finishing up webkit and writing more apps/libraries which pushes gnustep forward anway.

r_a_trip said...

Ok, so GNUStep is currently a reimplementation of Apple's Cocoa. Fine.

Ask yourself this: "Why should the world care?"

Is it an awesome development platform? Why isn't it being promoted as such with developers? Why can't I name one major application on my desktop, which is powered by GNUStep?

Is it cross platform goodness? If so, why are you eating QT's dust? Where are the myriads of relevant cross platform applications powered by GNUStep?

Does it make for an awesome framework to power a modern desktop environment? So why isn't there an earth shattering distribution showing all the GNUStep goodness? All I've seen are horrid, dated (incomplete?) desktop implementations with early nineties widgets and a color scheme that even makes Windows 3.11 look good.

What is GNUStep trying to be to the world?

As a fairly well versed end user, (yes, I'm one of those pesky and rather-wished-to-be-dead, non-developing end users), I have seen nothing coming from GNUStep that sparks my interest. Be it a desktop environment as slick as OS X or applications which simply are must haves. Even if I do use some GNUStep applications (I'm fairly certain I don't), I wouldn't even know they are powered by GNUStep.

Even if I'm not the target audience, why would developers spend time on GNUStep? Where do their applications go? What is the reach of GNUStep?

If GNUStep is there to satisfy the old 1980's hackers ethos of sharing code amongst themselves and getting kudos for their achievements, viewing non-developing persons as non-entities, then GNUStep is precisely in the nearly forgotten niche it needs to be in.

If GNUStep should be the next-generation FOSS development and GUI framework, then I suggest getting a new, attractive default theme and a showcase (a slick distribution or some well known programs) of what GNUStep really can do. No, the current, horridly dated looking, GNUStep powered distro's are not a showcase. If anything, it scares people away.

Of course this can be brushed off with "how shallow", but first impressions count. Why would a developer take the time to look at the lower level architecture, if the surface is an eyesore? Why should end users show an interest in (or ask for up to date) GNUStep packages in their distributions repository (Linux, BSD or whatever), if no wellknown applications are available and they still look like an early 1990's nightmare?

Just lamenting that GNUStep is misunderstood isn't enough. Make the world understand.

r_a_trip said...

Ok, so GNUStep is currently a reimplementation of Apple's Cocoa. Fine.

Ask yourself this: "Why should the world care?"

Is it an awesome development platform? Why isn't it being promoted as such with developers? Why can't I name one major application on my desktop, which is powered by GNUStep?

Is it cross platform goodness? If so, why are you eating QT's dust? Where are the myriads of relevant cross platform applications powered by GNUStep?

Does it make for an awesome framework to power a modern desktop environment? So why isn't there an earth shattering distribution showing all the GNUStep goodness? All I've seen are horrid, dated (incomplete?) desktop implementations with early nineties widgets and a color scheme that even makes Windows 3.11 look good.

What is GNUStep trying to be to the world?

As a fairly well versed end user, (yes, I'm one of those pesky and rather-wished-to-be-dead, non-developing end users), I have seen nothing coming from GNUStep that sparks my interest. Be it a desktop environment as slick as OS X or applications which simply are must haves. Even if I do use some GNUStep applications (I'm fairly certain I don't), I wouldn't even know they are powered by GNUStep.

Even if I'm not the target audience, why would developers spend time on GNUStep? Where do their applications go? What is the reach of GNUStep?

If GNUStep is there to satisfy the old 1980's hackers ethos of sharing code amongst themselves and getting kudos for their achievements, viewing non-developing persons as non-entities, then GNUStep is precisely in the nearly forgotten niche it needs to be in.

If GNUStep should be the next-generation FOSS development and GUI framework, then I suggest getting a new, attractive default theme and a showcase (a slick distribution or some well known programs) of what GNUStep really can do. No, the current, horridly dated looking, GNUStep powered distro's are not a showcase. If anything, it scares people away.

Of course this can be brushed off with "how shallow", but first impressions count. Why would a developer take the time to look at the lower level architecture, if the surface is an eyesore? Why should end users show an interest in (or ask for up to date) GNUStep packages in their distributions repository (Linux, BSD or whatever), if no wellknown applications are available and they still look like an early 1990's nightmare?

Just lamenting that GNUStep is misunderstood isn't enough. Make the world understand.

r_a_trip said...
This comment has been removed by the author.
r_a_trip said...
This comment has been removed by the author.
Robert Whane said...

>Maybe it should be called Gnocoa instead of GNUstep.

+1 on such kind of name change. In the past I have been monitoring Gnustep for quite some time and even though I knew it tracked 'some' Cocoa changes I was firmly under the impression that GNUstep was mainly an OpenStep implementation.

Okay, I was thus wrong, but I guess many others were as well. If Cocoa is now the primary target, that should be reflected in the name of the project.

Otherwise I think it's a cool project and keep up doing the good stuff ;)

r_a_trip said...

Sorry for the multiple comments. Blogger failed to complete the posting process with an error. I didn't know it actually did make the post. Duplicates removed.

GregC said...

@ra_trip

Of course we would like to do many of the things you describe. The project lacks the manpower to do things quickly.

As for 90's widgets and color schemes, it is possible to theme GNUstep so that this is not the case. I am currently working on making the GNOME theme more complete and easier to use than it was before so that GNOME users can utilize GNUstep applications seamlessly.

GNUstep is not here to appeal to a bunch of developers stuck in the 80's... It's here to provide the best cross platform development environment we know how to make.

Our main issue is PR. We don't market ourselves in a way which reaches the audience we need to reach and that is something we are starting to change.

GC

Carl Gaignage said...

Hi guys
It may interest you that a layman as myself only heard about GNUsteps by a posting (9to5mac, marcrumors, ...) about Sony using it to develop an iOS-like envoirement.

Not being a developer myself its hard to judge the usefullness of any cross-platform solution. Having switched to "mac" some 5 years ago i left behind the cumbursome use of "windo$e" without ever looking back.

Systems like BSD have always attracted me as a "free" alternative to win/mac, but never seemed to have the right apps to make the jump. Such could be overcome with a robust an user friendly cross-platform development envoirment (my guts telle me).

In the like it or not section : graphical interfaces have become important to users and win95 etc. does look outdated and unattractive.

IF GNUstep / GNUcocoa can position itself there, such would be nice, from what i heard Apple is working in the direction of making xcode cross-compile to win.

I the apst i have seen some nice projects halt or disappear in oblivion because of sterile discussions.

From what i read on your forum / blog it seems a bunch of very capable an resultdriven people are concerned and working on this project. Maybe time has come to take GNUsteps to the NeXtCoCoaLevel.

Kind greetings
carl

alefun10 said...

I want to add some thoughts, too. I am an end-user, hobby scripter and coder layman of the past decades, without fear of reading about and digging into OS concepts since Apple IIc, Mac system 1.0 with Inside Macintosh Vol I to III, including NeXT workstations and Interface Builder, Windows (briefly) and Visual Basic, OS X and Xcode, and also including exotic stuff like Lisa, DG/UX and their documentation. I missed Be totally, and more.

Same as Carl Gaignage, I heard about GNUstep for the first time a few days ago.

The news electrified me, and immediately I had the vision that GNUstep/Cocoa could lead to a complete replacement of OS X. The OS X "core" APIs are really essential hard stuff, and the snag are interface elements with their look-and-feel, as implemented through Cocoa/Xcode with (file) system managers, preference managers, and applications themselves. But it might be possible.

I believe there is at least one interesting cross-platform topic, which is connectivity to mobile devices. The appearance and predictable enrollment of tablets (iPad et.al.) invoked some discussions between my colleagues and me. We identified a code base for (SQL) database connections, synchronizing, and replicating to mobile devices as important for business.

Just think of hospitals, warehouses, car-parks and others who all need people to walk around and view or enter information with technically unreliable connections. Their mobile devices all need some common solution to connect/synchronize/replicate over-the-air.

Same as previous speakers, I would identify "what-to-do-next?" mainly as matter of marketing. It surely would help to actively promote the look-and-feel of new themes and cross-platform applications.

A marketing approach for a "new" GNUstep with other name and theme might also want to include really promising views/screenshots for new kinds of applications, even if they don't exist yet.

Why not use the same mechanism as all the commercially oriented enterprises do? It is about winning a race. If we want to have open-source systems all over the world, why hesitate to promote the possibilities?

Ivan Vučica said...

Although I switched to OS X, when I go back to GNU/Linux I go back to Debian. GNUstep always felt like a piece of deprecated history.

After my switch to OS X, I started playing with Cocoa and Cocoa Touch development. That got me interested in Cocotron and GNUstep. GNUstep is currently more important to non-OS X developers because it gives developmenttools to non-Apple users.

But, these tools are, compared to Apple's, horrible.
* project center doesn't have the most basic of shortcuts: build&run
* gorm doesn't let you drop a control that isn't in the palette on the window
* most controls are not easily reachable in gorm: NSSplitViewis also useless when added via custom view and changing its class (it doesn't render at all!)
* documentation is less than poor, with almost no tutorials,  and inaccessible from ProjectCentet (at least, pleasepleaseplease point the users to apple's docs!)
* openapp blindly respects the $PATH instead of also looking in the current directory, annoying the end user and developer alike

On Debian:
* GWorkspace doesn't launch with WindowMaker and doesn't close WindowMaker when "logout" is selected
* GNUstep is not presented in session list, like GNOME, KDE, Xfce and numerous tiny little window managers
* GWorkspace doesn't give easy access to a list of apps on the system; WindowMaker doesn't refresh it well. Even "twm" has well refreshed menu that matches the one under GNOME.
* no part of environmentshows a concise list of, or allows access to, even only GNUstep apps (/usr/lib/GNUstep/Applications).
* no extra themes? Come on... GNUstep just NEEDS a debian package for GNOME-looking theme
* make it easier to switch to unified-menubar look; digging in SystemPreferences.app and finding NSMenuInterfaceStyle is NOT userfriendly
* clang is medium-difficulty to install for use with GNUstep; getting it to work requires user not only to install clang, it also requires manual install of gobjc-4.3 (!!!) and editing of config.make,if the user can find it
* did I mention that end user distros NEED more attention? Create a unified "gnustep-desktop" or "etoile" package that sets up a complete environmentfor the end user! 

Ditch the NeXT dock; improve GWorkspace's dock, and stick it on top.
Ditch displaying .app extension for apps in GWorkspace.
Provide a unified "open" command similar to Apple's (but probably renamed) instead of just "openapp" for applications.

Anything else other than improving these is a compromise for the sake of nostalgics, and scares people off even at first look.

Why this list? Fixing stuff for end users and developers is a LOT more important than crap like "we're not OpenStep, we're Cocoa". You're neither, you're GNUstep and we'll love you that way too. Renaming is useless if the underlying experience still sucks for the new user. Plus I love GNUstep name and underlying idea, and anyone seeing a project 15 years old that suddenly becomes very useful, will appreciate it the same way. Don't rename from what shows a long tradition and history.

To help with this, I've yesterday began work on Zcode, hopefully a replacementfor ProjectCenter, to be used with GNUstep and Cocotron. One of ideas is that it loads .pbxproj files from .xcodeproj bundles. I'm working under GNUstep and I'm frustrated with PC and Gorm at every step. Let's see if I'll have enough will and time to make Zcode usable. I probably won't get far, but let's see how far will it could be.

(written on a phone; please excuse any spelling or formatting problems)

Larry Cable said...

Wow! ... an OpenSTEP implementation for Linux.

I spent a pretty "interesting" 2+ years at Sun between 92 and 96 implementing OpenSTEP on Solaris and defining the "specification" with NeXT Computer ...

Its pleasing to see that the idea still lives on!

lts said...

Cris,

I think the name is fine and honestly gnocoa sounds ugly.

You say your problem is PR, but you don't take advantage of your free PR, your website. It's the only equally ugly thing in Gnustep to the theme.
And it is so static it looks almost dead. Why don't you move your blog over there?

You are also guilty of neglecting end users and casual developers. Make installation easier, provide a live image (based on a popular distro) for demoing purposes and write lots and lots of useful guides.

I understand you need huge manpower to move the project forward but as said before how many will be interested if there is no use for Gnustep?

FOSS users are all at least power users, maybe with a touch of coder.
Getting people to actually use Gnustep as a desktop will result in a few of them using it to write applications and then a few of them will end up core developers

And please change that theme!

.: Winter :. said...

Both as a developer and user, I think that people are right when they suggest you to "rebrand", changing the name and theme.

In my opinion, CACAU would be a great name (like LaPingvino suggested). It means cocoa in Portuguese.

GregC said...

@Winter

I do like the name Cacao, but I wonder how close is TOO close to Cocoa. I've been doing some thinking about rebranding. I'll post again after I've spoken to the team a bit about it.

GC

teragoldonlinefsbest said...

Pretty nice post, enjoyed browsing your posts. In any case I’ll be subscribing to your feed! Here useful link:Cheap Tera Gold Tera Money

Brislor said...

You own a very interesting blog.Migraine headache Smooth and glowing skin Heartburn relief Knee pain remedies Dandruff treatment Cucumber health benefits Dry skin patches Health benefits of salt Cold sores Home remedies for hip pain Getting rid of cellulite Common digestive disorders Prevent candida yeast infection Teeth whitening Back pain remedies Garlic benefits Blackheads Managing lupus Piles remediesPiles remedies Heart attack

tylersrants said...

GNUstep is actually a free implementation of the OpenStep specification.

Uris said...

I agree with some of the posters that you need a flagship app (etoile? windowmaker?, whatever). I personally use WindowMaker and would love to see it evolve. I'm a Java developer and was looking at learning Objective-C to try to do something to WM, but all this GNUStep is not OpenStep is not WindowMaker makes everything so confusing. And the reactions make it even worse because the developers act as if they were victims of some injustice. It has been putting me off from trying to learn how to develop on GNUStep/OpenStep whatever you want to call it and I keep asking myself if it I should try looking for another window manager. I know GNUStep is not about a window manager, but at the moment, it is the only thing worth using that is out there that raises(good or bad) awareness about GNUStep.

GregC said...

I realize this is an old post, but this comment deserves a response.

Native exceptions are now supported in clang and 4.6. It's important to remember that these are *compiler* features, not features of GNUstep.