- ทีม Xfce เปิดเผยแผนพัฒนา คอมโพสิตเตอร์ Wayland ใหม่ ‘xfwl4’ โดยใช้เงินบริจาคจากชุมชน และมี Brian Tarricone นักพัฒนาหลักเป็นผู้นำโครงการ
- ตั้งเป้าให้มี ฟังก์ชันและประสบการณ์ผู้ใช้แบบเดียวกับ xfwm4 เดิม พร้อมนำกล่องโต้ตอบการตั้งค่าและการกำหนดค่า xfconf กลับมาใช้ เพื่อให้การเปลี่ยนผ่านต่อเนื่อง
- เขียนขึ้นใหม่ทั้งหมดบนพื้นฐานของ Rust และเฟรมเวิร์ก smithay มอบทั้งความปลอดภัยด้านหน่วยความจำและไปป์ไลน์กราฟิก·อินพุตที่ปรับแต่งได้
- ขอบเขตโครงการครอบคลุม การเปลี่ยนโครงสร้างการจัดการเซสชัน, การรองรับ XWayland และ xdg-session-management, การปรับปรุงระบบ CI build
- เป็น การลงทุนสำคัญเพื่อการเปลี่ยนผ่านสู่ Wayland ของ Xfce โดยมีกำหนดเผยแพร่รุ่นพัฒนาตัวแรกภายในปีนี้
แผนคอมโพสิตเตอร์ Wayland ใหม่ของ Xfce
- ทีม Xfce เริ่มพัฒนา คอมโพสิตเตอร์ Wayland ใหม่ ‘xfwl4’ โดยใช้เงินบริจาคจากชุมชน
- การพัฒนาดูแลโดย Brian Tarricone ผู้มีส่วนร่วมหลักมายาวนาน
- เงินทุนโครงการส่วนใหญ่จะถูกนำมาใช้กับการพัฒนานี้
- เป้าหมายคือทำให้ มีฟังก์ชันและการทำงานแบบเดียวกับ xfwm4 บนสภาพแวดล้อม Wayland
- ใช้งาน กล่องโต้ตอบการตั้งค่า xfwm4 และการตั้งค่า xfconf เดิม ต่อไป เพื่อรักษาความสม่ำเสมอของประสบการณ์ผู้ใช้
- xfwl4 ไม่ได้อิงจากโค้ด xfwm4 เดิม แต่เขียนใหม่ทั้งหมดด้วย Rust
- สร้างขึ้นบนไลบรารี smithay
เหตุผลที่เลือกเขียนใหม่แทนการนำโค้ดเดิมกลับมาใช้
- ในช่วงแรกมีแนวคิดจะแก้ไขโค้ด xfwm4 เพื่อรองรับทั้ง X11 และ Wayland ควบคู่กัน แต่ตัดสินว่าไม่เหมาะด้วยหลายเหตุผล
- โครงสร้างของ xfwm4 ผูกกับ X11 มากเกินไป ทำให้ยากต่อการสร้างอินเทอร์เฟซแบบทั่วไป
- การรีแฟกเตอร์มี ความเสี่ยงสูงที่จะทำให้เกิดบั๊กบน X11
- มี แนวคิดของ X11 ที่ Wayland ไม่รองรับ ทำให้การคงโค้ดเดิมไว้ซับซ้อน
- หากใช้โค้ดเดิมจะต้องพึ่งพา ภาษา C และ wlroots
- การพัฒนาเป็นโค้ดเบสแยกจะช่วยให้ รักษาเสถียรภาพของ xfwm4 และเดินหน้าพัฒนา Wayland เชิงทดลองไปพร้อมกันได้
เหตุผลที่เลือก smithay
- Brian Tarricone ประเมินเปรียบเทียบ wlroots กับ smithay ก่อนเลือก smithay
- smithay รองรับ ส่วนขยายโปรโตคอล Wayland อย่างเป็นทางการส่วนใหญ่ รวมถึง โปรโตคอลของ wlroots และ KDE
- ไม่มี abstraction ระดับสูง จึง ควบคุมไปป์ไลน์กราฟิก·อินพุตได้อย่างละเอียด
- มีเอกสารที่ดี และการใช้ Rust ช่วย ลดความเสี่ยงของบั๊กและการล่มที่เกี่ยวกับหน่วยความจำ
- นักพัฒนา ชื่นชอบ Rust
- wlroots เขียนด้วย C ทำให้ การเขียน Rust bindings ทำได้ยาก
ขอบเขตโครงการและความท้าทายทางเทคนิค
- นอกจาก การทำให้ฟังก์ชันเทียบเท่า xfwm4 แล้ว ยังมีงานต่อไปนี้รวมอยู่ด้วย
- ในสภาพแวดล้อม Wayland คอมโพสิตเตอร์ต้องเป็นรากของเซสชัน จึง จำเป็นต้องเปลี่ยนโครงสร้างการเริ่มเซสชัน
- เพิ่มการรองรับ โปรโตคอล xdg-session-management
- รวม การรองรับ XWayland
- อัปเกรด ระบบ build คอนเทนเนอร์ CI เป็นแบบ meson ที่สามารถ build โค้ด Rust ได้
- Brian Tarricone เริ่มพัฒนาแล้ว และ มีกำหนดเผยแพร่รุ่นพัฒนาตัวแรกภายในปีนี้
ชุมชนและผู้สนับสนุน
- โครงการนี้เกิดขึ้นได้จาก เงินบริจาคของผู้สนับสนุนผ่าน Open Collective US และ EU
- สามารถติดตามความคืบหน้าการพัฒนาและรายละเอียดทางเทคนิคได้ใน GitLab issue ของ xfwl4 และซอร์สโค้ดรีโพซิทอรี
- สอบถามเพิ่มเติมได้ผ่าน ช่อง Matrix #xfce-dev
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ได้ยินมาว่า xfwl4 ตั้งเป้าให้มี ฟีเจอร์และพฤติกรรมแบบเดียวกัน กับ xfwm4
แต่เมื่อพิจารณาความต่างเชิงสถาปัตยกรรมระหว่าง X11 กับ Wayland ก็สงสัยว่าการตีความคำว่า “พฤติกรรม” จะเคร่งครัดแค่ไหน
ตัวอย่างเช่น การป้องกันการขโมยโฟกัส ใน X11 ต้องอาศัย heuristic ที่ซับซ้อนและการตรวจสอบ timestamp แต่ใน Wayland คอมโพสิตเตอร์ควบคุมโฟกัสได้ทั้งหมด
สุดท้ายจึงมีโจทย์ว่าจะออกแบบนโยบายใหม่อย่างไรให้ยังคงความรู้สึกแบบ heuristic เดิมไว้ แต่ก็สอดคล้องกับโมเดลสิทธิ์ของ Wayland
อีกประเด็นที่สนใจคือ latency จากการบังคับใช้ compositing ว่าจะให้ความตอบสนองได้เท่ากับโหมด non-compositing ของ X11 บนฮาร์ดแวร์สเปกต่ำหรือไม่
เรื่องการป้องกันการขโมยโฟกัสนั้น ฝั่ง Wayland อาจให้ พฤติกรรมที่สม่ำเสมอ กว่าด้วยซ้ำ Xfwm4 ใช้ heuristic เลยมีพลาดบ้างเป็นบางครั้ง แต่โมเดล xdg-activation ของ Wayland ชัดเจนกว่ามาก
ในแง่ประสิทธิภาพ บนฮาร์ดแวร์สมัยใหม่คงแทบไม่ต่างกันมาก แต่กับ อุปกรณ์ที่เก่ามากจริงๆ ก็อาจมีภาระเพิ่มขึ้น ซึ่งคงต้องทดสอบอีกมากถึงจะรู้
ภาระของ compositing แทบจะมีแค่ เวลาในการรอ vsync เท่านั้น ถ้าไม่ใช่ระดับ Pentium classic ก็น่าจะไหว
หวังว่า XFCE จะยังคงเป็น เดสก์ท็อปที่เบา ต่อไป
ผมชอบ KDE แต่คงเรียกว่าเบาได้ไม่เต็มปาก
มองทั้ง Wayland และ Rust ในแง่บวก โดยคิดว่า Wayland คือทิศทางของอนาคต และ Rust ช่วยเรื่อง ป้องกันการแครช ได้
เพียงแต่ฐานผู้ใช้ดั้งเดิมของ XFCE ค่อนข้างอนุรักษนิยม จึงอาจระแวงเทคโนโลยีใหม่ๆ อยู่บ้าง
การย้ายไป Wayland เป็นสิ่งที่หลีกเลี่ยงไม่ได้ จะมีเสียงบ่นบ้างเล็กน้อยแต่ก็คงผ่านไปได้โดยไม่มีปัญหาใหญ่
คนที่ยึดติดกับ X11 สุดท้ายก็จะเหลือเป็นคนกลุ่มน้อย ผมเชื่อมั่นทีม XFCE
ทั้งที่มี GUI ที่ทำงานได้ดีอยู่แล้ว แต่ Wayland กลับสร้างความซับซ้อนและปัญหาความเข้ากันได้ที่ไม่จำเป็น
โปรโตคอลที่เรียบง่ายมักอยู่รอดได้นาน แต่ Wayland กลับเป็นไปในทางตรงข้าม
XFCE นั้นทั้งเร็วและเสถียรอยู่แล้ว ถ้าย้ายไป Wayland แล้วช้าลง ก็เท่ากับเสีย ข้อดีที่สำคัญที่สุด ไป
เพราะเป็นชุมชนที่ให้ความสำคัญกับเสถียรภาพ จึงน่าจะคง X11 เป็นค่าเริ่มต้นไว้ก่อน แล้วค่อยไป Wayland เมื่อได้ความเท่าเทียมของฟีเจอร์อย่างสมบูรณ์
หวังว่าเมื่อถึงวันที่จำเป็นต้องย้ายไป Wayland ผมจะยังใช้ XFCE ต่อได้
ผมคิดว่าตัวโครงการนี้เองแสดงให้เห็นว่า Wayland เป็นทิศทางที่ถูกต้อง
Xorg เป็น implementation เดี่ยว แต่ Wayland ทำให้เกิด ecosystem ของไลบรารี ที่หลากหลายขึ้นมา เช่น wlroots, Smithay เป็นต้น
ด้วยเหตุนี้ แม้แต่โปรเจ็กต์ที่มีคนทำเพียงคนเดียวก็ยังออก developer preview ได้ภายในไม่กี่เดือน
การแข่งขันลักษณะนี้จะช่วยผลักดัน ecosystem โอเพนซอร์สให้ก้าวหน้า
แต่กระบวนการนี้เร่งเกินไปจนขาดความเป็นเอกภาพ ผมคิดว่ากว่าจะมี Linux desktop API ที่สมบูรณ์จริงๆ คงต้องใช้เวลา อีก 10 ปี
ผมคิดว่าการไม่มี libcompositor คือความผิดพลาดใหญ่ที่สุดของ Wayland
ผมรอดูอยู่ว่าทีม XFCE จะทำอะไรออกมา
แม้สแตกจะสะดวก แต่สุดท้ายก็อาจกลายเป็น โครงสร้างที่แก้ลึกๆ ได้ยาก
X นั้นแทบจะทำงานเหมือน เคอร์เนลตัวที่สอง แต่ Wayland ใช้ abstraction สมัยใหม่ในเคอร์เนลอย่าง GEM, DMA-BUF, KMS
จึงมีทางพัฒนาไปสู่โครงสร้างที่สะอาดและมีประสิทธิภาพกว่ามาก
ผมใช้ XFCE เป็นเดสก์ท็อปหลักมามากกว่า 10 ปีแล้ว
ดีใจที่มีข่าวรองรับ Wayland
ถ้าเขียนด้วย Rust ก็น่าจะช่วยเรื่อง ดึงผู้ร่วมพัฒนาใหม่ๆ ได้ด้วย
ถ้าต้องการสนับสนุน แนะนำให้บริจาคที่ Open Collective และ xfce-eu
ผมคิดว่าการเปลี่ยนจาก X11 ไป Wayland คือ การเปลี่ยนผ่านที่เจ็บปวดที่สุดในประวัติศาสตร์ลินุกซ์
ช่วง KDE4 ก็เป็นยุคมืดเหมือนกัน
ผมเคยลองใช้ client toolkit ของ Smithay ที่เขียนด้วย Rust แต่พบว่า ความปลอดภัยด้านเธรด ยังไม่สมบูรณ์
ต่อให้ห่อด้วย Arc<> แล้ว เวลาเรียกข้ามหลายเธรดก็ยังเกิดแครชแปลกๆ
ผมอยากเรียนรู้วิธีลงลึกกับ Wayland API โดยตรงเพื่อใช้งานให้ปลอดภัย
ตอนนี้ก็ยังใช้ XFCE ได้บน คอมโพสิตเตอร์ที่อิง wlroots ส่วนใหญ่
ผมใช้ชุด Hyprland + XFCE บน Gentoo อยู่
การตั้งค่าอยู่ในรีโพนี้
แต่อยากรู้ว่าทำไมถึงเรียกชุด Hyprland + XFCE4 ว่าเป็น “การจับคู่ต้องสาป” น่าจะเกี่ยวกับเหตุผลที่ XFCE ตัดสินใจทำคอมโพสิตเตอร์ของตัวเองก็ได้
ครั้งหนึ่งผมเคยต่อต้าน Wayland แต่พอเห็น ประสิทธิภาพบนฮาร์ดแวร์เก่า ก็เปลี่ยนใจ
บน Thinkpad รุ่นเก่า Firefox เลื่อนหน้าจอได้ลื่นกว่า X11 มาก
แถมยังได้ gesture ของทัชแพดเพิ่มมาด้วย แม้การตั้งค่าจะยุ่งยากไปบ้าง แต่ก็เป็น trade-off ที่คุ้มค่า
สงสัยว่า Wayland ทำงานบน ระบบที่ไม่ใช่ลินุกซ์ ได้หรือไม่ เช่นบน BSD หรือ macOS จะสามารถเปิดหน้าต่างระยะไกลแบบ XQuartz ได้ไหม?
ยังมี Wayland compositor สำหรับ Mac ด้วย และ Brodie Robertson ก็เคยทำวิดีโอเกี่ยวกับเรื่องนี้ไว้
ถ้าดู โปรเจ็กต์ WSLg จะเห็นว่า Weston ถูกเรนเดอร์ผ่าน RDP ทำให้แสดงหน้าต่างข้ามแพลตฟอร์มได้
และยังคงมี GPU acceleration อยู่ด้วย ซึ่งผมคิดว่าดีกว่า X11 forwarding
FreeBSD Handbook Wayland
ทุกวันนี้พอได้ยินคำว่า “rewrite ด้วย Rust” ผมมักตีความว่าไม่มีคนดูแลรักษาแล้ว
ดูเหมือนจะไม่มีใครคอยแพตช์ xfwm4 เลยต้องเขียนใหม่
นี่อาจเป็นสัญญาณของการเปลี่ยนผ่านระหว่างรุ่นก็ได้ — นักพัฒนาใหม่ๆ อยากจัดโครงสร้างใหม่ให้ เรียบง่ายและปลอดภัย กว่าเดิม
Wayland เรียบง่ายกว่า X11 และ Rust ก็ช่วยลดความผิดพลาดได้ จึงเป็นพัฒนาการที่เป็นธรรมชาติ
แต่ราคาที่ต้องจ่ายอาจเป็น network transparency, ประสิทธิภาพ, และเสถียรภาพ ที่ลดลง ซึ่งก็คงต้องยอมรับว่าเป็นไปตามยุคสมัย