2 poin oleh GN⁺ 2025-12-25 | 1 komentar | Bagikan ke WhatsApp
  • Phoenix adalah server X baru yang ditulis sepenuhnya dari nol dengan bahasa Zig tanpa melakukan fork dari Xorg yang ada, dengan tujuan menjadi alternatif modern
  • Saat ini, Phoenix dapat menjalankan aplikasi sederhana yang menggunakan grafis GLX, EGL, dan Vulkan secara nested di dalam server X yang sudah ada, dan belum mendukung mode standalone
  • Demi kesederhanaan, Phoenix hanya mendukung aplikasi yang ditulis dalam 20 tahun terakhir dan perangkat keras dalam 15 tahun terakhir, serta bekerja tanpa antarmuka driver server
  • Untuk meningkatkan keamanan, pesan protokol diparsing secara otomatis, dan akses antar aplikasi dibatasi dengan struktur isolasi berbasis permintaan izin
  • Mendukung teknologi modern seperti HDR, VRR, multi-monitor, dan compositor bawaan, serta merencanakan kompatibilitas Wayland dan perluasan protokol X11

Gambaran umum Phoenix

  • Phoenix adalah server X modern untuk menggantikan server Xorg, sebuah implementasi yang sepenuhnya ditulis ulang dengan bahasa Zig
    • Bukan fork dari Xorg, dan mengarah pada struktur yang lebih sederhana dan aman
  • Saat ini belum sepenuhnya siap dipakai, dan hanya mendukung mode nested di dalam server X yang sudah ada
    • Dapat melakukan rendering berakselerasi perangkat keras berbasis GLX, EGL, dan Vulkan

Tujuan

Kesederhanaan

  • Server ini dibuat lebih sederhana daripada Xorg, dengan hanya mendukung sebagian dari protokol X11
    • Hanya mencakup fitur yang dibutuhkan aplikasi yang ditulis dalam 20 tahun terakhir
  • Menargetkan hanya perangkat keras dalam 15 tahun terakhir yang mendukung Linux DRM dan Mesa GBM
  • Tidak menggunakan antarmuka driver server terpisah seperti Xorg
    • Strukturnya mirip dengan compositor Wayland
Iklan

Keamanan

  • Menjamin keamanan melalui parsing otomatis pesan protokol
    • Melalui opsi build Zig ReleaseSafe, perilaku ilegal seperti indeks array yang melewati batas dapat dideteksi otomatis
  • Secara default aplikasi dijalankan dalam isolasi antar aplikasi
    • Interaksi dengan aplikasi lain hanya dimungkinkan melalui permintaan izin GUI atau izin yang telah diberikan sebelumnya
    • Contoh: aplikasi perekam layar hanya dapat merekam jendela yang ditentukan
  • Saat akses dibatasi, klien menerima data dummy alih-alih error
  • Shortcut global berfungsi bila menyertakan tombol modifier seperti ctrl, shift, dan lainnya
    • Jika ingin memakai shortcut global tanpa modifier, diperlukan izin eksplisit
  • Melalui opsi tertentu, perilakunya dapat diubah agar sama seperti Xorg

Dukungan teknologi modern

  • Mendukung teknologi display modern seperti multi-monitor, refresh rate yang berbeda, VRR, dan HDR
  • Alih-alih satu framebuffer tunggal, tiap display diproses secara independen

Peningkatan pemrosesan grafis

  • Secara default menyediakan rendering tanpa tearing dan compositor bawaan
    • Akan dinonaktifkan otomatis bila menjalankan compositor eksternal (seperti picom)
    • Jika aplikasi fullscreen mematikan vsync, perilaku akan disesuaikan untuk aplikasi tersebut
    Iklan
  • Menargetkan pengurangan latensi vsync dan compositor

Standar baru

  • Mendefinisikan dan mendokumentasikan properti DPI per monitor (randr property)
    • Aplikasi dapat melakukan penskalaan konten sesuai DPI tiap monitor

Ekstensi protokol X11

  • Jika diperlukan fitur baru seperti HDR, Phoenix berencana menambahkan ekstensi protokol X11

Kompatibilitas Wayland

  • Mempertimbangkan kemungkinan adanya aplikasi yang hanya mendukung Wayland
    • Phoenix dapat mendukung Wayland secara langsung, atau dijalankan melalui bridge Wayland–X11 (misalnya 12to11)

