Not particularly relevant to the core article, but just a dumb thought re: the LSP/LS annoyance mentioned in the intro.
I think maybe some of it stems from 'ls' the command. If I saw something called py-ls instead of py-lsp, I may think it's a python based ls command. "Name Collision" as it were.
Anyways off to read the rest of the article...