News:

HTTPS is back; rejoice if you love security theatre

Main Menu

GNUstepOfficial meeting minutes

Started by Rhetorica, Jan 17, 2026, 03:34 AM

Previous topic - Next topic

Rhetorica

On Saturday, Gregory Casamento posted a recording of a two-hour meeting from a group of GNUstep developers. Since the video is rather tedious to watch I thought I'd summarize some of the highlights in a post here. (And maybe this can be a recurring thing...)

GNUstep AppImages

Though they are often miserably bulky, self-standing software containers like docker, flatpak, etc. enable portability across Linux distributions. Hitherto this has not been attempted for GNUstep applications, and some work was required to make it possible. An AppImage of (drumroll) PicoPixel has been completed as a proof-of-concept, which includes everything down to ld-linux.so and glibc, so it should run on just about any Linux distro, and possibly even some BSDs with the right support framework on the host side. The GNUstep AppImage overhead is around 45 MB, which is not nothing, but is pretty good compared to some other packaging systems.

Needless to say, allowing end-users to bypass the tricky step of installing an entire platform ecosystem will be very valuable in increasing adoption—and these efforts might dovetail nicely with the recent port of Ladybird to GNUstep, which compiles much faster than the official (Qt-based) Linux port... but more on Ladybird later!

Theoretically these AppImages might even run under Windows via WSL2, but there have been some headaches since Microsoft made Wayland the default for WSL2. There was a fair bit of concern in the meeting about working on GNUstep's Wayland support, and the general problem of how Wayland's design decisions are somewhat at odds with features GNUstep and other desktop environments require.

The next AppImage that Twilight Edge plans on creating is probably GMines.app.

WARNING: preposterous time in Real Time Clock -- CHECK AND RESET THE DATE!

Rhetorica

#1
Gershwin

The Gershwin project, mentioned here, is an initiative by some of the GNUstep maintainers to build an OS X-like desktop environment. The main project currently is developing the theme, "Eau" (like Aqua, but French), which aims to implement as much of the OS X look-and-feel as possible, including behavioural things like menu functionality, while minimizing the amount of work necessary for developers to bring existing GNUstep programs into the Gershwin fold.

