- TUI kembali mendapat perhatian karena umpan balik yang instan, kemudahan otomatisasi, dan kemampuan berjalan lintas sistem operasi; alat seperti Claude dan Codex juga meraih sukses besar di command line
- GUI native di Windows, Linux, dan macOS masing-masing menambah beban bagi pengembang dan pengguna karena strategi API yang tidak stabil, fragmentasi toolkit dan lingkungan, serta melemahnya konsistensi terhadap pedoman lama
- Untuk aplikasi Electron, masalah yang lebih besar daripada penggunaan memori adalah kurangnya konsistensi visual dan celah dalam alur kerja yang berpusat pada keyboard; integrasi menu dan pintasannya juga melemah
- Ada upaya membuat stack UI baru seperti eksperimen Flutter UI dari Google dan GPUI milik Zed, tetapi renderer yang cepat saja tidak cukup jika integrasinya dengan sistem operasi kurang
- Antarmuka yang baik bertumpu pada konsistensi yang membuat pengguna tidak perlu banyak berpikir; pengembang serta pembuat sistem operasi dan toolkit perlu lebih banyak berinvestasi pada teori UI dan toolkit yang mudah diakses
Latar belakang TUI kembali mendapat perhatian
- Omarchy dari DHH disusun sebagai campuran TUI, web app, dan aplikasi native bergaya gnome, dengan TUI dipakai untuk umpan balik instan dan “geek points”
- Sekitar 10 tahun lalu, ada arus serupa pada editor kode
- Terjadi perpindahan dari editor native seperti BBEdit, Textmate, Notepad++, dan Sublime ke aplikasi berbasis Electron seperti Atom, VSCode, dan turunannya
- Pengguna dengan preferensi yang kuat beralih ke vim atau emacs, dan demi mendapatkan umpan balik instan serta kegunaan tinggi, mereka harus menerima kurva belajar yang sangat terjal
Mengapa GUI native melemah
-
Windows
- Windows gagal membangun strategi pustaka GUI yang konsisten, dan terus mengulang pola membuat API baru setiap kali satu API tidak berhasil
- Dalam Microsoft hasn’t had a coherent GUI strategy since Petzold, Jeffrey Snover menggambarkan bahwa MFC, OLE, COM, dan ActiveX menyebarkan kompleksitas ke seluruh pengembangan Windows
- Setelah itu Microsoft melewati WinForms, WPF, Silverlight, WinUI, dan MAUI, tetapi tidak berhasil; banyak aplikasi desktop enterprise maupun personal masih bergantung pada aplikasi Electron
- Periode terakhir ketika seluruh Windows terasa terintegrasi secara visual dengan konsisten mungkin adalah era Windows 98 atau Windows 2000
- Dalam Windows Native App Development Is a Mess, Domenic Denicola menilai biaya membangun ulang OS dan API UI setiap beberapa tahun sangat besar, dan ketika ini bertabrakan dengan upaya sandboxing serta penghentian fitur, setiap lapisan baru menimbulkan celah yang membuat hal-hal yang dulu bisa dilakukan di framework lama menjadi tidak bisa lagi
-
Linux
- Ketidakselarasan UI di Linux lebih merupakan hasil desain, karena tim-tim yang berbeda diberi kebebasan mengejar tujuan yang berbeda
- GTK dan Qt menjadi framework utama, dan keduanya menargetkan pengembangan native lintas platform, meski area penggunaan terluasnya terutama di Linux
- Aplikasi Linux yang dibuat dengan toolkit berbeda masih bisa terlihat cukup serasi saat diletakkan berdampingan, tetapi berbagai framework di Windows tidak mencapai tingkat harmoni seperti itu
- Karena kombinasi distro, desktop environment, dan perangkat keras terlalu banyak, pengujian menjadi sulit sehingga banyak perusahaan tidak membuat aplikasi Linux native
- Perusahaan biasanya mendukung Linux lewat Electron, atau membiarkan komunitas open source menyelesaikannya sendiri jika tersedia API publik
-
macOS
Keterbatasan aplikasi Electron
- Masalah yang paling sering disebut adalah penggunaan memori, tetapi selama 10 tahun terakhir penggunaan memori justru cenderung menurun
- Masalah yang lebih besar adalah kurangnya konsistensi visual dan minimnya alur kerja yang berpusat pada keyboard
- Bahkan di lingkungan dengan MacBook Pro RAM 64GB, Dock tetap berisi 8 aplikasi native dan 6 aplikasi Electron berdampingan
- Aplikasi native: TextMate dan utilitas sistem macOS
- Aplikasi Electron: Slack, Discord, Mattermost, VSCode, Cursor, Plexamp
- Di aplikasi seperti Cursor dan VSCode, setelah meminta fitur di panel agen, berpindah hanya dengan keyboard ke daftar agen di panel samping atau mengarsipkannya tidak terasa alami
- Perilaku seperti ini seharusnya bisa dilakukan dengan cara yang sama di semua aplikasi macOS, tetapi bahkan jika ada shortcut, kadang ia tidak ditampilkan di menu
- Selama 10 tahun terakhir, pengembang cenderung melupakan penambahan ke menu untuk tindakan-tindakan yang tersedia di aplikasi, dan ini berkaitan dengan struktur implementasi aplikasi sebagai HTML di dalam sandbox
- Slack menangani hal-hal seperti ini lebih baik daripada aplikasi Electron lain, tetapi tetap belum sempurna
Upaya membangun ulang stack UI baru
- Google ingin membuat sistem operasi baru tanpa warisan Android beserta toolkit UI untuk perangkat baru, bersama Dart
- Google menginginkan toolkit UI baru bernama Flutter UI, tetapi proyek itu ditinggalkan sebelum produk nyatanya diluncurkan
- Upaya seperti ini hanya bisa berhasil jika ada posisi dominan atau pangsa pasar yang cukup besar
- Zed mengambil arah serupa dengan Rust dan membuat pustaka renderer GPU sendiri bernama GPUI, yang menargetkan lintas platform
- GPUI memang cepat, tetapi integrasinya dengan sistem operasi host tidak cukup memadai dengan sendirinya, sehingga pengembang harus menambahkan binding yang diperlukan secara manual
- Renderer yang lambat tetapi terintegrasi baik dengan sistem operasi lebih baik daripada renderer cepat
Celah yang diisi oleh TUI
- Dalam konteks yang mengingatkan pada kemunduran Apple Automator, TUI kembali penting sebagai antarmuka yang bisa diotomatisasi
- TUI juga relatif mudah dijalankan dari jarak jauh, tanpa harus bergantung pada X forwarding yang memicu banyak sakit kepala
- Ketika toolkit UI native gagal, orang kembali ke dasar, dan akibatnya TUI muncul sebagai pilihan
- Claude dan Codex meraih sukses besar di command line, dan pengguna bisa fokus pada interaksi itu sendiri alih-alih memikirkan sistem operasi di sekelilingnya
- Melalui TUI, pengguna bisa menangani kode dan aplikasi di mesin cloud, atau terhubung jarak jauh dari iPad ke mesin yang memiliki GPU
- TUI mengisi celah yang ditinggalkan Apple dan Microsoft di lingkungan tempat setiap aplikasi terlihat berbeda-beda
- Tampilan yang saling berbeda mungkin baik untuk seni atau game komputer, tetapi tidak cocok untuk tujuan ketika antarmuka seharusnya menyingkir agar pengguna bisa menyelesaikan pekerjaannya
Arah yang dibutuhkan ke depan
- Dalam Bring Back Idiomatic Design, John Loeber berpendapat bahwa bahkan checkbox adalah antarmuka untuk berinteraksi dengan sistem, dan antarmuka yang baik adalah yang membuat pengguna berpikir lebih sedikit
- Karena pengguna berinteraksi dengan banyak hal, mereka membutuhkan antarmuka yang homogen yang memberi pengalaman konsisten
- Jika Command+C adalah shortcut untuk menyalin, itu harus bekerja di mana pun; pendekatan yang memaksa pengguna mengingat CTRL+Shift+C atau klik kanan → salin dalam situasi tertentu terasa tidak nyaman
- Semua pengembang perlu mempelajari teori yang membuat bukan hanya software, tetapi antarmuka pengguna secara umum menjadi lebih baik
- Sikap yang memperlakukan desain pengguna sebagai soft skill yang tidak penting dalam kurikulum rekayasa perangkat lunak harus dihentikan
- Dalam proses apa pun, jika UI tidak dipahami, proyek itu harus dianggap gagal; dalam mata kuliah HCI, targetnya harus berupa UI yang sempurna
- Pekerjaan membuat UI yang baik sebagian besar menghabiskan upaya untuk memahami kebutuhan, sementara pemrograman itu sendiri sudah makin terotomatisasi
- Pembuat sistem operasi dan toolkit perlu mendorong investasi untuk membuat toolkit yang mudah diakses dan ingin dipakai oleh pengembang, serta menurunkan hambatan masuk
- Ini bukan berarti harus selalu menuntut dukungan lintas platform, tetapi jika ada setidaknya satu solusi seperti itu, ketergantungan pada Electron dan TUI bisa dikurangi
2 komentar
Saya juga merasa begitu, tetapi menurut saya dunia developer terlalu sensitif terhadap tren. TUI pada dasarnya hanya didorong oleh perusahaan-perusahaan yang tidak punya kemampuan atau kemauan untuk membuat GUI dengan baik, dan saya tidak tahu sebenarnya ada berapa banyak orang yang memakai TUI.
Komentar Lobste.rs
Aku lebih berharap orang-orang membuat aplikasi native saja. TUI terlihat seperti gabungan kelemahan antarmuka baris perintah dan GUI sungguhan
Semua program TUI harus mengimplementasikan ulang scrolling sendiri, jadi meskipun terminal mendukung scrolling per piksel, program TUI tetap hanya mendukung scrolling per baris dan perilakunya pun berbeda-beda. Scrollback di senpai berbeda dari program lain yang kupakai, jadi aku sering kehilangan arah
Juga tidak ada cara untuk memberi tahu terminal bahwa antarmukanya lebih dari satu panel teks tunggal, jadi pemilihan teks sering rusak. Bisa saja dengan mencegat event mouse, tapi itu juga tidak terlalu bagus. Di klien IRC TUI, aku harus menekan shortcut untuk menyembunyikan panel-panel samping yang tidak relevan hanya agar bisa memilih teks, dan itu terasa seperti prosedur yang cukup bodoh
Batasan harus mengikuti grid sangat membatasi kemungkinan tata letak dan desain. Aku jadi teringat gaya yang dibuat agar tampak seperti tombol yang bisa diklik, atau hal-hal seperti menu konteks. Dulu aku juga pernah mengeluhkan masalah ini
Menurutku bertambahnya TUI adalah akibat yang disayangkan dari buruknya kondisi framework GUI tradisional. Framework TUI relatif stabil, dan bahkan yang sangat tua pun tidak terlalu mengganggu untuk dipakai. Program ncurses masih sering kupakai sampai sekarang, tetapi sulit membayangkan orang masih memakai program Motif
Sebaliknya, framework GUI tidak punya banyak pilihan dan butuh pemeliharaan yang jauh lebih besar. Lingkungan desktop berubah, dan ekspektasi terhadap GUI juga terus naik. Menurutku aksesibilitas TUI benar-benar buruk, walau aku tidak sepenuhnya yakin. Perubahannya juga terlalu cepat: bikin dengan GTK2 lalu dinyatakan usang, naik ke GTK3 lalu disuruh pindah ke GTK4, dan pola itu terus berulang
Kalau dilihat sinis, ada faktor lain juga pada hal seperti Omarchy. GUI biasa seperti xfce4-taskmanager itu membosankan, tetapi TUI seperti btop terlihat sangat hacker banget. Orang suka estetika terminal (lihat /r/unixporn), dan tampaknya rela mengorbankan kegunaan demi vibes. Lihat saja btop yang benar-benar membuat daftar proses memudar
Aku berharap sekarang hambatan masuknya sudah lebih rendah. Dalam situasi ketika kebanyakan developer dilatih dengan bahasa tingkat tinggi, itu terasa kurang meyakinkan, dan kompleksitas C++ tampaknya memang membuatku ciut
[
20:41
]
username1
:
message1
[
20:42
]
username2
:
message2
Klien Matrix Nheko bahkan tidak mengizinkan memilih lebih dari satu baris sekaligus
Sementara klien IRC biasanya memberikan format seperti ini secara default
20:41 <username1> message1
20:42 <username2> message2
Kadang memang masuk akal, tetapi idealnya sebaiknya dipakai hanya untuk aplikasi yang kecil dan dipakai sebentar atau pengecualian seperti editor teks
Misalnya lf, tig, kakoune cocok sekali dengan shell script, jadi skrip yang sama bisa dipakai ulang dan fungsinya bisa diperluas di ketiga aplikasi itu. Karena semuanya berjalan di alacritty, aku juga bisa membuat hyperlink yang bekerja di ketiga aplikasi itu dan di seluruh shell
Kalau boleh berandai-andai, aku ingin ada toolkit GUI minimalis monokrom yang memungkinkan integrasi ala Emacs atau acme
Aku tidak paham bagaimana TUI disebut “mudah diotomatisasi”. Bukankah itu pada dasarnya GUI yang ditampilkan di konsol?
Tulisan ini melewatkan alasan utama TUI “kembali”. Klaim itu sendiri juga meragukan, tetapi memang tampaknya popularitasnya belakangan naik karena agen coding seperti Claude dipakai untuk vibe coding dalam jumlah besar
Developer menyukai pilihan yang mudah. Membuat TUI lintas platform lebih mudah daripada membuat GUI
Alasan aplikasi web menjadi populer juga sama. Karena lebih mudah membuat aplikasi lintas platform dengan alat browser, dan alasan Electron naik daun juga masih dalam konteks yang sama, hanya tanpa beban dukungan lintas browser. Membuat UI responsif, merender UI lintas platform, dan menangani input pengguna terutama dengan mempertimbangkan aksesibilitas, semuanya sulit. Jadi developer langsung tertarik pada apa pun yang membuat hal-hal itu jadi mudah
Belakangan ini juga ada perubahan yang membuat pembuatan TUI lebih mudah. Dukungan lintas platform untuk fitur-fitur canggih membaik, muncul library populer yang mengabstraksikan detail-detail rumit, dan semua itu tampaknya mendorong renaisans TUI belakangan ini
Di luar itu, beberapa poin tulisan ini agak meragukan. Misalnya, penulis menyebut konsistensi sebagai kelemahan aplikasi Electron, tetapi pada TUI populer pun hampir tidak ada konsistensi selain konvensi. Agen coding memang mengadopsi shortcut yang mirip, tetapi kebanyakan karena meniru sumber yang sama, yaitu Claude. Shortcut itu tidak banyak meluas ke luar agen coding, dan sebagian besar TUI yang kupakai punya shortcut serta bahasa visual yang sangat berbeda
Aku juga ragu dengan pernyataan “sulit merender UI secara lintas platform”. Memang perlu lapisan kompatibilitas dan implementasi sebanyak jumlah platform, tetapi itu tidak terlihat jauh lebih sulit daripada hanya mendukung satu platform. Tentu akan berbeda jika cara rendering platform-platform target terlalu berbeda sehingga sulit merancang API bersama, tetapi pada level menggambar piksel ke layar rasanya tidak seperti itu. Hal-hal seperti scaling memang perlu ditangani, tetapi selebihnya seharusnya cukup lurus, atau ya pakai SDL juga bisa
Mungkin yang dimaksud adalah membuat UI terlihat “native” di semua platform. Itu bisa berarti harus memakai toolkit GUI native yang disukai tiap platform, dan itu bukan saja sangat berbeda satu sama lain, tetapi juga bisa jauh lebih besar dan kurang stabil dibanding API rendering tingkat rendah. Untuk yang seperti itu, hidup terlalu singkat. Aku mungkin akan memberi ruang untuk mengubah tema warna atau sebagian gaya grafis, tetapi akan kujadikan pengaturan tingkat aplikasi. Aku tidak ingin membuang waktu membaca pengaturan grafis tiap sistem operasi
Pernyataan “sulit menangani input pengguna, terutama aksesibilitas” juga terasa aneh. Mendengarkan event keyboard dan mouse itu hal sepele. Dari sisi aksesibilitas, memang perlu navigasi keyboard yang baik dan itu juga penting untuk kegunaan secara umum, plus dukungan shortcut standar dan kustom, tetapi secara keseluruhan itu tampak jauh lebih mudah dibanding sisanya
Dukungan screen reader bisa saja sulit tergantung API platform terkait dan perbedaan antarplatform, tetapi itu lebih dekat ke masalah rendering daripada masalah input
TUI ini bukan semacam “comeback”, melainkan lebih seperti hilangnya pengetahuan pemrograman GUI native, sehingga orang hanya berusaha semaksimal mungkin dengan alat yang ada. Ini hasil dari kurangnya pengembangan dan investasi yang konsisten
Kecuali beberapa pengecualian cerah seperti Qt, peradaban UI telah runtuh dan kita terasa hidup di dunia pasca-kiamat
Rasanya selaras dengan ceramah Preventing the Collapse of Civilization, dan sekarang ketika AI menulis banyak kode, aku khawatir keruntuhan pengetahuan ini akan menyebar lebih jauh
Rasanya kita butuh versi ilmu komputer dari After Virtue, dan mungkin kehadiran online Blow sedikit banyak memainkan peran itu. Bagaimanapun, aku merindukan masa ketika antarmuka komputer menunjukkan konsistensi, menghormati pengguna, dan memberi imbalan pada pembelajaran serta ketelatenan
Tulisan ini rasanya tidak punya banyak isi nyata, selain sekadar mengatakan bahwa penulis menganggap semua hal lain payah
Satu hal yang akan kukatakan adalah bahwa Emacs merupakan platform hebat untuk antarmuka teks, keyboard, tombol, dan media kaya
Kemungkinan besar karena orang mulai memakai library TUI non-ncurses dengan Go, Rust, dan sekarang Zig. Setidaknya itu menyelesaikan masalah portabilitas mengerikan yang dulu membuat ncurses diperlukan
Setelah itu, orang mulai membuat terminal baru dan ikut mendorong teknologi di sisi itu juga. Sebagian karena sekarang mereka bisa membuatnya dengan Go, Rust, atau Zig, bukan C
Kalau kamu memberi orang pilihan yang bagus, lebih menyenangkan, dan tidak terlalu menjengkelkan dibanding C dan C++, tentu mereka akan mulai menulis kode yang lebih baru dan lebih berguna
Alasan sebenarnya TUI kembali adalah karena pada 2026, untuk mendistribusikan GUI yang ditandatangani dan dinotariskan, kamu harus membayar Apple, dan untuk Windows kamu juga harus membayar otoritas sertifikat
Koreksi kecil: library UI berakselerasi GPU milik Zed adalah gpui, bukan API lintas platform wgpu
Aku tidak yakin tulisan ini benar-benar membuktikan argumennya, tetapi sebagai orang yang mengalami era MS-DOS dan selalu menyukai TUI, aku ingin ikut menimpali. Kalau pernah memakai afl-fuzz, mungkin kamu akan paham
Secara teori TUI seharusnya jauh lebih sukses di Linux. Ada basis pengguna teknis yang menyukai estetika berbasis teks, dan juga “keuntungan” berupa lingkungan GUI yang kikuk dan tidak konsisten. Bahkan pernah ada masa ketika membuat kartu video bekerja dengan benar di X server saja sudah jadi masalah
Pada saat yang sama, selama puluhan tahun para pengembang perangkat lunak *nix merasa punya kewajiban mendukung jenis terminal tua dan eksotis sekalipun. Seolah-olah akan jadi bencana jika aplikasi tidak dirender dengan benar di DECwriter, dan di bawah batasan seperti itu memang sulit membuat TUI yang bagus
Di era MS-DOS, perusahaan seperti Microsoft, Borland, dan Norton berhasil menyempurnakan antarmuka berbasis teks yang fungsional dan responsif. Di Linux, untuk waktu yang lama “puncak” desain TUI adalah monster bernama menuconfig, dan kalau memicingkan mata, vim pun mungkin bisa disebut TUI. Saat orang masih benar-benar memakai konsol mode teks, satu-satunya TUI Linux bagus yang kuingat mungkin adalah manajer file Midnight Commander yang terinspirasi Norton Commander