Skip to content

Instantly share code, notes, and snippets.

@probonopd
Last active June 14, 2026 11:32
Show Gist options
  • Select an option

  • Save probonopd/c62396d17b0405102151dc4fb3f6f89f to your computer and use it in GitHub Desktop.

Select an option

Save probonopd/c62396d17b0405102151dc4fb3f6f89f to your computer and use it in GitHub Desktop.

NOTE: The text below was AI generated and has not been manually fact-checked. In doubt, please consult the original video.

GNUstep Meeting — June 13, 2026 — Meeting Notes


1. Scoremaker (MusicKit Application)

Greg demonstrated Scoremaker, a music notation app based on his work on MusicKit.

  • Parses score files and renders sheet music using the NeXTSTEP score format
  • Translates score files to MIDI, pipes output to Timidity or FluidSynth
  • The score parser was handwritten by Greg — AI doesn't know the score format
  • The note rendering view was AI-assisted ("vibe coded") due to high complexity
  • Runs on both macOS and GNUstep/Linux
  • Currently has an AV MIDI player but it doesn't integrate from Scoremaker yet

2. Vibe-Coded Apps / AI in OSS

Greg showed several apps created primarily through AI assistance:

  • Billiards (pool game) — AI-generated, looks almost exactly like the original NeXTSTEP game. Greg wrote it "in an afternoon" vs. what would have taken a week.
  • StepDown — a Markdown editor for GNUstep (alternative to MacDown). Not fully MD-compliant but handles most features including image imports. No full WebKit dependency.
  • Uses Codex (command-line AI tool on macOS) for generating code

Key discussion points on AI in open source:

  • AI-generated code can be extraordinarily difficult to understand — works but poorly structured
  • Greg's PhD focus is AI — he's pushing to see how far it can go
  • Projects split on AI policy: Linux kernel embraces AI-assisted commits; Flatpak completely bans AI; rsync's original developer (Andrew Tridgell) took back over and uses AI for security fixes — drawing backlash
  • Risk of falling behind: Projects that reject AI may get superseded by those that embrace it
  • Greg's concern: GNUstep already missed the boat once (following GNOME specs instead of innovating), becoming a "submarine project" — used everywhere but uncredited
  • Healthy balance: Human review of AI output is essential. "The only bad vibe coding is when you don't know programming at all and trust the AI 100%."

3. UIKit for GNUstep

Greg showed a UIKit implementation for GNUstep:

  • Based on a project started years ago, revived with AI
  • Uses a ZIP file format referencing UIKit objects: UIWindow, UIViewController, UITextField, UIButton, UISlider
  • Decodes ZIP and translates to AppKit widgets or direct implementations
  • Not a stepping stone to Swift integration — it's purely Objective-C UIKit
  • Good for early prototyping, then developers can refine
  • Goal: leverage GNUstep's AppKit/Android cross-platform capabilities

4. GNUstep Web Browser (CEF/WebKit)

Big demo — a working web browser for GNUstep using a Chromium Embedded Framework (CEF) clone:

  • Application called "Netstep" (suggested rename: NeXTCape — Netscape + NeXT)
  • 98% source-code compatible with upstream CEF/Chromium
  • Only difference: a CFRunLoop timer integration in main.m (CEF needs a run loop, samples the viewport)
  • Currently lacks deep JavaScript integration
  • Build time: ~15-30 min on Greg's machine (16 cores, 32GB); ~45-60 min on 2-core GitHub runner
  • Most code was hand-written by Greg; AI used only to debug a recursive crash on startup
  • Uses a Gorm (GNUstep Interface Builder) file with a custom XIB and embedded web view
  • Code is in libs-WebKit-CF in GNUstep repositories

5. Gershwin Status

  • June was a polish month — no major new features
  • probonopd contributed many fixes, especially menu performance (switching between apps now instant vs. multi-second delays)
  • Ghost title bars with compositing — 90% fixed, 10% still showing
  • Goal: get a native browser into Gershwin ISOs so users can download AppImages
  • GitHub release limit: 2GB per ISO — can't ship full Chromium
  • Lars looking at Greg's CEF solution as a faster path than upstream WebKit
  • Not focused on Wayland — solving the same problems from scratch isn't exciting. D-Bus global menus don't have Wayland protocols anyway.

6. Display Server / Opal / PostScript

Greg's vision: a native GNUstep display server using Opal replacing X11/Wayland:

  • Opal is almost fully fixed — 2 issues left: terminal app rendering, menu glitchiness
  • Would let AppKit apps run without X11 — X11 apps would use something like XQuartz
  • GSPS (GNUstep PostScript interpreter) — a PostScript interpreter written in Objective-C using NSArray as a stack
  • Could enable print preview for GNUstep (GNUstep generates PostScript natively)
  • Covers Display PostScript history: NeXT's DPS was abandoned for security (Project Akira proved you could root a NeXT through DPS)
  • Reference books: Green Book (PostScript language), Red Book, Blue Book (Display PostScript — Greg has a copy)

