แนะนำบน HN: การฟื้นคืนชีพของเบราว์เซอร์ Dillo
(dillo-browser.github.io)- Dillo เป็นเว็บเบราว์เซอร์แบบกราฟิกที่รวดเร็วและขนาดเล็ก มุ่งรองรับตั้งแต่เครื่องรุ่นเก่าหรือเครื่องขนาดเล็กไปจนถึงการเชื่อมต่อที่ช้า และรันได้บน Linux, BSD, MacOS, Windows ผ่าน Cygwin และ Atari
- ใช้ C/C++ พร้อม dependency น้อย ผสาน เอนจินเรนเดอร์แบบเรียลไทม์ ของตัวเองและไลบรารี GUI FLTK เพื่อมุ่งให้ใช้หน่วยความจำต่ำและเรนเดอร์ได้เร็วแม้กับเพจขนาดใหญ่
- รองรับ HTTP, HTTPS, FTP และไฟล์ในเครื่องเป็นพื้นฐาน และสามารถขยายโปรโตคอลใหม่ด้วย ปลั๊กอิน ที่เขียนด้วยภาษาใดก็ได้
- โปรเจกต์ยังคงทิศทางที่ให้ความสำคัญกับการลดอุปสรรคในการเข้าถึงเว็บ ความปลอดภัยและความเป็นส่วนตัวส่วนบุคคล รวมถึง ประสิทธิภาพของซอฟต์แวร์
- รุ่นล่าสุดคือ 3.2.0 และข้อมูลหลักถูกเก็บไว้ใน git repository ของตัวเอง พร้อม mirror ไปยัง Codeberg และ Sourcehut
เบราว์เซอร์กราฟิกขนาดเล็กและรวดเร็ว
- Dillo เป็นเว็บเบราว์เซอร์แบบกราฟิกที่รวดเร็วและขนาดเล็ก
- รันได้บน Linux, BSD, MacOS, Windows ผ่าน Cygwin และ Atari
-
วิธีการพัฒนา
- เขียนด้วย C และ C++ และมี dependency น้อย
- พัฒนา เอนจินเรนเดอร์แบบเรียลไทม์ ของตัวเอง
- ใช้หน่วยความจำต่ำและเรนเดอร์ได้เร็วแม้กับเพจขนาดใหญ่
- ใช้ไลบรารี GUI FLTK ที่รวดเร็วและไม่รุงรัง
-
ฟีเจอร์พื้นฐานและเป้าหมาย
- รองรับ HTTP, HTTPS, FTP และไฟล์ในเครื่อง
- ขยายได้ด้วยปลั๊กอินที่เขียนด้วยภาษาใดก็ได้
- เป็นซอฟต์แวร์เสรีภายใต้ไลเซนส์ GPLv3
- ช่วยให้ผู้เขียนทำตามมาตรฐานเว็บด้วย bug meter
- มีเป้าหมายเพื่อลดอุปสรรคในการเข้าถึงเว็บ รองรับเครื่องรุ่นเก่าหรือเครื่องขนาดเล็กและการเชื่อมต่อที่ช้า ความปลอดภัยและความเป็นส่วนตัวส่วนบุคคล และประสิทธิภาพซอฟต์แวร์ในระดับสูง
- สามารถดูวิธีใช้ฟีเจอร์ต่าง ๆ ได้ใน User Manual
- โดเมน
dillo.orgไม่ได้อยู่ภายใต้การควบคุมของนักพัฒนา Dillo อีกต่อไป
โครงสร้างพื้นฐานของโปรเจกต์ที่ย้ายไปโฮสต์เอง
- Dillo กำลังย้ายจากการดำเนินงานที่มี GitHub เป็นศูนย์กลางไปสู่โครงสร้างพื้นฐานที่โฮสต์เอง
- ข้อมูลสำคัญถูกเก็บไว้ใน git repository ที่ให้บริการโดย cgit service
- repository ถูก mirror ไปยัง Codeberg และ Sourcehut
- สามารถดูซอร์สได้ที่ Git repository
- ลิงก์หลักที่เกี่ยวข้องกับโปรเจกต์มีให้ผ่าน Website, Git, Bug tracker, Mastodon, IRC, Mailing list และ Liberapay
รีลีส เอกสาร และช่องทางการมีส่วนร่วม
- สามารถดาวน์โหลด latest release 3.2.0 และ build ตามคำแนะนำใน
README.md - สามารถ clone การเปลี่ยนแปลงล่าสุดได้โดยตรงจาก Git repository
-
เอกสาร
- User Manual: ครอบคลุมวิธีใช้ทุกฟีเจอร์ และเผยแพร่พร้อมกับเบราว์เซอร์ จึงอ่านในเครื่องได้
- Topic Guide: ครอบคลุมหัวข้อเพิ่มเติมที่ไม่มีในคู่มือ เช่น วิธีตั้งค่า Dillo และ mpv เพื่อเปิดไฟล์มัลติมีเดียจาก URL
- Developer Documentation: ครอบคลุมการออกแบบและการพัฒนาภายในของเบราว์เซอร์ และแนะนำสำหรับนักพัฒนา
-
วิธีมีส่วนร่วม
การรองรับโปรโตคอลที่ขยายได้ด้วยปลั๊กอิน
- ปลั๊กอินโต้ตอบผ่าน standard input และ output และเพิ่มการรองรับโปรโตคอลใหม่
- ตัวอย่างปลั๊กอินที่มีให้มีดังนี้
- สามารถดูปลั๊กอินเพิ่มเติมได้ใน git repositories
- หากต้องการเพิ่มปลั๊กอินใหม่ ให้ส่งลิงก์ repository และคำอธิบายสั้น ๆ ทางอีเมล
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
บิลด์บน M1 Mac ที่ใช้ macOS 12.7 ได้เรียบร้อย และการติดตั้งก็ทำตามคำแนะนำของ macOS ได้เลย: ติดตั้งแพ็กเกจด้วย
brew installใส่ OpenSSL 3 แล้วก่อน./configureให้รันexportเพื่อตั้งค่า path ของ OpenSSLจากนั้นรัน
make,sudo make install,dilloก็เปิดใช้งานได้ทันที เป็น ไบนารีขนาด 1.6MB แต่รองรับ SSL และเร็วมากGoogle Search ใช้ได้พอสมควรแม้ CSS จะเพี้ยน แต่เพราะไม่มี JavaScript จึงดูเหมือนว่าจะล็อกอิน Google ได้ยาก
[0] https://github.com/dillo-browser/dillo/blob/master/doc/insta...
[1] https://github.com/dillo-browser/dillo/blob/master/doc/insta...
[2] https://stackoverflow.com/a/77749836
ใน CI ดูเหมือนจะทำได้แม้ไม่มี include flag แต่เพราะไม่ได้มี Mac อยู่กับตัว จึงมีข้อจำกัดในการทดสอบ
สำหรับ ฮาร์ดแวร์สเปกต่ำ จำเป็นต้องมีเบราว์เซอร์ที่เร็วและเบากว่านี้จริง ๆ
SBC, Raspberry Pi หรือโน้ตบุ๊กที่มีอายุหลายปี ส่วนอื่น ๆ ยังใช้งานได้ลื่น แต่ประสิทธิภาพเบราว์เซอร์มักเป็นตัวถ่วงเสมอ
สุดท้ายก็ต้องยอมรับว่าเพราะข้อกำหนดบางอย่างทำให้ต้องใช้ Ryzen 7 กับ RAM 16GB และที่ขมขื่นคือภาระประมวลผลที่หนักที่สุดกลับเป็น MS Teams กับเว็บเมล
มันช้าอย่างน่าตกใจ สับสน บั๊กเยอะ และแท็บก็ตายบ่อย จนรู้สึกเหมือนเป็น ตัวอย่างของซอฟต์แวร์ที่ไม่ควรเป็นแบบนั้น
ยังแปลกใจอยู่เลยว่า Microsoft มองว่าสิ่งนี้ใช้ได้แล้ว และสงสัยว่า Slack เป็นอย่างไรบ้าง
อาจเป็นเพราะการแข่งขันมีไม่มาก เลยไม่ได้พยายามทำให้ดีขึ้นเท่าไร
Links รองรับโหมดกราฟิกด้วย
CPU เดสก์ท็อป/โน้ตบุ๊กราคาถูกระดับพอเหมาะกับ RAM 4GB ก็เพียงพอสำหรับรัน MS Teams แล้ว และก็ไม่ค่อยเข้าใจว่าทำไมต้องใช้เว็บเมล ทั้งที่มี mail transfer agent ที่ใช้งานได้จริงและมีประสิทธิภาพกว่า
เมื่อดูจากสถานการณ์แล้ว ดีใจที่ได้ยินว่า Dillo จะยังไปต่อ
มีเน็ตบุ๊ก Intel Atom N270 จากราวปี 2009 อยู่สองเครื่องกับ RAM 1GB ซึ่ง Firefox หนักเกินเหตุบนเครื่องพวกนั้น แต่ Dillo น่าจะทำงานได้ดีมาก
เมื่อก่อนตอนอ่านเอกสารที่ CSS ไม่หนัก ก็ใช้ Dillo แม้บนเดสก์ท็อปหลัก และในขณะที่แท็บ Firefox 20–40 แท็บกิน RAM มาก Dillo มักจะอยู่แถว ๆ 100MB
เพราะไม่มีเอนจิน JavaScript เลยใช้ Dillo เวลาเปิดลิงก์ที่น่าสงสัยด้วย และรู้สึกว่าเป็นซอฟต์แวร์ที่ยอดเยี่ยมซึ่งใช้งานมาได้ดีเกิน 15 ปีแล้ว
Dillo ไม่มี sandbox สำหรับส่วนซับซ้อนที่มักถูกโจมตีบ่อย เช่น การถอดรหัสภาพ การพาร์ส HTML/CSS โปรโตคอลเครือข่าย และการเข้าถึงไฟล์ในเครื่อง
สมัยเรียนมหาวิทยาลัยใช้ Pentium 4 เก่า ๆ ที่บ้าน เบราว์เซอร์ทั่วไปต้องรอราว 30 วินาทีกว่าจะเปิดแท็บเดียวได้
เลยใช้ Dillo เป็นหลัก ส่วนบทความที่ต้องใช้ JavaScript ก็ผ่าน Google Cache แล้วค่อยไป Firefox
เพราะเครือข่ายก็ช้าด้วย การโหลดเฉพาะ HTML จึงช่วยได้มาก และ Dillo ก็เร็วมากเสมอตลอดหลายปี
เบามากเช่นกัน
doas /sbin/modprobe zramdoas /sbin/zramctl --find --size 1024Mdoas /sbin/mkswap /dev/zram0doas /sbin/swapon /dev/zram0 --priority -1ถึงจะไม่ใช่ Firefox แต่น่าเสียดายที่สำหรับงานบน single-page อย่างเว็บราชการที่บังคับใช้ JavaScript นั้น Luakit อาจเป็นตัวเลือกที่ใช้ได้
เพิ่งได้เน็ตบุ๊ก Intel Atom มาเมื่อไม่นานนี้ และกำลังหาระบบปฏิบัติการที่เบาและใช้งานได้จริง
ลอง Debian แล้วแต่ Firefox ช้าเกินไป บางทีตอนนี้อาจคุ้มที่จะลองอีกครั้งด้วย Dillo
ระบบส่วนขยายน่าสนใจ และทำให้นึกถึงสคริปต์ CGI แบบโลคัลของ w3m
CGI แบบโลคัลของ w3m สามารถใช้ทำตัวดูหน้า man, ระบบบุ๊กมาร์ก และการรองรับโปรโตคอลเพิ่มเติมเมื่อใช้ร่วมกับ
urimethodmapดูเหมือนว่า Dillo ก็มีปลั๊กอิน man และปลั๊กอิน DPI สำหรับบุ๊กมาร์กในลักษณะคล้ายกัน และน่าจะทำสคีมแบบกำหนดเองอย่าง
man:ได้ด้วยไม่เคยรู้มาก่อนว่ามีเบราว์เซอร์อื่นนอกจาก w3m ที่รองรับแนวทางแบบนี้ และผมกำลังทำโปรเจกต์ส่วนตัวที่เอาแม้แต่ HTTP ไปวางบนโครงสร้างปลั๊กอินคล้าย ๆ กันพอดี เลยได้กรณีอ้างอิงที่สองเพิ่มมา
[0]: https://dillo-browser.github.io/old/dpi1.html
[1]: https://github.com/dillo-browser/dillo-plugin-man
มีทั้งปลั๊กอินที่ทำหน้าที่เป็น “เว็บไซต์” อย่าง
file:,vsource:,ftp:และปลั๊กอินที่รับผิดชอบฟังก์ชันอย่างการจัดการคุกกี้ ดาวน์โหลด และบุ๊กมาร์กเพราะเป็นโปรเซสแยกต่างหาก แม้ปิดเบราว์เซอร์แล้ว การดาวน์โหลดยังดำเนินต่อได้
[1]: https://github.com/dillo-browser/dillo/tree/master/dpi
ใน
~/.dillo/dpidrcจะเชื่อมโปรโตคอลเข้ากับไบนารีของปลั๊กอิน และด้วยปลั๊กอินภายนอกก็สามารถรองรับgemini:,gopher:หรือแม้แต่git:ได้จนกระทั่งไม่นานมานี้ HTTPS ก็ยังถูกทำเป็นปลั๊กอิน DPI แต่ตอนนี้ถูกย้ายเข้าไปอยู่ในตัวเบราว์เซอร์หลักแล้ว
ผมทำ ไลบรารี Go แบบบาง ๆ สำหรับเขียนปลั๊กอิน Dillo ไว้แล้ว(https://github.com/boomlinde/dpi) และยังทำปลั๊กอินสำหรับโปรโตคอล Gemini ด้วย(https://github.com/boomlinde/gemini.filter.dpi)
เท่าที่ผมรู้ ใน Dillo ช่วงหลังนี้ https ก็ถูกทำเป็นปลั๊กอิน DPI เช่นกัน
แนะนำให้ลองติดต่อ Renato Bravo
https://www.youtube.com/channel/UCuklruLsO-CFoKK_rjNXrXg
https://www.youtube.com/watch?v=A6mb9qt2-3o
ในวิดีโอข้างต้น Renato พูดว่า “ese es mi compañero Jorge” ซึ่งหมายถึง “คนนั้นคือเพื่อนร่วมงานของผม Jorge”
ผมหา Renato Bravo ใน LinkedIn เจอ แต่ไม่รู้ว่าเป็นคนเดียวกันหรือเปล่า
ถ้าเขามาจากพื้นที่ Valparaíso ในชิลีเหมือน Jorge ก็น่าจะเป็นคนนี้
ผมไม่ได้ใช้ LinkedIn แต่ถ้ามีใครช่วยส่งข้อความให้ได้ก็คงดี
[1]: https://cl.linkedin.com/in/renatobravo
เมื่อก่อนมักทดสอบบน Dillo เพื่อดูว่าเว็บพังเละเทะหรือไม่ แต่ Dillo เก่าเกินไปแล้ว เลยย้ายไปใช้ NetSurf, w3m, elinks แทน
การกลับมาครั้งนี้น่ายินดี โดยเฉพาะสำหรับระบบใช้พลังงานต่ำ
แต่ก็เสียดายที่ย้ายจากรีโพซิทอรี Mercurial แบบโฮสต์เอง ไปยังรีโพซิทอรี Git ของ Microsoft GitHub ซึ่งเป็นของบริษัทใหญ่ในสหรัฐฯ อย่างไรก็ตาม ผู้ดูแลบอกว่าจะรับแพตช์ทางอีเมล จึงไม่ได้บังคับให้สร้างบัญชีหรือยอมรับเงื่อนไขการใช้งาน
อย่างน้อยก็เชื่อได้ว่า GitHub จะยังอยู่ต่อไปอีก 5–10 ปี จึงสามารถใส่ประกาศรีไดเรกต์ไว้บนเว็บเพจหลักได้
ถึงอย่างนั้นก็เห็นด้วยว่าการย้ายไปโฮสต์เองหรือใช้ forge แบบ federated น่าจะดีกว่า
มีอ issue ที่เกี่ยวข้องอยู่ และปัญหาตอนนี้คือบัญชีฟรีของ forge อื่นอย่าง Codeberg ไม่มีวิธีรัน CI pipeline บนแพลตฟอร์มอื่นอย่าง macOS
ระยะยาวอยากได้ฮาร์ดแวร์จริงมาตั้ง runner เอง และทดสอบบนหลายสถาปัตยกรรมด้วย
[1]: https://github.com/dillo-browser/dillo/issues/39
โปรเจกต์เดิมโฮสต์เองแม้กระทั่งเมลเซิร์ฟเวอร์ จนเกิดจุดล้มเหลวเดี่ยวขนาดใหญ่ และในทางปฏิบัติก็ล้มเหลวหนัก จึงพยายามหลีกเลี่ยงเรื่องนี้
สำหรับแพตช์ทางอีเมลก็กำลังคิดเรื่อง mailing list อยู่ แต่ไม่ค่อยรู้จักบริการฟรีมากนักนอกจาก sourcehut กับ googlegroups
จำได้ว่าเคยใช้ Dillo บน Puppy Linux แบบ Live CD
สงสัยว่าคอมไพเลอร์ขั้นต่ำที่ตั้งเป้าไว้คืออะไร มีแผนระยะยาวไหม จะทำ fuzzing หรือเปล่า และจะย้ายไปใช้ระบบ build สมัยใหม่อย่าง CMake หรือไม่
แผนระยะยาวคืออันดับแรกทำให้ Dillo ไม่ตาย และกันไม่ให้ถูกเอาออกจากดิสโทร
หลังจากนั้นก็ขึ้นอยู่กับเวลาว่างที่ใช้ได้ แต่อย่างน้อยตั้งใจจะดูแลรักษาต่อ
ก่อนทำ fuzzing ถ้าเพิ่มชุดทดสอบของเบราว์เซอร์อื่น ๆ น่าจะจับปัญหาการเรนเดอร์ได้มาก และ fuzzing น่าจะน่าสนใจเป็นพิเศษกับ HTML/CSS parser ที่ทำเอง
พอลองแก้
configure.acแล้วพบว่าทรมานมากเมื่อต้องรองรับหลายแพลตฟอร์ม และ cross compile ก็พังอยู่ต้องดูว่าการรองรับ CMake บนระบบอื่นเป็นอย่างไร แล้วค่อยพิจารณาว่าจะถอดสาย Automake ออกได้อย่างปลอดภัยไหม แต่ไม่อยากใส่การเปลี่ยนแปลงใหญ่ก่อนรุ่น 3.1
เมื่อดึงโค้ดจาก GitHub มาบิลด์ดู พบว่าไซต์เริ่มต้นยังเป็น
dillo.orgและพอพยายามเข้าไป เบราว์เซอร์ก็ค้างตายduckduckgo.comก็เป็นเหมือนกัน และดูเหมือนจะเกี่ยวข้องกับการ assert ล้มเหลวของ OpenSSLพอคอมไพล์ใหม่ด้วย mbedTLS ก็สามารถเข้าไซต์เหล่านั้นได้
พยายามล็อกอินเข้ามาตอบในเธรดนี้ แต่แม้จะใส่ชื่อผู้ใช้กับรหัสผ่านแล้วล็อกอิน ก็ยังคงอยู่ในสถานะล็อกเอาต์โดยไม่มีข้อผิดพลาดใด ๆ
ถ้าเปิด issue บน GitHub พร้อมข้อมูลระบบและเวอร์ชัน OpenSSL ให้ เราจะลองทำซ้ำดูได้
ปัญหาล็อกอินน่าจะเป็นเพราะปิดคุกกี้ไว้
https://dillo-browser.github.io/old/dillo3-help.html
https://dillo-browser.github.io/old/Cookies.txt
โดยค่าเริ่มต้น Dillo จะปิดคุกกี้ทั้งหมดไว้ ดังนั้นแนะนำให้อนุญาตเองเป็นรายไซต์
echo "news.ycombinator.com ACCEPT" >> ~/.dillo/cookies.txtจากนั้นรีสตาร์ต DPI daemon เพื่อให้อ่านการตั้งค่าคุกกี้ใหม่
dpidc stopดีใจที่เห็นว่า Dillo ยังได้รับความสนใจอยู่
ผมมี ปลั๊กอิน Dillo ค่อนข้างมากที่เคยได้มาจาก scuttlebutt
มี
dillo-adb,dillo-dat,dillo-finger,dillo-git,dillo-gopher,dillo-gemini,dillo-ipfs,dillo-ssb,dillo-ytdlถ้าต้องการ ผมสามารถรวมเป็น zip ส่งให้ เพื่อให้ fork และพัฒนาต่อในโปรเจกต์ได้https://celehner.com/projects.html#dillo-plugins
ผมได้คุยกับ Charles แล้วเรื่องการเก็บสำเนาไว้บน GitHub ภายใต้องค์กร dillo-browser
จะเปิด issue แล้วอัปโหลดสำเนาไฟล์ zip เพื่อให้เก็บไว้ก็ได้
รู้สึกภูมิใจที่เห็นงานที่ต่อยอดมาจากเมล็ดพันธุ์ที่หว่านไว้เมื่อนานมาแล้ว ยังคงดำเนินต่อไป
[1]: https://sources.debian.org/src/gzilla/0.1.5-3/bytesink.doc/
ผมอาจช่วยติดต่อ Jorge ให้ได้