Fits on a Floppy - A Manifesto for Small Software

43 points by msangi a day ago on lobsters | 22 comments

veqq | a day ago

While I generally support this, a lot depends on what your system already has. Dynamically linked binaries from C or Python scripts easily fit, because the runtimes are already on every computer. Statically linking for portability or because the runtime is less common (e.g. with Janet) runs way past this!

Internet_Janitor | a day ago

I'm inclined to agree. If you aren't writing a native application against a UI toolkit (among other reasonable dependencies) that is presumed to be available on the target operating system, you'll struggle to hit this metric. Even "small" libcs are routinely half a megabyte or more. Want to make a network request? LibCURL is several hundred kilobytes, as is BearSSL, so far as I can tell.

My project Decker takes pains to minimize external dependencies, but relies upon (and ships with) SDL and SDL_image for portability, weighing in at 6mb zipped for the current Apple Silicon release, of which roughly 4.6mb (zipped) are the SDL and SDL_image dylibs. Web builds (whose runtime also contributes to the size of the desktop release) start at about half a megabyte, with the assumption that the user already has a reasonably modern HTML5-capable web browser installed; otherwise that's hundreds of megabytes of dependencies. Raw deck files of useful applications and libraries may only weigh tens of kilobytes if you already have the runtime.

Love2d is in a similar situation- building on SDL and a collection of included batteries- and it's 10mb zipped, 25mb unzipped. Again, you can make useful applications on top of Love2d in tens of kilobytes of lua scripts and perhaps some vector graphics if you already have the runtime.

With unlimited development resources it would be a nice aspiration to avoid depending on SDL, but I fear that for most SDL-based projects the result would be entirely dropping support for less popular operating systems, which in my mind hardly makes up for shaving a few megabytes from an installer. Perspectives on whether this approach is "bloat" will vary.

Yeah, the "standardization" of macOS is doing the heavy lifting here. I don't love having a 50mb binary (but that's roughly the common size of statically compiled go or rust things I have made) but it's still in the spirit of that I think. Other stuff is hundreds of megabytes, thousands of files, or both.

This is just a (misguided) edge case. If there was an easy way to compile "any language I want to write in" to a single small binary I'd take that, but except if you have this narrow case of developing a native app for a known OS version.. eh, that ship has sailed.

Also, not exactly sure when I last wrote stuff to floppy disks (reading old stuff may have happened later) - so C (et al) were much more common and most languages I like using were not even invented yet. Which might be a cop-out answer, but in the end everything with an interpreter is heavier.

malxau | 13 hours ago

Even "small" libcs are routinely half a megabyte or more.

I think that's part of OP's complaint. A while back I wrote minicrt and in the process found statically linking my CRT made smaller binaries than dynamically linking the current version of the official one; at the time the entire binary including CRT was 16.5Kb .

The theory of static linking is to only include the functions you use, so if a statically linked binary goes up into hundreds of kilobytes, it raises questions about how that CRT is constructed, or how much your program is using, or both.

noxim | 18 hours ago

Avoiding software growth is good, but it should be noted that most big applications are big because of assets, not because of the software itself. Displays are higher resolution and we are paying more focus to user experience than before. In the past text-only was a reasonable approach, but these days it's rare.

It's also worth noting that out of the list of motivations, only the first one is really tied into raw binary size. Rest are unrelated, nice things to have.

The site also spends about 200,000 bytes to deliver a 1600 byte manifesto.

spillybones | 14 hours ago

Apps that once shipped on a single floppy disk now demand gigabytes of your storage, minutes of your time, and far too much of your patience.

Sure there were a few single-floppy applications, but most of the serious software in the '80s and '90s came split across many disks. E.g. Microsoft Word v2.0 on 7 disks with 2 supplemental disks. Or Lotus 1-2-3 on 13 floppy disks. Heck, even Doom was 4 floppy disks. The "fits on a floppy" idea was never a thing, not even in the floppy disk era. People knew that you could just use multiple disks to distribute larger software.

xyproto | 17 hours ago

I'm as nostalgic as anyone, having spent hours installing games from floppies as a kid, but...

