Något bubblar i gränssnittsgrytan

Foto av Kevin Savetz / Licens

Nästa generation av användargränssnitt är en omtolkning av den gamla goda terminalen, och det blir ett steg framåt, inte bakåt.

Har du någon gång svurit över hur korkat gränssnittet till någon app är - eller över hur ett system på jobbet tvingar dig att jobba på ett sätt som bara inte passar? Klart du har. Tyvärr.

På mitt första riktiga jobb råkade jag radera en hel meny från själva systemet, vilket ledde till kaos och letande efter backup-band. Ungefär som om du idag skulle lyckas dra File-menyn till papperskorgen och därför skulle behöva installera om hela operativsystemet.

Just det där gränssnittet var dåligt för att tekniken inte hade kommit längre när det byggdes. Idag är gränssnitten vi använder ibland dåliga för att de som designat dem helt enkelt är genuint värdelösa på sitt jobb. Läget har tack och lov blivit bättre för varje år som går - men då och då ploppar det fortfarande upp något monster till UI som alldeles uppenbart har blivit utmanglat av en stackars utvecklare som borde fått hjälp av en proffs.

Tyvärr är inte inkompetens en tillräcklig förklaring för varför så många system är så bökiga att använda. Det är helt enkelt icke-trivialt att designa lösningar som funkar bra för många olika personer, med många olika behov och förmågor, i många olika sammanhang. Ett klassiskt problem är användaren som i en stressad situation, tänk vårdpersonal, måste mata in information i en viss förutbestämd ordning oavsett om situationen tillåter det eller inte. Resultatet blir stress, kvalitetsbrister och omständiga work-arounds.

Terminalen: ett överraskande val

Claude Code är ett agentverktyg som jobbar med Anthropics LLM-modeller. Det kan användas inte bara för programmering utan för stöd kring lite vad som helst du ger verktyget tillgång till, om du får och törs.

En sak som skapat både förvåning och märkligt nog även användarglädje, är att gränssnittet är ett gammaldags terminalgränssnitt. Alltså ett sånt där textbaserat som är en digital återgivning av gamla tiders terminalgränsnitt. 1

Jag är för ung för att jobbat på en riktig Teletype, men tillräckligt gammal för att ha jobbat på en knappt överlevande helt terminalbaserad dator (tror det var en Wang2) i mitten på nittiotalet. Det var på den jag råkade radera ett helt menyval ur systemet - eftersom gränssnittet nog bara var en textfil som visades, och sen skulle man markera en rad och be den raden att exekveras. Men jag råkade be datorn att radera den istället.

Den här sortens förskräckliga gränssnitt kan man tänka skulle ha självdött när moderna grafiska användargränssnitt växte fram. Men de har hängt kvar. En orsak är att de är effektiva. En utvecklare som vill göra något på en server nånstans i molnet kan lätt hoppa in via sin command line, göra jobbet, och logga ut igen. Till exempel. Dessutom ger en unixbaserad terminal tillgång till massor av väl beprövade verktyg som växt fram under många årtionden, som ju vore synd att kasta bort.

En annan faktor som förmodligen bidragit till att sprida användningen av terminalgränssnitt är ett genialiskt drag som Apple gjorde i slutet av 90-talet. Apple, tills då kända som en plattform för framför allt visuella kreatörer, bestämde sig för att skjuta in en Unix-variant som basplatta i sitt operativsystem. Plötsligt hade man en produkt som inte bara hade världens mest väldesignade grafiska användargränssnitt, utan också snabbt började bli många programmerares favoritmaskin. Och som naturligt kom med ett terminalgränssnitt rakt in i själva modermodemet 3.

Att Anthropic från början byggde Claude Code som en terminalapplikation verkar mest ha handlat om att snabbt och enkelt komma igång, samtidigt som de underliggande modellerna utvecklas extremt snabbt och därför kräver flexibilitet i frontend. Ändå ett ovanligt teknikval. Men: terminalgränssnitt idag är inte riktigt samma sak idag som förr.

Mjukvaruterminaler har länge kunnat formatera sin output, lägga på lite snygga färger och så vidare. Men dagens terminalbaserade UI:n, TUI:s 4, har blivit betydligt mer avancerade. Idag finns mängder av applikationer som körs helt i terminalen, och beter sig mer som ett typiskt grafiskt gränssnitt, med komponenter av olika slag, fönster, tabbar, osv. Det finns också mer eller mindre spridda TUI-ramverk att bygga på för den som vill bygga en egen app.

Claude Code kommer knappast stanna för alltid i terminalen, men visar redan nu på hur ett spår som varit på tapeten då och då i mjukvaruvärlden (men aldrig riktigt fastnat) kan väckas upp igen - och det är dynamiskt skapade användargränssnitt.

