Second-System Effect: A real-world example

ESR described second-system effect in the Jargon File long ago. So here's a real-world example in a widely-used set of programs. Have a look at a configuration file for GRUB 0.97:

default 0 # first one's the default
timeout 30 # 30 seconds at boot menu

title=Linux 2.6.15
root (hd0,4)
kernel /boot/2.6.15 root=/dev/hda5

title=Linux 2.6.11
root (hd0,4)
kernel /boot/2.6.11 root=/dev/hda5

...short, simple, easy to understand, and you can probably tell what's going on here even without the comments and even if you've never configured a boot loader before. Compare that to a GRUB 2.0 config file. Yes, that's right, it's 185 lines long instead of 10, and so complicated that it wasn't written by hand, but generated by another program from templates. (Purists may note that the first 80 lines of the 2.0 config file are things that GRUB 0.97 does implicitly and automatically.) And it does exactly the same thing from the user's point of view—make a boot menu that allows you to choose between several kernels.

Sure, GRUB 2.0 has more features. GRUB 2.0 can boot from a disk that uses GPT and EFI instead of DOS disk labels and BIOS, and GRUB 0.97 can't do that. Everything new uses GPT/EFI. So obviously something had to change. But was it necessary to make it that much more complex?

Bootloaders on the x86 have to do some complicated things because of technical limitations present in the 1980s, decisions Intel made to get around these limitations, and people's insistence on stuff that was written then continuing to work in the exact same way. Then "Secure Boot" happened, and things got even worse. I still can't help thinking that there must be a better way than this.