Also, type system ‘soundness’ is a pretty empty desire. It’s easy to create a type system that is formally sound, yet not useful. This is the same argument as ‘type correctness.’ Java programs were ‘type correct’ before Java had generics, and the type system was extremely limited.
So types are an inherently meaningless goal, because types can mean so many things.
Don't confuse not-expressive with articulate. Rust requires your to be articulate about what you're doing so you don't gloss over ownership details with fancy one liners like is common in other languages. You can be both expressive and articulate. Not worrying about memory ownership, while possible in other languages, is not the hallmark of expressiveness. For example, imagine a C analog to a Rust program that implements all the same checks and memory discipline that Rust does.. Rust is way more expressive, relatively.
Like everything human, programmers can be polar opposite without anyone being "obviously wrong."
Whatever rolls the ball.
Ruby also is a very expressive and clean language. I just don't get why you put Scala or Kotlin on unsloppy side.