Except the user-base wants infinite customizability, and users are often to mess with it. And getting the code to just work together nicely is a nightmare, where OS updates can break drivers, forcing you to try to jerry rig a solution that partially works.