Syncthing 2.0 ยกเลิกการสนับสนุนหลายแพลตฟอร์มเนื่องจากการย้ายไปใช้ SQLite

ทีมชุมชน BigGo
Syncthing 2.0 ยกเลิกการสนับสนุนหลายแพลตฟอร์มเนื่องจากการย้ายไปใช้ SQLite

Syncthing เครื่องมือซิงโครไนซ์ไฟล์โอเพนซอร์สยอดนิยม ได้ปล่อยเวอร์ชัน 2.0 พร้อมการเปลี่ยนแปลงสำคัญที่ได้จุดประกายการอฟสุศในชุมชน แม้ว่าการอัปเดตจะนำมาซึ่งการปรับปรุงอย่างเช่น backend ฐานข้อมูล SQLite ใหม่และการบันทึกข้อมูลที่ได้รับการปรับปรุง แต่ก็ยังได้ยกเลิกการสนับสนุนหลายแพลตฟอร์ม ทำให้เกิดความกังวลในหมู่ผู้ใช้เกี่ยวกับทิศทางของโปรเจกต์

การลดการสนับสนุนแพลตฟอร์มทำให้เกิดคำถาม

การเปลี่ยนแปลงที่ถกเถียงกันมากที่สุดใน Syncthing 2.0 คือการยกเลิก prebuilt binaries สำหรับหลายแพลตฟอร์ม รวมถึง DragonFly BSD, Solaris, NetBSD และที่น่าสังเกตคือ Windows ARM32 การตัดสินใจนี้เกิดจากความซับซ้อนในการ cross-compile SQLite ซึ่งเป็น backend ฐานข้อมูลใหม่ที่มาแทนที่ LevelDB

สมาชิกชุมชนได้แสดงความประหลาดใจต่อการยกเลิกการสนับสนุน Windows ARM32 โดยเฉพาะอย่างยิ่งเมื่อพิจารณาถึงการเปลี่ยนผ่านของอุตสาหกรรมไปสู่โปรเซสเซอร์ ARM อย่างไรก็ตาม ทีมพัฒนาได้ชี้แจงว่า Windows ARM64 ยังคงได้รับการสนับสนุน และการสนับสนุน ARM 32 บิตกำลังถูกยกเลิกโดย Microsoft เองในรุ่น Windows 11 ในอนาคต

การเลือกใช้ SQLite implementation ก็ได้รับการตรวจสอบอย่างใกล้ชิดเช่นกัน ผู้ใช้ตั้งคำถามว่าทำไมทีมถึงเลือก CGO-based github.com/mattn/go-sqlite3 แทน pure Go modernc.org/sqlite ซึ่งจะหลีกเลี่ยงปัญหาการ cross-compilation ประสิทธิภาพดูเหมือนจะเป็นปัจจัยตัดสินใจ เนื่องจากเวอร์ชัน CGO ให้ความเร็วที่ดีกว่าแม้จะมีความซับซ้อนในการคอมไพล์

แพลตฟอร์มที่ไม่ได้รับ Prebuilt Binaries อีกต่อไป

  • DragonFly BSD (amd64)
  • Illumos/Solaris (amd64)
  • Linux (ppc64)
  • NetBSD (ทุกสถาปัตยกรรม)
  • OpenBSD (386 และ ARM)
  • Windows (ARM 32-bit)

หมายเหตุ: การสนับสนุน Windows ARM64 ยังคงดำเนินต่อไป

การย้ายฐานข้อมูลและการปรับปรุงประสิทธิภาพ

การเปลี่ยนจาก LevelDB ไปเป็น SQLite แสดงถึงการเปลี่ยนแปลงพื้นฐานในวิธีที่ Syncthing จัดเก็บข้อมูล ผู้ใช้รายงานว่ากระบวนการย้ายข้อมูลอาจใช้เวลานานสำหรับการตั้งค่าที่ใหญ่กว่า แต่ฐานข้อมูลใหม่สัญญาว่าจะมีการบำรุงรักษาที่ง่ายขึ้นและข้อบกพร่องน้อยลง การอัปเดตยังแนะนำการทำความสะอาดไฟล์ที่ถูกลบโดยอัตโนมัติหลังจากหกเดือน ซึ่งจัดการกับความกังวลเรื่องพื้นที่จัดเก็บที่มีมานาน