Server display nested

  • Dapat berjalan secara nested dengan akselerasi perangkat keras di dalam X11 atau Wayland
    • Berguna untuk debugging Phoenix serta pengujian window manager dan compositor
    • Di lingkungan Wayland, dapat dimanfaatkan sebagai server alternatif untuk Xwayland
    Iklan

Bukan tujuan (Non-goals)

  • Bukan bertujuan menjadi pengganti total server Xorg
    • Xorg tetap mempertahankan lebih banyak fitur X11 dan dukungan perangkat keras lawas
  • Beberapa screen X11 tidak didukung (hanya multi-monitor yang didukung)
  • Pemanggilan GrabServer tidak berlaku
  • Klien/server endian-swap akan ditinjau ulang bila diperlukan
  • Tidak mendukung GLX tidak langsung (rendering jarak jauh)
    • Kompleksitasnya tinggi, dan streaming jarak jauh lebih efisien
    • Jika perlu, rendering jarak jauh dimungkinkan melalui proxy GLX

Perbedaan dengan protokol X11

  • Sebagian protokol inti X11, seperti fitur terkait font, belum diimplementasikan
  • Encoding string secara default menggunakan UTF-8
    • Namun ada pengecualian jika protokol secara eksplisit menetapkan ISO Latin-1
Iklan

Instalasi dan build

  • Perintah instalasi:
    zig build -Doptimize=ReleaseSafe
    sudo zig build install -p /usr/local -Doptimize=ReleaseSafe
    
  • Penghapusan harus dilakukan manual dengan menghapus /usr/local/bin/phoenix
  • Build untuk pengembangan:
    zig build
    
    • Biner hasil: ./zig-out/bin/phoenix
    • Dapat menjalankan dan melakukan build sekaligus: zig build run

Pembuatan dokumentasi protokol X11

  • Perintah: zig build -Dgenerate-docs=true
    • Hasil: file .txt dibuat di dalam ./zig-out/protocol/
    • Ini adalah dokumentasi yang dibuat otomatis dengan gaya dokumen resmi, dan fitur ini masih dalam pengembangan

Dependensi

  • Zig 0.14.1
  • x11 (xcb) — untuk mode nested X11 (-Dbackends=x11)
  • wayland (wayland-client, wayland-egl) — untuk mode nested Wayland (-Dbackends=wayland, saat ini belum didukung)
  • drm (libdrm, gbm) — untuk mode standalone (-Dbackends=drm, saat ini belum didukung)
  • OpenGL (libglvnd) — menyediakan gl dan egl

