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