การปรับปรุงประสิทธิภาพหลายอย่างมาพร้อมกับการเปลี่ยนแปลงฐานข้อมูล การยกเลิก rolling hash detection สำหรับข้อมูลที่เลื่อนตำแหน่ง แม้จะขจัดฟีเจอร์หนึ่งออกไป แต่จริงๆ แล้วปรับปรุงประสิทธิภาพการสแกนและซิงค์ ระบบตอนนี้ใช้การเชื่อมต่อหลายรายการเป็นค่าเริ่มต้นระหว่างอุปกรณ์เวอร์ชัน 2 โดยมีการเชื่อมต่อสามรายการจัดการการแลกเปลี่ยนข้อมูลประเภทต่างๆ

การเปลี่ยนแปลงทางเทคนิคที่สำคัญใน Version 2.0

  • Database Backend: LevelDB → SQLite
  • Default Connections: การเชื่อมต่อเดียว → สามการเชื่อมต่อ (1 สำหรับ metadata, 2 สำหรับข้อมูล)
  • Deleted File Retention: เก็บตลอดไป → 6 เดือน (ปรับแต่งได้)
  • Rolling Hash Detection: ถูกลบออกเพื่อประสิทธิภาพที่ดีขึ้น
  • Logging System: ปรับโครงสร้างใหม่พร้อมระดับ log แยกตาม package
  • Cryptographic Keys: เปลี่ยนไปใช้ Ed25519 สำหรับการเชื่อมต่อ sync

ระบบนิเวศ Android ยังคงมีชีวิตชีวา

แม้ว่าการสนับสนุน Android อย่างเป็นทางการจะสิ้นสุดลงก่อนหน้านี้เนื่องจากข้อจำกัดของแพลตฟอร์ม Google แต่ระบบนิเวศ Android ยังคงเจริญรุ่งเรืองผ่าน community forks Syncthing-Android fork ยังคงพัฒนาอย่างต่อเนื่องและมีให้บริการผ่านทั้ง F-Droid และ Google Play Store ทำให้มั่นใจได้ว่าผู้ใช้มือถือจะไม่ถูกทิ้งไว้

ข้อพิจารณาด้านความเข้ากันได้และการย้าย

เวอร์ชัน 2.0 รักษาความเข้ากันได้ของโปรโตคอลกับเวอร์ชัน 1.x ทำให้สามารถย้ายแบบค่อยเป็นค่อยไปในอุปกรณ์ต่างๆ ได้ ความเข้ากันได้แบบย้อนหลังนี้ให้ความยืดหยุ่นแก่ผู้ใช้ในการอัปเกรดการติดตั้ง Syncthing โดยไม่ต้องอัปเดตพร้อมกันในทุกอุปกรณ์

การตอบสนองของชุมชนสะท้อนทั้งความชื่นชมต่อการพัฒนาอย่างต่อเนื่องของ Syncthing และความกังวลเกี่ยวกับการลดการสนับสนุนแพลตฟอร์ม ผู้ใช้หลายคนชื่นชมความน่าเชื่อถือและแนวทางที่เน้นความเป็นส่วนตัวของซอฟต์แวร์ โดยบางคนรายงานการทำงานที่ไม่มีปัญหานานหลายปีในหลายอุปกรณ์

Syncthing 2.0 แสดงถึงวิวัฒนาการที่สำคัญที่ให้ความสำคัญกับประสิทธิภาพและความสามารถในการบำรุงรักษามากกว่าการสนับสนุนแพลตฟอร์มอย่างกว้างขวาง แม้ว่าผู้ใช้บางคนอาจต้องคอมไพล์จากซอร์สหรือหาทางเลือกอื่น แต่การปรับปรุงฟังก์ชันหลักชี้ให้เห็นรากฐานที่แข็งแกร่งกว่าสำหรับการพัฒนาในอนาคต

อ้างอิง: v2.0.0