Smex has not been updated since late 2015. Amx was originally a fork of
smex, but as since evolved much further into it's own thing.
Among other things is supports other completing backends, and ivy with
it's fuzzy matching feels rather nice. I'm keeping ido-mode for
everything else, but specifically for M-x I'll give ivy a try.
I mostly use C-x C-m instead of M-x as I for some reason find it less
annoying to type. I really like helm-command's helm-M-x function, but I
find slightly too slow and slightly too intrusive than smex.
Hence I'm switching back my main keybinding to smex, but still leaving
helm-M-x bound to the M-x keybinding I use very rarely, just so I can
still access it when I need to.