We may need to re-think fundamental concepts of software design
For instance, code reuse. Should we really reuse that piece of code in a radically different context?
Or versioning. Is the next version really better for all users?
Or software size. Right now, we seem not to care whether software is kilobytes or gigabytes, as long as it seems to have the same behavior. Is that reasonable?