Disclaimer: This is a post I originally meant to write back in 2015, right after the migration, but never got the time to. Ten years later I still wanted it written down and not lost to time, so I had AI help me write it, with me supplying the facts, the corrections, and the final say on everything. The history is mine; the typing assistance isn’t.
So. It’s been a while (over a decade, actually) since I posted anything iPod-related here. Most of the old posts from those days are probably lost to time and hosting migrations by now, so let me do a bit of archaeology before getting to the point: the entire iPodLinux and Project ZeroSlackr SourceForge repositories have been imported and are now preserved on GitHub.
The three organizations: iPodLinux · ProjectZeroSlackr · iPodLinux-Community
iPodLinux background
For those too young to remember (or old enough to have forgotten): iPodLinux was μClinux ported to the click-wheel iPods. Not the phones. Started around 2003 by Bernard Leach, first guy to get Linux booting on an iPod (LWN wrote it up at the time). It lived on SourceForge as the “Linux on iPod” project. At its peak it was a full distro: a 2.4-series kernel replacing Apple’s firmware at boot, the Podzilla/Podzilla2 UI, a video player, a shell, and a pile of ported games and emulators (iBoy, iDarcNES, iGPSP, iDoom, you know the drill). Last release was 2.3 in January 2007. The SVN went quiet after r2450 on July 22, 2009: “Fix segmentation fault.” Fitting last words, really. (Wikipedia’s overview.)
That’s the official timeline. The unofficial one is messier, as we’ll get to.

An iPod booting the iPodLinux kernel. Photo: Elke Wetzig, CC BY-SA 3.0, via Wikimedia Commons.
Project ZeroSlackr background
Project ZeroSlackr was mine. One-man project. The goal: a simple, coherent, newbie-friendly way to install iPodLinux on your iPod. It started as ZillaZero (proof of concept), which became ZeroNet alpha work in 2006 (practical application), which was then replaced by ZeroSlackr: a custom iPodLinux installation system with its own build scripts, a base//libs//packs/ layout, per-pack build.sh files, ZeroLauncher (a hacked-up Podzilla2 build), and a bunch of emulators and games compiled against it. It had its own SourceForge project page: “a custom iPodLinux installation system.” That was the whole pitch. I posted the whole thing as it happened on the iPodLinux forums (long dead now): sneak peak, testing release, stable snapshot, each one a mirror of the original forum thread.
Was ZeroSlackr part of the iPodLinux project or its own thing? Its own thing, but built inside the iPodLinux community. I was an iPL SVN committer myself (last upstream commit February 2009), pushed ZeroSlackr patches upstream, and support lived in ZeroSlackr threads on the iPL forums. Never had its own website though; the SourceForge page and the forums were home.

