- เซิร์ฟเวอร์ทำงานร่วมกันแบบโอเพนซอร์ส Stalwart บรรลุหมุดหมายใหม่หลังพัฒนามา 4 ปี ด้วยการติดตั้งใช้งาน JMAP สำหรับปฏิทิน รายชื่อติดต่อ การจัดเก็บและการแชร์ไฟล์ ได้อย่างสมบูรณ์
- รีลีสนี้ทำให้ Stalwart กลายเป็น เซิร์ฟเวอร์ตัวแรกที่รองรับชุดโปรโตคอล JMAP ได้ครบถ้วนทั้งหมด และมอบ API แบบรวมศูนย์ที่ขยายจากอีเมลไปสู่การทำงานร่วมกันโดยรวม
- ผ่าน เฟรมเวิร์กเดียวที่อิง JSON จึงเข้ามาแทนที่ความซับซ้อนและความไม่มีประสิทธิภาพของ WebDAV·CalDAV·CardDAV แบบเดิม พร้อมโครงสร้างที่เป็นมิตรกับนักพัฒนา
- ฟอร์แมต JSCalendar และ JSContact ใหม่ ช่วยตัดความซับซ้อนของ iCalendar และ vCard ออกไป พร้อมมอบโมเดลข้อมูลที่ชัดเจนและสอดคล้องกัน
- นี่เป็นสัญลักษณ์ของวิวัฒนาการด้านเทคโนโลยีการทำงานร่วมกันบนมาตรฐานเปิด และส่งสัญญาณว่า นวัตกรรมในระบบนิเวศการรวมปฏิทิน·การแชร์ไฟล์·อีเมล จะเร่งตัวขึ้น
โปรโตคอลยุคใหม่
- ในช่วงไม่กี่ปีที่ผ่านมา IETF กำลังนิยามวิธีซิงก์และแชร์อีเมล ปฏิทิน และรายชื่อติดต่อขึ้นใหม่
- จากความสำเร็จของ JMAP for Mail เดิม ได้มีการเพิ่มโปรโตคอลส่วนขยายใหม่สำหรับปฏิทิน รายชื่อติดต่อ ไฟล์ และการแชร์
- JMAP for Calendars - ทางเลือกสมัยใหม่แทน CalDAV และ CalDAV scheduling
- JMAP for Contacts – ตัวแทน CardDAV ที่ทรงพลัง
- JMAP for File Storage – ใช้แทนที่ระบบจัดเก็บไฟล์บน WebDAV
- JMAP Sharing – ผู้สืบทอดสมัยใหม่ของ WebDAV ACL
- JSCalendar - iCalendar เวอร์ชันพัฒนาใหม่บนพื้นฐาน JSON ที่สะอาดกว่า
- JSContact – ผู้สืบทอด vCard แบบ JSON ที่ถูกทำให้ทันสมัย
- มาตรฐานเหล่านี้มอบระบบนิเวศแบบบูรณาการที่เรียบหรู เพื่อแทนที่ เทคโนโลยีบน WebDAV ที่แยกส่วน
- ช่วยแก้ปัญหาความเข้ากันได้ที่สะสมมาหลายทศวรรษ และทำให้ฟังก์ชันการทำงานร่วมกันง่ายขึ้นด้วยโมเดลข้อมูลเดียว
ข้อจำกัดของเทคโนโลยีเดิม
- WebDAV, CalDAV, CardDAV ถูกใช้งานอย่างเสถียรมายาวนาน แต่ด้วยการออกแบบที่อิง XML จึงมีความเยิ่นเย้อเกินไปและขาดความสอดคล้อง
- ข้อมูลกระจัดกระจายอยู่ทั้งใน HTTP header, XML payload, ข้อมูล iCalendar และตำแหน่งอื่น ๆ ทำให้เกิด ปัญหาการทำงานร่วมกันได้ ระหว่างไคลเอนต์กับเซิร์ฟเวอร์อยู่บ่อยครั้ง
- iCalendar และ vCard เองก็แบกรับหนี้ทางเทคนิคที่สะสมมาหลายสิบปี
- มีพร็อพเพอร์ตีจำนวนมากที่แทบไม่ได้ใช้หรือถูกเลิกใช้ไปแล้ว และการติดตั้งใช้งานในแต่ละเวอร์ชันก็ไม่ตรงกัน จึงต้องใช้ ตรรกะการพาร์สที่ซับซ้อน
- ความซับซ้อนเชิงโครงสร้างเหล่านี้เป็นอุปสรรคต่อการบำรุงรักษาและการขยายระบบ ทำให้ไม่เหมาะกับสภาพแวดล้อมการทำงานร่วมกันสมัยใหม่
การมาถึงของ JMAP ที่ตอบโจทย์ยุคใหม่
- เดิมที โปรโตคอล JMAP ถูกพัฒนาขึ้นเพื่อแทนที่ IMAP และ SMTP ในฐานะโปรโตคอลรับส่งอีเมลที่มีประสิทธิภาพและเรียบง่าย
- ด้วยพื้นฐาน JSON over HTTPS จึงได้ทั้งความชัดเจนและประสิทธิภาพด้านเครือข่าย
- ตอนนี้เมื่อมี JMAP for Calendars, Contacts, Files, Sharing เข้ามา ปรัชญาการออกแบบเดียวกันนี้ก็ได้ขยายไปสู่การทำงานร่วมกันทั้งระบบ
- มอบ API ที่เป็นหนึ่งเดียวและสอดคล้องกัน สำหรับอีเมล ปฏิทิน รายชื่อติดต่อ ไฟล์ และทรัพยากรที่แชร์
- JSCalendar และ JSContact คือการปรับโครงสร้าง iCalendar และ vCard เดิมใหม่ให้อยู่ใน ฟอร์แมตที่อิง JSON
- ตัดพร็อพเพอร์ตีที่ไม่จำเป็นออก และให้โมเดลข้อมูลที่ชัดเจนสอดคล้องกัน
- อ่านได้ง่าย เป็นมิตรกับนักพัฒนา และพาร์สได้อย่างมีประสิทธิภาพสูง จึง เหมาะกับแอปพลิเคชันสมัยใหม่
- การผสานกันของ JMAP กับโมเดลข้อมูลใหม่นี้ ช่วยให้การทำระบบปฏิทิน การจัดการรายชื่อติดต่อ และการแชร์ไฟล์ ทำได้รวดเร็วและเชื่อถือได้มากขึ้น
ความหมายของรีลีสครั้งนี้
- รีลีสนี้ไม่ได้เป็นเพียงการเพิ่มฟีเจอร์ แต่ยังหมายถึง จุดเปลี่ยนของแนวทางการออกแบบโปรโตคอลกรุ๊ปแวร์
- นักพัฒนาและองค์กรสามารถสร้างระบบอีเมล รายชื่อติดต่อ ปฏิทิน และทรัพยากรที่แชร์ บน เฟรมเวิร์กเดียวที่อิง JSON ได้
- ความเรียบง่ายและคาดเดาได้ของ JMAP ช่วยให้ไคลเอนต์และเซิร์ฟเวอร์โฟกัสกับฟีเจอร์และประสบการณ์ผู้ใช้ แทนการเสียเวลาไปกับการจัดการโปรโตคอล
- ผลลัพธ์ที่คาดหวังคือ ปัญหาการทำงานร่วมกันได้ลดลง, ความเร็วในการพัฒนาเพิ่มขึ้น, และ นวัตกรรมเร่งตัวขึ้น
- สิ่งนี้จะเป็นแรงผลักดันให้เกิด มาตรฐานและประสิทธิภาพที่ดีขึ้น ในซอฟต์แวร์สำหรับการทำงานร่วมกันโดยรวม
การรองรับฝั่งไคลเอนต์และการขยายตัวของระบบนิเวศ
- ปัจจุบัน Stalwart คือ เซิร์ฟเวอร์ตัวแรกที่รองรับชุดโปรโตคอล JMAP ได้ครบถ้วนทั้งหมด โดยการรองรับฝั่งไคลเอนต์ยังอยู่ในระยะเริ่มต้น
- อย่างไรก็ตาม มีหลายโครงการเริ่มนำมาตรฐานใหม่นี้ไปใช้แล้ว
- Mailtemi, Parula, OpenCloud กำลังพัฒนาไคลเอนต์สำหรับ JMAP Calendars, Contacts, File Storage
- ระบบนิเวศกำลังเติบโตอย่างรวดเร็ว และเมื่อเหล่านักพัฒนาได้สัมผัส ความเรียบหรูและทรงพลัง ของ JMAP ด้วยตนเอง ก็มีแนวโน้มว่าจะ แพร่หลายอย่างรวดเร็ว
2 ความคิดเห็น
ดีเลย!!
ความคิดเห็นใน Hacker News
ผมคิดว่า JMAP เป็นโปรโตคอลที่ดีมากสำหรับการสร้างไคลเอนต์อีเมล
ผมไม่อยากโฮสต์เองโดยตรง แต่ถ้าใช้ Stalwart เป็นคอมโพเนนต์ฝั่งเซิร์ฟเวอร์ของไคลเอนต์ เพื่อซิงก์ข้อมูล IMAP เดิมและเข้าถึงผ่าน JMAP API ได้ ก็น่าสนใจมาก
ได้ยินมาว่าทำแบบ IMAP-to-IMAP sync ได้ เลยสงสัยว่ามีใครลองกับ Stalwart บ้างไหม
ถ้าทำแนวทางนี้ได้ ก็จะเปิดให้เข้าถึงเมลบ็อกซ์ IMAP เดิมผ่าน JMAP และน่าจะช่วยเร่งการพัฒนาไคลเอนต์อีเมลยุคใหม่ได้
Stalwart เป็น ซอฟต์แวร์ที่มีโครงสร้างงดงามมาก
น่าประทับใจตรงที่ค่อยๆ สร้างความน่าเชื่อถือและพัฒนาความสมบูรณ์ขึ้นมาอย่างต่อเนื่อง
แถมยังน่าทึ่งที่แทบจะมี นักพัฒนาเพียงคนเดียว เป็นแกนหลัก
กราฟผู้มีส่วนร่วมบน GitHub
ซิงก์ IMAP ระยะไกลเข้ากับ IMAP เซิร์ฟเวอร์ภายในของ Stalwart เป็นระยะ แล้ว Stalwart ก็จะแปลงให้เป็น JMAP ภายในและเปิดให้ใช้งาน
ตอนแรกผมนึกว่าต้องผ่านขั้น maildir ก่อน แต่ดูแล้ว IMAP ↔ IMAP อย่างเดียวก็น่าจะพอ
สิ่งที่หาเจอก่อนหน้านี้แพงเกินไป เลยยินดีที่เห็นความคืบหน้าแบบนี้
ยังไม่มีผลงานออกมา แต่ก็ยังคิดต่ออยู่
Stalwart แทบจะเป็นอิมพลีเมนต์เซิร์ฟเวอร์ตัวแรกของ JMAP ดังนั้นตอนนี้จึงเริ่มมีเหตุผลให้สร้างไคลเอนต์แล้ว
อีกอย่าง บริการเมลใหม่ของ Mozilla ก็มีแผนจะใช้ JMAP ด้วย น่าจะเป็น แรงผลักดัน สำคัญ
เมื่อก่อนเคยลองกรุ๊ปแวร์อย่าง Nextcloud หรือ SoGo แต่ก็ผิดหวัง
แต่ตอนนี้ Nextcloud กำลังร่วมมือกับ Stalwart และ Opencloud กับ Mozilla/Thunderbird ก็กำลังรวม JMAP เข้าไป เลยน่าคาดหวัง
โดยเฉพาะ โปรเจ็กต์เว็บเมล Stormbox ของ Thunderbird ก็น่าสนใจ
ตอนนี้กระแสการย้ายออกจาก Big Tech กำลังแรง จังหวะเลยเหมาะมาก
Cyrus รองรับแค่ JMAP mail
ตอนนี้จึงซิงก์ระหว่าง CalDAV, JMAP และระบบไฟล์ได้แล้ว
ผมใช้ไคลเอนต์ชื่อ aerc
อย่างการแชร์ไฟล์ กรุ๊ปแวร์ เมล ปฏิทิน น่าจะออกแบบให้มีประสิทธิภาพกว่านี้ได้โดยไม่ต้องมี overhead ของ JSON
ถึงอย่างนั้นก็คงมีเหตุผลชัดเจนที่เลือกออกแบบบน HTTP
เพราะโปรโตคอลอินเทอร์เน็ตยุคแรกๆ ส่วนใหญ่สร้างบน Telnet แบบข้อความ
HTTP/3 โดยเนื้อแท้เป็นไบนารีโปรโตคอล และ JSON ก็มีโครงสร้างชัดเจนกับบีบอัดได้ดี จึงถือว่ามีประสิทธิภาพพอสมควร
“JSON over HTTP” เป็นการปรับปรุงที่เล็กน้อยแต่ชัดเจน เมื่อเทียบกับ “custom text over telnet”
ถึงจะใช้เฟรมเวิร์กอย่าง capnproto, grpc, ASN.1 ก็มีความซับซ้อนของแต่ละแบบอยู่ดี
JSON เรียบง่ายและข้อจำกัดก็ชัดเจน เลยจัดการได้ง่าย
ในทางกลับกัน การออกแบบที่ผูกติดกับ implementation แบบโปรโตคอล Microsoft Exchange มักสร้างปัญหาในระยะยาว
บางกรณีโปรโตคอลอื่นที่ไม่ใช่ TCP อาจเหมาะกว่า
ส่วนตัวผมไม่ชอบ JSON และคิดว่า ฟอร์แมต DER ดีกว่า
โปรโตคอล “small web” อย่าง Gemini หรือ Scorpion ก็น่าสนใจ
ตรงกันข้าม ในแง่ความเข้ากันได้กับเว็บไคลเอนต์ HTTP แทบเป็นตัวเลือกเดียว
ผมมองว่าแทบไม่มีข้อดีอะไรในการไม่ใช้ HTTP
ถ้าใช้ CBOR แทน JSON ก็ทำให้ payload เป็นไบนารีได้ด้วย
HTTP เป็นโปรโตคอลสำหรับ การถ่ายโอนสถานะ (state transfer) จึงเหมาะกับการซิงก์
และถ้าเพิ่ม ส่วนขยาย Braid ก็สามารถขยายให้เป็นโปรโตคอล การซิงโครไนซ์สถานะ (state synchronization) ได้
ผมทำงานอยู่ในโปรเจ็กต์ Braid
เมลรองรับแล้ว แต่ตอนนี้ยังต้องใช้ CardDAV/CalDAV ควบคู่กันไป
โค้ด
caldav_syncที่เขียนไว้เมื่อ 10 ปีก่อนยังทำงานอยู่ช่วงนี้เราเพิ่งปรับปรุง logic การสร้าง objectid ให้ ID สั้นลงและเรียงลำดับได้ดีขึ้น
ต่อไปก็จะอัปเดตปฏิทินและรายชื่อผู้ติดต่อให้เป็น JMAP สเปกใหม่ล่าสุด
ส่วนระบบไฟล์น่าจะใช้เวลาอีกหน่อย
ดูได้ที่ร่างเอกสาร
ส่วน Contacts ได้รับอนุมัติเป็น RFC 9610 เมื่อ 10 เดือนก่อน
และก็ยังไม่ชัดว่ามันแก้ปัญหาอะไรได้ดีกว่าโซลูชันเดิม
ไคลเอนต์หลักอย่าง Apple Mail, Thunderbird, Outlook ควรรองรับ
ไคลเอนต์ขนาดเล็กอย่าง Canary หรือ Spark ก็น่าจะนำไปใช้เป็นจุดขายที่แตกต่างได้ แต่กลับไม่ทำ
Outlook รุ่นใหม่เก็บข้อมูลทั้งหมดไว้ใน Azure และสื่อสารกับเซิร์ฟเวอร์จริงผ่านพร็อกซี
แทบไม่มีโอกาสที่จะรองรับ JMAP
(ไม่ได้จะปกป้อง IMAP นะ)
ถ้า Gmail หรือ iCloud ไม่รองรับ ต่อให้สร้างไคลเอนต์ก็มีความหมายไม่มาก
จะรองรับสองระบบพร้อมกันก็ได้ แต่ตลาดคงเล็ก
แต่เรื่องนั้นก็ยังมี “if” อีกมาก
มันเป็นเซิร์ฟเวอร์แบบรวมทุกอย่างในตัว จนรู้สึกเหมือนเปิดยุคใหม่
Maddy ก็โอเค แต่การดูแลรักษาไม่ค่อยคึกคักเท่าไร
ไม่มีเอกสารที่ทำให้เห็นตัวเลือก ค่าเริ่มต้น และความสัมพันธ์กันได้ในที่เดียว
ตั้งค่าผ่าน Web UI ได้ก็จริง แต่ไปขัดกับ การ deploy แบบ declarative
ถ้าไฟล์
.tomlเป็นแบบอ่านอย่างเดียว จะเกิด errorนอกจาก FastMail หรือ Topicbox ก็แทบไม่มีอะไรเด่น
อยากได้แบบที่ self-host ผ่าน HTTPS ได้อย่าง Roundcube หรือ Wildduck
นอกจาก “เขียนใหม่ด้วย Rust” ก็ยังไม่เห็นจุดต่างที่เด่นชัด
ในสถานการณ์ที่ยังไม่มี MUA ที่ดี ก็ยังสงสัยว่า JMAP จะช่วยอะไรได้มากไหม
ฝั่งเซิร์ฟเวอร์เป็นปัญหาที่แก้ได้มานานแล้ว แต่ ฝั่งไคลเอนต์ยังหยุดนิ่ง
แม้แต่ความสามารถของ IMAP4 เองก็ยังอิมพลีเมนต์ไม่ครบเป็นส่วนใหญ่ และไคลเอนต์สำหรับ Sieve ก็แย่มาก
Dovecot ยังรองรับ UTF-8 ได้ไม่สมบูรณ์เลย
โปรเจ็กต์อย่าง Stalwart คือความพยายามจะก้าวข้าม ข้อจำกัดของระบบเก่า เหล่านี้
ฝั่งไคลเอนต์เองก็มีตัวอย่างที่พัฒนาไปมากแล้วอย่าง Apple Mail
ถ้ามีแค่ฝั่งเดียวที่พัฒนาไป ก็ไม่มีความหมาย
ตอนนี้มีเซิร์ฟเวอร์ดีแล้ว เหลือก็แค่ไคลเอนต์ดีๆ
Nylas ทรงพลังมาก แต่ราคาสูง
ในสเกลใหญ่ คิด $1.50 ต่อบัญชีต่อเดือน ซึ่งอาจกระทบ margin ของ SaaS ได้
ถึงอย่างนั้นก็มีประโยชน์มากสำหรับการวิเคราะห์อีเมลแบบเรียลไทม์หรือสร้าง UI แบบกำหนดเอง