My question is pretty simple, and that is why Ido and Icomplete are both available in emacs.
I find it very strange that the two modes exist together, seeing that they both do what is essentially the same thing, incremental completion for different minibuffer queries. What I find annoying about the two is that Ido is much cleaner and nice to use, but doesn't add completion for M-x. In order for that to be implemented, you have to download an external package, smex. On the other hand, Icomplete seems like an early version of Ido, but with completion for M-x.
Really, what I'm asking, is why Ido can't replace Icomplete entirely by fully replacing all of Icomplete's features instead of replacing most of them.