7. NSTableView Fixes & Gorm Improvements (Greg)

  • Fixed NSTableView view-based cell layout — extracted layout to separate method, called conditionally
  • Previously allocated memory for view-based cells unconditionally, wasting resources
  • Fixed Gorm (Interface Builder) issues: ZIP reading, table editing, general tightening
  • Considering factoring ZIP creation out of Gorm into a standalone framework/library

8. IDE Discussion: Ycode vs. Project Center

  • libs-xcode exists and is described as "an IDE without a GUI"
  • Ycode would be a GUI on top of libs-xcode — started as an experiment
  • Debate: should Ycode be a separate app or merge into Project Center?
  • A VS Code plugin for GNUstep is also being considered
  • Greg worried about internal competition between IDEs
  • Lars suggested Ycode could open both Xcode projects and Project Center projects, with Gorm functionality built in
  • Gorm has been largely refactored into frameworks (GormCore, IB library, ObjC header parser) — reusable by Ycode
  • Xcode lost palette support — Greg wants to keep that capability

9. NextBSD⭐

Joe's presentation was a highlight. NextBSD is a revival of the 2015 NextBSD project (Jordan Hubbard et al., sponsored to port Mach+launchd to FreeBSD. Later came ravynOS before switching to XNU/Linux).

Technical Architecture

  • IOKit replacing devmatch — automatic hardware detection via kernel registry
  • Kernel extensions (kexts) instead of FreeBSD KLDs — converted using Apple's cext from Leopard, adapted by Claude AI
  • No rc.d whatsoever — all services run under launchd + Mach
  • 100% binary compatible with FreeBSD — can still pkg install

Services Ported (running via launchd)

  • syslogd, notifyd, mDNSResponder, kextd, hostnamed, getty, configd
  • AppleSystemLogger, IPConfiguration (Apple's DHCP, not FreeBSD's)
  • DiskArbitration, mDNSResponder

Live Image Innovation

  • UnionFS + pivot_root — something FreeBSD itself cannot do
  • Fully rewritable live image — all RAM used as disk (8GB RAM = 8GB available)
  • Kernel modifications for proper pivot_root (utilities don't think they're in chroot)

Kernel Extensions Ported

  • Intel Wi-Fi, Intel Graphics, Intel Ethernet
  • Radeon Graphics, AMD Graphics
  • Legacy Nvidia GPUs (in progress), New DRM Nvidia DRM kext (planned)
  • Each kext bundles firmware + license + driver

GPU Driver Problem Solved

FreeBSD's problem: can't autoload GPU drivers, must hardcode in rc.conf, can't have multiple Nvidia packages. NextBSD's IOKit picks the right driver based on device IDs — no configuration needed. Built-in fallback mechanisms (unlike GhostBSD's Xconfig or NomadBSD's initGFX which hack around this in userspace).

CI/CD Pipeline

  • Three-minute cross-build of FreeBSD kernel on Ubuntu 24.04 Linux host in GitHub Actions
  • QEMU + KVM smoke tests in CI — boots real ISO, runs hundreds of tests for launchd and Mach
  • Daily sync from FreeBSD 15.0 upstream — auto-picks up CVEs, rebuilds everything
  • Multiple repos: kernel, kernel modules (kexts), FreeBSD compat (pkg), userland (launchd/Darwin stuff)

Gershwin on NextBSD

  • Gershwin is loading — libs-base ACPI detection issue causing file viewer crash (needs fix)
  • Joe expects a bootable Gershwin-on-NextBSD ISO by July 2026
  • Upgrade mechanism still being designed (FreeBSD packages write to /etc, /usr/lib — can't just tar-overwrite)

Development Approach

  • Entirely AI-driven — "this entire effort was totally vibed"
  • Joe uses Claude Max ($100/month) — Claude makes every commit, credited as "pkgdemon and Claude" on each one
  • Workflow: build plans → refine → tell AI "go work on this ticket until CI passes" → merge
  • Thinking about donations/GitHub Sponsors to recoup AI costs

10. VHDL / FPGA / NeXT Cube

Greg is learning VHDL (via GHDL) with the goal of building a NeXT Cube on an FPGA:

  • Someone recently built an Apple Lisa on FPGA — proof of concept
  • Greg wants a faithful hardware implementation (not emulation)
  • Would fit in a reproduction NeXT case — "this NeXT machine leaves my possession when I'm dead"
  • Has a real NeXTstation purchased from UMD for $75 (Steve Jobs gifted 500 NeXT machines to UMD — they were everywhere on campus)
  • Previously sold a NeXTcube for $3,000 when unemployed

11. Meeting Logistics

  • Low attendance discussed — Fred usually arrives late, leaves for dinner
  • Reddit posts get many views/likes but nobody joins
  • Possible causes: 3-hour length too long, nice weather (summer), too public
  • Lars suggested more descriptive video titles and custom thumbnails to draw viewers
  • Channel: 212 subscribers, ~350-480 views per video

NOTE by probono:

  • Try a different day of the week? E.g., for me Fri + Sat are often impossible to join
  • Publish written summaries/articles (e.g., similar to this one)?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment