Note: I do not have a copy of Snow Leopard itself, nor do I work for Apple, so these claims are not substantiated from anything that might be covered by an NDA from Apple.
Almost every OS X application has at least one .nib bundle. Developers may be familiar with these bundles, but those who aren't may not be aware that each window you see rendered on your desktop (generally) has at least one .nib bundle that holds the information on how to display that window. These files are generally created with Interface Builder.
Figure 1. Interface Builder, making a .nib bundle
These .nib bundles usually live in the .lproj directories of the Contents/Resources directory within each bundle, biding their time until you open the application and want to open a window. These .nibs can take up a lot of the space of your larger applications. For example, in the stock version of Mail.app in my Application's folder (288.9MiB), these .nib bundles take up a whopping 223.1MiB!
Figure 2. Look at all those nibs!
Inside each .nib bundle lives a couple of smaller .nib FILES (classes.nib, info.nib, keyedobjects.nib, and designable.nib are just some of the .nib FILES in each .nib bundle), and lately, designable.nib is one of the largest files. However, surprisingly enough, designable.nib is unnecessary once you've compiled an app! Indeed, taking the designable.nib files in Mail.app together, I have 199.6MiB of designable.nib files I don't need!
Figure 3. There's the culprit!
Now here's the funny part... If I remove those designable.nib files from my Mail.app, suddenly, my Mail.app is only 89.3MiB big! That's a lot closer to that 91.1MB touted in that Applications folder isn't it?
Want more proof that it's just the designable.nib files? Take a look at this:
Application | Leopard Size (MiB) | Leopard Size w/o .nib (MiB) | Snow Leopard Size (MiB) |
---|---|---|---|
Address Book.app | 58.2 | 44.2 | 40.7 |
DVD Player.app | 50.8 | 50.8 | 42.4 |
iCal.app | 91.1 | 44.8 | 47.9 |
iChat.app | 110.5 | 54.9 | 51.8 |
Mail.app | 288.9 | 89.3 | 91.1 |
Safari.app | 65.7 | 55.8 | 60.5 |
Utilities/Airport Utility.app | 42.6 | 42.6 | 4.6 |
Utilities/Disk Utility.app | 30.8 | 30.8 | 16.2 |
Utilities/Grapher.app | 68.2 | 32.5 | 5.6 |
Utilities/Terminal.app | 38.6 | 21.6 | 8.4 |
It is interesting to note that SOME applications still show some significant slimming (DVD Player.app and those in the Utilities directory), but even these sizes can be explained away by removing other 'extra' files: namely extra languages. By limiting the translations to JUST English, we get the following sizes:
Application | Leopard Size w/o .nib (MiB) | English-only Leopard Size w/o .nib (MiB) | Snow Leopard Size (MiB) |
---|---|---|---|
DVD Player.app | 50.8 | 10.6 | 42.4 |
Utilities/AirPort Utility.app | 42.6 | 5.5 | 4.6 |
Utilities/Disk Utility.app | 30.8 | 12.3 | 16.2 |
Utilities/Grapher.app | 32.5 | 5.8 | 5.6 |
Utilities/Terminal.app | 21.6 | 2.8 | 8.4 |
It's a little bit less perfect a match, but even so, you can see how these sizes can get small in a hurry, without even recompiling!
Special thanks to Orchard Spy for leaking the contents of the Application directory, and the guys at Rixstep for spilling the beans on designable.nib in the first place.