Theppitak's blog

My personal blog.

24 พฤศจิกายน 2556

My GNOME Escape

หนึ่งปีเต็มที่ผมได้เปลี่ยนมาใช้ Xfce เต็มตัว (บันทึกการทดลองใช้ E17, LXDE และ Xfce ก่อนจะตกลงปลงใจที่ Xfce) รู้สึกว่าได้เดสก์ท็อปที่ลงตัว ไม่พยายามวิ่งตามแพลตฟอร์มอื่นมากเกินไป ไม่ว่าจะวินโดวส์หรือแมคหรือแอนดรอยด์ ขณะเดียวกันก็ไม่ได้อนุรักษ์นิยมกับยูนิกซ์จ๋าจนดูตกยุค เรื่อง usability ถือว่าสอบผ่าน ความยืดหยุ่นในการปรับแต่งก็มีเหนือ GNOME โปรแกรมต่าง ๆ ที่จำเป็นก็มีให้เกือบครบ บางตัวที่ไม่มี (เช่น PDF viewer) ผมก็ยืมใช้จาก GNOME ไปพลางก่อน แต่ก็ทยอยถอดถอนตัวที่ไม่จำเป็นออกไปเรื่อย ๆ และคงรุ่น GNOME app ส่วนใหญ่ไว้ที่ 3.4

สาเหตุที่ยังคงรุ่น GNOME app ไว้ที่ 3.4 ก็เพราะการอัปเกรดเกินรุ่นนี้จะทำให้เกิดความเปลี่ยนแปลงของระบบอย่างใหญ่หลวง เช่น GDM 3.8 จะลากเอา systemd มาลง (ผ่านทาง gnome-settings-daemon) ซึ่ง systemd นี้ จะเป็นดีมอนสำหรับบูตระบบซึ่งจะมาแทนที่ sysvinit ที่ Debian ใช้อยู่ และ เป็นที่ถกเถียงกันอยู่ ในหมู่นักพัฒนาแพลตฟอร์มยูนิกซ์อื่น ๆ ที่ไม่ใช่ลินุกซ์ (เช่น OpenBSD, FreeBSD, Solaris) เพราะเป็นระบบบูตที่จำเพาะเจาะจงกับลินุกซ์เท่านั้น และยังมีข้อสังเกตว่ามัน ออกแบบขัดกับปรัชญาของยูนิกซ์อย่างแรง

ไม่ใช่แต่เท่านั้น GDM 3.8 ยังใช้ GNOME Shell ทำงานเป็นหน้าล็อกอินอีกด้วย คุณอาจจะคิดว่าผมใช้ความรังเกียจ GNOME Shell มาตัดสิน แต่ถ้าคุณมองความเหมาะสมในทางเทคนิคแล้ว จะเห็นว่ามีอะไรมากกว่านั้น ในเมื่อ GDM ต้องใช้ GNOME Shell และ GNOME Shell ก็ต้องใช้แทบทุกสิ่งทุกอย่างของ GNOME เพราะ GNOME Shell เองก็ออกแบบมาให้รวมทุกสิ่งทุกอย่างของ GNOME เข้ามาในตัว ไม่ว่าจะเป็นการจัดการพลังงาน การใช้พาเนล การจัดการเครือข่าย ไปจนถึง instant messenger และ video call! (ในฐานะนักแปล ผมติดตามเรื่องนี้ได้ไม่ยากครับ ทุกครั้งที่เห็นการย้ายข้อความจากแพกเกจอื่นเข้า GNOME Shell ผมปาดเหงื่อตลอด) ซึ่งก็หมายความว่า คุณไม่สามารถติดตั้ง GDM เพียงลำพังในฐานะ display manager ของระบบเพื่อใช้ล็อกอินเข้าเดสก์ท็อปอื่น (เช่น KDE, Xfce, LXDE, E17, WindowMaker ฯลฯ) โดยไม่แถมพ่วง GNOME เกือบทั้งตัวมาด้วยได้! แล้วนิยามของ display manager คืออะไรกันแน่?

