In 2013, two things aligned and I’ve started working on Next Generation Shell.
Frustration
Enough frustration with current shells has accumulated: inability to interact with what’s on the screen (output of programs) and horrible programming languages. That was and still is driving me crazy.

Experience
I started my professional programming and DevOps (called “system” at the time) career at 2001. By 2013 I had enough experience with bash to understand that we can do better today.
Vision – Shared
A vision that was and still is shared by alternative modern shells is that we can and should fix the programming language. The implementations differ.
NGS aimed from the beginning to be “fully blown” programming language and it shows.
NGS offers facilities for running external programs that got more love than anything else that I have seen. From the top of my head: constructing command line arguments, ergonomic logging, semantic handling of exit codes (surprise, not every non-zero exit code is an error).
Vision – Unique
None of the alternative modern shells, to the best of my knowledge of course, aims to interact with output of external programs. Yes, it’s a lot of work but I think it’s definitely worth it.
I think one of the most valued features in the shell is completion (BTW, a lot of work too). In my mind here is what follows:
- Any arguments of the form “shell is not supposed to understand anything about external programs” are invalid
- Semantic “understanding” of input of external programs is implemented and is very useful. Next logical step: “understanding” and interacting with the output.
What is frustrating you in “classical” shells?
Leave a comment