Date: 2025-02-28 Do many things and do them wrong Recently I replaced an old pile of garbage OpenSSH with Dropbear. Luckily in Alpine Linux even small packages are divided into smaller parts if they are modular. Both OpenSSH and Dropbear packages are there divided into more parts, like server, client, keygen and so on. I setup Dropbear to be called from inetd, which puprose is just one thing - listen for network connection and launch program. Well made. That's rare. In my case, inetd is part of busybox-extra package. While OpenSSH can be also called from inetd and the package is also divided into more pieces, it is still pretty huge compared to Dropbear. Its job should be to do one thing. In most cases, that one thing is the only one used by users anyway. It is to connect and stay connected to some machine. But one can see all those thousands options for the client, then extra thousands for the server, like in xterm manual page. Reading for the whole night. Now imagine pretty standard setup, local machine. Connection is encrypted for no reason. Another standard environment is that connection has high latency. In that case, working in ssh is just pain or not possible at all. OpenSSH includes also scp - secure copy protocol. What's that? Get file from remote to local machine: ssh host 'cat /path/remotefile' > /path/localfile Put file from local to remote machine cat localfile | ssh host 'cat > /path/remotefile' No way in OpenSSH scp. Look at this poetry: scp [-346ABCOpqRrsTv] [-c cipher] [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] [-X sftp_option] source target 3 lovely lines of options to copy a file from one machine to other. Why then so many options of nonsense? Who even remember how to correctly type scp command? It's like tar command. Many, including me, have no idea what gibberish to type. Tar is a good example of horseshit. Most frequent usage would be probably to archive some directory or bunch of files and extract them. Look at this pile of manure: tar {-crtux} [-014578eHhjLmNOoPpqvwXZz] [-b blocking-factor] [-C directory] [-F format] [-f archive] [-I file] [-s replstr] [file] This novel can't fit even in one line. In old time of small screens and terminals, one could probably easily forget if he was trying to use ssh or tar during his keystrokes ;/ Who has forgotten the UNIX philosphy here? Output from one, input for other one? Why so many options and features in one program which should be very simple? It feels more like somebody covering and mitigating bad design with extra senseless features. Today's solution is to rewrite this junk in Rust, Go or any other language some corporation advertises as a new cool thing. It fixes nothing. From one junkyard, we end up with two rubbish heaps with different taste. Nature does not hurry, yet everything is accomplished.