Since GNUstep's conception in the mid-1990s, many people have envisioned a Linux desktop environment powered by GNUstep, whether that be a faithful modern-day workalike of either NeXTSTEP or macOS, or perhaps a completely different desktop environment such as Étoilé, which has its own design and UI guidelines. However, as of 2019, this vision still remains a dream, with GTK+-based desktops such as GNOME, Mint, and Cinnamon being dominant among Linux desktop users, as well as the original Linux desktop environment: Qt-based KDE. Some people, including myself, have lamented the fact that GNUstep's progress has been slow relative to these more popular desktops.
This is my opinion, but I believe the following are the reasons why KDE and GNOME ended up taking off while GNUstep's development has been relatively slow for the past two decades:
- KDE was announced in 1996 during GNUstep's infancy. Out of all of the GUI toolkits that were available for free, open source software developers for Linux in 1996, Qt was the only one available that satisfied Matthias Ettrich's needs. Work ended up starting on KDE, and according to Wikipedia, KDE 1.0 was released in July 1998. Unfortunately, Qt's license at the time was incompatible with the GNU General Public License, one of the major licenses used by many free, open source software projects. While many Linux users did not find this objectionable, other Linux users felt otherwise, which ultimately led to the announcement of the GNOME desktop project in August 1997, which was based on the GTK+ toolkit, which was based on The GIMP image editing application and which released its first stable version in April 1998. GNOME would eventually release its first version of its desktop environment in March 1999. However, while all of this was taking place, GNUstep was still not finished with implementing the original OpenStep API. Had GNUstep been ready in 1996 or 1997, there's a strong likelihood that someone like Matthias Ettrich would have built a desktop around it.
- Cocoa is a moving target, with changes being made to the API once every year or two on average. Unfortunately, GNUstep does not have the personnel needed to keep pace with Apple's changes, similar to how the Wine and ReactOS projects are perennially behind Microsoft Windows or how long it took Haiku, a clone of BeOS made by volunteers, to reach beta status (and BeOS has been dead for nearly 20 years!). My understanding is that GNUstep has been developed entirely by volunteers throughout its history. By comparison, the GNOME desktop has a long history of corporate backing, and the aformentioned Qt framework used by KDE is commercially developed. Unfortunately, the fact that GNUstep is over a decade behind macOS in terms of compatibility with Cocoa deters developers who want to use modern, up-to-date GUI frameworks.
- GNUstep, being based on OpenStep, is an Objective-C framework, while GTK+ is based on C and KDE is based on C++. When the GNUstep project started, Objective-C was considered a niche language, and even to this day Objective-C is mostly used by developers of NeXT/Apple platforms. The pool of Objective-C developers is considerably smaller than those of C and C++ developers. Plus, with the increased importance of the Swift programming language, there's a chance that Apple may deprecate Objective-C in favor of Swift in the future, further reducing the pool of Objective-C developers.
Even with the challenges that GNUstep faces, I'm still holding out hope that GNUstep will increase in popularity and that GNUstep will one day reach API compatibility with newer versions of macOS, which would make the framework more attractive to developers. I also hope that the Étoilé project will get restarted in order to bring a modern GNUstep-based desktop to Linux. Given the increased discontent that some macOS users have over the state of their platform, it would be nice if there were a similar alternative available based on GNUstep.