10 ms·
The terminal of the future
- wredcoll 10mo agoThe terminal of the future is called a web browser.
- add-sub-mul-div 10mo agoThat would be quite an own goal, to invite an extra middleman into the mix. Especially when so many people will go the path of least resistance and use a tech giant product as that middleman.
- wredcoll 10mo agoI mean, what is a terminal emulator? It's a program that displays the output of other programs "inside" it. Terminal emulators display grids of characters using all sorts of horrifying protocols. Web browsers display html generated by other programs.
- unixplumber 10mo ago> Terminal emulators display grids of characters using all sorts of horrifying protocols. What sort of "horrifying protocols"? The entire VT220 state machine diagram can be printed on a single letter- or A4-sized sheet of paper. That's the complete "protocol" of that particular terminal (and of any emulator of it). Implementing the VT220 with a few small extensions (e.g., 256 colors or 24-bit colors) wouldn't be too onerous. I implemented such a parser myself in probably a few hundred lines of code, plus a bit more to do all of the rendering (drawing glyphs directly to a bitmapped display, with no libraries) and handling user input from a keyboard. You'd have a difficult time properly parsing and rendering a significant subset of HTML in less than a few _thousand_ lines of code. Edit to add: terminal emulators often implement other terminals like VT420, but the VT220 is enough for the vast majority of terminal needs.
- wredcoll 10mo agoI haven't personally implemented one but I'll quote someone who has spent a lot more time on it: > Many of these implementations are ad-hoc, one-off solutions. They aren't using any shared library or codebase.2 Terminal emulation is a classic problem that appears simple on the surface but is riddled with unexpected complexities and edge cases.3 As a result, most of these implementations are incomplete, buggy, and slow.4 [1] (I mean, it's possible html/css deserves to be called horrible also but they produce an undeniably superior result) [1] https://mitchellh.com/writing/libghostty-is-coming https://mitchellh.com/writing/libghostty-is-coming
- rbanffy 10mo ago> VT220 state machine diagram can be printed on a single letter- or A4-sized sheet of paper. Does it cover Tek and ReGIS? Where can I find it?
- shirro 10mo agoIt could have been. The platform got taken over by a very different culture and has tended to serve different purposes. The web solves problems that are almost impossible to properly solve with a terminal, particularly with rendering of more complicated languages and display and interaction with sophisticated visualisations. Pushing the terminal further while maintaining compatibility, performance and avoiding a terminal war with incompatible protocols is going to be a struggle.
- alwillis 10mo agopushing the terminal further while maintaining compatibility, performance and avoiding a terminal war with incompatible protocols is going to be a struggle. Unless someone creates a cross-platform, open source, modern and standards compliant terminal engine [1]. [1]: https://mitchellh.com/writing/libghostty-is-coming https://mitchellh.com/writing/libghostty-is-coming
- hastamelo 10mo agoopened on the chatgpt page
- mrandish 10mo agoYes, this was my first thought too. I haven't used a hardware text terminal since the 80s so maybe I don't get where the TFA is coming from? It starts out by stating "This post is part 6 of a multi-part series called 'the computer of the next 200 years'". Given that context, why is the focus on the evolution of 1980s VT100-type protocols? I'm at home and there are over a half dozen different devices within 25 ft which come standard with an HTML browser. Sure, modern browsers have some incompatibilities at the edges but if you're in need of a multi-decade, platform agnostic, lingua franca then W3C minimal baseline HTML/CSS + ECMAscript seems like the obvious winner (with no viable second place really). Don't get me wrong, I'd be quite interested in a vintage computing discussion on the evolution of VT-100/220 etc terminal protocols. There were some interesting things done into the 90s. That's actually what I clicked in expecting. Of course, those were all supplanted by either XWindows (which I never got to use much) or eventually HTML/CSS. And if we're talking more broadly about structured page description languages, there's no shortage of alternatives from NAPLPS to Display Postscript.
- anon7725 10mo agoI don’t know how you work, but I spend a good portion of my day in a terminal while working on AI-type projects. The terminal never left.
- wredcoll 10mo agoI'd like to make the distinction between text, indeed, word/command based interfaces and "terminal". It so happens that right now one is synonymous with the other but there's no instrinsic requirement. There's probably something to be said for the inherent constraints imposed by the terminal protocol, but, again, we can build the same things without that.
- veltas 10mo agoEverything they're asking for my head was just screaming the whole time "this is a web browser".
- rbanffy 10mo agoBefore that there were screen oriented terminals, of which the 3270 is still in use.
- xixixao 10mo agoThis might be useful (maybe) to the author: I am in a group (probably small, but I don’t think negligeble) that gave up on Warp because it doesn’t support standard or custom command completions [0] Some lesson must surely be drawn from this about incremental adoption. [0] https://github.com/warpdotdev/Warp/issues/1811 https://github.com/warpdotdev/Warp/issues/1811
- jynelson 10mo agoyeah! so i somehow forgot to include this in the post, but one of the thing i would want as part of this is tab complete that integrates with the shell, essentially it would make an RPC call (in the step 3 sense). there’s things that work like this already today, they’re just extremely cursed ^^ but that’s never stopped me before. https://github.com/Aloxaf/fzf-tab?tab=readme-ov-file#difference-from-other-plugins https://github.com/Aloxaf/fzf-tab?tab=readme-ov-file#differe...
- zadjii 10mo agoY'know, I spent a week investigating doing something similar with the Windows Terminal about 18 months ago: https://github.com/microsoft/terminal/issues/16495#issuecomment-1984745678 https://github.com/microsoft/terminal/issues/16495#issuecomm... There's even more under the "Updates archive" expando in that post. It was a pretty compelling prototype. But after I played with Polyglot Notebooks[1], I pretty much just abandoned that experiment. There's a _lot_ of UI that needs to be written to build a notebook-like experience. But the Polyglot notebooks took care of that by just converting the commandline backend to a jupyter kernel. I've been writing more and more script-like experiments in those ever since. Just seems so much more natural to have a big-ol doc full of notes, that just so happens to also have play buttons to Do The Thing. [1]: https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.dotnet-interactive-vscode https://marketplace.visualstudio.com/items?itemName=ms-dotne...
- adzm 10mo agoActually a really neat concept with building that into windows terminal. I remember seeing this a while ago. Personally I love the notebook style interactive documents and hope there are more going forward.
- TheTaytay 10mo agoI hadn’t seen these yet but have been low-key looking for this for a while. I think something like a polyglot notebook might be a better “system” for a person or an LLM to manipulate to achieve something…
- shellkr 10mo agoThis I am afraid does not feel as the right thing to do. I think the KISS-principle is a good standard to follow and while terminals have to do more than one thing, it should not do everything. Complexity leads to instability. Terminals has to be nimble and not clumsy behemoths like web browsers.
- Etheryte 10mo agoTerminals are far from simple, that's the whole problem. We carry the weight of decades of technical constraints and arbitrary decisions on our shoulders every time we fire up a terminal emulator.
- zazaulola 10mo agoWhat do you mean by “terminal”? Perhaps you are referring to something like a VT100. https://commons.wikimedia.org/wiki/File:DEC_VT100_terminal.jpg#/media/File:DEC_VT100_terminal.jpg https://commons.wikimedia.org/wiki/File:DEC_VT100_terminal.j... I may disappoint you with the fact that IBM PC-compatible computers have replaced devices of that class. We can only observe certain terminal emulators in some operating systems. There have been many attempts to expand the functionality of these emulators. However, most features beyond the capabilities of VT100 have not caught on (except UTF-8 support). I do not believe that anything will change in the foreseeable future.
- cpendery 10mo agointeresting post! shell integration has gotten a lot better since the new ConPTY on windows doesn’t strip OSC sequences & send them ahead of the text
- skydhash 10mo agoI read the whole thing and at first glance, it seems like a whole NIH list of wishes. We already have alternatives to the terminal, but the article have no mentions of them: - Emacs (inherited from lisp machines?). A VM which is powered by lisp. The latter make it easy to redefine function, and commands are just annotated functions. As for output, we have the buffer, which can be displayed in windows, which are arranged in a tiling manner in a frame. And you can have several frames. As the buffer in a window as the same grid like basis as the terminal emulator, we can use cli as is, including like a terminal emulator (vterm, eat, ansi-term,...). You can eschew the terminal flow and use the REPL flow instead (shell-mode, eshell,...). There's support for graphics, but not a full 2d context. - Acme: Kinda similar to emacs, but the whole thing is mostly about interactive text. Meaning any text can be a command. We also have the tiling/and stacking windows things that displays those texts. I would add Smalltalk to that, but it's more of an IDE than a full computing environment. But to extend it to the latter would still be a lower effort than what is described in the article.
- jynelson 10mo agoi would describe the main idea of the post as opening up the data model of the terminal. the list of wishes are an example of things you can build once you've done that, not the primary reason that opening the data model is useful.
- spudlyo 10mo agoEmacs also has Org-mode and org-babel, which can work a lot like a Jupyter notebook, and can even talk to jupyter kernels. I do a lot in Emacs, especially now that I'm comfortable with GPTel. I open a poorly aligned, pixelated PDF scan of a 100+ year old Latin textbook in Emacs, mark a start page, end page, and Emacs lisp code shells out to qpdf to create a new smaller pdf from my page range to /tmp, and then adds the resulting PDF to my LLM context. Then my code calls gptel-request with a custom prompt and I get an async elisp callback with the OCR'd PDF now in Emacs' org-mode format, complete with italics, bold, nicely formatted tables, and with all the right macrons over the vowels, which I toss into a scratch buffer. Now that the chapter from my textbook in a markup format, I can select a word, immediately pop up a Latin-to-English dictionary entry or select a whole sentence to hand to an LLM to analyze with a full grammatical breakdown while I'm doing my homework exercises. This 1970s vintage text editor is also a futuristic language learning platform, it blows my mind.
- thatcherc 10mo agoI appreciated the Pluto.jl mention! Going from Pluto notebooks that understand data flow to Jupyter notebooks where you have to tell the computer which order to run the cells in is always baffling to me. Why doesn't Jupyter know the run order and dependencies already? The way Pluto handles dependencies between code cells is really just so nice.
- walterlw 10mo agoIf you haven't yet do check out Marimo [0] https://marimo.io/ https://marimo.io/
- wrs 10mo agoRe "stage 2: persistent sessions", iTerm2 already does this. The PTYs are owned by background processes independent of the GUI application. So iTerm2 can upgrade the application without interrupting the running terminal sessions.
- jynelson 10mo agothis is really cool omg! i didn't know that, i'll do some research. one of the strange things to me about the terminal landscape is how little knowledge sharing there is compared to other domains i'm familiar with. iTerm has a bunch of things no one else has; kitty influenced wezterm but otherwise no one else seems to have valued reflection; there's a whole bunch of extensions to ANSI escapes but most of them are non-standard and mutually incompatible. it's weird. if i compare to something like build systems, there's a lot more cross-pollination of ideas there.
- lproven 10mo agoYou do make a good point there. There's a tonne of insular parochialism: "my tool is the best tool and I will loftily ignore the others." This is why I wrote this: https://www.theregister.com/2025/06/24/tiling_multiplexers_survey/ https://www.theregister.com/2025/06/24/tiling_multiplexers_s... Trying to bring a bunch of related tools together in one place and compare and contrast them.
- 1718627440 10mo agoAnd GNU screen, and GNU Emacs and Vi and ...
- lproven 10mo agoIf we are going to broaden this to Screen and its "TUI" style features, then the most complete effort at a programmable TUI in the Linux space I've seen is `desktop-tui`. https://github.com/Julien-cpsn/desktop-tui https://github.com/Julien-cpsn/desktop-tui It is incomplete but takes what is almost a side aspect of TWIN and runs with it. https://github.com/cosmos72/twin https://github.com/cosmos72/twin TWIN is nearly 20 now and does quite a lot. It even has a Wikipedia page. https://en.wikipedia.org/wiki/Twin_(windowing_system) https://en.wikipedia.org/wiki/Twin_(windowing_system) It runs on lots more OSes than just Linux.
- joshu 10mo agolots of terminals these days support imgcat and i rely on it heavily: https://iterm2.com/documentation-images.html https://iterm2.com/documentation-images.html
- thomasahle 10mo agoI expected this to be about some "AI first" terminal. But the article doesn't mention AI at all, for better or worse...
- quasarj 10mo agoFor better, my friend
- deleted 10mo ago[deleted]
- cb321 10mo agoAny article about this topic that does not at least mention https://arcan-fe.com/about/ https://arcan-fe.com/about/ feels incomplete. (Also, Arcan is already available.)
- jynelson 10mo agowhoa this looks fascinating, i've never heard of it before! thank you for the link :)
- lproven 10mo agoI was thinking of Arcan and the Lash#Cat9 setup by the end of your second paragraph. I'm very surprised you had not met it: it seems so directly aligned with your interests and goals, but all you seemed to talk about was Jupyter, a tool which I tried and TBH discarded after 10min. It is very hard to explain Arcan but I tried: https://www.theregister.com/2022/10/25/lashcat9_linux_ui/ https://www.theregister.com/2022/10/25/lashcat9_linux_ui/ I talked to Bjorn Stahl quite a bit before writing it, but he is so smart he seems to me to find it hard to talk down to mere mortals. There's a pretty good interview with him on Lobsters: https://lobste.rs/s/w3zkxx/lobsters_interview_with_bjorn_stahl https://lobste.rs/s/w3zkxx/lobsters_interview_with_bjorn_sta... You really should talk to him. Together you two could do amazing things. But IMHO let Jupyter go. There's a lot more to life than Python. :-)
- ingenieroariel 10mo agoTo add to lproven's point. An article called "A Spreadsheet and a Debugger walk into a Shell" [0] by Bjorn (letoram) is a good showcase of an alternative to cells in a Jupyter notebook (Excel like cells!). Another alternative a bit more similar to Jupyter that also runs on Arcan is Pipeworld. [0] https://arcan-fe.com/2024/09/16/a-spreadsheet-and-a-debugger-walks-into-a-shell/ https://arcan-fe.com/2024/09/16/a-spreadsheet-and-a-debugger... [1] https://arcan-fe.com/2021/04/12/introducing-pipeworld/ https://arcan-fe.com/2021/04/12/introducing-pipeworld/ PS: I hang out at Arcan's Discord Server, you are welcome to join https://discord.com/invite/sdNzrgXMn7 https://discord.com/invite/sdNzrgXMn7
- imiric 10mo agoI dread reading these articles written by people who perceive the command-line interface / terminal / shell to be this archaic system, and propose "modernizing" it by cramming whatever UI/UX they're most familiar with. The last thing a command-line terminal needs is a Jupyter Notebook-like UI. It doesn't need to render HTML; it doesn't need rerun and undo/redo; and it definitely doesn't need structured RPC. Many of the mentioned features are already supported by various tooling, yet the author dismisses them because... bugs? Yes, terminal emulators and shells have a lot of historical baggage that we may consider weird or clunky by today's standards. But many design decisions made 40 years ago are directly related to why some software has stood the test of time, and why we still use it today. "Modernizing" this usually comes with very high maintenance or compatibility costs. So, let's say you want structured data exchange between programs ala PowerShell, Nushell, etc. Great, now you just need to build and maintain shims for every tool in existence, force your users to use your own custom tools that support these features, and ensure that everything interoperates smoothly. So now instead of creating an open standard that everyone can build within and around of, you've built a closed ecosystem that has to be maintained centrally. And yet the "archaic" unstructured data approach is what allows me to write a script with tools written decades ago interoperating seamlessly with tools written today, without either tool needing to directly support the other, or the shell and terminal needing to be aware of this. It all just works. I'm not saying that this ecosystem couldn't be improved. But it needs broad community discussion, planning, and support, and not a brain dump from someone who feels inspired by Jupyter Notebooks.
- jynelson 10mo ago> Great, now you just need to build and maintain shims for every tool in existence, force your users to use your own custom tools that support these features, and ensure that everything interoperates smoothly. Yes, this is the work. https://becca.ooo/blog/vertical-integration/ https://becca.ooo/blog/vertical-integration/
- vacuity 10mo agoCurrently being discussed at https://news.ycombinator.com/item?id=45891772 https://news.ycombinator.com/item?id=45891772
- kloud 10mo agoGreat thought provoking article! Indeed, typing commands on the command line feels primitive like typing code into interactive interpreters (python, irb, etc.). Those are primitive REPLs. With lisp REPLs one types in the IDE/editor having full highlighting, completions and code intelligence. Then code is sent to REPL process for evaluation. For example Clojure has great REPL tooling. A variation of REPL is the REBL (Read-Eval-Browse Loop) concept, where instead of the output being simply printed as text, it is treated as values that can be visualized and browsed using graphical viewers. Existing editors can already cover the runbooks use case pretty well. Those can be just markdown files with key bindings to send code blocks to shell process for evaluation. It works great with instructions in markdown READMEs. The main missing feature editor-centric command like workflow I can imagine is the history search. It could be interesting to see if it would be enough to add shell history as a completion source. Or perhaps have shell LSP server to provide history and other completions that could work across editors?
- ellieh 10mo ago> It could be interesting to see if it would be enough to add shell history as a completion source. Atuin runbooks (mentioned in the article) do this! Pretty much anywhere we allow users to start typing a shell command we feed shell history into the editor
- rainingmonkey 10mo ago> It could be interesting to see if it would be enough to add shell history as a completion source. Fish shell does this too
- art-w 10mo agoTwo interesting projects in that space: - https://arcan-fe.com/ https://arcan-fe.com/ which introduces a new protocol for TUI applications, which leads to better interactions across the different layers (hard to describe! but the website has nice videos and explanations of what is made possible) - Shelter, a shell with reproducible operations and git-like branches of the filesystem https://patrick.sirref.org/shelter/index.xml https://patrick.sirref.org/shelter/index.xml
- jynelson 10mo agoomg i've wanted something like shelter for literal years it "cheats" a little because it requires the underlying filesystem to support snapshots but it's still really really cool, thank you for the link!
- hamasho 10mo agoI tried to find a terminal which can shows images, videos, and other media. I know it's not a UNIX way, but sometimes it can help. There are multiple options, but they didn't click in me. But just showing a browser like Jupyter would be very useful. It can handle a wide variety of media, can easily show JS heavy webpages unlike curl, and with text option to show text based result like w3m but can handle JS, it will be more useful. browser google.com/maps # show google map and use interactively browser google.com/search?q=cat&udm=2 # show google image result browser --text jsheavy.com | grep -C 10 keyword # show content around keyword but can handle JS vim =(browser --text news.ycombinator.com/item?id=45890186) # show Hacker News article and can edit text result directly)
- 1718627440 10mo ago> terminal which can shows images, videos, and other media That is typically not the job of terminals, but of programs. fbi, omxplayer, etc exist.
- jcgl 10mo agoBut the terminal can provide capabilities that allow shell programs to do those things. See e.g. the Kitty graphics protocol: https://sw.kovidgoyal.net/kitty/graphics-protocol/ https://sw.kovidgoyal.net/kitty/graphics-protocol/
- 1718627440 10mo agoYes. > fbi, omxplayer, etc exist.
- skissane 10mo agoMy personal opinion-psuedoterminals should be enhanced to provide some mechanism for sending out-of-band data, like the existing TIOCPKT but on steroids. Maybe something like… if both ends support it, they can exchange JSON-RPC messages over this out-of-band channel, with it being possible to discover if the other side supports this or not. Possibly this is just a new TIOC* ioctl Why? Well one reason is escape sequences are really limited and messy. This would enable everyone to gradually and backward-compatibly transition to a more modern alternative. Once you have a JSON-RPC channel, the two ends can use it to negotiate what specific features they support. It would be leveraging patterns already popular with LSP, MCP, etc. And it would be mostly in userspace, only a small kernel enhancement would be required (the kernel doesn’t have to actually understand these JSON-RPC messages just offer a side channel to convey them). I suppose you could do it without any kernel change if you just put a Unix domain socket in an environment variable: but that would be more fragile, some process will end up with your pty but missing the environment variable or vice versa Actually I’d add this out-of-band JSON-RPC feature to pipes too, so if I run “foo | bar”, foo and bar can potentially engage in content/feature negotiation with each other
- zzo38computer 10mo agoI think JSON would not be the good format for this; it is too limited and requires escaping. DER or SDSER might be a better format; numbers can be stored efficiently in binary, no escaping is needed, you can use any character set (not only Unicode), binary data can be stored directly (rather than needing to encode as hex or base64), etc.
- skissane 10mo agoIf one were adding this to the kernel, maybe rather than stipulating a specific protocol, assign them magic numbers; maybe JSON-RPC could be protocol 0x4a534f4e. An app could ask the kernel “which protocols does the pty master support?”, and get back a list of integers. And then it could ask to open a sidechannel for protocol 0x4a534f4e. So the kernel doesn’t even have to get in the business of mandating a specific protocol (whether JSON-RPC or CBOR or 0MQ or whatever), it just opens side channels with a meaningless (to the kernel) integer to identify its protocol.
- zzo38computer 10mo agoI had thought of a idea in a operating system design, which has many similarities to this but also many significant differences. The rest of the operating system would also be designed to support this, and the REPL would also be integrated with editors (like they show) and with a zoned spreadsheet. There would also be transactions (not the same as described there, but there is a similarity), and also capabilities (usable for security and many other things), and possibility to move objects between windows (this also allows it to work better with GUI; e.g. you can write a loop and use some combination of keys with mouse to drag a command button from a GUI window into your text in order to execute that command button within the loop; or you can copy data displayed in a table in another program in order to perform calculations on it or write a conversion to other format to then copy into another program, etc). However, tabs and panes would be handled by the window manager. However, it would use a binary format (a kind of TLV format), and it would not use CSS and HTML and Unicode. For rich text and other things there would also be a Reveal Codes function in order to reveal (and modify) the codes.
- vacuity 10mo agoBy the way, have you started writing your OS?
- user3939382 10mo agoI designed this months ago and 10x more but I’m going to release it in a bundle
- deleted 10mo ago[deleted]
- nixpulvis 10mo agoI also have lots of ideas, not all that different from the goals of some of these... but there's something critical to remember. The terminal survives as it is, because so many tools were built to run on them. They are only becoming more cross platform and feature rich, albeit slowly and conservatively. Maintaining a high level of backwards compatibility while improving the user experience is critical. Or at least to me. For example, my #1 fristration with neovim, is the change to ! not just swapping the alt screen back to the default and letting me see and run what I was doing outside of it. We generally like the terminal because, unlike GUIs it's super easy to turn a workflow into a script, a manual process into an automated process. Everything is reproducible, and everything is ripgrep-able. It's all right there at your fingertips. I fell in love with computers twice, once when I got my first one, and again when I learned to use the terminal.
- epage 10mo ago> It does this using (mostly) standard features built-in to the terminal and shell (a custom DCS): you can read their explanation here. It's possible to do this less invasively using OSC 133 escape codes; I'm not sure why Warp didn't do this, but that's ok. Independent of the rest, I would love for more terminal emulators to support OSC 133.
- krautburglar 10mo agoI wish people would stop back-porting new features into vt terms, since those “features” gradually leak into terminal programs, which start spewing garbage in older terminals at the next update. Instead of having a standard, we get ESC[whatever-the-fuck-i-feel-like;, but with vt220 characteristics. Missing out on inline images and megabytes of true-color CSI codes is a feature, not a bug, when bandwidth is limited. If you want jupyter, we have jupyter. If you want HTML, we have several browsers. If you want something else, make it, but please don’t use vt220 codes and call it a terminal. The article is just wish-listing more NIH barbarism to break things with. RedHat would hire this guy in a heartbeat.
- iberator 10mo agoAMEN Brother. It's especially important for retro and embeded computing. Legacy systems as well (banks, telecoms etc) That's why most teleco hardware still runs telnet client haha (RRUS AND BBUS) (over IPsec) hehe
- NoGravitas 10mo agoEffectively you have to use tmux or screen as a condom at that point - programs that refuse to use terminfo/termcap will spew whatever xterm-like escapes they hardcode at tmux/screen, which then uses terminfo/termcap to translate to your actual terminal.
- hmokiguess 10mo agoI have tried to like Jupyter but I can’t. My biggest gripe with it is that it quickly ends up becoming an actual production workload, and it is not simple to “deploy” and “run” it in an ops way. Lots of local/project specific stuff like hardcoded machine paths from developers or implicit environments. Yes, I know it can be done right, but it makes it sooooooooo easy to do it wrong. I think I can’t not see it as some scratchpad for ad-hoc stuff.
- dacapoday 10mo agoWhy restrict it to Shell programs with script language? What about LLM powered chat? Terminal is the UI between humans and machines, future is IM App. What people do to each other, people and machines will do the same(ask,talk,chat,assign task).
- sleepybrett 10mo agoone of the things that kinda petered out but was really interesting was xiki, kinda a precursor to some of this stuff.
- 7e 10mo agoA terminal will be useful for about twenty more years, not 200. At that point AI agents will take care of low level monkey wrenching for us. It’s like talking about designing a slide rule for the next 200 years.
- worthless-trash 10mo agoGot some news for you, there will be unix and cobol still running in 20 years from now. No amount of AI will be able to convince bank executives the risk conversion is worth it.
- kamaal 10mo agoWhatever merit alternatives have, the reality is these make long, like very long migration arcs, these days you will have so much team churn, maintenance rabit holes and regular tech debt and feature requests that its fair enough to say any project that starts to move out of Mainframe tech will never see the finishing line. You are better off maintaining what already works. Either way why do you want to migrate when things are just working fine as is?
- rbanffy 10mo agoAnd a lot of that COBOL will still be managed with ISPF over 3270 terminal connections.
- Antibabelic 10mo agoCalculators replaced slide rules because they are predictable and reliable tools. LLM agents will never be that simply by the nature of how they work.
- rbanffy 10mo agoI am sure we'll have something better in 200 years.
- esjeon 10mo agoI really wish something like Mathematica is available in open source. It is a notebook environment based on a Lisp-like language. Its flexibility is beyond imagination. Programs can emit anything from simple numbers/vectors/matrices to medias (image, sound, video, either loaded or generated) to interactive programs, all of which can be embedded into the notebook. You can also manipulate every input and output code blocks programmatically, because it's Lisp, and can even programmatically generate notebooks. It can also do typesetting and generate presentation/PDF/HTML from notebooks. What people have been doing w/ Markdown and Jupyter in recent years has been available in Mathematica since (at least) 1-2 decades ago. FOSS solutions still fall short, because they rely on static languages (relative to Lisp, of course). I mean, really, it's a technological marble. It's just that it's barred behind an high price tag and limited to low core counts.
- tempodox 10mo agoHave you tried mathics? https://mathics.org https://mathics.org
- 0xCE0 10mo agoI think what makes Mathematica so great product is that it is not open source (development is strongly guided by one man) and that it costs (can afford to hire many hundreds of people to build the professional design).
- efitz 10mo agoWhy does the successor to the terminal need to be text oriented at all? Maybe it is an API. Maybe the kernel implements this API and it can be called locally or remotely. Maybe someone invents an OAuth translation layer to UIDs. The API allows syscalls or process invocation. Output is returned in response payload (ofc we have a stream shape too). Maybe in the future your “terminal” is an app that wraps this API, authenticates you to the server with OAuth, and can take whatever shape pleases you- REPL, TUI, browser-ish, DOOM- like (shoot the enemy corresponding to the syscall you want to make), whatever floats your boat. Heresy warning. Maybe the inputs and outputs don’t look anything like CLI or stdio text. Maybe we move on from 1000-different DSLs (each CLI’s unique input parameters and output formats) and make inputs and outputs object shaped. Maybe we make the available set of objects, methods and schemas discoverable in the terminal API. Terminals aren’t a thing of the 80s; they’re a thing of the early 70s when somebody came up with a clever hack to take a mostly dumb device with a CRT and keyboard and hook it to a serial port on a mainframe. Nowadays we don’t need that at all; old-timers like me like it because it’s familiar but it’s all legacy invented for a world that is no longer relevant. Even boot environments can do better than terminals today.
- vlovich123 10mo ago> Heresy warning. Maybe the inputs and outputs don’t look anything like CLI or stdio text. Maybe we move on from 1000-different DSLs (each CLI’s unique input parameters and output formats) and make inputs and outputs object shaped. Maybe we make the available set of objects, methods and schemas discoverable in the terminal API. This is Powershell. It’s a cool idea for sure. One thing I’ve noticed though is that it becomes closer to a programming language and further away from scripting (ie you have to memorize the APIs and object shapes). And at that point, why would you write the program in a worse programming language? By comparison, I’ve noticed even windows-leaning folks do a better job remembering how to delete files and find files than doing so through cmd.exe or powershell. I think that’s because you can run the command to see the output and then you know the text transformation you need to apply for the next step whereas powershell shows you formatted text but objects in the pipe. Maybe a better terminal that provided completion for commands with AI support and a uniform way to observe the object shapes instead of formatted text might mitigate this weakness but it is real today at least imho.
- zombot 10mo agoI always thought that a terminal should look and behave much like a Mathematica notebook. Imagine my disappointment when I saw my first Unix shell.
- nektro 10mo agothe terminal of the future is here and it's https://github.com/ghostty-org/ghostty https://github.com/ghostty-org/ghostty
- lproven 10mo agoIt's not even CUA compliant. It's like one of those broken GNOME 40 tools, for people who don't know how to drive their computer with their keyboard.
- forgotpwd16 10mo agoGhostty may be great performance/standards-wise but, currently at least, brings no innovations.
- fergie 10mo agoWait. Did Jyn just describe Emacs?
- jynelson 10mo agoyou could build an emacs frontend for this model! the thing i am trying to describe is “getting out of the box”. imagine a terminal session that is shared between emacs, iTerm, and a mobile phone ssh’d in over the network, that’s my vision.
- 1718627440 10mo agoI think that's possible with: well, ssh and emacs.
- worldsayshi 10mo agoI'm surprised there's no mention of fzf. fzf has greatly improved my terminal experience and I tend to incorporate it into almost every script that has any interactivity. I think any terminal of the future could incorporate fuzzy finding much better.
- ceving 10mo ago"stage 1: transactional semantics" sounds like pure nonsense. How can a terminal have transactions if the OS does not have them?
- usrbinbash 10mo agoYeah, sorry, but if the user friendly alternative to the VT100 emulators is anything like Jupyter, then I'll happily keep using alacritty, konsole and xterm, thanks.
- naikrovek 10mo agoMake the terminal very simple and easy to understand. Rid us of the text-only terminal baggage that we deal with today. Even graphics are encoded as text, sent to the terminal, then decoded and dealt with. Plan9 had the terminal right. It wasn't really a terminal, it was just a window which had a text prompt by default. It could run (and display!) graphical applications just as easily as textual applications. If you want a terminal of the future, stop embracing terminals of the past.
- forgotpwd16 10mo agoThe discussion is about the terminal as an interface rather the emulator/renderer specifically, or in this case the windowing system. So in Plan 9 you could've a GUI app overtake the root window but could you have graphics intertwined with text when working at the shell?
- naikrovek 10mo ago> could you have graphics intertwined with text when working at the shell? I don't know, but I assume so. Also I can't think of a use case for this but that's just my lack of imagination, I suspect.
- continuational 10mo agoA few years ago I worked on TopShell, an attempt to reimagine the shell+terminal using functional programming: https://github.com/topshell-language/topshell#readme https://github.com/topshell-language/topshell#readme It ticks some of the boxes, but tonnes of work would be needed to turn it into a full alternative.
- abathur 10mo agoI'll cop to not reading the whole list before commenting, but I skimmed this and didn't really notice anything about speed or performance. When using tools that can emit 0 to millions of lines of output, performance seems like table-stakes for a professional tool. I'm happy to see people experiment with the form, but to be fit for purpose I suspect the features a shell or terminal can support should work backwards from benchmarks and human testing to understand how much headroom they have on the kind of hardware they'd like to support and which features fit inside it.
- jrm4 10mo agoY'all, just give me a terminal that strongly and fully integrates with a file manager. Dolphin is almost, but not quite, this.
- sigbottle 10mo agoMy terminal is the only user-friendly way to interact with a variety of system resources on linux (generally, implicitly because of the filesystem API). I don't go to view where named pipes are in vscode, I go to the terminal and understand the problem structure there, especially when autogenerated pipelines come into the mix. If I need to look at daemons or tune perf, I also reach for the terminal. Any solution has to address this use case first, IMO. There are some design constraints here, like: - I don't care about video game levels of graphics - I generally want things to feel local, as opposed to say some cloud GUI - byte stream model: probably bad? But how would I do better? as just a few examples I thought of in 10 seconds; there's probably way more. I've thought about the author's exact complaints for months, as an avid tmux/neovim user, but the ability to interact with system primitives on a machine that I own and understand is important. But hey, those statements are design constraints too - modern machines are tied somewhat to unix, but not really. Sysadmin stuff? Got standardized into things like systemd, so maybe it's a bit easier. So it's not just a cynical mess of "everything is shit, so let's stick to terminals!" but I'd like to see more of actually considering the underlying systems you are operating on, fundamentally, rather than immidiately jumping to sort of, "how do we design the best terminal" (effectively UI)? The actual workflow of being a systems plumber happens to be aided very well by tmux and vim :) (And to be fair, I only make this critique because I had this vague feeling for a while about this design space, but couldn't formalize it until I read this article).
- LeicaLatte 10mo agoInstead of reinventing terminals, what if we standardized on structured data exchange between CLI tools (like JSON/msgpack) and let terminal emulators render it intelligently? The backwards compatibility problem that nixpulvis mentions is real - any "terminal of the future" needs to run existing tools well first while gradually enabling richer experiences.
- eikenberry 10mo agoShell tooling is as successful today in large part due to it's simple byte string/file based protocol. Adding structured data types to the shell and shell command pipelining would turn it from something with a good UI but meh for scripting to one that is good at scripting but meh for UI. Shells are primarily a UI and the focus should stay on that.
- pshirshov 10mo agoWe don't need transactions and Jupyter style. Just separate representation from underlying state (a simplified dom), and migrate from IO streams model to object streams model.