Welcome to GNUstep Desktop

GNUstep Desktop (GSDE) is modern Linux desktop environment that will give you NeXT/OpenStep-like user experience. It runs on top of amazing GNUstep framework and includes many wonderful apps and utilities that GNUstep community has developed over the years.

Its philosophy goes back to the UNIX roots. It encourages you to combine different commands (apps) together to accomplish your goal. It is toolbox, rather than one monolithic beast.

Important concepts:

- inter-process communication using services and filters
- scriptability using
- easy integration with UNIX command
- extensible using bundles and/or scripts

Why should you care?

- based on the best run-time/framework of all time - ObjectiveC + OpenStep
- it is compact, ObjectiveC/plain C/some scripting - can be easily understood by one person
- can compile in 30min or so (on Raspberry PI!)
- very "hackable"
- it looks great ;-)

How is GNUstep Desktop different from NEXTSPACE?

NEXTSPACE and work done by Sergii has been great inspiration for me. I don't think GSDE would even exist
if I hadn't played with NEXTSPACE first. Although GSDE
shares some code with it and I hope some of my work will benefit NEXTSPACE in the future, GSDE is taking a different path.

1. It uses existing apps and frameworks

GNUstep Desktop builds on and extends existing apps and frameworks that have been developed over the years. Some of them have been abandoned and GSDE provides a new home and purpose for those projects.
A lot of effort goes into making sure all of it works together well.
In this regard GSDE is more of a "glue" whereas NEXTSPACE attempts to recreate complete system from top to bottom.

2. It is pragmatic

GNUstep Desktop doesn't shy away from leveraging existing (non-GNUstep) code/app/utility whenever it makes sense. Many apps are "wrappers" with native GNUstep UI on top. There are different ways how this is done. For example:

WebBrowser.app uses Google Chrome via Xembedding + chrome extension API
VimGS.app is regular command line version of vim embedded into TerminalKit
- Player.app uses VLC command for control and embeds VLC XWindow for output
- Librarian.app provides nice interface on top of recoll + some scripting.

One huge advantage of this approach is that GSDE gains a lot of functionality without extensive development. However, this doesn't mean that any app is allowed to be part of the desktop. The main requirement is that the resulting app must have native UI (GNUstep) and can be fully scripted using
StepTalk. The only exception to this rule is WindowMaker, although it includes many tweaks to make it fit in.

3. It aims to be good enough, rather than perfect

Fixing bugs and making sure it works is more important than beautiful and elegant architecture. As GSDE reuses a lot of code written by different individuals, using different styles and driven by different philosophies, it tries not to impose any particular "right way".
The new code is very utilitarian. I personally prefer to get stuff done rather than implementing complex abstract designs.

4. It doesn't follow NextSTEP's UI as strictly as NEXTSPACE does

Although the user interface is clearly inspired by NeXT, its main goal is to provide use-friendly and consistent user experience. I expect the UI to diverge from NextSTEP's one even more as it matures.

How is it different from GAP?

1. It is more than collection of apps

GNUstep Desktop aims to covers entire user experience. The default configuration, startup scripts, integrations are all very important parts of the project. A surprising amount of effort goes into selecting the right combination of applications. Although the end user will be able to configure the desktop to fit his/her needs, GSDE needs to provide sensible and well tested defaults to start with.

2. It is Linux / XWindow specific

GNUstep Desktop is very tightly tied to Linux and XWindow.
Linux dependency might change in the future. I would love to have a NetBSD-based system! :-) However, Linux makes building fully functioning desktop environments very easy. For example: fast display drivers, functioning WIFI, sound, etc.

XWindow - that's not going to change anytime soon. Xembedding is great when it comes to integration. Many GSDE apps would not be possible without it. I also like how flexible XWindow system is. It fits GNUstep Desktop philosophy very well.