NLI: The Future of Usability

Posted 6 months, 2 weeks ago | Originally written on 18 Oct 2023

One of the most enduring ways to present software tools is through command line interfaces (CLIs). They are the bread-and-butter of most scientific computing and core software tools such as Git are built around them. CLIs have, over the years, converged on a pseudogrammatical style consisting of the following components:

  • main entry point
  • verb or utility under which a verb is specified
  • noun or options

For example, with Git, the main entry point is the literal git followed by either a verb or noun, several options including the object to be acted upon. Here are some actual examples.

To add a file to be tracked by Git we use the add verb then specify the file(s) to be added.

git add file.txt

Once the file is added, you can commit it Git using the commit verb, which by default commits all the files recently added.

git commit file.txt -m "A message to describe this commit"

Another powerful tool which also follows a pseudo-grammatical format of its commands is Spack, which is used to avail various software applications on a cluster in a non-contentious way. The main entry point is module followed by a verb such as load, avail, purge, unload, switch followed by the object to be acted upon. For example:

module avail python
module load python/3.10.10
module unload python/3.10.10
module switch python/3.10.10 python/3.7.0
module purge # all modules will be unloaded

So, what?

Well... enough with pseudo-grammatical CLIs! Isn't it time to exploit natural language mediated by an AI agent? In this way, the user will use their natural language and chat their way to functionality.

what modules are available?

Furthermore, the ability of the AI agent to maintain context will then allow something like this:

show me those for python

If the AI agent knows about the relevance of individual versions of applications then:

load the one compatible with <prog> # replace python3.10 with python3.7

And finally:

purge everything

Notice that the entry point is only mentioned once and sets the context. This is similar to running everything in a decidated shell but with the added benefit that you can use pronouns (those) or plain verbs (purge) and implied tasks (the one compatible).

I believe this is the future of computing: meeting people right where they are, with natural language interfaces.