- แอป syncthing-android อย่างเป็นทางการ จะปลดระวาง โดยรีลีสสุดท้ายบน GitHub และ F-Droid มีกำหนดจะมาพร้อมกับ Syncthing เวอร์ชันเดือนธันวาคม 2024
- เบื้องหลังการยุติมีทั้งสถานการณ์ที่การเผยแพร่ผ่าน Google Play กลายเป็นเรื่อง “ยากหรือแทบเป็นไปไม่ได้” และ การขาดผู้ดูแลเชิงรุก
- การถูกบล็อกรีลีสบน Play Store ไม่ใช่สาเหตุเดียว หากต้องการฟื้นแอปหรือดูแลต่อ จำเป็นต้องมีใครสักคนรับหน้าที่ ดูแลระยะยาว
- Syncthing บน Android เองไม่ได้หายไป จึงมีการพูดคุยถึงทางเลือกต่าง ๆ เช่น การใช้แอปเดิมต่อ, Syncthing Fork, หรือการรันผ่าน Termux
- แอปทางการเวอร์ชันสุดท้ายอาจยังใช้งานได้อีกระยะหนึ่ง แต่ผู้ใช้ที่ต้องการ Syncthing เวอร์ชันใหม่ควรพิจารณาส่งออกการตั้งค่าแล้วย้ายไป Fork
การยุติแอป syncthing-android อย่างเป็นทางการ
- แอป syncthing-android อย่างเป็นทางการ ถูกตัดสินใจให้ปลดระวางแล้ว โดยรีลีสสุดท้ายบน GitHub และ F-Droid มีกำหนดจะออกพร้อมกับ Syncthing เวอร์ชันเดือนธันวาคม 2024
- เหตุผลของการยุติเกิดจากสองปัจจัยที่มาบรรจบกัน
- Google ทำให้การเผยแพร่ผ่าน Play “ยากหรือแทบเป็นไปไม่ได้”
- ไม่มี การดูแลเชิงรุก สำหรับแอป
- แอปไม่ได้มีการพัฒนาที่มีนัยสำคัญมานานแล้ว และเมื่อการรีลีสผ่าน Play ทำได้ยากขึ้น ประโยชน์และแรงจูงใจในการทุ่มเทดูแลต่อเนื่องจึงลดลง
- มีการกล่าวขอบคุณผู้ร่วมพัฒนาแอป และผู้ใช้หลายคนก็แสดงความขอบคุณต่อการดูแลที่ผ่านมา พร้อมแสดงความเสียดาย
ปัญหาการเผยแพร่บน Play Store และข้อจำกัดด้านการดูแล
- ในชุมชนมีความเห็นว่านโยบายของ Play Store ส่งผลเสียต่อแอปที่ถูกต้องตามกฎหมายแต่ต้องใช้สิทธิ์ขั้นสูง
- แอปที่ต้องใช้สิทธิ์ขั้นสูงนำขึ้น Store ได้ยากขึ้น
- ยังมีเสียงวิจารณ์ว่าแอปที่เก็บข้อมูลผู้ใช้หรือใกล้เคียงกับสปายแวร์กลับยังคงอยู่ได้โดยแทบไม่มีมาตรการจัดการ
- มีข้อเสนอว่าควรคงรีลีสบน F-Droid ต่ออีกสักสองสามรุ่น พร้อมให้คำแนะนำหรือเอกสารสำหรับการย้ายไปทางเลือกอื่นได้หรือไม่
- ฝั่งโครงการชี้แจงว่า การไม่สามารถรีลีสผ่านช่องทางเผยแพร่ทั่วไปได้เป็นเพียง ปัจจัยเสริมที่บั่นทอนแรงจูงใจ ไม่ใช่สาเหตุเดียว
- การฟื้นแอปหรือทำให้ดำเนินต่อไปได้ต้องอาศัยใครสักคนทุ่ม ความพยายามระยะยาว และตัวแอปอยู่ในสภาพ “ประคองชีวิต” มานานแล้ว
วิธีใช้ Syncthing ต่อบน Android
- การตัดสินใจครั้งนี้จำกัดอยู่ที่การยุติ แอป Android อย่างเป็นทางการ ซึ่งแทบอยู่ในสภาพพักตัวมานาน
- ไม่ได้หมายความว่าจะใช้ Syncthing บน Android ไม่ได้อีกต่อไป และผู้อื่นยังสามารถเผยแพร่แอป Syncthing สำหรับ Android ต่อได้
- แม้จะมีความกังวลว่า Android กำลังมุ่งไปในทิศทางคล้าย iOS มากขึ้นจนทำให้ทำได้ยากขึ้น แต่ก็มีการกล่าวถึงว่าช่วงไม่นานมานี้ยังมีแอป Syncthing โอเพนซอร์สตัวใหม่สำหรับ iOS ถูกสร้างขึ้น
- ผู้ประกาศอย่างเป็นทางการระบุว่าตนเองก็เป็นผู้ใช้ Syncthing บน Android และโดยส่วนตัวหวังว่าจะยังใช้งานบน Android ได้ไปอีกนาน
ทางเลือกที่พูดคุยกัน: Fork และ Termux
- ทางเลือกโดยตรงที่ถูกกล่าวถึงคือ Catfriend1/syncthing-android
- แอปทางการเวอร์ชันสุดท้ายจะไม่ได้รับอัปเดตอีกต่อไป แต่มีความเป็นไปได้ว่าจะยังทำงานได้ดีต่อไปอีกระยะหนึ่ง
- หากต้องการ Syncthing เวอร์ชันใหม่กว่า สามารถย้ายไปใช้ Syncthing Fork ได้
- สามารถส่งออกค่าคอนฟิกปัจจุบันจากการตั้งค่าของแอปทางการได้
- สามารถนำเข้าไปยัง Fork ได้
- ในมุมมองของ Syncthing แอปทั้งสองเข้ากันได้
- การรัน Syncthing บน Termux ก็ถูกพูดคุยเป็นอีกทางเลือก
- สามารถใช้งานได้หากส่งออกหรือคัดลอกไฟล์ และปรับการตั้งค่าบางส่วน
- ข้อเสียคือ หากไม่ต้องการให้โทรศัพท์ตื่นอยู่ตลอด ต้องเริ่มและหยุดด้วยตนเอง
- ยังมีความเห็นว่า หากเปิดการปรับแต่งแบตเตอรี่ของแอป Termux ในการตั้งค่า Android ไว้ โหมด doze ของ Android อาจบังคับให้เข้าสู่สถานะ sleep ได้
- สามารถเข้าถึง Web GUI ได้จากเบราว์เซอร์ภายในเครื่องที่
http://127.0.0.1:8384 และเป็นวิธีที่ใช้ได้แม้ตอนใช้แอป Syncthing เดิม
ตัวอย่างการตั้งค่า Termux + Tasker
- ผู้ใช้รายหนึ่งยืนยันว่าชุด Syncthing + Tasker + Termux เป็นทางเลือกที่ใช้งานได้
- การติดตั้งมีดังนี้
- ติดตั้ง Tasker จาก Play Store
- ติดตั้ง Termux และ
termux:tasker จาก F-Droid
- สิทธิ์เพิ่มเติมมีดังนี้
- Tasker:
additional → run commands in termux environment
- Termux:
Appear on top
- คำสั่งติดตั้ง Syncthing ใน Termux มีดังนี้
termux-setup-storage
apt install syncthing
- สร้างไฟล์
~/.termux/tasker/start-syncthing-for-5minutes.sh และตั้งค่าให้รัน Syncthing เป็นเวลา 5 นาที
#!/usr/bin/bash
timeout -s KILL 5m syncthing
- ใน Tasker ตั้งค่าให้รันสคริปต์ดังกล่าวผ่าน
Plugin→Termux:Tasker ทุก 1 ชั่วโมง ตั้งแต่ 00:00 ถึง 23:59
start-syncthing-for-5minutes.sh
- terminal session:
X
- หากปิดตัวเลือก Start browser ใน GUI เบราว์เซอร์จะไม่เปิดขึ้นมาโดยอัตโนมัติเมื่อเริ่มทำงาน
- หลังส่งออกการตั้งค่าจากแอป Android เดิมแล้ว หากคัดลอกไปยัง
~/.local/state/syncthing ก็สามารถใช้ค่าคอนฟิกเดิมต่อได้แทนการติดตั้งใหม่
- หลังจากนั้นลบ username/password สำหรับเข้าถึง GUI ใน
config.xml และหากจำเป็นสามารถตั้งค่าใหม่ได้
2 ความคิดเห็น
Syncthing - โอเพนซอร์สสำหรับซิงก์ไฟล์อย่างต่อเนื่อง
ความคิดเห็นบน Hacker News
การพูดคุยกับ Google ไม่ได้ผลอะไรเลย การเปลี่ยนแปลงที่ Google เรียกร้องเพื่อให้ได้สิทธิ์นั้น คลุมเครือ จนยากแม้แต่จะหาวิธีรับมือ และไม่ชัดเจนว่าทำอะไรไปแล้วจะสำเร็จหรือไม่
หลังจากนั้นยังมีงานแยกอื่น ๆ เพิ่มขึ้นมาเพื่อให้อยู่บน Play ต่อไป เช่น การยืนยันตัวตนนักพัฒนา และระดับ API เป้าหมาย สุดท้ายเขาบอกว่าตระหนักว่าไม่มี แรงจูงใจและเวลา จะเล่นเกมนี้ต่ออีกแล้ว
ดูคล้ายคนในบริษัทที่แทนจะแก้คอมเมนต์ใน PR กลับระเบิดอารมณ์แล้วบอกว่าวิธีของตัวเองดีกว่า Apple เองก็ไม่อนุญาตให้เขียนลงไดเรกทอรีตามอำเภอใจเพียงเพราะ API ของ ObjC/Swift ใช้ยากเหมือนกัน
เมื่อก่อนเคยพัฒนา Android โดยเฉพาะที่ Dropbox ในช่วงทศวรรษ 2010 และรู้จัก API ระบบไฟล์ Android รุ่นเก่าพอสมควร แต่ตั้งใจย้ายไปสาย ประสบการณ์นักพัฒนา/แบ็กเอนด์ และออกจาก Android แล้ว เพื่อนร่วมงาน Android เก่า ๆ ส่วนใหญ่ก็คล้ายกัน
ขั้นตอนที่ต้องผ่านไม่รู้จบและการเปลี่ยนแปลง API เพื่อให้แอปยังทำงานต่อไปได้นั้นเจ็บปวดเกินไป ตอนปี 2014 ตอนที่ Storage Access Framework แบบ “ปลอดภัย” เพิ่งออกมา พบ ช่องโหว่ directory traversal เล็ก ๆ ที่แค่ส่ง
"../../"ในชื่อไฟล์ก็เขียนลงไดเรกทอรีส่วนตัวของแอปไหนก็ได้ได้แล้ว เห็นชัดทันทีตอนกวาดดูซอร์ส AOSP เพื่อพยายามทำความเข้าใจ SAFAndroid ยังเคยให้บิต executable แบบ global กับโฟลเดอร์แอปมาเป็นเวลานาน ทำให้เกิดการโจมตีแบบ confused deputy ได้ โดยแอปอันตรายสร้าง hard link ไปยังไฟล์ของแอปอื่นด้วยชื่อไฟล์ แล้วส่งกลับให้แอปนั้นเพื่อเข้าถึงเนื้อหาไฟล์
เป็นเรื่องดีที่ Android เสริมความปลอดภัยมาเรื่อย ๆ แต่ถูกสร้างบนฐานที่หลวมเกินไป และมีแอปจำนวนมากที่ใช้หรือใช้ในทางที่ผิดกับฐานนั้น ดังนั้นยิ่งล็อกดาวน์เข้มขึ้น ก็น่าจะทำให้นักพัฒนาที่ต้องปรับตัวกับการพังด้านความเข้ากันได้ครั้งใหญ่ต่อเนื่องตัดสินใจออกจากระบบนิเวศนี้
[0] Bug 18512473 fixed in https://android.googlesource.com/platform/frameworks/base/+/...
[1] Proof of concept video: https://www.dropbox.com/s/8dpd8visrttqbfo/poc.mp4?dl=0
คิดถึงวิสัยทัศน์ของ webOS ไม่ได้หมายความว่าคิดถึงตัว implementation ของ webOS เมื่อ 14 ปีก่อน
มี fork ของ Syncthing สำหรับ Android ที่ยังดูแลอย่างแข็งขัน และแม้จะเป็นแค่ตัวชี้วัดหนึ่ง แต่ก็ได้ดาว 1.3K
[1] https://github.com/Catfriend1/syncthing-android
ถ้าดูเธรดต้นฉบับ ผู้เขียนบอกว่าการเผยแพร่บน Google Play นั้นยากมาก
เขาบอกว่า “เหตุผลคือ Google กำลังทำให้การเผยแพร่บน Play ยากหรือแทบเป็นไปไม่ได้” ช่วยอธิบายเพิ่มเติมได้ไหมว่าเกิดอะไรขึ้นตรงนี้
[1]: https://forum.syncthing.net/t/discontinuing-syncthing-androi...
API นี้ใช้ได้เฉพาะ Java และแกนหลักของ Syncthing ไม่ได้เขียนด้วย Java ดังนั้นถ้าจะเรียก Android ตอนอ่านเขียนไฟล์ก็คงต้องเขียนโค้ดเชื่อมผ่าน JNI อีกที SAF ยังให้ URI กับแต่ละไฟล์ และต้องคอย query โครงสร้างโฟลเดอร์ ทำให้ค่อนข้างยุ่งยาก เพราะไม่สามารถต่อ path เหมือนไฟล์ปกติได้
ผู้เขียนไม่อยากทำงานนั้น และพยายามโน้มน้าว Google ให้ยังคงอนุญาตให้เข้าถึงไฟล์ รูปภาพ และเอกสารทั้งหมดได้โดยตรง แต่ Google ปฏิเสธ “ความยาก” ในที่นี้จึงดูเหมือนหมายถึง ถ้าไม่ทำตามแนวทาง ก็เผยแพร่บน Play ได้ยากจริง ๆ เหมือนกับ App Store
แอปของผมเคยได้รับอนุมัติสิทธิ์ใน minor release หนึ่ง แล้วสัปดาห์ถัดมากลับถูกปฏิเสธ ทั้งที่มีแค่การเปลี่ยนแปลงเล็กน้อยในแอป เมื่อถามทีมซัพพอร์ต Google Play คำตอบก็มักคลุมเครือ เป็นข้อความสำเร็จรูป และวนซ้ำ ไม่มีทางรู้เลยว่าอัปเดตแอปจะได้รับอนุมัติหรือไม่ เป็นวิธีพัฒนาที่เลวร้ายมาก
สุดท้ายโครงสร้างแบบนี้ลงโทษเฉพาะนักพัฒนารายเล็ก งบน้อย และมีเวลาจำกัด แล้วผลักให้เกิดการรวมศูนย์ไปสู่รายใหญ่ รายใหญ่พอจะมีอิทธิพลได้บ้าง มีความน่าเชื่อถือพื้นฐาน และมีงบกับเวลาพอจะ implement ข้อกำหนดที่ไร้เหตุผลและบางครั้งก็เป็นภาระ ผลลัพธ์ดูเหมือนเป็นการตอกย้ำสถานะในตลาด และสร้างผู้เล่นที่ผูกพันเหนียวแน่นเพื่อค้ำจุน Play Store ไปอีกหลายสิบปี
ใช้มันใส่ ฐานข้อมูล KeePass ไว้ในโทรศัพท์อยู่ เลยลำบาก มีใครอยู่สถานการณ์เดียวกันไหม?
แนะนำให้เชื่อมต่อผ่าน SFTP ไปยังเครื่องหนึ่ง แล้วให้เครื่องนั้นรัน Syncthing กับอุปกรณ์อื่น ๆ ที่เหลือ
ถ้าเป็นผู้ใช้ที่รู้จักและอยากใช้ Syncthing ขนาดนั้น ก็น่าจะพึ่ง F-Droid เป็นแหล่ง APK ได้ไม่ใช่หรือ แค่ใช้เป็นช่องทางแจกจ่ายยังไม่พอหรือ?
เกลียด mobile computing มาก
จะเก็บ APK ไว้ในที่ปลอดภัยคู่กับฟลอปปีดิสก์ Turbo Pascal ของผม Syncthing สำหรับ Android จำเป็นต่อการจัดการ คอลเลกชันโน้ตเพลง ของผมมาก
มีใครรู้ไหมว่าแอป Syncthing Android ปัจจุบันจะยังทำงานต่อไปได้นานแค่ไหน?