1 komentar

 
GN⁺ 2025-12-25
Komentar Hacker News
  • Pendekatan untuk membangun ulang server X dengan gaya Wayland ini menarik
    Server tampilan dan compositor pada dasarnya disatukan, aplikasi diisolasi secara default, fitur remote GLX dihapus, dan protokol lama dibuang dengan berani, yang semuanya terasa mengesankan
    Saya tidak tahu siapa yang benar-benar membutuhkan ini, tetapi pilihan tersebut sendiri tampak cukup masuk akal

    • Bagi orang-orang yang memang harus memakai X11, ini terlihat seperti pilihan yang lebih baik daripada XLibre
    • Saya belum mencobanya sendiri, tetapi jika fitur-fitur yang sudah ada dihapus, pada akhirnya situasinya mungkin akan mirip Wayland
      Jadi saya tidak paham apa bedanya. Mungkin analisis saya belum lengkap
    • Kalau ini muncul lebih awal, sepertinya banyak orang akan lebih memilih ini daripada Wayland
      Apalagi kalau aplikasi Wayland juga bisa dijalankan, pengguna yang memilihnya mungkin justru akan lebih banyak
  • Nama Phoenix dipakai terlalu sering
    Ada Phoenix di framework Elixir, dan saya ingat pernah melihatnya berkali-kali di proyek lain
    Ini nama umum seperti ‘Apollo’, jadi menurut saya orang sebaiknya melakukan pencarian dulu sebelum membuat proyek baru

    • Phoenix di ekosistem Elixir justru termasuk yang tidak terlalu membingungkan
      Di sana ada banyak nama unik seperti bandit, cowboy, thousand island, ranch, mint, finch
      Duplikasi nama seperti ExThing, ThingEx, Thingx juga umum, jadi sulit menebak mana yang standar
    • Sejak dulu nama Phoenix sering dipakai sebagai simbol proyek yang bangkit dari abu
      Saya juga ingat pada 1980-an perangkat lunak baru sering diberi nama dengan cara seperti itu
    • Firefox juga pernah mau memakai nama Phoenix lalu digugat karena masalah merek dagang
      wxPython juga punya proyek bernama Phoenix. Namanya keren, tetapi terlalu umum
  • Proyek ini benar-benar keren
    Saya suka Wayland, tetapi protokol portal dan mekanisme ekstensi masih terasa kurang memuaskan
    Dibandingkan Windows atau macOS, masih ada kekurangan dari sisi produktivitas
    Menulis ulang X11 dengan keamanan bawaan terdengar seperti pendekatan yang menjanjikan

    • Saya sudah lama berpikir bahwa membuat versi X yang dirapikan akan lebih baik daripada Wayland
      Ini tampak seperti proyek yang berguna, dan saya berharap proyek ini berkembang
    • Tadi dibilang Wayland kurang dari sisi produktivitas, jadi saya penasaran apa tepatnya yang masih kurang
    • Saya justru merasa Windows atau macOS bahkan tidak bisa menangani manajemen jendela dengan baik
      Pada awal 2000-an, instalasinya saja sulit, dan bagi pengguna biasa hampir mustahil memasangnya sendiri
      Distro Linux jauh lebih mudah dipasang, dan alasan orang membeli PC baru saat Windows melambat juga karena itu
    • Saya sendiri justru tidak merasa ada kekurangan produktivitas di Wayland
      Di kantor pun saya bekerja tanpa masalah dengan GNOME + Wayland
  • Senang melihat proyek pelestarian X seperti ini
    Saya lebih suka Wayland, tetapi saya tetap merasa masih ada area yang membutuhkan X
    Tim pengembang baru juga perlu ikut menanggung bebannya

    • Tetapi saya melihat pilihan seperti ini justru menyebabkan fragmentasi
      X11 sekarang sebaiknya benar-benar ditinggalkan, lalu fokus pada satu server tampilan saja
  • Saya tidak tahu seberapa baik proyek ini akan berjalan, tetapi
    di tengah arus penyeragaman yang berpusat pada korporasi (misalnya Wayland, GNOME, KDE dengan pengembang berbayar),
    saya rasa makin banyak proyek pesaing adalah hal yang baik
    Saya juga penasaran berapa banyak dana yang dibutuhkan untuk memodernkan Xorg
    Wayland muncul pada 2008, tetapi bahkan setelah hampir 20 tahun, masih belum memenuhi semua kebutuhan pengguna
    Keterbatasannya terlihat jelas karena diarahkan pada spesifikasi sempit yang diinginkan perusahaan

  • Pengembang aplikasi dapat menentukan mode rilis dalam skrip build dengan bentuk seperti zig build --release
    Pengguna juga bisa langsung memberikan --release sendiri
    Penulis Phoenix tampaknya memilih mode ReleaseSafe sebagai rilis resmi
    Sebagai catatan, Phoenix juga merupakan nama kampung halaman saya

  • gpu-screen-recorder buatan penulis yang sama adalah
    perekam layar terbaik yang pernah saya coba di Wayland
    Perekaman 4K 60fps langsung berjalan tanpa pengaturan khusus

  • Saya penasaran apakah aplikasi X11 lama seperti xterm, emacs, xfig, ghostview bisa berjalan

    • Sebagian besar program X11 lama bergantung pada API gambar X11, jadi
      kemungkinan besar tidak akan berjalan dengan benar, tetapi implementasinya sendiri sederhana
  • Dukungan multi-screen disebut sebagai non-tujuan,
    jadi saya penasaran apakah ini berarti tidak bisa dipakai di window manager yang mendukung desktop virtual (seperti i3)

    • Dalam X11, “screen” punya makna tertentu, jadi meskipun hanya mendukung satu screen,
      penggunaan multi-monitor atau desktop virtual tetap tidak bermasalah
    • Fitur multi-monitor berkelanjutan seperti Xinerama nanti bisa ditambahkan dengan mudah dalam struktur seperti ini
  • Menarik bahwa proyek ini tidak menggunakan spesifikasi protokol XML untuk menghasilkan kode seperti Xorg