The basic idea is that the client and server could be a lot smarter about getting updated images to the client. This may be related to dynamic content.
Currently, images are handled by sending a checksum for each image, and then client downloads those that are new. This works, but makes doing all this checking at start up too slow to be feasible, even on fast links. And for the most part, this isn't very efficient - images do not change very often.
Instead, I would see the server maintain a table like:
#base_Revision update_revision checksum URL 2353 2353 23896752987 http://foobar.com/img2353 ftp://abc.org/img2353 2353-local 2353-local 23723098638 http://foobar.com/img2353-local ftp://... 2353 2985 35489345842 http://foobar.com/img2353-2985 ftp://.... 2985 3142 ... ... 2353 3142 ... ...
In that first line (2353/2353) that denotes the basic image package. Ideally, an updated client is distributed with that image set, so client wouldn't need to download it.
The second line is used to denote the local changes the server has. For example, the user may have downloaded the server, added a couple archetypes, and thus now has that local set.
The next line (2353/2985) is an update package. The server was updated to version 2985 of the archetypes at some point, and that is now the file to get images up to date at that point.
Following lines (2985/3142) denote that server has now been updated to version 3142. There are two updates available - one to go from the base to that version (2353/3142) and one to go from the last update to latest version.
The advantage here is that it makes it very quick for the client to know what image files it needs - it looks at what revision it has, and see what it needs to get to. The download may still take a little while, but downloading few big files is almost certainly faster than many small files. And by using URL, it is now possible to put those media files in fast locations.
I believe most of this could be done automatically - the collect script (or whatever) just has to keep track of what has changed - maybe the bmaps file now includes checksum values, and collect script reads that in so it can see what is different. There would also need to be different versions of the bmaps file stored away, but not a problem there. Ideally, rather than the bmaps always being written in alphabetical order, new images get added on the end. In this was, the name to number mapping also remains constant and doesn't need to get sent down every time. The part that would likely need to be manually done is putting the files on the ftp/web server. Probably needs to be some confirmation on this being pushed update. For example, I might be experimenting and running make collect a bunch of time with an image here and there - not until I'm finished do I want to bundle those into an updated revision.
For folks using official server releases with no added archetype, it means that it will know very quickly it has an up to date image archive.
I'd suggest that this be made the standard way, so all the messy caching of data on the client gets removed - at start, it will know it has all image data it needs at hand. And if the image to name numbers is also stabilized, it means that code goes away.