@chiply @jameshowell @minad I've now read the article and enjoyed it a lot! It contains a clear explanation of the division of labor of the various packages, and I'll definitely point people to it in the future. I also agree with its comments on Helm and Ivy/Swiper/Counsel (both of which I used extensively in the past and like a lot).
One thing I don't think was mentioned about Embark is that you can use any existing Emacs command as an action. It bothered me that I needed to write trivial wrappers for commands if I wanted to use them as actions in Helm or Ivy, and that you needed the foresight to pre-register the wrapper as an action before you needed it. With embark pre-registering is never required and most of the time neither is any wrapper or glue code.
Finally, I'd like to point out the history in the article omits Drew Adams's Icicles which is from like 2006 and has a lot of this functionality! Unlike Helm and Ivy, I don't think it was a big influence on my or Daniel's packages since neither of us has used it (we mostly found out after the fact from Drew's comments on reddit that over a decade earlier Icycles already had some feature we had just implemented).