58 คะแนน โดย GN⁺ 2026-02-24 | 5 ความคิดเห็น | แชร์ทาง WhatsApp
  • เฟรมเวิร์กเดสก์ท็อปแอปที่พัฒนาด้วย TypeScript โดยใช้ Bun สำหรับเมนโปรเซส และ Zig สำหรับเนทีฟไบน์ดิง
  • รองรับ macOS, Windows, Ubuntu ทั้งหมด พร้อมสร้างตัวติดตั้ง การอัปเดตอัตโนมัติ และอาร์ติแฟกต์แพตช์แบบส่วนต่างโดยอัตโนมัติ
  • ให้ ชุดความสามารถเดสก์ท็อปแบบครบถ้วน เช่น การควบคุมหน้าต่าง เมนู คีย์ลัด คลิปบอร์ด กล่องโต้ตอบ ที่เก็บเซสชัน ฯลฯ พร้อมการทำเว็บวิวที่เสถียรบนพื้นฐาน OOPIF
  • โครงสร้างภายในใช้ FFI และโมเดลหน่วยความจำที่ใช้ร่วมกันของ Bun เพื่อคงประสิทธิภาพไว้แม้ในสภาพแวดล้อมหลายโปรเซส
  • ผู้พัฒนาที่เคยเจอข้อจำกัดของ Electron และ Tauri ได้เรียนรู้ Zig, C, C++, Objective-C ตลอด 2 ปี และพัฒนาขึ้นเอง
  • ตั้งเป้าเป็น เวิร์กโฟลว์แบบรวมศูนย์ ที่เริ่มเขียนโค้ดได้ภายใน 5 นาที และดีพลอยได้ภายใน 10 นาที

ภาพรวมและเป้าหมายของโปรเจกต์ Electrobun

  • โครงสร้างที่รันเมนโปรเซสด้วย Bun บันเดิล TypeScript ของเว็บวิว และเขียนเนทีฟไบน์ดิงด้วย Zig
  • ทั้งเมนโปรเซสและเว็บวิวเขียนด้วย TypeScript แต่ยังคง การแยกโปรเซส (isolation) พร้อมให้การสื่อสาร RPC ที่รวดเร็วและมีการกำหนดชนิด
  • ขนาดแอปบันเดิลแบบ self-extract อยู่ที่ประมาณ 12MB (เมื่อใช้ระบบเว็บวิว โดยส่วนใหญ่เป็นขนาดของ Bun runtime)
  • การอัปเดตแบบส่วนต่างบนพื้นฐาน bsdiff สามารถลดขนาดแพตช์ได้เหลือน้อยสุดถึง 14KB
  • มีเป้าหมายเพื่อมอบ เวิร์กโฟลว์แบบรวมหนึ่งเดียว ที่เริ่มเขียนโค้ดได้ใน 5 นาที และดีพลอยเสร็จได้ใน 10 นาที
  • เริ่มโปรเจกต์จากเทมเพลตได้ด้วยคำสั่ง npx electrobun init

เบื้องหลังการพัฒนา

  • ผู้พัฒนาเริ่มสร้างเดสก์ท็อปแอปมาตั้งแต่ยุค Visual Basic 6 และมีประสบการณ์ส่งมอบผลิตภัณฑ์สตาร์ตอัปหลายตัวให้ผู้ใช้นับพันคนในยุค Adobe AIR
  • แม้จะทำงานเป็นวิศวกรช่วงเริ่มต้นของสตาร์ตอัปมากว่า 20 ปี และสร้าง-ขยายผลิตภัณฑ์ระดับยูนิคอร์นมาแล้ว สภาพแวดล้อมการพัฒนาเดสก์ท็อปกลับถดถอยลง
  • ระหว่างสร้าง co(lab) ซึ่งเป็นไฮบริดของเว็บเบราว์เซอร์ + โค้ดเอดิเตอร์ + PTY เทอร์มินัล เขาต้องเจอกับความไม่สะดวกมากมายจนตัดสินใจทำเฟรมเวิร์กขึ้นเอง
  • เวอร์ชันแรกสร้างด้วย Electron แต่กระบวนการเซ็นโค้ด notarization การแจกจ่าย และการอัปเดตให้ความรู้สึกเหมือนกำลังต่อสู้กับเฟรมเวิร์กมากกว่าสร้างแอป
  • ต้องการ continuous shipping แบบเดียวกับเว็บ แต่ทูลเชนเดิมทำให้เรื่องนี้ยากเกินความจำเป็น
  • เคยลอง Tauri ด้วย แต่เห็นว่า Rust ไม่ได้เหมาะกับนักพัฒนาทุกคน และในเวลานั้น Bun ยังอยู่ก่อนการเปิดตัว 1.0 หลายเดือน จึงเริ่มลงมือพัฒนาเอง

