I'd strongly disagree that Gentoo is the fix for this. Gentoo might download a source patch but you'd still need to keep the full source, all the build dependencies and then recompile the whole thing. Wholly more expensive than just downloading a binary archive of the whole thing (in most cases).
Anyway, what you're asking for has been mooted before as delta-packages. Rather than downloading a whole package, you download successive upgrades and apply them.
While that might sound nice, it has serious practical problems:
- Calculating deltas on the build servers is really time and memory -expensive. These are servers that are already overworked.
- All the changes also have to be stored and listed and mirrored. That's a lot of extra disk space (the Debian version of this ran out of disk space two years ago).
- To fully upgrade from an initial release can mean downloading data that has been repeatedly patched multiple times. This is bad for both mirror and user.
- Updates take longer to apply because you're unpacking and patching from so many files. Far more expensive on the CPU than just replacing some files.
The first three points above alone spell out a situation that somebody creating and hosting packages would want to stay well away from. Remember that they're also doing this all for free. Their priorities aren't neccessarily yours. If you want to run your own mirror, I'm sure it would be possible to calculate delta-debs for your own machines.
And the current system has worked around this slightly. In an application (like a game) where large assets are unlikely to change frequently, the assets and application are split into
package-data so the first can get its upgrades without hammering the server with high-bandwidth downloads of data the user already has.
In short, the current system of downloading a whole replacement is objectively better for most people involved for most scenarios.