Tsukihime running on an iPod via ONScripter on ZeroSlackr. Screenshot from the project’s SourceForge page.
iPodLinux website troubles
Speaking of the unofficial timeline: ipodlinux.org had a rough decade. Suspended June 2008 and replaced with a redirect to a blank page. Back after a DNS move that October. Offline again June to September 2009. Down again around September 2010, at which point one developer, Alexander Papst (aka DerPapst), took it upon himself to mirror the whole thing at ipodlinux.wiki. The domain came back online in 2019, now with embedded text ads. Not exactly a glorious archive of the project’s golden age, but it is what it is.
SourceForge troubles
The dying website was only half the problem. The other half was SourceForge itself, and it isn’t pretty. SourceForge was founded in 1999 by VA Software and was the home of open source for over a decade. Then it got sold, and everything went to hell.
September 2012: Dice.com (a job site) buys SourceForge, Slashdot, and Freecode from Geeknet for $20 million, folding them into a subsidiary called “Slashdot Media.” You can guess what happened next. Dice needed the thing to pay for itself.
Mid-2013: DevShare. “A Sustainable Way To Fund Open Source Software,” they called it. What it actually was: wrapping Windows downloads in installers stuffed with third-party junkware, with revenue sharing. Opened to all projects in February 2014 despite everyone hating it.
Then the exodus. VLC, the most-downloaded project on the site, walked in April 2013 over misleading ads on its own project page (a VLC dev counted more than seven fake “Download” buttons). SourceForge invited them into DevShare to “share more revenues by bundling third-party software”; VLC said no; then their new download servers got hit by a large DDoS. “I let you draw your own conclusions,” the developer wrote (his full account). GIMP left a few months later in November 2013, telling SourceForge point-blank they weren’t interested in DevShare.
May 2015: the big one. SourceForge seized the “GIMP for Windows” project account: locked out the actual maintainer, Jernej Simončič, handed it to an internal “sf-editor1” account, and started shipping adware-bundled installers. They’d quietly started an “Open Source Mirror Directory”: taking over the accounts of projects that had already left. GIMP went public on May 27; VLC found their account taken over too (binaries untouched; they’d started signing them). A week of media firestorm later, SourceForge caved on June 2 and promised opt-in-only bundling (PCWorld). Wine and Notepad++ left anyway.
July 2015: Dice puts the whole thing up for sale. January 2016: sold to BIZX, LLC. New president Logan Abbott kills DevShare on February 9, 2016: “We’re more interested in doing the right thing than making extra short-term profit” (PCWorld). Malware scanning followed that May (LWN, Wikipedia).
Decision for GitHub
Three reasons. One: the scandal above. I didn’t want years of work lost to SourceForge if the whole thing shut down (or got sold again, or “mirror directory”‘d our accounts out from under us). Two: SVN was outdated and Git is just easier to fork. Three: both projects were monorepos, and I wanted everything split into separate repos so they could be forked and developed independently.
And to be clear: this was my call alone. Not agreed with the iPodLinux team; they’d long moved on to other things by 2015. I just didn’t want the work rotting on a platform I didn’t trust anymore.
There was never an announcement post because there was no project left to announce to. The wiki still says the SourceForge SVN is where the code lives. So here’s the announcement, ten years late. And here’s how the move itself went.
Two very different imports
The two imports came out very differently, which tells you what each project was.
iPodLinux: ~49 MB. ZeroSlackr: 527 MB. Half a gig. Because ZeroSlackr’s SVN tree wasn’t just source: it was source, prebuilt libs, docs, binary blobs, packs and builds. SVN doesn’t care what you commit. Git cares. Cloning ProjectZeroSlackr-SVN is a commitment.
That’s why I structured it the way I did: the giant repo is fine as the archive, but you don’t want it to be the only copy of anything people might actually reuse. (I’d been a Git convert for years by then; see my 2012 TortoiseGit post.)
iPodLinux initial import – Fixing names
git-svn import, plus an author mapping file to clean up the username mess. SourceForge says fxbhh, courtc, oremanj; GitHub now says Felix Bruns, courtc, rwcr. Small thing, but twenty years from now “fxbhh” means nothing and “Felix Bruns” at least googles. (Did the same for my own entries, obviously.) Fun side effect: the mapping dug up names I’d completely forgotten were involved.
subtree vs filter
After the initial whole-repo import, the obvious next step was splitting the monolith into per-component repos: podzilla2, ipodloader2, hotdog, ttk, SDL-ipod, ipl-bots (yes, the IRC bots), 28 of them in total. Each split repo carries the full per-subdirectory history (original messages, dates, mapped authors), topped off with one of my “Import into GitHub as a separate project, add README.md” commits.
Which tool did I use? I went back and forth between git subtree split and git filter-branch --subdirectory-filter, and the answer is still sitting in the commit SHAs ten years later.
Here’s the fingerprint: in every split repo, the root commit (“Standard project directories initialized by cvs2svn.”, the empty-tree commit from the original CVS-to-SVN conversion) is byte-identical to the same commit in the full SVN import. Same SHA, same empty tree, no parents. Every other commit was rewritten.
That only happens with filter-branch. I verified it locally on a test repo: git filter-branch --subdirectory-filter rewrites each commit’s tree down to just the subdirectory, and for the root commit (whose tree was already empty) the rewrite is a no-op, so the SHA survives untouched. git subtree split builds every commit fresh and dropped the empty root entirely in my test. The split repos match the filter-branch fingerprint exactly. So: git filter-branch --subdirectory-filter it was. Mystery solved, documentation complete.
iPodLinux kernel
The kernel got special treatment, and it deserved it. The linux/ tree held three generations of ports, so I split them separately, two weeks after the main import: linux-2.4.32-ipod (the real one, 48 MB), linux-2.4.24-ipod (the older one), and linux-2.6.7-ipod (the unfinished one; the 2.6 port never got completed). The 2.4.32 tree is the most-forked repo in the whole collection. Either people found it interesting or half the forking on GitHub is accidental. Probably both. (Contemporary posts: my 2.4.32 loop-mount/iBoy kernel builds and the later loop-mount/iBoy+Loader2AutoExec builds.)
Project ZeroSlackr – Own build system
ZeroSlackr’s tree was the opposite problem from iPodLinux’s neatly separable components. Its build system was a bunch of shell scripts: one in each folder, plus a root script that recursed into every subfolder, built everything, and extracted the binaries into one place. The root script was lump.sh: the “Full ZeroSlackr Lumping Script,” whose banner admits it exists “because I’m lazy ; )”. Compiled the whole tree, dumped it all into a _lump folder you could copy straight to your iPod.
This was my early attempt at a consistent build system, back before I even knew what a “build system” was. The per-pack build.sh files and the base/ (userland, ZeroLauncher), libs/ (prebuilt libraries), packs/ (Emulators, Media, Tools, Zillae) layout were all part of that experiment. It’s all preserved inside the giant ProjectZeroSlackr-SVN repo. I never split it out, because untangling a decade of my own scripts would’ve produced nothing anyone could reuse.
So if anyone’s looking for a ZeroInstaller repo or a ZeroNet repo on GitHub: they don’t exist. ZeroNet was the 2006 precursor that ZeroSlackr replaced, and the build-system work survives only inside the giant SVN import. What’s outside it are the actual applications: the launcher, the CPU speed and backlight tools, PiCalc, Moon-Buggy, the CLI tools and archivers, split off as individual repos.
Multiple forks
Here’s where it gets organizationally interesting. Rather than importing everything twice, I used GitHub forks for anything ZeroSlackr shared with the wider ecosystem:
- 4 forks from the iPodLinux org: the 2.4.32 kernel tree,
ipodloader2,Podzilla0-SVN,Podzilla2-SVN - 19 forks from the iPodLinux-Community org: Floydzilla, ZacZilla, Encyclopodia, and 16 ported games/emulators (iDoom, hDoom, hWolf3D, Frotz, igpSP, iGameGear, iDarcNES, iBoy, iAtari800, ONScripter, Podfather, SBaGen, TinySID, ToeNailClipper, XMP, Flite)
Each fork went up within a minute or two of the original. The timestamps read like an assembly line. The parent-child links are preserved in GitHub’s fork network, so the provenance is still traceable.