จาก macOS สู่ข้ามแพลตฟอร์ม

  • ในช่วงแรกสร้างแอปได้เฉพาะบน macOS แต่ตอนนี้รองรับการบิลด์และดีพลอยบน macOS, Windows, Ubuntu อย่างเต็มรูปแบบแล้ว
  • มีการสร้างตัวติดตั้ง อาร์ติแฟกต์อัปเดตอัตโนมัติ และ แพตช์แบบส่วนต่าง (differential patches) ให้อัตโนมัติทั้งหมด
  • เพียงเชื่อมต่อกับโฮสต์แบบสแตติก (R2, S3, GitHub Releases) ก็พร้อมดีพลอย
  • การอัปเดตแบบส่วนต่างใช้ zig-bsdiff ที่พอร์ตจาก C มาเป็น Zig และปรับแต่งด้วย SIMD และ zstd
  • เมื่อ FFI ของ Bun มีความเสถียรมากขึ้น เลเยอร์ Zig FFI ส่วนใหญ่ที่เขียนไว้เดิมจึงถูกแทนที่ด้วย Bun
  • สถาปัตยกรรมเปลี่ยนไปในทางที่ดี โดย Bun ใช้ หน่วยความจำร่วมกัน เมื่อสร้าง worker จึงยังคงประสิทธิภาพได้แม้ในระบบหลายโปรเซส

ฟีเจอร์ที่เปิดตัวแล้ว

  • ปัจจุบันเป็นเฟรมเวิร์กที่สมบูรณ์ โดยมี การควบคุมหน้าต่างข้ามแพลตฟอร์ม เมนู คีย์ลัด (accelerators) โกลบอลชอร์ตคัต คลิปบอร์ด ไดอะล็อก เว็บวิวพาร์ทิชัน ที่เก็บเซสชัน การค้นหาในหน้า (find-in-page) รวมถึงทูลสำหรับบันเดิลและอัปเดต
  • การทำงานของ OOPIF (Out-of-Process Iframe) อยู่ในระดับที่ใช้งานได้จริงแล้ว
    • แท็ก <webview> ของ Electron ถูก deprecated ใน Chromium แต่ยังไม่มีทางเลือกอื่นที่จัดเตรียมไว้
    • <electrobun-webview> คือ "super iframe" ที่แท้จริง ซึ่งการจัดวางใน DOM การแยกโปรเซส และการซ้อนเลเยอร์ทำงานได้ถูกต้อง
    • ทำงานข้ามแพลตฟอร์มได้โดยไม่มีปัญหาเคอร์เซอร์กะพริบ (cursor flicker) และไม่ต้องแพตช์เอนจินเบราว์เซอร์

สถานะการรองรับแพลตฟอร์ม

  • macOS 14+: รองรับอย่างเป็นทางการ
  • Windows 11+: รองรับอย่างเป็นทางการ
  • Ubuntu 22.04+: รองรับอย่างเป็นทางการ
  • Linux ดิสทริบิวชันอื่น ๆ (gtk3, webkit2gtk-4.1): รองรับโดยชุมชน

