Oh, I
have to respond to this thread, advertising myself as I do on my wiki user page as "the offspring of James T. Klik and Lino Commando!"
The one feature of my OS which I will implement regardless of other changes is a 2-pane display, with a command line in the bottom pane. The top pane would be drawn by the current foreground app, being text or graphics as needed. It's an attempt to fuse the strengths of both GUI and CLI.
bzt wrote:Hi,
I think Solar made a perfect argument for CLI. It's always better to use command line remotely than messing around with X11 forwards or RDP.
I keep flip-flopping over this issue. In favour of remote-GUI, I have had good experiences with remote-X, back when security needs were lighter. Plan 9 does it more simply and with a better-designed security model. Against it are the constraints it places on data flow from program to GPU, and perhaps resulting complexity and difficulty of achieving high performance.
Not even Ken Thompson, who used an ed-like editor to the end of his career, saw a need to put a text-only remote interface on Plan 9. Of course, he probably had less driver trouble than we do on PCs.
I intend to go the remote-GUI route, but with such a heavy command-line presense, it's inevitable that many tasks will be accomplishable using only the command line.
bzt wrote:And also you can work a LOT faster in CLI than in any GUI, simply because you have a command history and shortcuts, plus with one command you can do something at once that would require dozens of clicks on different windows. Also it's easy to put commands in a batch file, while I haven't seen any good solution for batching GUI operations (anyone used MacOSX Automator? Just terrible, and that's the best tool I've seen so far.) So I'm sure too CLI will never be obsoleted.
Me too! In fact, I'm thinking of the GUI portion of my interface as visualization and auxiliary control. While I'd hate to be without the GUI part, the CLI is technically dominant.
bzt wrote:Just an interesting fact, even Windows is moving forward CLI from GUI more and more with every release. Just think about how much CLI support Win Vista had, and how much more Win 7 had (think about the additions of netshell, powershell, diskpart etc. etc. etc.). And now they have rewritten the terminal application for Win 10. I really doubt they would do that if there wasn't a real need and pressure from the users.
I'm very much enjoying the mouse-based copy-paste of Win10 terminal! I can't understand why open sourcers never made the same innovation to get away from the insanity of selection=clipboard.
bzt wrote:Cheers,
bzt
Cheers!
Solar wrote:There was an undertone of "one or the other" to the discussion, which got us sidetracked. A good OS, IMHO (and I think I did make this point above), would integrate CLI and GUI. In a perfect world, there wouldn't be GIMP on the one hand and imagemagick on the other -- the two would be merely two different ways to use one and the same application. Same for elinks and firefox, mutt and thunderbird, and so on.
I have to agree here!
LtG wrote:Solar wrote:
As for "obsolete"... I consider it a significant win that I can use text-only connections to remote machines this way. I can remote-access systems in my home network from my smartphone.
What about RDP or Teamviewer? Nothing CLI specific here.
Ayup! I know sysadmins who were still happy with remote X a couple of years ago. One of them found Wayland's bad design hurt him, Wayland apps suffer input synchronization problems over remote X, but that's just a measure of how stupid "progress" can get in the POSIX/FOSS space.
On the other hand, I know another sysadmin who prefers to use an ed-like command-line editor and shell-script mail client on his phone.
His argument is these programs were designed for poor keyboards, slow networks... and something else I can't remember.
I think he has something of a point. I can't get on with ed or sam -d, (the command-line editor my friend uses on his phone,) but I did quite a lot with a Forth block editor on my tablet a few weeks ago. The difference is the block editor displays the block after each change. It's much like the next point. Actually, the editor and key/command-controlled apps of colorForth were what inspired my 2-pane concept.
LtG wrote:Take grep for example, I've never met anyone who could write one of the more complex incantations in a short amount of time. If I have the data available on my Windows machine, I might just dump it in Excel and filter until I have the data set I want.
This is exactly my problem with Unix tools. I worshipped Unix and the Unix command line years ago, but I just cannot do without iterative filtering. At best, I send simply filtered output to a file, then figure out another command to filter the file contents, then maybe repeat again, but it's cumbersome when you can't edit in-place. It's better in text editors where you can run successive commands on the current text. Acme perhaps makes it easiest, of the text editors I've tried, but Excel is probably better again because it's designed for this use. Certainly my apps will be designed for it.
LtG wrote:Solar wrote:
Text interfaces depend on much less OS infrastructure.
Sure, less OS infra, but equal amount of infra nonetheless, mostly firmware.
Pretty-much. Maybe we don't have to care about the complexity, but it's there.
If you're using a ANSI-standard serial terminal or emulator, then you'll also run into bugs caused by poor serialization. Also compatibility, very few terminal emulators have ANSI-compliant keyboard emulation. The rest do vt220 and call it "ansi". There have been other compatibility problems.
Fixed-pitch text does make some programming simpler, but it's a hack.
I would like to say there's one really good thing about text interfaces in terminal emulators: all text can be copied. It's nasty when GUIs disallow text selection. Unfortunately, the way in which programs format text for display often makes a mess of the copied text.
This matter of the program formatting text for the terminal also makes problems for smaller terminals, such as phones. It's the same as text files where arbitrary spaces are replaced with new-line codes, just so they can be dumped to a terminal without proper drivers! I mean that, even though it's Unix-hate.
The feature-greed and corporate competition which ruined RTF and complexified HTML don't mean the lowest common denominator is good.
LtG wrote:I'm not sure how much this has to do with looks, but rather utility. TUI just doesn't make efficient use of the screen, with GUI you can have easily a lot more info visible at any given time.
What? WHAT? Dude, just WHAT do you... OHHHHHH I get it! You're comfortable with menus. I am very much not! The elements blur into each other, finding the right sub-menu is a headache, and
opening sub-menus is a special kind of torture! Well, that's all a bit of an exaggeration these days, I seem to have healed somewhat in the last 20 years. Still, I view menus as a last resort, and an interface which depends on them alone as poor. Thus, I am dependent on keybindings which take time to learn just like CLI, and, getting to the point, toolbars which take abominably large amounts of screen space!
To be honest about menus, there's no getting away from them really. Even a list of file names is a sort of menu, no matter how it's displayed. I just have to deal with it, but I prefer to minimize such dealings as far as is practical.
iansjack wrote:LtG wrote:
What about RDP or Teamviewer? Nothing CLI specific here.
Both are far more intensive of resources, particularly network bandwidth, than a simple SSH session. For remote access to a server, nothing beats a CLI session over SSH. And to secure RDP adequately you are going to have to tunnel it through SSH anyway, so you are just adding another unnecessary layer.
Okay, this I can't argue with.
I've known lots of sysadmins with bandwidth issues. Some of them even like the sam text editor because it's easier on the network than vi over ssh. It takes whole commands from 'samterm', can work on many large files at once...
Early in idea development, I wanted all apps in my OS to be like sam, having separate terminal and back-end portions, but not like sam in that the backend can stay running when the terminal exits. I tend to forget about it these days, but maybe I can bring it back. It could make the design really alien, but I'm kind-of doing that anyway.
Solar wrote:LtG wrote:Take grep for example, I've never met anyone who could write one of the more complex incantations in a short amount of time...
Well that could be it, then -- your experience, or lack of experience, with people who actually "grok" the other side of the argument. Personally, I'll whip up quite complex RegEx's without hestiation, simply because I
am using them in my prefered environment (Vim) all the time. Having to go through Excel (of all things...) would aggravate me to no end. Kind of a "speed bump".
I used various regexp languages (Unix, Vi, grep, ...) in Unix for 15 years, then another 10 years in Plan 9 with its single regexp syntax for everything, and I
still can't write regexps well enough to be comfortable. I'm fairly good, but I often have to debug my regexps, which is Not Fun outside of an editor like I described above. It's especially necessary for the editor to undo well.
Solar wrote:LtG wrote:Interestingly, on Windows I can't remember when is the last time I touched cmd.exe, months ago.
cmd.exe is so braindead that it's effectively useless anyway.
Indeed. I've been using 9pm under Windows, a port of some Plan 9 userspace. It's very old, and the port of the shell was never even finished, so it's really quite bad, but it's still more powerful and polished than cmd!
Solar wrote:(Kind of like trying to explain alternative drive access mechanisms. People know drive letters -- which suck -- and single root systems -- which also suck. And think the argument is about making a system more like Windows, or more like Linux, when in actual fact it's about making it better than either of them.)
YES! But is it heretical to say environment variables make either one suck less?
% d=`{pwd}
% cd $s
% mv xyzzy* $d
Solar wrote:LfG wrote:And outputting the very earliest error messages (before LFB) and then halting as text, when something goes horribly wrong at first stages, doesn't count as CLI/TUI.
But the CLI / TUI is all what you have at that point to recover the system. If you've never
seen text mode until that point (as in Windows Recovery Console, for example), and your system is geared so certain things basically
require a GUI to operate on, you're stumped.
Um... I don't yet know anything about Windows Recovery Console, but I wasn't stumped when trying to get an older machine to work with a 4k monitor the other day. RDP was no use, so I just started a VNC server.
OTOH, the fact that RDP was no use does illustrate a serious problem with GUI: E.v.e.r.y s.i.n.g.l.e i.t.t.y b.i.t.t.y f.e.a.t.u.r.e has to be provided for separately and must take up space in the UI, (even if only in a menu,) so "rarely used" features get dropped. In this case, there was no facility to open the controls for the hardware screen from the remote GUI.
Apologies for not reading the whole thread, I have to get away from the computer.
Stray thought I didn't have room for: If not for Steve Jobs' ego and power in '82, we all might have been using well-integrated CLI & GUI all along. Look up the
Canon Cat, which is what the Mac was meant to be before Jobs parasitized it to fix his own failed project. Graphical programs never got developed for it, but it had the hardware and firmware for them.
Oh and the last post's about Oberon. Acme was inspired by it. I have used Acme very extensively, and Oberon briefly. Acme is extraordinarily powerful in very little code, a huge revelation after the clumsiness of VIM and Emacs. I haven't used Oberon enough to really evaluate it, but I suspect it's less powerful due to the presence of non-text areas. Acme has more places to type commands. Both use the mouse to complement commands, you can launch arbitrary commands, scripts, or one-liners with the mouse. From experience, I have to say this is a huge improvement over just the command line!