What is a developer to do when they need something more tangible than a chat box? Enter canvases.
By @burkeholland
We’re 176 years into this AI experiment.
Wait…it’s only been three years?
Are you sure?
Sometimes I remember things that happened last year, but it feels like it was so long ago. Did that really happen to me, or was it something that happened to my dad and he just told me about it when I was a kid?
Anyway…we’re three years into this AI experiment and the primary interaction surface we have with LLMs is still chat. I’m pretty sure it was @pmarca who first argued for a textarea component in the HTML spec. And I’m pretty sure of that fact because I asked AI about it. In a textarea.
But I would like to propose to you that perhaps, just maybe, chat is the wrong UI. Well, at least most of the time.
The Academic Steven Pinker said it this way…
It’s kind of a shame that the first large-scale implementation of AI was kind of a gimmick—a first-person chatbot. But there is tremendous promise for AI if it is task oriented.
And if an academic says it and then I write it down as a quote in a blog post, then you know it’s true.
Chat is the primary way of working with AI because it was the first thing that people clicked with. And chat works really well as a universal solution simply because we don’t know what people are going to try to do with AI.
But as the user you know what you’re going to do with it, and at that point chat is often the wrong UI.
What you need, dear reader, is some sort of customizable UI that you can manifest out of thin air to work with the AI (or fight with—you do you) in the way that works for what you are trying to do in the moment.
There are lots of ways to pull this off, but in the GitHub Copilot app, this is called a canvas.
A canvas is a little full-stack application that runs inside of the GitHub Copilot app with no browser chrome. The agent can communicate with the server part of that app and the server can communicate back. So what you end up with is a surface that can do anything a normal computer program can do, plus can communicate bi-directionally with the GitHub Copilot agent.