ผมผิดหวังกับ GNOME อีกครั้งที่ออกแบบ GDM ให้ไปรุกล้ำนอกวาระการเข้าระบบ เพียงเพื่อจะเพิ่มประสิทธิภาพของ GNOME โดยไม่แยแสเดสก์ท็อปอื่น ถัดจาก systemd ที่ไปรุกล้ำระบบยูนิกซ์อื่นมาแล้ว พฤติกรรมแบบนี้ ผมว่าผมเคยเห็นมาก่อนนะครับ กับระบบปฏิบัติการบางยี่ห้อ...

ผมจึงยิ่งแน่ใจที่ผมย้ายหนี GNOME มา Xfce ว่าเป็นการตัดสินใจที่ถูกต้องแล้ว ผมเป็นผู้ใช้ ก็ขอใช้สิทธิ์ของผู้ใช้ที่จะไม่เลือกสนับสนุนระบบที่ผมไม่เห็นด้วยครับ

สำหรับ display manager โชคดีที่โลกนี้มีตัวอื่นให้เลือก เช่น lightdm (ผมใช้ GTK+ Greeter) และ SLiM

แล้ว blog หน้า ผมจะมาเขียนถึงการใช้งาน Xfce ในฐานะ GNOME refugee ต่อไปครับ

ป้ายกำกับ: , ,

08 พฤศจิกายน 2556

Thanks, and the September-October Diary

ขอขอบคุณผู้สนับสนุนงานพัฒนาของผมในเดือนกันยายน-ตุลาคมที่ผ่านมาดังนี้ครับ:

เป็นอีกครั้งหนึ่งที่ต้องเขียน blog แบบรวบสองเดือน เนื่องจากภารกิจต่าง ๆ ค่อนข้างเร่งรัด จนอยากใช้เวลาสะสางงานให้เต็มที่มากกว่า

งานในช่วงสองเดือนที่ผ่านมา แบ่งเป็นหมวด ๆ ดังนี้ครับ:

โครงการอักษรอีสาน

งานพัฒนาที่ LTN และ Debian