Gershwin-related notes from this meeting include:

  • Choosing a set of fonts and where to store them.
  • The /System, /Local, /Network directory layout is back in a big way.
  • a (no-doubt not-coincidental) concern about ensuring window resize handles are easy to see and grab,
  • usage of the XCBKit-based uroswm window manager (which means Gershwin is still X11-based for the time being)—this will hopefully be theme-agnostic eventually, plans for compositor support and (secure) X11 namespaces. Window decorations are native GNUstep objects instead of the chimerical thing that WindowMaker offers.
  • The global screen-top menu bar implementation is confirmed working with Chromium, GIMP, VSCode, and more; currently uses DBus but they hope to get rid of this dependency later.
  • The standard modifier key for menu hotkeys is Command rather than Control as in stock GNUstep.
  • Menu search is implemented (and very convenient) but still needs interface work.
  • What happens when you double-click an ELF binary with no executable bit? Most desktops will just try to open it in a text editor or something; Gershwin will offer to set the executable bit and run it.
  • If no console window or interface is created for an executable that the user launched, but it outputs stuff to stderr, then Gershwin will show the results (including the exit code) in a dialog when the process terminates. (Conversation around making sure this text is easy to copy and send to a developer. Classic bikeshedding stuff.)
  • Basic System Preferences implemented for dev system (Raspberry Pi 500+ running Debian), including sound, network, wifi, printers (CUPS), keyboard layout (including a checkbox for reorganizing Alt and Command if you're on a Mac), global shortcuts, and more.
  • Division between Applications and Utilities. Utilities include Screenshot (a far cry from Grab.app, but hey, it's good to see one at all), NetworkBrowser (Bonjour), RemoteDesktop (client for VNC with untested RDP support).
  • GWorkspace fork: just called Workspace. Can't be upstreamed since it deviates substantially. It can mount archives and disk images, and the trash icon turns into an ⏏ Eject symbol when media is dragged over it.
  • Dock: respectfully handles non-GNUstep X11 applications with a minimal .app bundle wrapper (appwrap tool for creating these). Bounce animation very much enabled until the first window appears.
  • Network integration: services discovered via zeroconf. Easily mount sftp, WebDAV (untested), and (in the future) afs. Also manually connect via URLs.
  • Support for "show in file browser" functionality common in Browsers; requires DBus.
  • Spatial mode: one window per directory. (Not an OS X thing, but certainly very Mac-y.) Icons and windows remember their locations correctly, using reverse-engineered .DS_Store files. (For real!) — this also comes with background images in .DMGs etc.
  • Windows close automatically when the volume containing them is ejected! (This comes up around 1:11:40)
  • Other dev QoL: plistupdate tool, GUI testing framework ("like Selenium", currently built into Workspace)

Although Gershwin is far from done, the developers are now dogfooding it and using it for its own development, so it may be worth trying out in a VM. It genuinely sounds like a better experience than most smaller Linux desktops, and the developers assert they're trying to keep it OS/hardware agnostic by switching platforms regularly. Live ISOs exist (of the Debian on Raspberry Pi 5/500 stack), available on request for people who are committed to participating in testing; they're not for general consumption. There's an Arch-on-Intel ISO build also, but it was broken at the time of the meeting.

For pursuing involvement, #gershwin on irc.libera.chat:6697 (TLS) is the way to go.

WARNING: preposterous time in Real Time Clock -- CHECK AND RESET THE DATE!

Rhetorica

Ladybird on GNUstep

Here it is!

ladybird-gershwin.png

(Note the extremely placeholdery titlebar and tab strip.) The port is described as having been "surprisingly easy." The APIs are around 80% the same, and the Ladybird team is responding positively to upstreaming the GNUstep port into the official repo.

Lars (I think this is Lars Sonchocky-Helldorf) was self-described as "speechless" after the Ladybird reveal, comparing Gershwin to how past GNUstep desktop projects had failed long before reaching this stage of maturity.

The final half hour of the meeting was spent discussing minutiae of aesthetics and desktop paradigms for Gershwin, such as the spatial metaphor and how to make it unambiguous when enabling or disabling it. The goal of making something approachable to Mac users without being beholden to copying specifics was reiterated, e.g. avoiding the custom of hiding menu bars behind hamburger menus or sacrificing usability in the name of shiny chrome. It was noted that open source projects, fortunately, do not need to impress investors or customers with visual novelty and can emphasize doing the right thing over the popular thing. One person (the individual responsible for the AppImage bundling) mentioned scrutinizing vintage OS X Kaleidoscope themes for inspiration.
WARNING: preposterous time in Real Time Clock -- CHECK AND RESET THE DATE!

ZombiePhysicist

Super cool project! I hope it gains traction (and tear off menus 🙃)!

Rhetorica

#4
Another GNUstepOfficial meeting was posted today. Here are some highlights:

Gregory Casamento is working on NSDiffableDatasource still. This is a performant cache for table views that triggers updates when its dependencies change. They were mentioned last meeting offhandedly as a WIP.

He also finished a working implementation of NSDataLink, which is the dumbed down OpenStep version of the ObjectLinks that Steve Jobs showed off in this NS3.0 preview video. Transport mechanisms like this are notoriously tricky to keep functional in heterogeneous networked environments, and sadly they were removed entirely in Cocoa. Microsoft's DDE was primarily used for similar functions, but was much less comprehensive in what it could do. Today features like this only exist in a handful of commercial applications in very narrow contexts, like Photoshop's Smart Objects—a clear-cut example of 90s tech being superior to the modern day. The file AppKit/Draw/Links.rtf from OS4.2's NextDeveloper documentation relates that full ObjectLink support was still tentatively planned for OpenStep at some point but never got finished, and warns that the code in the Draw example may not compile by the time it ships because the code refers to unfinished APIs that might have been renamed.

Gregory also reports that he has encountered disappointments when asking LLMs to generate Objective-C code. This isn't terribly surprising since there's a lot less Objective-C out there than other languages, and it is no longer the primary language for Mac or iOS application development. (Moreover, it seems likely that one will get a mixture of different API versions when trying to generate code—possibly this is what he encountered, though he doesn't elaborate.) Lars feels that the new Kimi Code model does a decent job at porting C to Obj-C, however, and suggests Gregory try it.

While explaining the purpose of the GNUstep project (which is now defined as "making Cocoa applications portable") Gregory incidentally noted that he used to work for Keysight (formerly Eggplant), on the same product, Keysight Eggplant Test, where Doug Simon of HyperSense fame ended up. Small world, huh? (Their Windows version uses GNUstep.)

From the Gershwin team, an MCP server was implemented, allowing for AI agents to remotely control the Linux desktop, including GNUstep applications. The demonstration did not go too well (somehow the AI selected a work-in-progress port of TextEdit from later Intel-era 10.x Apple sources instead of a standard build, and didn't get much further) but we can assume that this is something the Gershwin folks intend to get working in the future. They also fiddled with their directory layout (trying to get it right) and have undertaken an initiative to upstream as many changes as possible, undoing some of their libraries that were previously forked. However, they are retaining a forked libdispatch since they've been able to get its CPU usage very low (1-2% on a Core 2 Duo), though they might be able to push that upstream.

probono also reports that Gershwin now builds on a fairly small Raspberry Pi system (4 GB of RAM) in around 10 minutes on FreeBSD. It also runs on half a gig of RAM at a usable speed, though he notes that it's probably not ideal for web browsing in that configuration!
WARNING: preposterous time in Real Time Clock -- CHECK AND RESET THE DATE!

Rhetorica

...and it turns out that video was rather short because it is only Part 1. Part 2 is much longer.

Around this point the conversation turns to web browsers; there is a bit of discussion about how the world ended up being dominated by forks of the rendering engine from Konqueror, the throw-away KDE browser that not even KDE uses anymore.

The question is posed as to how hard it would be to repackage Ladybird's renderer into a reusable WebKit framework—Joe thinks it shouldn't be too hard, since Ladybird has a good, modular design already. There is an ongoing issue on the Ladybird GitHub repo for officially merging GNUstep support into Ladybird; no objections have been yet made to the notion.

Adrian Gjonca remarks he has implemented a version of Conway's Game of Life in GNUstep and is interested in making it a screen saver but needs a framework for doing so. Gregory suggests a module for his InnerSpace implementation (think GNUstep BackSpace—I've never gotten it to work personally) which is similar to the Screen Saver framework from OS X 10.0+.

Gregory talks a bit about Gorm (GNUstep Interface Builder) and how Apple's switch from self-serializing classes to Xcode doing the serialization itself has opened the door to Gorm doing the same, meaning AppKit and Gorm no longer have to be updated in lockstep. He is currently working on XIB support in Gorm, though it is still very unstable.

probono starts a Gershwin demo at 35:25

[post to be continued]
WARNING: preposterous time in Real Time Clock -- CHECK AND RESET THE DATE!

Rhetorica

The Gershwin demo reports that: Chromium now sends its menus to Gershwin using DBus, native apps now use GNUstep objects to send menus (more efficient), and an app menu now exists:
ea1.png
Also in this screenshot, file icons depict the associated application. 

Next, a quick ItemFlow demo. This is super slick, animates smoothly, and will be immediately comforting to iTunes and iMovie users:
ea2.png

It is implemented using OpenGL and fully accelerated.

As you may notice in the above two images, they also switched away from OS X's 'traffic light' titlebar widget paradigm to an organization that (counterintuitively) is a compromise between classic Mac and CUA/Motif/OS2/Win≤3: top-left close, top right minimize and maximize (contrary to NeXT and classic Mac, which put minimize/roll-up rightmost.) Windows also snap to the edge of the desktop!

They also added this mighty slick alt-tab switcher. Very pragmatic and no-nonsense, reminiscent of the traditional Windows 9x switcher:

ea3.png

Theming is a bit hard-coded at present; Gershwin's WM can't yet swap them on the fly, as button positions may need to be recalculated. But that's something they'll still work on.

probono next mentions that .iso and other disk images can now be written to storage volumes like USB sticks directly in the UI, which helps when iterating on new bootable live media. No more fooling around with dd—just drag the .iso icon onto the disk icon.

A bare-bones processes manager window:

ea4.png
A drawer pops out with details when a process is selected, and a very helpful Force Quit button:
ea5.png
(At that point, the Gershwin demo machine fell over, and probono had to spend a little bit restarting everything.)

[to be continued...]
WARNING: preposterous time in Real Time Clock -- CHECK AND RESET THE DATE!