I know that Alpine has a package manager but I haven't tried it because I worry that Musl might present problems compiling software (I sometimes like to compile things myself, like Vim or Emacs). Is this worry valid?
Also are there any issues compiling Go and Rust programs on Alpine?
Alpine is a very popular platform for both compiling and hosting Go applications--especially static, no n-CGO binaries--given it's minimal footprint.
A common issue people have with Alpine is musl libc's DNS resolver, which can behave differently (thus confusingly) than glibc's. But that wouldn't effect Go applications unless CGO is enabled and it uses the libc resolver. Go's native resolver behaves differently than glibc's, too, but I don't think that's any more of an issue. And the musl resolver has fewer quirks today than it used to, so fewer surprises than a few years ago.
I have to admit to still having some philosophical discomfort over SystemD as I feel that it encompasses too much functionality. That said, it does work and that is probably the most important thing.
Linux (the kernel) has LOTS of functionality anyone barely use or even know. Without that, there's no tooling around this functionality, no adoption. Not even all TCP socket options (setsockopt) are documented!
Systemd pushed forward proper usage of capabilities, better watchdogs (in a broader sense, as systemd supports all kinds of them), isolation, policies, and so on and so forth. You need it all to efficiently control the daemons, and it's great when it's all available in a single suite.
Because of SystemD, you can't use Linux control groups. On systemd systems, only systemd is allowed to touch control groups. I think they even tried to make the kernel enforce this but they failed, so now it just breaks systemd if you do.
Also are there any issues compiling Go and Rust programs on Alpine?