Interactive Shell

andychu edited this page Feb 20, 2018 · 38 revisions

Project Goals

Rich Command Shells

Rich Terminals

Models for Integrating Commands and Graphics

IDEs

  • RStudio -- Has a REPL and different types of panes for displaying an interacting with data. Notably, the entire IDE runs on the desktop and it runs in a browser. I think this is done with Google Web Toolkit.
    • Oil will borrow the model of R data frames (as well as borrowing from enhancements like dplyr, data.table)

Protocols

  • List of Jupyter Kernels -- how do they work? There is a bash kernel. How does it do completion? What hooks does oil need to support kernels?
    • IBash Notebook -- Has the ability to display images inline with the display command. Two problems: buffering, and interacting with REPLs you spawn. These seem like pretty big problems.
  • Microsoft's Language Server Protocol
    • Protocol History -- Is this suitable for shell? Oil will have functions, so at the very least we want to complete function arguments, as well as command line arguments. I think common queries are for declarations and uses, which apply in big shell programs as well.

JavaScript Libraries for the Browser

Implementation Issues

  • Buttery Smooth Emacs -- nice observations about legacy architectural decisions and fixes for them!

  • Adventures in Terminal Emulators -- terminal emulators involve parsing, keyboard/graphics, and Unix/libc interaction

  • Typing with Pleasure -- Nice article about typing latency. I can feel the difference in typing latency when I hit Ctrl-Alt-F1 for a text mode terminal vs. when I'm in an Ubuntu desktop, and especially a web browser.

  • Terminal and Shell Performance -- Latency distribution for different terminal emulators. How did he measure it?

Essays / Articles

Learning from Terminals to Design the Future of User Interfaces -- I agree with almost all these ideas. Current UIs are bloated and slow. Terminals are good but limited. They need graphics, images, tables, mouse interactivity, etc.

Projects

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.