25 years ago I was excited to learn that the Quake editor (and Doom before that) was written on NeXT. I figured with my rudimentary Linux and C skills I could get it working, but of course it was a little harder than installing everything and running make
From JohnC:
"This is a NEXTSTEP application, so hardly anyone is going to be able to use the code as is. This is not an OPENSTEP application. It doesn't even use the foundation kit, so porting to gnustep or openstep-solaris/mach/nt would not be trivial."
"This application was really not a very good fit for NEXTSTEP. The display postscript model fundamentally doesn't fit very well with what we need here -- if you run in an 8 bit color mode, the line drawing runs at an ok speed, but the texture view goes half the speed it should as it dithers from 24 bit color down to 8 bit. If you run in 24 bit color mode, you get less screen real estate and significantly slower line drawing as a 3 megabyte XY view is flushed. Sigh. If anyone does actually run this on NEXTSTEP be advised that you want a fast machine."
"QuakeEd is written for NEXTSTEP 3.3, while GnuStep is an implementation of the OPENSTEP spec. I haven't had time to port it to openstep yet, but it looks like it will take a little effort. NeXT has tools in NS 4.0 to help, but it still isn't automatic."
It is not an Apple emulator—it is an OPENstep emulator and so it implements the amazing Cocoa API and many mac/iOS frameworks can be used server side with minimal porting.
This makes it easy for what I intend to keep as a one person project forever or as long as Apple continues to support Objective-C.
You want to know an unpopular opinion?? I love Objective-C and I think it is better—way better than Swift. And—if you have discipline, the preprocessor is excellent.
So while many might say GNUstep is buggy, it is working for several of us—and happily so.
I do agree that the homepage is terrible and that what should be done is put some installer scripts so you can start using it immediately. An Ubuntu installation following the corresponding script here is foolproof: https://github.com/plaurent/gnustep-build
Well, for one thing it's not an emulator... AT ALL. And for another thing the idea behind GNUstep since about 2000 has been to implement Cocoa. I do appreciate your enthusiasm. :)
> You want to know an unpopular opinion?? I love Objective-C and I think it is better—way better than Swift. And—if you have discipline, the preprocessor is excellent.
Very curious to the reasoning here. If you can get to the pointer level of Swift, you basically have obj-c without all the unnecessary syntax?
In my view, excessive syntax is a crutch to make the language parser's job easier, not making the thought to code job easier. Obj-C seems to suffer from the excessive syntax?
It was nice endevour to port NeXTSTEP development stack.
Nowadays with it being several releases behind macOS tooling, and the whole issue of what from Objective-C v-latest is actually supported, it is more of a curiosity and nostalgic experience.
Since roughly 2004 (that's when I first learned about Mac OS X, NeXT, and GNUstep as a high school student), I've been periodically keeping track of the state of GNUstep since I believe there's value in having a FOSS alternative to macOS and its technology. GNUstep could have been the primary GUI development toolkit for the Linux desktop. Unfortunately, GNUstep never caught lightning in the way other FOSS desktop projects did, and I attribute this to bad timing.
My understanding is that when the KDE project started in 1996, GNUstep wasn't ready yet (remember that the OpenStep specification that the original GNUstep was based on was released in 1994), and GTK+ was not separate from GIMP. My understanding is that options for FOSS GUI toolkits were sparse in 1996. What did not help GNUstep's case in 1996 was the fact that NeXT appeared to be dying; nobody in early 1996 would have guessed the outcome of NeXT. Thus, the creator of KDE decided on Qt, which had licensing terms that were not-quite FOSS. This caused consternation among some people in the FOSS community, which lead to the founding of the GNOME desktop. GNOME ended up adopting the now-separated-from-GIMP GTK+ toolkit around 1998. Meanwhile work continued on GNUstep, but by the time 2000 rolled around much of the Linux desktop community rallied behind KDE and GNOME.
Ever since Mac OS X was released, every now and then somebody with Mac OS X and Cocoa experience would look at GNUstep and say, "Wow! I saw what Apple could achieve with NeXT technology; what if we used GNUstep to build something similar for Linux?!" and then get started on a project, only for that person or team to lose momentum and eventually give up. One such promising project that is now dead is Étoilé (http://etoileos.com), which was based on GNUstep and inspired by Mac OS X, yet had ideas of its own, such as versioned objects and support for a dialect of Smalltalk called Pragmatic Smalltalk that leveraged GNUstep's Objective-C APIs. Étoilé would have been a fresh, new Linux desktop experience that would have brought us closer to the dream of a modern "Smalltalk operating system," but unfortunately that project lost momentum, like so many open source projects that don't have corporate backing or massive community support.
There is a really interesting project called helloSystem (https://hellosystem.github.io/docs/) that is a fork of FreeBSD that aims to re-create the Mac OS X Tiger user experience and conventions. However, this project is built on the Qt toolkit instead of GNUstep.
Will GNUstep ever gain momentum? I don't know; on one hand there is a vocal minority of long-time macOS users who are disappointed with Apple's software direction and would like to have an alternative to macOS that involves the least amount of friction as possible. However, different macOS users like macOS for different reasons. For those who like macOS due to its user interface guidelines and consistency, helloSystem may look promising to them, especially if it gains traction. For those who like macOS due to its object-oriented APIs, they may be interested in taking a look at the .NET ecosystem and the languages it supports.
Personally, I'm dreaming of a Common Lisp desktop heavily influenced by Smalltalk, the Mac, and OpenDoc (Apple's commercially unsuccessful component-based software technology). I remember coming to the realization a few years ago that NEXTSTEP is essentially a pragmatic Smalltalk desktop environment, except instead of running a Smalltalk VM it ran Objective-C and Display PostScript on top of Unix. I'm thinking, why not go all the way with a programmable object-oriented environment and build a desktop environment from the Common Lisp Object System and its meta-programming facilities. It would have a standard set of UI guidelines for user-facing applications, but for power users, because everything is an object, it is possible to combine objects using scripts. If only I had more free time....this would be the ultimate realization of a desktop environment for power users based on taking Xerox PARC's technology to its limits.
Yeah this was a really interesting project when it got started, like in the late 90s ? Now, realistically, even though I like the idea, who is going to use this ?
Maybe like a compatibility setup for old NeXTStep applications ? Or porting some old macOS applications to Linux environments ?
Working on top of the X11 implementation also doesn't really provoke trust to look into the project.
It is even more of a shame, since Etoile was the project to bring frontend WM and library synchronicity to Linux / macOS (then OS X). But it died and hasn’t been updated in ages, as the last great hurrah in that effort.
Which of course it doesn't have to be, but the current developers are very hostile to changing anything about the UI, which of course no one today really wants. Providing the old UI as theme for those who want it is fine, but not updating it to something modern and useful is not.
I really wanted to contribute and help out with GNUstep, but that put me off from attempting anything.
NeXTSTEP? That's how it started, but not where it currently is. GNUstep is currently pushing for 10.15 compatibility at least. GNUstep supports the current release of clang which is fully ObjC2 compliant. GCC is also still supported. There is also a tool called buildtool and a library which can read and build xcodeproj files fairly seamlessly.
The last time I evaluated a small, supposedly cross-platform framework which uses GNUstep for macOS, I quickly realized there’s no obvious or even documented way to install the development libraries on macOS: there’s no Homebrew formula, a broken MacPorts port that was last updated ages ago (I’m not sure if it includes the development libraries or just a desktop suite), and some ancient, partial instructions on the wiki. I guess the only way to install it is to grab the source and try to get it to build, but everything about it screams “don’t use”.
As an Apple dev since ‘86, I’ve used (in order of appearance):
MPW
THINK Pascal
THINK C
CodeWarrior
Xcode
I never warmed to other IDEs (like AppCode), but find IDEs to be more productive (for me) than CLI tools. Yeah, I know some fairly awesome CLI people, but that has never been the case for me.
I write in native Swift, so it’s really important that what I use be right on the “cutting edge.”
Right now, that’s Xcode.
Xcode is a bug farm. It’s also frikkin’ huge. I have to sometimes force-restart when the code parser goes walkabout.
But it does give me what I need. I’d certainly be open to viable alternatives, but nothing has come up that has enticed me.
For a while, GNUSTEP Live CD was the best option to try and test GNUstep. Latest version is even available for Raspberry Pi: http://www.aiei.ch/gnustep/
I remember GNUstep since the 90s. It existed even before Gnome. It had a (for the time) pretty home page, but very little information and very little outward progress. What happened behind the scenes I have no idea about.
I remember seeing GNUstep on Linux distributions 20 years ago, along with early KDE and other options. I appreciated the aesthetics of it at the time, but - can someone explain its benefits today, and why one would prefer using it?
Actually, I'm not even clear what I would replace with GNUstep, exactly.
GNUStep is not a desktop. Try NextSpace (see above) if you want a GNUStep based desktop. NextSpace is a clone of NextStep desktop.
Like its ancestor, NextSpace is fast, light and very consistent. I like the vertical menus that I can move were I need them, the dock in the file manager, the file manager itself, … It is an advanced desktop that hide the difficulties: you don't need to learn, it is logical. It is like macOS, without targeting beginners.
I am a long time KDE user, I know how it works, it is my desktop of choice. But there is still some glitches, and it is a different user experience than NextSpace.
A few of us maintain scripts for building the latest GNUstep from source under Linux (desktop, PinePhone, and Raspberry Pi) here: https://github.com/plaurent/gnustep-build
"The GNUstep project does not provide a window manager; you can use any window manager you want, although we recommend that you use WindowMaker for a better experience." http://gnustep.org/information/aboutGNUstep.html :)
GNUstep is really a framework and closer to something like Gtk+ or Qt. Window Maker is a window manager, it has its own GUI toolkit (WINGs) but it is really only meant for use with Window Maker and perhaps some dockapps (though some dockapps use other toolkits anyway).
It doesn't. They're different types of tools. GNUstep commonly runs under and uses Window Maker.
Window Maker is a window manager.
GNUstep is a large set of libraries and foundation classes, and almost as a byproduct, they happen to implemented most of a desktop environment: a file manager and actual desktop, a dock, plain and rich text editors, a pretty good email client, a chat client, a terminal emulator, image viewer, etc. etc.
But like any other xNix desktop, it needs a window manager. KDE uses kwm, GNOME uses mutter, Xfce uses xfwm, LXDE uses OpenBox, etc. GNUstep can use whatever you want, but Window Maker is the recommended choice because it matches the look-and-feel nicely.
- First and foremost, it's not Pascal, but the more elegant Objective-C.
- You can in theory compile sources for NeXT/OpenSTEP or early OS X applications with minimal changes[1], while FPC would require you to rewrite them completely.
- Different GUI components, inspired/based on the *STEP design.
Realistically, I guess you're better off using Lazarus for anything new, nowadays.
> GNUstep uses the same langauge and API as Cocoa on Mac OS X.
That small nitpick aside, that seems like and interesting project! I don't think i have seen many (if any) other attempts at creating a set of portable tools like that, entire workspaces that can work over a variety of OSes, unless i'm reading this wrong. Sure, we have portable editors and so on, but this seems like a step well above that.
It looks like it's straight out of 1995. Ultra dark gray and ugly aesthetics, despite what some people say, will not attract developers or users. This seems to be a meme, Linux desktops and apps with zero thought given to UX and UI. In some cases it almost seems like the approach of "how can we make this as cluttered, messy, and ugly as possible" to look at.
1995 GUIs have far more usability left in them them modern UIs. Just the fact that MS thought it's acceptable to dumb down the right click menu (!), aka the most prominent symbol of a power user, is telling.
We need to step back to 1990s/early 2000s, steal a few modern UI innovations that make sense while retreating, and take a long and hard look at the kind of GUIs we want to see built around ourselves.
Yes, I'm no fan of the modern Metro UI either (Settings is the worse offender) but I personally believe Explorer in Win10 is peak windows design. Minimalist but with vibrant colorful icons, neatly organized but still information dense and no abuse of whitespace. It's a shame the entire Windows UI can't be based around it.
GNUstep is a framework (and some applications that use that framework), it is closer to Gtk+ and Qt than to KDE or GNOME. Most importantly it does not provide any window manager and instead rely on an existing one (you can use it with KWin/KDE, Mutter/Gnome, XFWM/XFCE or any other window manager).
Window Maker is a window manager with a NeXTSTEP/OpenStep style, though it has nothing to do with GNUstep aside from looking very similar and thus being a good choice for when using GNUstep programs with the classic NeXTSTEP/OpenStep theme.
He wouldn't react at all: GNUstep was already an established project before his death, so he already had an opportunity to react and, unsurprisingly, he didn't care much.
[+] [-] bluedino|4 years ago|reply
From JohnC:
"This is a NEXTSTEP application, so hardly anyone is going to be able to use the code as is. This is not an OPENSTEP application. It doesn't even use the foundation kit, so porting to gnustep or openstep-solaris/mach/nt would not be trivial."
"This application was really not a very good fit for NEXTSTEP. The display postscript model fundamentally doesn't fit very well with what we need here -- if you run in an 8 bit color mode, the line drawing runs at an ok speed, but the texture view goes half the speed it should as it dithers from 24 bit color down to 8 bit. If you run in 24 bit color mode, you get less screen real estate and significantly slower line drawing as a 3 megabyte XY view is flushed. Sigh. If anyone does actually run this on NEXTSTEP be advised that you want a fast machine."
"QuakeEd is written for NEXTSTEP 3.3, while GnuStep is an implementation of the OPENSTEP spec. I haven't had time to port it to openstep yet, but it looks like it will take a little effort. NeXT has tools in NS 4.0 to help, but it still isn't automatic."
[+] [-] unixhero|4 years ago|reply
Just saying, greatly enjoyed it.
[+] [-] lizknope|4 years ago|reply
NeXTSTEP ran on m68, x86, SPARC, and PA-RISC. Then it was ported to PowerPC and renamed.
https://wiki.c2.com/?NextStep
[+] [-] mucholove|4 years ago|reply
It is not an Apple emulator—it is an OPENstep emulator and so it implements the amazing Cocoa API and many mac/iOS frameworks can be used server side with minimal porting.
This makes it easy for what I intend to keep as a one person project forever or as long as Apple continues to support Objective-C.
You want to know an unpopular opinion?? I love Objective-C and I think it is better—way better than Swift. And—if you have discipline, the preprocessor is excellent.
So while many might say GNUstep is buggy, it is working for several of us—and happily so.
I do agree that the homepage is terrible and that what should be done is put some installer scripts so you can start using it immediately. An Ubuntu installation following the corresponding script here is foolproof: https://github.com/plaurent/gnustep-build
Check it out!!
[+] [-] gcasa|4 years ago|reply
Greg C. GNUstep Maintainer
[+] [-] anonymouse008|4 years ago|reply
Very curious to the reasoning here. If you can get to the pointer level of Swift, you basically have obj-c without all the unnecessary syntax?
In my view, excessive syntax is a crutch to make the language parser's job easier, not making the thought to code job easier. Obj-C seems to suffer from the excessive syntax?
[+] [-] apple4ever|4 years ago|reply
You are not the only one. This is exactly how I feel.
But GNUstep is ... not great. I want it to be! But it needs a lot of work on the interface side.
[+] [-] pjmlp|4 years ago|reply
Nowadays with it being several releases behind macOS tooling, and the whole issue of what from Objective-C v-latest is actually supported, it is more of a curiosity and nostalgic experience.
[+] [-] linguae|4 years ago|reply
My understanding is that when the KDE project started in 1996, GNUstep wasn't ready yet (remember that the OpenStep specification that the original GNUstep was based on was released in 1994), and GTK+ was not separate from GIMP. My understanding is that options for FOSS GUI toolkits were sparse in 1996. What did not help GNUstep's case in 1996 was the fact that NeXT appeared to be dying; nobody in early 1996 would have guessed the outcome of NeXT. Thus, the creator of KDE decided on Qt, which had licensing terms that were not-quite FOSS. This caused consternation among some people in the FOSS community, which lead to the founding of the GNOME desktop. GNOME ended up adopting the now-separated-from-GIMP GTK+ toolkit around 1998. Meanwhile work continued on GNUstep, but by the time 2000 rolled around much of the Linux desktop community rallied behind KDE and GNOME.
Ever since Mac OS X was released, every now and then somebody with Mac OS X and Cocoa experience would look at GNUstep and say, "Wow! I saw what Apple could achieve with NeXT technology; what if we used GNUstep to build something similar for Linux?!" and then get started on a project, only for that person or team to lose momentum and eventually give up. One such promising project that is now dead is Étoilé (http://etoileos.com), which was based on GNUstep and inspired by Mac OS X, yet had ideas of its own, such as versioned objects and support for a dialect of Smalltalk called Pragmatic Smalltalk that leveraged GNUstep's Objective-C APIs. Étoilé would have been a fresh, new Linux desktop experience that would have brought us closer to the dream of a modern "Smalltalk operating system," but unfortunately that project lost momentum, like so many open source projects that don't have corporate backing or massive community support.
There is a really interesting project called helloSystem (https://hellosystem.github.io/docs/) that is a fork of FreeBSD that aims to re-create the Mac OS X Tiger user experience and conventions. However, this project is built on the Qt toolkit instead of GNUstep.
Will GNUstep ever gain momentum? I don't know; on one hand there is a vocal minority of long-time macOS users who are disappointed with Apple's software direction and would like to have an alternative to macOS that involves the least amount of friction as possible. However, different macOS users like macOS for different reasons. For those who like macOS due to its user interface guidelines and consistency, helloSystem may look promising to them, especially if it gains traction. For those who like macOS due to its object-oriented APIs, they may be interested in taking a look at the .NET ecosystem and the languages it supports.
Personally, I'm dreaming of a Common Lisp desktop heavily influenced by Smalltalk, the Mac, and OpenDoc (Apple's commercially unsuccessful component-based software technology). I remember coming to the realization a few years ago that NEXTSTEP is essentially a pragmatic Smalltalk desktop environment, except instead of running a Smalltalk VM it ran Objective-C and Display PostScript on top of Unix. I'm thinking, why not go all the way with a programmable object-oriented environment and build a desktop environment from the Common Lisp Object System and its meta-programming facilities. It would have a standard set of UI guidelines for user-facing applications, but for power users, because everything is an object, it is possible to combine objects using scripts. If only I had more free time....this would be the ultimate realization of a desktop environment for power users based on taking Xerox PARC's technology to its limits.
[+] [-] inDigiNeous|4 years ago|reply
Maybe like a compatibility setup for old NeXTStep applications ? Or porting some old macOS applications to Linux environments ?
Working on top of the X11 implementation also doesn't really provoke trust to look into the project.
[+] [-] deaddodo|4 years ago|reply
[+] [-] apple4ever|4 years ago|reply
I really wanted to contribute and help out with GNUstep, but that put me off from attempting anything.
[+] [-] gcasa|4 years ago|reply
[+] [-] oefrha|4 years ago|reply
[+] [-] ChrisMarshallNY|4 years ago|reply
I write in native Swift, so it’s really important that what I use be right on the “cutting edge.”
Right now, that’s Xcode.
Xcode is a bug farm. It’s also frikkin’ huge. I have to sometimes force-restart when the code parser goes walkabout.
But it does give me what I need. I’d certainly be open to viable alternatives, but nothing has come up that has enticed me.
[+] [-] ternaryoperator|4 years ago|reply
Have a look at JetBrains CLion with the Swift plugin. It has served me well.
[+] [-] shrubble|4 years ago|reply
See: github.com/trunkmaster/nextspace
I have used it in a VM under Windows and it was pretty nice.
It felt very NeXT-ish.
Of course you could install and run regular X windows programs as well.
[+] [-] naves|4 years ago|reply
[+] [-] shp0ngle|4 years ago|reply
I say really 3 times, because I really tried to port a MacOS-only terminal app (don't ask) to Linux, and I failed miserably on very basic functions.
I guess I should have tried more, make minimal examples and report that, but I never bothered. It's what I would do now, anyway.
[+] [-] mongol|4 years ago|reply
[+] [-] gcasa|4 years ago|reply
[+] [-] zwaps|4 years ago|reply
Well personally, I gotta say, I dig the 1995 optics of this.
[+] [-] gcasa|4 years ago|reply
Yeah, I know, right? ;) </sarcasm> It is fully capable of looking like macosx using any number of themes.
Gregory Casamento -- GNUstep Lead
[+] [-] einpoklum|4 years ago|reply
Actually, I'm not even clear what I would replace with GNUstep, exactly.
[+] [-] touggourt|4 years ago|reply
Like its ancestor, NextSpace is fast, light and very consistent. I like the vertical menus that I can move were I need them, the dock in the file manager, the file manager itself, … It is an advanced desktop that hide the difficulties: you don't need to learn, it is logical. It is like macOS, without targeting beginners. I am a long time KDE user, I know how it works, it is my desktop of choice. But there is still some glitches, and it is a different user experience than NextSpace.
[+] [-] rbanffy|4 years ago|reply
Apart from that, it's mostly for historical interest.
[+] [-] pakl|4 years ago|reply
[+] [-] apple4ever|4 years ago|reply
[+] [-] manbart|4 years ago|reply
[+] [-] Lammy|4 years ago|reply
[+] [-] badsectoracula|4 years ago|reply
[+] [-] HerrMonnezza|4 years ago|reply
GNUStep is an attempt at creating a Free/Libre NeXTStep-like environment, including all the apps.
[+] [-] lproven|4 years ago|reply
Window Maker is a window manager.
GNUstep is a large set of libraries and foundation classes, and almost as a byproduct, they happen to implemented most of a desktop environment: a file manager and actual desktop, a dock, plain and rich text editors, a pretty good email client, a chat client, a terminal emulator, image viewer, etc. etc.
But like any other xNix desktop, it needs a window manager. KDE uses kwm, GNOME uses mutter, Xfce uses xfwm, LXDE uses OpenBox, etc. GNUstep can use whatever you want, but Window Maker is the recommended choice because it matches the look-and-feel nicely.
[+] [-] xyproto|4 years ago|reply
[+] [-] gattilorenz|4 years ago|reply
- You can in theory compile sources for NeXT/OpenSTEP or early OS X applications with minimal changes[1], while FPC would require you to rewrite them completely.
- Different GUI components, inspired/based on the *STEP design.
Realistically, I guess you're better off using Lazarus for anything new, nowadays.
[1] The original DOOM editor was developed for NeXT machines, and the sources surfaced a few years ago. Here it is running under Ubuntu with Window Maker and GNUStep: https://www.doomworld.com/forum/topic/111229-redoomed-maclin...
[+] [-] KronisLV|4 years ago|reply
> GNUstep uses the same langauge and API as Cocoa on Mac OS X.
That small nitpick aside, that seems like and interesting project! I don't think i have seen many (if any) other attempts at creating a set of portable tools like that, entire workspaces that can work over a variety of OSes, unless i'm reading this wrong. Sure, we have portable editors and so on, but this seems like a step well above that.
[+] [-] jksmith|4 years ago|reply
[+] [-] mhoad|4 years ago|reply
[1] https://flutter.dev/
[+] [-] lloydatkinson|4 years ago|reply
[+] [-] selfhoster11|4 years ago|reply
We need to step back to 1990s/early 2000s, steal a few modern UI innovations that make sense while retreating, and take a long and hard look at the kind of GUIs we want to see built around ourselves.
[+] [-] udbhavs|4 years ago|reply
[+] [-] pulse7|4 years ago|reply
[+] [-] major505|4 years ago|reply
[+] [-] badsectoracula|4 years ago|reply
Window Maker is a window manager with a NeXTSTEP/OpenStep style, though it has nothing to do with GNUstep aside from looking very similar and thus being a good choice for when using GNUstep programs with the classic NeXTSTEP/OpenStep theme.
[+] [-] lproven|4 years ago|reply
https://news.ycombinator.com/item?id=29544763
[+] [-] mukundesh|4 years ago|reply
[+] [-] necovek|4 years ago|reply
[+] [-] lizknope|4 years ago|reply
[+] [-] phkahler|4 years ago|reply
Does it support OpenGL ES?
[+] [-] gcasa|4 years ago|reply
-- Gregory Casamento GNUstep Lead Maintainer