This is just pure nostalgia. Users today won't notice if a download is 1.44 MB or 2.88 MB (or more), nor will they notice the difference when running the executable.

icefox | a day ago

As someone who's played games that came on 4+ floppies, and which still came with a hundred page paper manual that had all the actual dialog in the game, I really don't need this back.

trenchant | a day ago

Sounds kinda cool to have to assemble the game in your head out of three different mediums :-) What was your favorite from that era?

icefox | 14 hours ago

"Cool" isn't the word I'd use to describe it. More like "I found the disks so I can reinstall the game and play it again, but where the fuck did the manual go?! I literally can't play the game without it. Even if the text were in the game, which it isn't, I need the manual to look up the damn copy-protection riddles." Usually accompanied by a good dose of "I have disks 1, 2, and 4, where the fuck did disk 3 go???" and "oh god dammit, disk 3 is the one that tends to have mysterious read errors, isn't it. Now I can spend 40 minutes restarting the install process from scratch and babysitting it until I get lucky and it manages to work." Occasionally accompanied by the game still crashing when you got to the part of the game that actually used data from disk 3, 'cause nobody had the time or space for checksums.

I am not nostalgic for physical media. The main utility of the manual was to give you something interesting to look at while the game was in a loading screen.

Regardless, I have fond memories of Champions of Krynn and Hyperspeed, for manuals that were actually interesting to read in their own right. Star Control 2 also came with a paper galaxy map that was deliberately outdated but gave you a surprising amount of useful hints. You don't need separate physical media to deliver those things though, I recently re-played the Star Control 2 open-source remake and it turns out they had added a button to swap between your normal starmap and the outdated one in the game itself.

thombles | 17 hours ago

Wait, you're suggesting we shouldn't have 2KB of Lovecraft quotes in every binary?

icefox | 11 hours ago

Honestly I feel like the world would be a better place if we did.

Would save some space to have them in a DLL instead, though you could say that about many things in rust's stdlib...

rdg | a day ago

spc476 | a day ago

Gee, I can remember when I could get a Linux distribution on a single floppy (Tom's RootBoot Disk). It was great as a recovery system.

abareplace | 15 hours ago

https://tinyapps.org/ is a directory of Windows/macOS software that fits on a floppy disk. From their list, I daily use the HxD hex editor and the 1by1 music player. The recent versions of HexFiend, ImageOptim, IrfanView, and WinSCP are larger than 1.44 MB, but this does not really matter as they are still small. My own app fits on a floppy, too.

Hare 1.0 will be available for purchase on a 3.5" floppy disk: https://harelang.org

kevinc | 22 hours ago

I've been using this screen saver for a week or two and it's a delight. It's part flying toasters, part "Oo I recognize that disk"

gerikson | 21 hours ago

The family was watching a game show recently and the question of how much a standard floppy could hold was posed. Kid (23) had never seen a floppy in her life (and she's more computer literate than most her age).

spc476 | 8 hours ago

I'm guessing the "correct" answer was 1.44M, but there were a lot of standard disk sizes that depend on physical size (8″, 5¼″, 3½″), density, if one side or both were used, and number of tracks. On the IBM PC alone, you had 360K, 720K and 1.44M.

gerikson | 7 hours ago

This was a general interest show, so the answer was indeed 1.44M.

If you tell young'uns that floppies used to be actually, like, floppy, they don't believe you.

(I've seen 8" floppies being used once in anger, on a phototypesetting machine)

spc476 | 6 hours ago

I was around 30 when I first saw an 8″ floppy---man, was it floppy! (I bought an old 68000 based Unix system with 8″ floppies and I think 10M hard disk) I also made "flippies". I had a Color Computer with a floppy drive, single sided only. To save money, I would judiciously use a hole punch on a 5¼″ to use the other side of the disk (most disks sold at that time were double sided). Fun times indeed.

I've seen 8" floppies being used once

I don’t think I’ve seen them in person, but if readers here have not seen WAR GAMES with the IMSAI 8080 and its 8” floppy drives and acoustic coupled modem, you really should. It’s a great movie despite being over 40 years old.