If anyone is interested in developing a shell even further, checkout rustyline[0]. It makes it very simple to add keyboard shortcuts (Ctrl-C), completion, and even history.
There's also liner[1], which is part of the redox-os project, which also has a lot of the same features.
I'd second the recommendation for rustyline. I played around with it a bit while reviewing the rush[0] project, another shell implemented in Rust for learning purposes.
Useful link (thank you) but to be honest I was after a more complete list because nothing breaks usability more than something being familiar but not behaving quite the same exactly. But I'll stop being a lazy arse and Duck Duck Go the answer myself :)
ctrl+c (as well as ctrl+\ and ctrl+z) is a little different from other shortcuts because they're captured by your TTY rather than your running application - though you can catch the interrupt that ctrl+c et al sends.
Lesser known fact: you can also redefine which keys you want to raise SIGINT, SIGQUIT and SIGTSTP with.
I think the problem with Signal is that it requires a phone number to sign up: which some people may not feel comfortable doing.
On the other hand irc is nice, but it doesn't exactly have the media sharing tools that have become standard in chat clients (Discord, Slack, etc.).
Although it is a little early for France to choose Matrix, at least e2e is becoming more standard, and countries are endorsing it.
What I don't understand about NN is how it would be enforced. Would whitelisting services equate to whitelisting ip's? That seems problematic considering how many companies use AWS or another cloud platform as a cdn or server. Wouldn't Amazon, Google, Microsoft be for NN as it would directly affect their cloud services?
DNS is a thing. Keep a list of accepted domains. As DNS resolution occurs populate a cache of IP addresses that you can then whitelist. Not hard, a competent developer could build something solid in a week or so using existing tools.