As a authority line chairman myself, we was unequivocally intrigued when we saw Klaatu‘s talk, HIG for a Unix Shell, on a upcoming All Things Open schedule.
While we have always been captivated to a Unix/Linux bombard given of a pleasing simplicity—yes, really—it is always good to bond with someone who shares that appreciation. Klaatu, however, has left serve than small appreciation by defining some of a attributes that minister to a magnificence of a shell.
In this interview, he gives us a unequivocally brief glance of his ATO talk, where we devise to hear what he has to contend about it in person. There is small accessible on a Internet about HIG, so we asked Klaatu to tell us what it means and how it affects a user interface of a Linux shell. And, yes, Klaatu will tell us about his name.
I have to ask for myself as good as many others, is your name, Klaatu, an loyalty to one of my favorite movies, The Day a Earth Stood Still? And would we caring to elaborate?
It’s a double homage! First, to a (original, not a re-make) The Day The Earth Stood Still, yet also to Army Of Darkness. The former is a good film on all counts, yet we consider a biggest energy is in how it uses expectations and cinema tropes to communicate a summary that is in finish antithesis to what a sold elements represent. we will refrain from being too specific for fear of spoilers. The latter, of course, is usually a good movie, generally for a in-depth research of how forking and branching impact program projects.
When we initial got concerned in Unix and open source, we was selecting a pseudonym for a small podcast that we do called GNU World Order. we naively suspicion that in a village that values record and, frequently, suppositional fiction, a name “Klaatu” would be a quaintly problematic anxiety to my favorite movies. Of course, we have given schooled that “Klaatu” as your hoop in a tech village is rather like “Bob Smith” in a genuine world, so online we am also infrequently famous as “notKlaatu” to set me detached from a other Klaatus.
How did we get started in Unix?
Well, we was never a Windows user. The accumulative time spent on Windows in my whole life has substantially been 15 minutes, if that. we grew adult on that other blurb handling complement (OS). The jump from that to Unix correct was not unequivocally that difficult.
That said, we was not looking to go into computers, yet rather film. we was personally flattering geeky anyway, yet we went to propagandize for film production.
One day, during my invert to film school, we was reading a trade repository and there was an essay in it about how visible effects houses used Unix, and it pronounced that they had a puzzling ability to launch programs yet starting adult a interface. From that impulse on, we was fiercely extraordinary to learn how I, too, could use applications yet bothering with a tangible UI of a thing.
When we schooled that a OS I’d been lifted on was “based on Unix,” we purchased a book on how to learn Unix (it was A Visual Quickstart Guide to Unix, specifically). we started requesting all in a book to a depot we found in that OS. In a support for Emacs, that we was generally regulating during a time as a Tetris engine, we schooled about a visualisation of open source and a GPL. Eventually we got undone with consistent compiler errors and a inability to not launch a desktop unless we wanted one, so we switched to Slackware Linux and never looked back.
Incidentally, we now work in visible effects.
What many attracts we about a Unix shell?
Efficiency. we seem to have no calm for things station between me and an identified goal, and a bombard is a one thing in all computing that usually lets me do accurately what we wish to do.
A tighten second is a ability to emanate my possess operative environment. It took a while, yet once we schooled a basis of scripting, a ability to write tradition commands and scripts flat-out altered my life.
There are copiousness of other good reasons to adore a shell, yet those are a dual that ring a many for now.
What does HIG mount for?
“HIG” is a tenure we schooled from GNOME. It means “human interface guidelines”, and it is a set of specifications that advise developers how an focus should benefaction a functionality to people.
How did we spin meddlesome in Human Interface Guidelines?
Broadly speaking, we don’t consider we am unequivocally meddlesome in a topic, during slightest not in a same approach that UI designers are. But all mechanism users are a small meddlesome in Human Interface Guidelines, given it’s how we use computational devices. For me, it’s usually a doubt of how we should all collectively, during slightest in a more-or-less kind of way, determine that computers should work. It’s a bid to form a common trend in a approach applications are used.
I don’t know how automobile manufacturers do it, yet generally if we get into a car, even a ones in New Zealand (which have a motorist chair on a left), we fundamentally know where all is located. But as distant as we know, no one is forcing that common pattern on anyone. It’s usually what we have all concluded on. we consider a same pragmatism is useful in computing.
How does HIG request to Unix bombard applications?
To some degree, a HIG is forced on bombard applications by a libraries they use and a sourroundings they run in. If we write a Unix focus that runs in BASH or (t)csh or a identical shell, afterwards evidence $0 flattering many has to be a name of a executable (which does not meant that a initial fibre typed contingency be arg $0, as in a box of flitting ENV variables to a authority in BASH). That’s a good thing, and it’s one of those useful discipline that usually arrange of exists yet question. If someone designed a bombard that looked for a evidence first, we theory that would be something new, and it would substantially primarily upset many of a users.
Other than that, though, there’s a lot of flexibility, like a sequence of options and arguments, a expectancy of being stirred for acknowledgment or not, and so on. There are some things that many Unix users expect, yet that isn’t always how things work out.
I consider it helps to get together and brand what “makes sense” and what creates a many clarity when conceptualizing applications, presumably that focus is a elementary BASH book for personal use, or Python, or C++.
I consider it’s generally critical now that open source and a giveaway Unix and Linux traditions are apropos so popular. There have unequivocally been some bad implementations of Unix out there; I’d like to consider we can collectively determine to equivocate that with a bit of intelligent design.
Should HIG request to CLI commands and applications that use arguments and options, as good as to menu-driven applications?
Not a same HIG, yet there should be some non-enforceable guidelines.
Having pronounced that, though, there are some discipline we take for postulated in both. The fact that many GUI applications essay to work from tip left down to bottom right, that’s a guideline. Similarly, we do tend to structure commands from left to right, mostly presumption that a sequence is COMMAND SOURCE DESTINATION. Is that indispensably a best approach of structuring things? Should an sequence be implied? Food for thought!
What are some of a many critical HIG discipline for a Unix bombard application?
The many critical considerations for bombard applications include:
- Does a authority work in plain text? or does it have an interface (ncurses or otherwise). Can it do both?
- Does a focus force a specific sequence of options and commands, and if so, how does a user know that? Is there some kind of human-friendly delimiter to assistance humans remember that side of a equation an evidence needs to be in sequence to furnish a approaching results?
- Does a authority accept submit from stdin?
- Can a authority write to stdout?
- Does a authority yield useful feedback on apparent erring syntax? Can a authority yield useful feedback to forestall erring syntax?
- Is a authority interactive? Is there a switch to spin that on or off?
- Can we override, as partial of a command, a plcae of critical information such as config files?
- Does a authority offer unaccompanied responses to signals (HUP,USR,and so on)?
What examples can we bring of Unix bombard applications that heed to HIG and why?
The brief answer is to come to [my] speak and find out!
The prolonged answer is that a HIG is a large thing, and relates singly to any authority depending on a goals. So there are lots of commands that, we feel, are a pleasure to use. They hurl right off a fingers as we form them; a syntax roughly reveals itself. Then again, a thing that we are doing with a authority competence be confusing, so it competence not feel unequivocally friendly, simply given we don’t unequivocally know what we are doing.
So it’s a formidable thing, and we don’t consider a answer is to indicate to a genuine or illusory “perfect” command, yet to conclude a essential set of expectations and request them as they fit into a command’s self-proclaimed goal.
It’s a small like reviewing a video game. You can review a nonplus diversion to an RPG, yet we can’t unequivocally bottom your visualisation of one off a other, given they both essay toward something unique. Unix commands are a same, to some degree; not all should work a same, yet all should make clarity according to their possess determined set of rules.
And mostly, all should work like a bombard focus is approaching to work.
Do we have sold a Unix bombard focus that exemplifies a finish negligence for HIG and why?
I have one or two, yet there’s no indicate in fixing names, not usually given we competence (or competence not) know their authors, yet also given a commands themselves competence be doing extraordinary things. Hopefully, in those cases, a devs will attend my speak and go home and give some suspicion about how their commands magnitude adult to other commands.
I will call out a little-known [and quite hypothetical] authority `hijinx`, however. It is a reviled authority that we dismay using, and given a author perished in a weird collision involving an overzealous CPU fan and an captivated multimeter, it does no genuine mistreat to impugn it.
For instance, let’s contend we use hijinx, that confusingly provides a executable `hijink` not `hijinx` (I consider a author believed a unaccompanied “hijink” was some-more judicious than a plural name of his project):
$ hijink bar baz
It works good as prolonged as we use it accurately in that sequence: command, option, argument. But if we do
$ hijink baz bar
It fails. That’s irritating given what if a ‘bar’ value is a one we find myself changing many frequently? It seems sparse for a author to force me to strike a adult arrow, and afterwards alt-b, and afterwards alt-d, and form in a new option.
Think of how many nicer it competence be if we could:
$ hijinx -baz -o bar
$ hijinx -o bar -baz
And get a same formula both times?
Does a Unix bombard force a tellurian interface to heed to a singular subset of discipline compared to a GUI and, if so, how?
Off a tip of my head, I’d contend it wasn’t even a sub-set. we consider it’s some-more expected a opposite set. I’m certain there’s an evidence presumably way. I’ve never suspicion about it in that way.
The indicate is a lot reduction about a privately tangible HIG and some-more about what that stands for: tellurian interface guideline. It’s about meditative about your users, what they pattern from a interface, and what developers competence wish to do in sequence to make a interface reduction of a separator and some-more fun to use.
What sorts of user interface stipulations are imposed on a Unix bombard by a underlying OS?
I don’t know adequate about non-POSIX handling systems to know for sure, yet a usually one we can consider of are Unix signals, and presumably traffic with stdin and stdout with pipes (I have review that Powershell has pipes, yet from what we have seen they seem to be technically opposite from Unix pipes, yet we have not, obviously, looked during a formula or even used Powershell, so we can’t be sure). Everything else that we can consider of during a impulse gets rubbed by a bombard itself (BASH or tcsh or ksh or zsh), or a process we use to parse arguments (if/else checks, parsing libraries, when arguments are processed, and so on).
How does HIG impact a daily tasks of complement administrators?
It depends on what a sys admin in doubt is doing. The pleasing thing about usability is that once we learn something, usability arrange of fades divided from view. You know how to use a application, we know how it works and what we have to work around.
That falls detached when we are training something new, though. That’s when usability tends to matter a most.
Repetition also, sometimes, reveals bad interfaces. Obviously if we are carrying to do something over and over and it’s commanding ungainly work-arounds, afterwards we start to wish for some tellurian interface sanity.
What do we wish to accomplish with your speak during ATO?
I’m anticipating that developers and soon-to-be developers attend a speak and consider about how their applications can be strengthened by clever care of interface design. What’s good for a crow competence not be good for a gander, so a stretchable authority with essential syntax that during slightest balances good inner proof with a bombard user’s expectation, is a authority that people and, ideally, distributions will happily adopt.
Where can a readers go to learn some-more about HIG?
Nowhere, given there is no HIG for a shell…yet. To learn about how a bombard has developed, and given we tend to do things in a approach we do things, we rarely suggest both The Unix Philosophy and Linux and a Unix Philosophy by Mike Gancarz. They aren’t directly about interface pattern by any means, yet these books explain, in part, given Unix so successfully works a approach it does, and a lot of that can be deliberate when programming an focus for a Unix shell.
This essay is partial of a All Things Open Speaker Interview series. All Things Open is a discussion exploring open source, open tech, and a open web in a enterprise.