What software designs require clean slate 'revolution' implementations, rather than evolution? I can think of: borrow checking in a PL (existing code is unsafe), microkernels (architecture is too different from monokernels), and full REPLs (can't add type redefinition later).