GNUstep is a set of general-purpose Objective-C libraries based on the OpenStep standard developed by NeXT. In the new version, the LanguageSetup docs were updated to better help users settings fonts for their language, especially with regard to non-Latin fonts. An improved RTF reader with better Unicode support was added. Slightly better EWMH support was also added. The Art backend now works with more versions of Freetype.
GNUstep is a free implementation of the OpenStep standard, developed by NeXT and Sun in the early 90s.
GNUstep currently function on Linux, BSD and some others Unices, and some works are done in order to function under Windows.
OpenStep (and OPENSTEP) are the main inspiration of MacOS X, and many MacOS X programs (Cocoa) could be recompiled on OPENSTEP or OpenStep system like GNUstep.
It’s true in both senses : some MacOS X programs were OpenStep programs at the beginning (like Omnigraffle for example, or Omniweb), some GNUstep programs are ported on MacOS X (GNUMail for example), and some GNUstep programs were ported from MacOS X (ToyViewer — ok it was also an OpenStep program — , MPlayer.app ..)
GNUstep is also used in others applications than desktop apps, like GNUstepWeb (http://www.gnustepweb.org), a free WebObject implementation (it’s an application engine, like J2EE), or OpenGroupware.org .
if you want infos on GNUstep, I wrote a small links page here : http://www.roard.com/docs ..
here is a screenshot of GNUstep apps : http://www.roard.com/docs/lmf1.article/shot4.png
and, don’t forget to sign the petition for freeing the lightouse apps !
http://www.petitiononline.com/laafs/petition.html
(thoses are great OpenStep applications made by Lighthouse design, which Sun bought, and never used. If Sun agree to free the sources, thoses programs could be ported on MacOS X and GNUstep)
If all the *NIX’s standardised on OpenStep the net result would be better compatibility with MacOS meaning application porting would be made alot easier.
One wouldn’t necessarily have to implement the whole desktop, but if the whole API set is implemented life would be made very easy.
I know that Fresco uses libArt for rendering. I’m wondering if it would be possible (Just hear me out here…) to use the art backend through Fresco, bypassic X11 entirely. Now, before you start asking “Why bother replacing X?”, I’m only interested in this because the thought popped into my head. I guess my real questions are:
1) Is the art backend fully libart-based, using no X11 code;
2) If the anwer to #1 is yes, is it possible, strictly as a technical challenge, to use Fresco’s art support to bypass X11 entirely.
Mail.app in OS X came from OPENSTEP/Rhapsody, not GNUstep…
The art backend itself depends a bit on X11, but it could be easily used for others display. In fact, alex did some experimentations with that idea (rendering on OpenGL surface). So technically it’s possible, but nobody had the time to do it for the moment.
I should add that the most likely test will be using DirectFB, not Fresco, because Fresco isn’t a rendering engine, it’s a full X11 replacement : they implement their own set of widgets.
GNUstep uses its own set of widgets. Theorically, it could be possible to design a GNUstep backend which will use an external toolkit, but frankly, as things are designed now, it’s very unlikely that someone will do that, because it will be a quite amount of work (wich will be better used if invested elsewhere :-).
Mail.app in OS X came from OPENSTEP/Rhapsody, not GNUstep…
Hm, I wasn’t speaking about Mail.app, wich, like TextEdit, InterfaceBuilder or ProjectBuilder, come from NeXT, but I was speaking about GNUMail : http://www.collaboration-world.com/gnumail .
Well then, do you think it is possible to port libArt to DirectFB, thus making it comparatively easy to modify the art backend, replacing the (few?) X11 calls with libArt or even DirectFB?
no need to port libArt to DirectFB … alex did an experimentation with something called “RDS” which will function with any display capable of providing a memory zone for drawing. Doing a DirectFB backend with RDS would be quite easy. But as I said, nobody did it for the moment. If somebody is interested to do it and knows DirectFB, it will be interesting
Well, I’m not the greatest coder in the world (FAR from it!), but I’d be willing to take a look. Not promising anything, but if you could provide links to the relative info, maybe I, or someone else, could do something with it. I’m sure there must be at least one good coder interested in something like this.
I misunderstood: you saying some GNUstep programs are ported on MacOS X sounded like you were saying that GNUMail was ported and became Mail.app — sorry
No trolling here, but a real question : what is the point of all this NextStep framework re-implementation on linux ? I mean, graphically, it is well behind other WM/desktop manager, new object oriented framework like QT/KDE or gtkmm exist since then, etc…
Is cross developpement between Mac OS X and GNUStep the point ? Or I missed something ?
I used to use windowmaker, which is rather fast, and has enough capabilities for me ( even if I replaced it recently with xfce4 ), but it wasn’t a huge event for me; I mean, well, there are docks, that kind of things, but, all functionalities of window maker are present in all decent WM under linux, and under windows/amc for years.
What is the GNUStep community aiming ?
I mean, graphically, it is well behind other WM/desktop manager, new object oriented framework like QT/KDE or gtkmm exist since then, etc…
Eh? IMO, NeXT (and its clones) are still much more aesthetically pleasing than anything I’ve seen from GNOME or KDE.
What is the GNUStep community aiming ?
The point is to have (more or less) compatible libraries between OS X and GNUStep, i.e. you can port your OS X program to GNUStep (or more likely the other way around). I haven’t been keeping up with the GS stuff enough to know if they are *specifically* striving for OS X compatibility, I’ve always thought they were aiming more for OPENSTEP 4.2-alike abilities, which is no small feat in itself. GNUStep is missing a lot of the classes that were introduced with OS X, but that is probably less than 10% of all the classes. (though more new stuff with the release of 10.3, like WebCore and JavaScriptCore, which could actually be ported to GNUStep relatively easily – more so than what the yellowTAB guys had to do for sure)
Porting anything like webcore will be impossible untill the FSF version of gcc supports objective-c++. Objective-c++ is a merging of sorts of objective-c and c++ and allows for the use of c++ code in objective-c programs. Without it, you cant use c++ code without painfull wrappers and such which would make porting a nightmare.
Even tho NeXT’s and then Apple’s gcc support objective-c++ and have for a while, the FSF refuses to accept that code as it is now. I’m thinking after 3.4 is released with their new parser this might change. but it’s been a looooooong time waiting….
Just a question. What is the difference between GNUStep and WindowMaker? They both look the same. I’m currently using windowmaker, but is there any advantage, disadvantage to using it over GNUStep?
Completely different beasts. Windowmaker is a windowmanager, gnustep is a set of apis with which you can develop application, like GNUMail.
Apple’s Objective-C++ is a problem in porting from Cocoa. It’s hard not to use it on OSX (compared to plain C/Objective-C it’s more powerful and much, much easier) but then you have another porting problem with everything else.
Why hasn’t the FSF accepted Apple’s patches? Please don’t tell me they’re offended because Apple’s license isn’t holy and pure enough, or some such idiocy. I haven’t tried, but I’ve heard that Apple’s gcc sources won’t build x86 code generators – insanity on their part if true, but it fits with their suicidal OSX-only policy for Cocoa.
Something needs to happen here: I much prefer writing Cocoa to .NET, but I’d switch today if a reasonably good crossplatform version of .NET appeared. Ditto an affordable Qt, etc. Cocoa (and Objective-C with it) is great technology but some of us have families to feed.
Another alternative would be to get MetroWerks to support Objective-C++ on x86. Their compiler/linker is vastly superior to gcc in pretty much every way but cost (and their IDE makes the price back very quickly unless your time is free.) Right now you can Enable Objective-C on x86 but it doesn’t work.
“Why hasn’t the FSF accepted Apple’s patches? Please don’t tell me they’re offended because Apple’s license isn’t holy and pure enough, or some such idiocy.”
It may at first seem stupid to people without a clue, but you have to remember that the primary focus of the Free Software Foundation is not to produce the most featureful code, but to produce *free* code. One does not imply the other, and many folks seem to forget this fact.
As freedom is their primary goal when they write software, they have to be *very* careful about any code they import. It has nothing to do with “holiness and purity”.
And for the record (and for the sake of clarity) I am by no means saying nor implying that the FSF’s code is lacking functionality or is inferior to anything else.
I mean, graphically, it is well behind other WM/desktop manager, new object oriented framework like QT/KDE or gtkmm exist since then,
GNUstep is a programming API, not a desktop per se.
The look isn’t the most important thing; ergonomy and respect of guideline are more interesting for an user. Imho, the NeXT look is good anyway — very clean, no bloat. And from a programmer point a view, what’s important isn’t the look, but the API consistency and the possibilities of that API. And the OpenStep API is one of the most well done object-oriented API. It’s really powerful, and very easy to program with. The programming tools like Gorm are really powerful, and Objective-C is a really good OO language.
So what’s the point of GNUstep ? well :
– the API are better designed and are fully documented : it’s a standard, they won’t change each six months
– Objective-C is a more enjoyable OO language than most (because of its dynamism : you could add at runtime new classes, new methods, do forwarding, distributed objects, all that extremely easily), while remaining simple and easy to understand.
– One of the aim of GNUstep is to be crossplatform
– a gnustep-based desktop won’t be at all a Windows desktop clone : many things are really interesting and original for an user, like the use of services : applications could tell the system and the others apps that they provide one or more services, and thoses services are applicables on the pasteboard content (so it’s very easy for an user to use them). For example, there is a service from GNUMail to create a mail : you simply select some text, then go to the services menu item (available in all gnustep apps), and select “create new mail” and gnumail will be called and a new mail window will appears, with the text inside. You have also a service to a speech synthetiser, just select the text you want to hear and voila … It works for selected texts, but you could do services for any pasteboard content (images, etc.). It’s a really simple and useful way to do applications cooperations.
The services are just an example, but you could see that many things in GNUstep are original and interesting. It’s not at all a clone of Windows, nor a clone of MacOS X (which dropped some interesting features of NeXTSTEP).
– eventually, you could port MacOSX softwares to GNUstep and vice-versa.
Yes, we need Objective-C++ to port easily things like WebCore. The FSF didn’t accepted the patches because they were in the process of entirely redoing the C++ parser of gcc at that moment.
Last news, Stan Shebs and others of Apple started to add some improvements to the Objective-C support of gcc, and they would like to submit Objective-C++ for gcc 3.4 if that’s not a too important patch (as gcc 3.4 is already in stage 2).
Stan Shebs seemed quite optimist about it. So with luck we’ll see Objective-C++ support in gcc 3.4 …
We need a GNUstep webbrowser, that’s it.
When we’re past that barrier, more users will come, wich leads to more developers, wich makes better software, wich attracts new users, wich in turn attracts more developers, better software, more users, more developers, better software, users, developers, software…
Redundant I know, but we must stress this fact, most of the time when a non-programmer brings up this topic, some developer responds with “make one yourself”.
Sometimes, instead of “scratching an itch”, you have to make sacrifices and develop something you don’t have much personal interest in, in order for the project to become successful.
I’m not a programmer, and probably never will be, I’ve made several attempts to teach myself in order to contribute, but I can’t seem to avoid boring myself to sleep.
although I’ll gladly make contributions in the form of art (icons, logos, splash screens, general ui design etc), ideas and so on.
But I’d be alot more confortable donating my time if I knew the project had a good chance of gaining widespread use.
A webbrowser is sort of the missing piece of a minimal desktop environment, and a desktop environment is what will attract the users.
(a true gnustep dock and windowmanager is already in the works)
“GNUstep is a programming API, not a desktop per se.
The look isn’t the most important thing; ergonomy and respect of guideline are more interesting for an user. Imho, the NeXT look is good anyway — very clean, no bloat.”
Ok, look is a matter of taste. I personnally dropped wmaker after having seen that it is a lot easier to have AA fonts in the menu in desktop managers like XFCE ( I hate gnome and KDE, I *personnally* find that there are too many functionnalities, for too many bugs, and I don’t care about office and co ). But if it is improving, I would easily go back to wmaker and GNUStep “environnement”.
But in 91-92, OO framework were not common, which is really not the case now. QT is a good framework, and is more than a GUI toolkit, Cocoa seems good, .NET, too ( but I have never programmed with the last two ones, so I cannot really discuss about them ). BeOS framework was really good, too. What does GNUStep have to offer vs these frameworks ?
I also *personnally* don’t really see the point to objective C : Ok, C++ is far away from a good OO language, but anyway, C sucks as a language, so is the case of any derivative languages, and ADA95 or EIFFEL are a lot better in my opinion; EIFFEL solved the dynamic binding probleme I see in every article about objective-C.
It brings to me a lot of problems, as objective C is less common than C++. If I want to change to a more “exotic” language than C or C++, I would take a really new one, as EIFFEL, ADA95, or even a functionnal OO language, like O CAML. But it is still a matter of taste.
Ok, look is a matter of taste.
Yes. And anyway, you could change the GNUstep look with themes (however, that’s work-in-progress).
But in 91-92, OO framework were not common, which is really not the case now. QT is a good framework, and is more than a GUI toolkit, Cocoa seems good, .NET, too ( but I have never programmed with the last two ones, so I cannot really discuss about them ). BeOS framework was really good, too. What does GNUStep have to offer vs these frameworks ?
Well, Cocoa is also an OpenStep implementation, like GNUstep. They are very similar. Apple added new classes though, but GNUstep implement thoses (if they are accepted as good things ;-), that’s why it’s easy to port apps between Cocoa and GNUstep. I even often use Apple documentations when I program GNUstep …
The OpenStep framework is a fantastic one. I don’t know .NET, but before using GNUstep, my toolkit of choice was Qt — a truely great toolkit — and I liked BeOS framework too. But imho, OpenStep is even better designed. Design Patterns are used everywhere
(remember the Gang of Four book, they cited NeXTSTEP as example of Design Patterns). And the objects are truely “objects” in an OO sense, they are small entities running, you really send them messages, not simply do some function call. An object could receive any messages, it’s up to it to do something with the message, or not. The object could for example forward to others objects an unknown message, etc.
Remember the Qt’s paradigm, slot/action ? they used moc (a preprocessor) to add slots and actions to standard C++ objects. Well, in Objective-C, it’s simply the normal way of using them
so OpenStep was of course designed with an action paradigm too. etc., etc.
To be short : OpenStep (Cocoa or GNUstep) is the most well designed OO framework I have ever encountered. The designers of OpenStep were really good
Ah, so what’s the advantage in comparison of others OO frameworks ? well, you could program way faster using OpenStep and programming tools like InterfaceBuilder or Gorm.
I also *personnally* don’t really see the point to objective C : Ok, C++ is far away from a good OO language, but anyway, C sucks as a language, so is the case of any derivative languages, and ADA95 or EIFFEL are a lot better in my opinion; EIFFEL solved the dynamic binding probleme I see in every article about objective-C.
Well, we agree that C++ isn’t a really good OO language (in fact, C++ is a “do everything” language, with multiple paradigms — some interesting features, but imho very complex and not very OO in nature). About C, well, one good thing was that it was a simple language : it’s easy to understand exactly what’s done. Well, Objective-C is C plus just few additions in order to have OO. It keeps the simplicity of C, while removing many hurdles (memory handling, etc.) and be a true OO language. It’s also quite fast. Imho, it’s a good balance between flexibility, OO and fast development. And the use of a runtime add incredible flexibility.
Ada95 is a fabulous language, but it’s not dynamic like Objective-C. And it’s quite complex language. But for a complex piece of software, and one which should be robust, it’s a no-thinking choice, Ada is the best. I like it
I don’t know well Eiffel, but I heard good things about it. But that’s all, so I won’t comment
There isn’t a perfect language… it’s a matter of target. Use the right tool for the job. And Objective-C + OpenStep is the best solution, hands down, for programming GUI applications. And some others things are great too (distributed objects, etc.). Objective-C, due to the intelligent use of a runtime and the possibility of modify on fly things, a bit of introspection too, is really good.
But, anyway, the most complex thing isn’t to learn a new language : You could learn entirely Objective-C in a day (really) ! what’s longer, is to understand and learn OpenStep
and that’s always the same thing, whatever framework you will use (java, .NET, etc.)