เป็นการปล่อยสิ่งที่พัฒนาสะสมมาตั้งแต่ระลอกที่แล้วเมื่อต้นปี โดยทยอยตรวจสอบความเรียบร้อยและออกรุ่นซอฟต์แวร์ต่าง ๆ ดังนี้:

  • libdatrie 0.2.7
    • แก้ไขประเด็นเรื่อง portability เกี่ยวกับ void pointer arithmatics ซึ่งจะมีปัญหากับคอมไพเลอร์ที่ไม่ใช่ GCC โดยได้รับรายงานจากคุณ Mikhail Korobov ว่าคุณ Gabi Daver ได้พบปัญหานี้ขณะคอมไพล์ด้วย Visual C++ พร้อมแพตช์แก้
    • ระหว่างแก้ ได้ทดลองคอมไพล์ด้วยตัวเลือก -Wall ทำให้เจอ warning เพิ่มเติม และแก้ไขจนหมด
    • เขียน test case เพื่อให้สามารถตรวจสอบความถูกต้องเวลาแก้โค้ดได้ในอนาคต ที่ผ่านมาจะทดสอบผ่าน libthai เป็นหลัก แต่เขียน test case เป็นเรื่องเป็นราวน่าจะสะดวกกว่า ซึ่งในระหว่างที่เขียน test case ก็ทำให้ได้อ่านเอกสารประกอบและแก้ไขที่ผิด พร้อมกับได้เพิ่ม API เพื่อความสะดวกในการใช้งานด้วย
    • ปรับ Doxyfile ที่ใช้สร้างเอกสาร เพื่อตัดสิ่งที่เลิกใช้แล้วใน doxygen 1.8.4
    • ออก libdatrie 0.2.7.1 ตามมา หลังจากพบว่าลืมปรับค่า library version เพื่อให้ SONAME สะท้อนการเพิ่ม API ที่เกิดขึ้น
    • อัปโหลด 0.2.7.1-1 เข้า Debian sid
  • thaixfonts 1.2.6
    • มีการปรับระบบ build ตาม autoconf รุ่นใหม่ และเปลี่ยนมาใช้ XZ tarball แทน GZ tarball ซึ่งเป็นสิ่งที่ทำไว้นานแล้ว ก็ออกรุ่นมาเพื่อปรับตามซอฟต์แวร์อื่นเท่านั้น ส่วนตัวเนื้อหาฟอนต์ไม่มีการเปลี่ยนแปลงอะไร
    • อัปโหลด 1:1.2.6-1 เข้า Debian sid
  • LibThai 0.1.20
    • ปรับข้อมูลพจนานุกรมตัดคำตามที่พบกรณีต่าง ๆ ในช่วงที่ผ่านมา [เกร็ด: รุ่นนี้รู้จักอำเภอขนอมที่ไม่ใช่ ขน-อม แล้ว ;-)]
    • แก้ compiler warning ที่พบใน test case ต่าง ๆ
    • อัปโหลด 0.1.20-1 เข้า Debian sid
  • TeX hyphenation patterns
    • sync ข้อมูลพจนานุกรมตัดคำจาก libthai เข้าไปที่ ThaiLaTeX SVN พร้อมกับปรับแก้ hyphenation patterns ตามข้อมูลใหม่
    • แจ้งไปที่โครงการ tex-hyphen ว่าขอปรับข้อมูล hyphenation patterns ภาษาไทย พร้อมกับรายงานปัญหาของสคริปต์บางตัวที่ใช้สร้างข้อมูลอัตโนมัติ คุณ Mojca Miklavec ก็ได้ช่วยแก้สคริปต์ให้ (rev 652, 653) และรับแพตช์ปรับข้อมูลภาษาไทยไปรวมให้ (rev 654)
    • สอบถามและขอ import source ของ hyphenation patterns ภาษาไทยเข้าใน tex-hyphen โดยตรง เพื่อที่ต่อไปจะได้ไปทำงานที่นั่นแทนที่จะต้องผ่าน ThaiLaTeX แบบนี้ ทั้งนี้เพื่อให้เป็นไปตามแผน ที่เคยคุยกันไว้ จนกระทั่งได้ import source ใน rev 655
    • ไม่มีการอัปโหลดอะไรใน Debian แค่รอ Debian อัปเดตแพกเกจ texlive-base เท่านั้น
    • request ขอลบ thailatex ออกจาก Debian unstable เพื่อไม่ให้มีซอร์สตกค้างอยู่ (ลบแล้ว)
  • swath 0.5.1
    • แก้รหัสตัดคำของ Lambda จาก U+200C (ZWNJ) เป็น U+200B (ZWSP) ...ว่าแต่มีใครใช้ฟีเจอร์นี้ไหมเนี่ย?
    • sync ข้อมูลพจนานุกรมตัดคำจาก ThaiLaTeX/hyph-utf8 (ซึ่ง sync มาจาก LibThai อีกที) เพื่อให้ตัวตัดคำ LaTeX ทำงานสอดคล้องกับ hyphenation patterns
    • ก่อนออกก็ปรับซอร์สโค้ดของ swath เพื่อให้แต่ละรุ่นมีการปรับปรุงด้านความปลอดภัยไปทีละน้อย โดยในรุ่นนี้ได้ป้องกัน buffer overflow ใน file filter ต่าง ๆ (ยังมีให้แก้อีกเยอะในรุ่นถัด ๆ ไป :-P )
    • อัปโหลด 0.5.1-1 เข้า Debian sid
  • IBus-LibThai 0.1.2
    • แก้ปัญหาการกด shortcut (เช่น Ctrl-C) ใน IBus 1.5 อันเนื่องมาจากการเชื่อมรวมกับ XKB ของ IBus รุ่นนี้ ทำให้ผังแป้นพิมพ์ที่ระบุใน metadata ของ IBus-LibThai ว่าเป็น th ทำให้กด Ctrl-C ได้เป็น Ctrl-แ เสมอ แก้ไขโดยปรับผังแป้นพิมพ์เป็น us เท่านั้น
    • อย่างไรก็ดี การแก้ปัญหาในรายการที่แล้วทำให้เกิดปัญหาใหม่ คือทำให้กด accelerator ใน GUI ที่แปลเป็นไทย (เช่น Alt-ฟ เพื่อเรียกเมนู แฟ้ม) ไม่ได้ วิธีแก้ที่เหมาะสมจึงควรให้ IBus-LibThai พยายามแปลง key event ที่มีการกดปุ่มประกอบให้เป็นภาษาไทย แต่ปรากฏว่าไม่สามารถส่ง event ที่แปลงแล้วกลับไปหา event queue ได้ เนื่องจากฟังก์ชัน ibus_engine_forward_key_event() ไม่ทำงานอย่างที่คาด งมอยู่นานก็ไม่สามารถแก้ได้ เวลามีจำกัดจึงใช้วิธีกำหนดผังแป้นพิมพ์เป็น us,th เพื่อให้ GTK+ กับ XKB ไปคุยกันเอง ซึ่งก็ได้ผล แต่ปัญหาคือ มันจะแปลงอักขระตามผังเกษมณีเท่านั้น ใครใช้ผังปัตตะโชติใน IBus-LibThai ก็จะงง ไว้หาวิธีแก้ต่อไปในรุ่นหน้า
    • เพิ่มการรองรับการป้อนเลขไทยด้วยแป้นตัวเลข โดยอาศัยการกด CapsLock ล็อคไว้ หรือใช้การยกแคร่ระดับ 3 (Alt ขวา) อนึ่ง ตามที่เคยได้ ออกแบบไว้ เมื่อสองปีก่อนนั้น จะใช้ ScrollLock ไม่ใช่ CapsLock เนื่องจาก CapsLock จะไปเพิ่มขั้นตอนขณะสลับภาษาไปเป็นภาษาอังกฤษที่จะต้องปลด CapsLock อีกขั้นหนึ่งด้วย แต่ในครั้งนี้ได้ตัดสินใจเปลี่ยนเป็น CapsLock ด้วยเหตุผลสองประการ ประการแรกคือการตรวจสอบสถานะของ ScrollLock ด้วย API ของ IBus เป็นไปได้ยาก เพราะไม่มีการเตรียมการรองรับไว้ ประการที่สองคือในแป้นพิมพ์ย่อส่วน เช่นแป้นพิมพ์โน้ตบุ๊ก หลายรุ่นได้ตัดปุ่ม ScrollLock ออกไปแล้ว ตามที่ วิกิพีเดียว่าไว้ (โน้ตบุ๊กผมก็ไม่มี)
    • อัปโหลด 0.1.2-1 เข้า Debian sid

งานแปล

  • ตรวจทาน คำแปล GNOME ตามที่มีผู้ส่งคำแปลเข้ามา โดยที่ผมไม่ได้แอคทีฟตามแปลเองอีกต่อไปแล้ว
  • แปล Xfce เป็นไทย เพิ่มเติม โดยล่าสุด ได้แปล core package ต่าง ๆ ครบแล้ว พร้อมกับปรับคำแปลทั้งหมดจาก master กลับไปที่ branch xfce-4.10 ด้วย และแปลปลั๊กอินที่ผมใช้อีกนิดหน่อยเพิ่มเติม ทำให้ขณะนี้อัตราการแปลของภาษาไทยอยู่ที่ 54% แล้ว

blog นี้ก็เลยยาวหน่อย ขอขอบคุณทุกท่านที่ติดตามครับ

ป้ายกำกับ: , , , , , , , , , ,

hacker emblem