แผนถัดไป

  • รีไรต์ co(lab) ใหม่ทั้งหมดบน Electrobun เสร็จแล้ว และหลังจาก v1 เสถียรจะโฟกัสการพัฒนา co(lab) อย่างจริงจัง
  • เป้าหมายสำคัญคือทำให้เฟรมเวิร์กมีเสถียรภาพเพียงพอสำหรับการสร้างผลิตภัณฑ์ระยะยาวที่ทะเยอทะยาน โดยไม่สั่นคลอนจาก ความผันผวนของแพลตฟอร์ม (platform churn)
  • ชุมชน Discord กำลังเติบโต และผู้ใช้ที่ช่วยเบต้าเทสต์ ส่ง issue และให้ฟีดแบ็กก็มีส่วนในการหล่อหลอมเฟรมเวิร์กนี้
  • Electrobun คือผลิตภัณฑ์หลักตัวแรกที่เปิดตัวโดย Blackboard

5 ความคิดเห็น

 
myname1260 2026-03-03

เห็นเขียนว่าเป็นการเขียน co(lab) ใหม่ทั้งหมด เลยคิดว่าเป็นเรื่องการปรับปรุงเสถียรภาพของคลาวด์สำหรับรัน ipynb ร่วมกับ Google แต่จริง ๆ แล้วเป็นโปรเจ็กต์พัฒนาของทีม Blackboard ที่ไม่เกี่ยวกันเลย

ถึงอย่างนั้น การที่ OOPIF ซึ่งติดตั้งด้วย npx สามารถเข้าถึงได้ก็ดูจะเป็นประสบการณ์ที่สำคัญ

 
geekbini 2026-02-24

"ให้ความรู้สึกว่ากระบวนการเซ็นโค้ด รับรองความถูกต้อง เผยแพร่ และอัปเดต เป็นการต่อสู้กับเฟรมเวิร์กมากกว่าการพัฒนาแอป"

ในบทความมีการกล่าวถึงที่มาของการพัฒนาด้วยข้อความข้างต้น
ในความเป็นจริงก็มีหลายกรณีที่ต้องลงแรงกับการเผยแพร่มากกว่าการพัฒนาแอปเสียอีก
แค่แก้ปัญหานี้ได้ก็น่าชื่นชมอย่างมากแล้วครับ

 
bus710 2026-02-24

ดูเหมือนว่าการเอา zig ไปติดกับ Flutter ก็ทำได้ค่อนข้างง่ายและไม่ซับซ้อนเหมือนกันนะครับ
แทบไม่ต่างจากเอกสาร Dart/c ffi มากนัก...

 
mammal 2026-02-24

> สงสัยว่าทำไมดิสโทร Linux หลัก ๆ ถึงไม่ให้ WebView พื้นฐานมาเป็นค่าเริ่มต้น นี่เป็นอุปสรรคใหญ่ต่อการขยายระบบนิเวศของแอป