MandelPod running on iPodLinux, one of countless community modules from the era. Public domain, via Wikimedia Commons.
A few of these ports got their own blog posts back in the day, also mirrored from the forums: PiCalc, XMP, igpSP, and the tar/bzip2/zip command-line archivers.
A note on permission, since someone will ask: ZeroSlackr itself was mine, but the ports and apps under it were built by various community contributors: DansFloyd (Floydzilla), zacaj (ZacZilla), jerl92 (podzillaz), venox (iGameGear), and others. I didn’t get each person’s explicit permission to reupload their work, because none was needed: everything was GPLv2, which expressly allows redistribution. The fork network preserves the attribution anyway.
Loose ends
One thing that did not make it over: the pre-SourceForge SVN history. The wiki documented older repos at svn.ipodlinux.org and opencsie.org/courtc, but that history was never part of the SourceForge “code” SVN, so it was never imported. I checked archive.org for captures of both hosts. Nothing. The old iPodLinux wiki page for ZeroSlackr is gone too, no snapshots. If anyone still has a checkout of those old SVN repos lying around, speak up. Right now it’s the one part of the history that’s just… gone.
Everything that did make it over is real, though. No empty placeholders: the smallest repo is ToeNailClipper at 82 KB, and even that’s a complete port with full history. Some are data-heavy rather than code-heavy (Encyclopodia ~56 MB, iScummVM 166 MB), but nothing’s a stub. The SourceForge SVN layout (apps/, legacy/, libs/, linux/, uclibc/) matches the imported tree root exactly, so nothing got dropped in transit either.
On READMEs: most repos kept their original README files, so the original authors’ docs and credits are intact. The few that don’t have one simply didn’t have one in the original upload. The splits are faithful copies of what was in the tree, so nothing’s missing that was ever there.
End result? 3 organizations, 88 projects, 78 forks
So, to answer the title: the migration produced three GitHub organizations holding 88 repositories, of which 24 are GitHub forks, with 78 forks of those repos out in the wild. (23 of the 78 are my own inter-org forks from the migration itself; the other 55 are other people’s.)
iPodLinux
The main project: full SVN import plus 28 per-component splits and 3 kernel splits (32 repos).
Full import: iPodLinux-SVN — the complete SourceForge SVN history, ~49 MB
Kernel
- ipodeth1394 — Ethernet-over-FireWire driver
- linux-2.4.24-ipod — the older 2.4.24 kernel port
- linux-2.4.32-ipod — the main uClinux 2.4.32 kernel port
- linux-2.6.7-ipod — the unfinished 2.6.7 kernel port
- linux-ipod — uClinux kernel modifications adding iPod target support
- uClibc-ipod — config files for building uClibc for iPodLinux
Bootloader and firmware tools
- getflash — tool for extracting the Flash ROM from iPods
- iplsign — tool for generating a crypto key and signing files
- ipodloader — the original simple bootloader
- ipodloader2 — the updated bootloader with more features
- patch_fw — tool for modifying an iPod firmware image
User interface
- nano-x-ipod — port of the Nano-X/Microwindows system
- podzilla0 — the legacy iPodLinux UI
- podzilla2 — the updated iPodLinux UI, with themes and module support
- ttk — UI toolkit for iPodLinux applications
- ttkzilla — proof-of-concept podzilla built on the TTK toolkit
Libraries
- hotdog — custom 2D graphics library
- libipod — core library for common iPod hardware functions
- rawpod — library for accessing and modifying the iPod’s filesystem
- SDL-ipod — port of the SDL library
- ucdl — libdl-like library for uClinux
Tools
- 2bppconv — converts videos to grayscale for iPods
- armemu — basic iPod ARM CPU emulator for testing
- cmdlineutils — collection of command-line tools
- inputattach — input line discipline attach program
- ipodinfo — prints an iPod’s revision and filesystem type
- podfile — tool for creating podzilla2 modules
- pzconf — tool for editing podzilla2’s config file
Project
- ipl-bots — the IRC bot and SVN compiler bot scripts
- ipl-installer2 — Qt4-based graphical installer
- ipl-website — mirror of the old pre-wiki website
ProjectZeroSlackr
ZeroSlackr: the 527 MB SVN import plus split-off tools, launcher, ports, and 23 forks from the other two orgs (32 repos).
Full import: ProjectZeroSlackr-SVN — the complete SourceForge SVN history, 527 MB
Core
- backlight — command-line backlight brightness tool
- cpu_speed — command-line CPU speed tool
- ipodloader2 — the bootloader (fork)
- linux-2.4.32-ipod — the 2.4.32 kernel tree (fork)
- Podzilla0-Lite — lightweight podzilla0 build
- Podzilla0-SVN — full podzilla0 history (fork)
- Podzilla2-SVN — full podzilla2 history (fork)
- ZeroLauncher — ZeroSlackr’s default launcher, a customized podzilla2 build
Emulators
- hDoom — Doom port, hotdog version (fork)
- hWolf3D — Wolfenstein 3D port (fork)
- iAtari800 — Atari 800/XL/XE/5200 emulator (fork)
- iBoy — Game Boy/Game Boy Color emulator (fork)
- iDarcNES — NES/SMS multi-system emulator (fork)
- iDoom — Doom port, SDL version (fork)
- iGameGear — Game Gear/Master System emulator (fork)
- igpSP — Game Boy Advance emulator (fork)
Media
- Flite — CMU Flite text-to-speech engine (fork)
- Frotz — Z-Machine interpreter for Infocom games (fork)
- Moon-Buggy — text-based Moon Patrol-like game
- ONScripter — visual novel engine (fork)
- Podfather — demo by demogroup HOOY-PROGRAM (fork)
- SBaGen — binaural beats generator (fork)
- TinySID — tiny SID chiptune player (fork)
- ToeNailClipper — simple text-based game (fork)
- XMP — extended module music player (fork)
Tools
- CmdLine-Archivers — tar/bzip2/zip ports
- CmdLine-Tools — ports of various command-line tools
- Encyclopodia — podzilla2 with offline Wikipedia reader (fork)
- PiCalc — command-line pi digit calculator
Zillae
- Floydzilla — DansFloyd’s customized podzilla0 build (fork)
- ZacZilla — zacaj’s customized ttkzilla build (fork)
iPodLinux-Community
Community-contributed apps and ports, the canonical originals behind most of the ZeroSlackr forks (24 repos).
Podzilla builds
- Encyclopodia — podzilla2 with offline Wikipedia reader
- Floydzilla — DansFloyd’s customized podzilla0 build
- podzillaz — jerl92’s customized podzilla2 build
- ZacZilla — zacaj’s customized ttkzilla build
Emulators
- hDoom — Doom port, hotdog version
- hWolf3D — Wolfenstein 3D port
- iAtari800 — Atari 800/XL/XE/5200 emulator
- iBoy — Game Boy/Game Boy Color emulator
- iDarcNES — NES/SMS multi-system emulator
- iDoom — Doom port
- iGameGear — Game Gear/Master System emulator
- igpSP — Game Boy Advance emulator
- iREm — REminiscence (Flashback) engine reimplementation
- iScummVM — ScummVM point-and-click engine port (fork)
Media and apps
- Flite — CMU Flite text-to-speech engine
- Frotz — Z-Machine interpreter for Infocom games
- Insune — C++ GUI interface
- Moviepod — movie player
- ONScripter — visual novel engine
- Podfather — demo by demogroup HOOY-PROGRAM
- SBaGen — binaural beats generator
- TinySID — tiny SID chiptune player
- ToeNailClipper — simple text-based game
- XMP — extended module music player
Where did everyone go?
The iPod scene turned out to be a pipeline into the iPhone jailbreak scene. AriX wrote iJailBreak, the one-click iPod touch jailbreak, at 13, then joined the Chronic Dev Team (profiled by the WSJ). Felix Bruns (fxbhh) ran the firmware archive everyone used for restores during the jailbreak era. I went the other direction: Android, building Beats.
But the work outlived the scene. The Rockbox firmware behind today’s iPod mods carries iPodLinux DNA: Bernard’s kernel code went into Rockbox with his permission (per Stenberg’s blog), and the classic dual-boot setup runs Rockbox through ipodloader2, the iPodLinux bootloader (as the old mod guides show).
And the iPod itself is having a genuine revival. Gen Z is buying up old iPods for distraction-free listening (sales up 48% last year per Back Market), and the modding scene is still alive. The archive isn’t just a museum piece: in the summer of 2020, crozone landed seven merged pull requests on ipodloader2 and the 2.4.32 kernel (LBA48 support, FAT32 fixes, better filename handling).
Just to be clear about what this is: an FYI, and an archive. I put this together so the work doesn’t get lost, not to claim ownership of anything or take credit for other people’s contributions (the commit history credits everyone properly). It’s all in one place now, somewhere that won’t suspend the site, sell the domain to advertisers, or bundle junkware into the downloads. This time, hopefully, forever.
And if you’re reading this and you feel like poking at any of it, please do. That’s the whole point of splitting everything into separate repos: fork it, fix it, build on it. The code’s been sitting untouched for over a decade; it could use some new hands.
~Keripo