Dynamiskt skapade användargränssnitt

Den normala dialogen med Claude Code är bara ett utbyte av textsträngar, så att säga. Ungefär som den gamla terminalen, fast nu med en artificiell intelligens på andra sidan. Men dessutom: när det passar, och mer och mer allteftersom produkten utvecklas, väljer Claude Code att generera och visa mer avancerade gränssnittskomponenter. Än så länge är de ganska primitiva, men riktningen är satt och vi kan gissa att det blir avancerat steg för steg.

Alltså. När verktyget tycker att en interaktion med användaren kan hanteras med en gränssnittskomponent, så skapar den en passande komponent i terminalflödet och låter användaren interagera med den en stund. Det kan till exempel handla om att presentera ett antal alternativ användaren kan välja mellan.

Svara på fråga i Claude Code

Det kan också handla om att visa ett grovkornigt designförslag - eller flera olika varianter och låta oss välja mellan dessa.

Välj mellan olika designförslag i Claude Code

Det fanns en tid för länge sedan när intresset för dynamiskt genererade användargränssnitt bubblade lite. Minns till exempel ramverket “Naked Objects” 5 som ville skapa tydliga domänobjekt och generera användargränssnittet automatiskt från dem. Jag vet inte vad som hände med det där sen, men jag minns att de demos jag såg och labbade med lite själv resulterade i generiska gränssnitt som var rätt svåra att älska. Idén i sig var intressant, men implementationen föll platt.

Idag har vi en mer intressant grund att bygga på. LLM:erna blir bättre i snabbt tempo. Claude Code har inga större problem med att växla upp från en rent textbaserad dialog till ett mer specialiserat gränssnitt, baserat på vad stunden kräver.

Jag tror detta öppnar för ett helt nytt sätt att se på hur användargränssnitt (för människor) ska fungera. Det vänder upp och ner på mycket. Till exempel antagandet att det är effektivast att alla användare ska mötas av samma gränssnitt och utbildas på samma sätt att använda en produkt.

Samma designmönster dyker redan upp även i Claudes webbgränssnitt. Just TUI-spåret är alltså inte det kritiska här, utan mest en rolig tillfällighet. Särskilt som detta sätt att interagera på vänder helt upp och ned på det som från början måste varit den mest uppenbara kritiken mot terminalen : att dess funktionalitets “upptäckbarhet” var i princip noll 67. För en icke-expert bjuder terminalen in dig till att göra ingenting alls: dels för att du inte vet vad du kan göra, dels för att du blir vettskrämd av vad du kan ställa till med om gör fel.

På mitt första jobb hade vi även en Mac vars terminalapp var uppkopplad mot en gemensam produktionsserver. Farbrorn som var IT-ansvarig visste nog inte hur man satte upp användarsäkerhet på UNIX, så istället hade han satt upp en lapp med root-lösenordet plus den stränga förmaningen att aldrig skriva något annat kommando än några få tillåtna. Som också listades på lappen. En annan tid.

Så, skulle du jobba i terminalen förr i tiden var du tvungen att memorisera dess uråldriga trollformler - vilket väl lagt grunden för stereotypen om den ultimata Unix-nörden som behärskar alla terminalens hemligheter och sen plågar sin omgivning genom att vägra dela med sig av kunskapen.

Snabbspola till idag, och vem som helst kan plötsligt fråga sin terminal: “Hur kan jag använda dig”?

Om ett uråldrigt gränssnitt plötsligt går att be om hjälp på det sättet, så kommer gissningsvis frustrationen med till synes moderna (men ändå obegripliga system) öka exponentiellt. “Varför kan jag inte bara fråga journalsystemet hur man ska göra?”, kommer höras i korridorerna på närmsta sjukhus. Säljare kommer höras frustrerat försöka be sitt pipelinesystem att flytta ett kort till “kvalificerat”-kolumnen. Och nej, det räcker inte att då bli hänvisad till en video, eller ve och fasa ett word-dokument som visar en sekvens av skärmbilder över hur man gör. Förväntan kommer vara att systemet förstår mig, och anpassar sig därefter.

Alla system vi lärt oss att leva med kommer snart att behöva förklara sig.

Tobias Fors
Hej! Jag heter Tobias Fors och hjälper ledare i mjukvaruintensiva organisationer att brottas med knäckfrågor, vässa sitt ledarskap och ta konkreta steg framåt. Inga stora transformationer - vi utforskar tillsammans och hittar avgränsade steg som gör skillnad för att ni ska kunna nå era viktigaste mål.