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...)

(Note: the meetings are official. These meeting minutes are not.)

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

#6
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!

Rhetorica

#7
The back half of the Valentine's Day meeting was mostly housekeeping. GhostBSD has a Gershwin spin, and a developer from the GhostBSD team, Brian (probably brianthehughs) showed up in text to spectate, and will likely participate more fully in the next meeting.

Fred Kiefer popped in to admonish Gregory for committing an experiment with an LLM (a commit on NSDiffableDatasource that evidently functioned but had horrible code) to the GitHub project. This was not pleasant code to review. They resolved to be much more reserved about playing with AI coding in the future, particularly considering the general weakness around Objective-C specifically. Gregory noted a number of systematic errors.

More generally, Greg proposed restricting commits to the master branch in favor of a pure PR model; Fred felt it was perhaps excessive; Lars and Joe were on the fence. (It seems only Gregory understood what it actually entails—it's definitely a good idea. Hopefully they come around to it eventually.)

Afterward the conversation moved to a recent merge that changed menu behavior—it removed the ability to open a menu by simply clicking it (requiring the button to be held down), which is a pretty annoying thing on a trackpad. Fred mentioned that edit wars (people repeatedly submitting "fixes" to make the OS behave the way they wanted) were a real concern back in GNUstep's early days, and acknowledged that PRs would be a good way to fix it. Since the committer has been hard to reach, they're thinking of just reverting it for now—possibly quarantining it in its own branch—and dealing with it if the person responsible resurfaces. This annoying tweak has been in GNUstep for about a year, but Gershwin's devs had been insulated from it because they were using forks of the libraries in question. (It's probably in the latest versions of @wmlive, to be honest...)

There wasn't much else beyond that—just miscellaneous housekeeping and something mysterious about menus being shifted upward by 1 pixel under the Windows skin. Until next time!
WARNING: preposterous time in Real Time Clock -- CHECK AND RESET THE DATE!

Rhetorica

Saturday's meeting was posted yesterday. (Part 1, Part 2.) Here are some highlights:

- Greg has been working on an updated port of MusicKit; he's nostalgic for some NeXT DSP demos and wants to hear them play under GNUstep.
- He's also continuing to work on more NSDiffableDataSource stuff; view cells and working refresh.
- Joe has submitted updated Gershwin for the next GhostBSD community spin, which will be based on FreeBSD 15.0. The current GhostBSD Gershwin ISO is fairly outdated and missing the innovations from the past two meetings. (Not out yet at time of this writing.) The maintainer of GhostBSD is considering deprecating the status of MATE as the default GhostBSD desktop due to its stagnant nature, which would leave Xfce and Gershwin as the main contenders to replace it. Discussion went on for some time about what Gershwin and GNUstep work would be required to earn this position, including sore spots in stability, reliability when switching between GNUstep and non-GNUstep applications, missing interface features, and printing.
- This led into a conversation regarding deficiencies in GNUstep printing; Gregory noted that visual themes can often adversely affect GNUstep printing output (and wants to do some tests to figure out what macOS and Mac apps currently do to sanitize PostScript when generating printable versions of documents) and that there are problems with pagination. They agree there is a lot of investigation to be done to get familiar with the code involved and wonder just how important printing really is as a priority for a modern desktop OS—aside from converting documents to PDF, anyway, which is still definitely desirable. Still, there's nothing like a dead tree in your hands for reading documentation...
- Lars reports he's been working with Riccardo Mottola on a new document-based (presumably NSDocument-based) help viewer application; they've added search functionality to it. It uses XML files that it parses into rich text, which can be bundled with images for an experience similar to an early webpage—you know the sort. It also supports translations. The UI is shown here, with a snazzy resizable Miller column view, a bit like how documentation was embedded in OpenStep and Rhapsody versions of Project Builder.
- Lars also reports some weird behavior around font size changes. Evidently the height of the line before a word-wrapped line gets affected by larger text size immediately after, which, due to the way images are embedded in rich text, as substituted characters, affects lines of text preceding them. Riccardo has been banging his head against this code for months, which is a goto-infested morass. In Part 2, Riccardo arrives, and the second half of the meeting is totally dominated by discussion around this problem, and other matters relating to the HelpViewer project.
- Twilight Edge has been working on a Debian script to automatically wrap GNUstep apps into containerized AppImages that can run without GNUstep installed. (Work on this was teased two months ago.) It can now handle most of the apps in the GNUstep Application Project. The script is here if anyone wants to try it out, providing packages of GMines for both aarch64 and x86_64 as demonstrations. (Insert joke about Electronic AppWrapper here.)
- Oolite gets a few shout-outs. This is an Obj-C based space trader game (oolite being both a kind of rock and a contraction of Object-Oriented Elite.) It is notable for being free, being portable, running on GNUstep, and having cutting-edge 3D graphics—by which I mean Quake III graphics. Greg notes there's an OpenGL racing game that runs on GNUstep, CoreBreach, which is a Wipeout-like game.

In all, this meeting was fairly quiet (by Greg's assessment), perhaps due in part to the DST switchover. They hope the next month's meeting will be more eventful.
WARNING: preposterous time in Real Time Clock -- CHECK AND RESET THE DATE!

ZombiePhysicist

Thank you so much for all these updates and links. It is super cool and appreciated as I dont have the time to sit through the full videos, wish I did. It's great to see peeks at how the sausage is made!