http://www.youtube.com/watch?v=5PmHRSeA2c8
The most relevant parts start at about 6min and 41min.
Highlights:
- .deb vs .rpm misses the whole point. The problem is application writers just want to ship an application binary for "Linux", but it is a nightmare.
- Except for the kernel which strives for ABI stability, everything else in the Linux distros constantly break binary compatibility, including the most important library, glibc.
- Package maintainers are forced to use shared libraries for everything, even packages that are unstable and not well used which means apps will break
- You can't install packages under these systems as non-root
- He ships binaries for his SCUBA diving app for Windows and OS X. He only ships source for Linux. That's sad.
- Static linking is a possible solution, but that is sad too.
(For the record, he points to Valve as a potential savior but says they will probably do the sad thing of static linking. They aren't doing quite this. They ship a set of dynamic libraries called Steam Runtime that all Steam games can draw from. Better than static linking, but still kind of sad.)
At the 41 minute segment, a user celebrates the "good backwards compatibility" for a 19 year binary he still has, and Linus points out that is "patting ourselves on the back", but doesn't address the real compatibility issues which are modern binaries.
I can attest to the glibc hell. Another simple example is clock_gettime(). Just trying to ship a binary between Ubuntu 14.04 and 12.04 is enough to bang your head. (I think this problem appears between 12 and 13 too.) On one version, it is found in glibc, but in the other it is in librt. This prevents the binary from working on both.
Linus also criticizes Java (mentioned in the parent). That didn't work for him either.
As for Windows, Windows still has DLL-hell. It's sad that Microsoft won't ship their Visual Studio common C and C++ runtimes with the OS (MSVC*dll), even though they finally put version numbers in the file name now. And they make it harder than it should be to deploy your app with them. However, this is still a vast improvement over what Linux distros are doing (as Linus points out).
(edit: formatting)