ถ้าเป็นระบบปฏิบัติการที่มีสภาพแวดล้อมแบบ GUI ตอนนี้ก็น่าจะถึงเวลาที่ WebView ควรกลายเป็นคอมโพเนนต์พื้นฐานแล้วนะครับ

 
GN⁺ 2026-02-24
ความคิดเห็นจาก Hacker News
  • สวัสดี ผมคือผู้สร้าง Electrobun
    ตอนนี้ได้ปล่อยเวอร์ชันเสถียร v1 แล้ว สถาปัตยกรรมถูกกำหนดลงตัวแล้ว และถ้าต้องการ บั๊ก หรือ API ที่เคยใช้ใน Electron/Tauri ให้ไปฝากไว้ที่ GitHub issue แล้วผมจะจัดลำดับความสำคัญให้
    ตลอดเดือนที่ผ่านมาได้แก้โค้ด 50,000 บรรทัดเพื่อทำงานด้านเสถียรภาพจนเสร็จ
    ยังมี วิดีโอเดโม ของโปรเจ็กต์โอเพนซอร์ส Colab (เว็บเบราว์เซอร์ + โค้ดเอดิเตอร์ + PTY เทอร์มินัล) ที่สร้างด้วย Electrobun ด้วย
    โดยพื้นฐานแล้ว Electrobun ใช้ WebView ของระบบ แต่สามารถรวม CEF ได้ด้วยตัวเลือก bundleCEF โครงสร้างถูกออกแบบให้แยกจาก WebView ดังนั้นถ้า Servo หรือ Ladybird พร้อมเมื่อไร ก็สามารถสลับแทนได้ทันที
    นอกจากนี้ ในแต่ละรีลีสยังสามารถสร้าง แพ็กเกจบีบอัดอัตโนมัติที่ใช้ zstd เพื่อลดขนาดดาวน์โหลดครั้งแรก และทำให้อัปเดตมีขนาดเล็กได้ระดับ 14KB

    • อยากรู้ว่า type definitions ตรงกับเอกสารหรือไม่ เช่น ถ้าใส่คีย์ partition ลงใน BrowserWindow จะเกิด TypeScript error
    • แค่อยากบอกว่าขอบคุณที่สร้าง Electrobun ขึ้นมา
  • Electrobun ดูมีอนาคตมาก ผมตั้งใจว่าจะใช้ตัวนี้ทำโปรเจ็กต์ถัดไป
    ใน Full TypeScript stack มันให้ประสิทธิภาพการทำงานสูงสุด ดีใจที่มีทางเลือกที่เบาและเร็วกว่า Electron โดยไม่ต้องใช้ Rust หรือผ่านกระบวนการคอมไพล์ยาว ๆ

    • เพิ่งทำ แอป Tauri ตัวแรกเสร็จ และตกใจมากที่การ build บน Windows ใช้เวลานานขนาดนั้น ตั้งใจว่าจะลอง Electrobun แน่นอน
  • ใน Discord มี นักพัฒนาเกม จำนวนมากกำลังทดลองทำเกมเดสก์ท็อปด้วย Electrobun
    มันอาจเข้ามาแทนที่ Electron บางส่วนในตลาดเกมอินดี้บน Steam ได้
    โดยเฉพาะประสบการณ์พัฒนาเกม TypeScript ที่ reload ทันที ด้วย bun --watch game.ts นั้นเร็วและลื่นมาก

    • ในฐานะคนที่ทำเว็บเยอะ ต่อให้ไม่นับเรื่องเครื่องมือ Bun ก็ถือเป็น ก้าวกระโดดด้านประสิทธิภาพ อย่างมาก
    • เกมที่ทำด้วย Electron มีไม่มาก นึกออกแค่ CrossCode ส่วนใหญ่ใช้ Unity หรือ Godot กัน
    • อยากรู้ว่าการทดลองแบบนั้นเกิดขึ้นใน Discord เซิร์ฟเวอร์ไหน อยากเข้าร่วมด้วย
    • ตอนนี้ Node ก็รองรับ watch mode และการรัน TypeScript แล้ว
  • ปัญหาหลักของ Tauri คือคุณภาพของ WebView ของระบบแตกต่างกันไปตามแต่ละ OS
    บน Linux ไม่มี WebView ทางการ ส่วน Windows 7 หรือ Windows 10 รุ่นแรก ๆ ก็ไม่ได้ใช้ Edge WebView ความต่างพวกนี้ทำให้บางครั้งใช้เวลาเปิดเกิน 20 วินาที
    เลยสงสัยว่าควรยอมรับ trade-off แบบนี้เพื่อประหยัด 100MB หรือไม่
    ผู้ใช้ส่วนใหญ่ใช้อินเทอร์เน็ตเร็ว ดังนั้นความเร็วในการดาวน์โหลดจึงไม่ใช่ปัญหาใหญ่
    เลยสงสัยว่า Electrobun รองรับ renderer แบบ Chromium ที่ฝังมาในตัว หรือไม่ แต่ในเอกสารก็ยังไม่ชัดเจน

    • โดยพื้นฐานแล้ว Electrobun ใช้ WebView ของระบบ แต่หากจำเป็นก็สามารถ bundle CEF(Chromium) ได้ มีระบุไว้ในเอกสารทางการ
    • ในเว็บไซต์ผลิตภัณฑ์ก็เขียนไว้ว่า “System’s native webview as renderer, CEF optional” แปลว่าเลือกได้
    • ตอนทำแอป Tauri บน Windows ผมต้องใช้ embedded bootstrapper ดีใจที่ดูเหมือน Electrobun จะแก้ปัญหาแบบนี้ได้ดี
    • สงสัยว่าทำไม Linux distribution หลัก ๆ ถึงไม่ให้ WebView มาตั้งแต่ต้น นี่เป็นอุปสรรคใหญ่ต่อการขยาย ecosystem ของแอป
    • ตอนนี้ใน Tauri ก็มีเวอร์ชันที่ใช้ CEF อยู่ระหว่างการพัฒนาเช่นกัน ดูได้จากสาขาที่เกี่ยวข้อง เพราะคุณภาพของ WebView บน OS ต่ำ วิธีนี้น่าจะเป็นแนวทางปรับปรุงที่ดีกว่ามาก
  • น่าจะระบุในชื่อเรื่องให้ชัดว่านี่คือ บล็อกโพสต์ย้อนมองโปรเจ็กต์
    ถ้าจะดูตัวโปรเจ็กต์จริง ๆ ไปที่ลิงก์เอกสารทางการน่าจะเหมาะกว่า

  • หน้าแรกของโปรเจ็กต์อยู่ที่นี่
    อินเทอร์เฟซดูสะอาดดี และเพราะผมคุ้นกับ Zig จึงน่าจะเข้าถึงง่ายกว่า Rust

  • สัปดาห์นี้บริษัทของผมกำลังจะปล่อย แอป Electron ตัวใหม่ และก็อดคิดไม่ได้ว่า ถ้า Electrobun ออกมาเร็วกว่านี้สัก 1 ปีก็คงดี
    Electron Builder ช่วยทำให้กระบวนการอัปเดตและการเซ็นง่ายขึ้นได้ระดับหนึ่ง แต่ก็ยังยุ่งยากอยู่ดี
    ในโปรเจ็กต์ส่วนตัวครั้งหน้าคิดว่าจะลอง Electrobun

  • ในบทความพูดถึงปัญหาเรื่อง notarizing กับ stapling และถ้าไม่ใช้ Xcode ทาง Apple ก็ทำให้ขั้นตอนนี้ยุ่งยากมาก
    ฝั่ง Windows ก็ทำ CI automation ได้ไม่ง่ายเช่นกัน ถ้า Electrobun มีทางออกที่ดีกว่า ผมสนใจมาก

    • ในกรณีส่วนใหญ่รองรับได้ด้วยการตั้งค่าพื้นฐาน แค่ตั้ง environment variables ไม่กี่ตัว แล้ว build ด้วย notarize: true ก็พอ
      ผมเคยเซ็นและทำ notarization ด้วย Electrobun หลายครั้งแล้ว ไม่มีปัญหา และยังมี escape hatch สำหรับเคสซับซ้อนด้วย
      ถ้าต้องการความช่วยเหลือ ส่ง DM มาใน Discord ได้เลย (ผมไม่ได้เกี่ยวข้องกับ Electrobun แต่เข้าใจดีถึงความทรมานของระบบ notarization ของ Apple)
  • ถ้าแอป Electron มีขนาดเกิน 500MB แล้ว ขนาด 14MB ของ Electrobun ก็ถือว่า เล็กมาก จริง ๆ

    • โดยทั่วไปแอป Electron สำหรับ macOS แบบ DMG จะอยู่ราว 80MB ส่วน Electrobun อยู่ประมาณ 16MB
  • น่าเสียดายที่ distribution อื่นนอกจาก Ubuntu ยัง อยู่นอกขอบเขตการรองรับ ในตอนนี้
    ดูการพูดคุยที่เกี่ยวข้องได้ในคอมเมนต์ของ issue