1 điểm bởi GN⁺ 2024-10-21 | 2 bình luận | Chia sẻ qua WhatsApp
  • Ứng dụng syncthing-android chính thức sẽ ngừng hoạt động, và bản phát hành cuối cùng trên GitHub và F-Droid dự kiến đi kèm với phiên bản Syncthing tháng 12/2024
  • Lý do dừng lại là do việc phân phối qua Google Play đã trở nên ở mức “khó hoặc gần như không thể”, đồng thời không còn bảo trì tích cực
  • Việc bị chặn phát hành trên Play Store không phải là nguyên nhân duy nhất; để hồi sinh hoặc tiếp tục duy trì ứng dụng, cần có ai đó đảm nhận bảo trì dài hạn
  • Điều này không có nghĩa Syncthing sẽ biến mất khỏi Android, nên các phương án như tiếp tục dùng ứng dụng hiện tại, Syncthing Fork, hoặc chạy qua Termux đang được thảo luận
  • Ứng dụng chính thức cuối cùng có thể vẫn hoạt động thêm một thời gian, nhưng người dùng cần phiên bản Syncthing mới hơn nên cân nhắc xuất cấu hình và chuyển sang Fork

Kết thúc ứng dụng syncthing-android chính thức

  • Ứng dụng syncthing-android chính thức đã được quyết định cho nghỉ hưu, và bản phát hành cuối cùng trên GitHub và F-Droid sẽ đi kèm với phiên bản Syncthing tháng 12/2024
  • Có hai nguyên nhân kết hợp dẫn đến việc dừng lại
    • Google đã khiến việc phân phối qua Play trở nên ở mức “khó hoặc gần như không thể”
    • Ứng dụng không còn được bảo trì tích cực
  • Ứng dụng đã lâu không có phát triển đáng kể, và việc phát hành trên Play cũng ngày càng khó, làm giảm lợi ích và động lực để tiếp tục đầu tư bảo trì
  • Dự án đã gửi lời cảm ơn tới những người đóng góp cho ứng dụng, và nhiều người dùng cũng bày tỏ sự biết ơn cùng tiếc nuối về việc bảo trì chấm dứt

Vấn đề phân phối trên Play Store và giới hạn bảo trì

  • Trong cộng đồng có ý kiến cho rằng chính sách của Play Store đang vận hành theo hướng bất lợi cho các ứng dụng hợp pháp cần quyền nâng cao
    • Những ứng dụng cần quyền nâng cao ngày càng khó được đưa lên Store
    • Cũng có chỉ trích rằng các ứng dụng thu thập dữ liệu người dùng hoặc gần như spyware vẫn tồn tại mà không bị hạn chế đáng kể
  • Cũng có đề xuất tiếp tục duy trì thêm vài bản phát hành trên F-Droid kèm hướng dẫn chuyển đổi hoặc tài liệu
  • Phía dự án nhấn mạnh rằng việc không thể phát hành qua kênh phân phối phổ biến chỉ là một yếu tố làm giảm thêm động lực, chứ không phải nguyên nhân duy nhất
  • Việc hồi sinh hay duy trì ứng dụng chỉ có thể xảy ra nếu có người sẵn sàng đầu tư nỗ lực dài hạn, và ứng dụng đã ở trạng thái “life support” trong thời gian dài

Cách tiếp tục dùng Syncthing trên Android

  • Quyết định lần này chỉ giới hạn ở việc ngừng ứng dụng Android chính thức vốn đã gần như ở trạng thái ngủ đông suốt thời gian dài
  • Điều này không có nghĩa bản thân Syncthing sẽ không còn dùng được trên Android; người khác vẫn có thể tiếp tục phát hành ứng dụng Syncthing cho Android
  • Có lo ngại rằng Android đang ngày càng đi theo hướng giống iOS hơn và sẽ trở nên khó khăn hơn, nhưng cũng có nhắc đến việc gần đây đã xuất hiện một ứng dụng Syncthing mã nguồn mở mới cho iOS
  • Người đưa ra thông báo chính thức cũng cho biết bản thân là người dùng Syncthing trên Android, và cá nhân hy vọng nó vẫn có thể được sử dụng lâu dài trên Android

Các lựa chọn thay thế được thảo luận: Fork và Termux

  • Một phương án thay thế trực tiếp được nhắc đến là Catfriend1/syncthing-android
  • Phiên bản cuối cùng của ứng dụng chính thức hiện tại sẽ không còn được cập nhật, nhưng nhiều khả năng vẫn tiếp tục hoạt động tốt trong một thời gian
  • Nếu cần phiên bản Syncthing mới hơn, có thể chuyển sang Syncthing Fork
    • Có thể xuất cấu hình hiện tại từ phần cài đặt của ứng dụng chính thức
    • Có thể nhập vào Fork
    • Ở góc nhìn của Syncthing, hai ứng dụng này tương thích với nhau
  • Cách chạy Syncthing trong Termux cũng được thảo luận như một lựa chọn thay thế
    • Chỉ cần xuất hoặc sao chép tệp và điều chỉnh một phần cấu hình là có thể hoạt động
    • Nhược điểm là nếu không muốn điện thoại luôn thức, người dùng phải tự khởi động và dừng thủ công
    • Cũng có ý kiến cho rằng nếu bật tối ưu pin cho ứng dụng Termux trong phần cài đặt Android, nó có thể bị buộc vào trạng thái sleep trong chế độ doze của Android
  • Có thể truy cập Web GUI tại http://127.0.0.1:8384 bằng trình duyệt cục bộ, và đây cũng là cách có thể dùng với ứng dụng Syncthing hiện tại

Ví dụ cấu hình Termux + Tasker

  • Một người dùng xác nhận tổ hợp Syncthing + Tasker + Termux là một phương án thay thế hoạt động được
  • Cấu hình cài đặt như sau
    • Cài Tasker từ Play Store
    • Cài Termux và termux:tasker từ F-Droid
  • Các quyền bổ sung như sau
    • Tasker: additional → run commands in termux environment
    • Termux: Appear on top
  • Lệnh cài Syncthing trong Termux như sau
termux-setup-storage
apt install syncthing
  • Tạo tệp ~/.termux/tasker/start-syncthing-for-5minutes.sh và cấu hình để chạy Syncthing trong 5 phút
#!/usr/bin/bash

timeout -s KILL 5m syncthing
  • Trong Tasker, cấu hình chạy script đó qua Plugin→Termux:Tasker mỗi 1 giờ từ 00:00 đến 23:59
    • start-syncthing-for-5minutes.sh
    • terminal session: X
  • Nếu tắt tùy chọn Start browser trong GUI thì trình duyệt sẽ không tự động mở khi khởi động
  • Sau khi xuất cấu hình từ ứng dụng Android cũ, có thể sao chép vào ~/.local/state/syncthing để tiếp tục dùng cấu hình cũ thay vì cài mới
    • Sau đó có thể xóa username/password dùng để truy cập GUI trong config.xml, rồi thiết lập lại nếu cần

2 bình luận

 
GN⁺ 2024-10-21
Ý kiến trên Hacker News
  • Các cuộc thảo luận với Google không đem lại kết quả gì. Những thay đổi mà Google yêu cầu để được cấp quyền quá mơ hồ, nên rất khó biết phải phản hồi thế nào và dù làm gì cũng không rõ có thành công hay không.
    Sau đó còn phát sinh thêm các việc riêng rẽ để tiếp tục ở lại Play, như xác minh nhà phát triển, mức API mục tiêu, và cuối cùng tác giả nhận ra rằng mình không còn động lực và thời gian để tiếp tục trò chơi này nữa.

    • Tôi không nghĩ Google sẽ chấp nhận lời bào chữa kiểu “không muốn dùng File API vì viết mã khó” cho vấn đề bảo mật. Cũng không rõ có thể thảo luận kiểu gì với lập luận “tôi không muốn dùng SAF API, nên hãy cho tôi truy cập toàn bộ dữ liệu người dùng, ảnh, v.v.”
      Trông giống một người ở công ty nổi đóa, khăng khăng cách của mình tốt hơn thay vì sửa các bình luận trong PR. Apple cũng sẽ không cho phép ghi vào thư mục tùy ý chỉ vì ObjC/Swift API khó dùng.
  • Trước đây tôi từng làm phát triển Android chuyên sâu ở Dropbox vào thập niên 2010, cũng biết ở mức nhất định về API hệ thống tệp Android cũ, nhưng tôi đã chủ động chuyển sang mảng trải nghiệm nhà phát triển/backend và rời Android. Hầu hết các đồng nghiệp Android cũ của tôi cũng tương tự.
    Các quy trình phải liên tục vượt qua và những thay đổi API để giữ cho ứng dụng tiếp tục hoạt động quá đau đớn. Năm 2014, khi Storage Access Framework “bảo mật” mới ra mắt, tôi phát hiện một lỗ hổng duyệt thư mục rất đơn giản: chỉ cần truyền "../../" trong tên tệp là có thể ghi vào thư mục riêng tư của bất kỳ ứng dụng nào. Nó lộ rõ ngay khi tôi lướt qua mã nguồn AOSP để hiểu SAF.
    Trong thời gian dài, Android cũng gán bit thực thi toàn cục cho thư mục ứng dụng, khiến một ứng dụng độc hại có thể tạo hard link theo tên tới tệp của ứng dụng khác, rồi đưa lại cho ứng dụng đó để thực hiện kiểu tấn công đại diện nhầm lẫn nhằm truy cập nội dung tệp.
    Việc Android tăng cường bảo mật là điều đáng mừng, nhưng nó được xây trên một nền tảng quá lỏng lẻo, và vô số ứng dụng đã dùng hoặc lạm dụng nền tảng đó. Vì vậy, khi mức khóa chặt ngày càng tăng, các nhà phát triển phải thích nghi với những lần phá vỡ tương thích lớn liên tiếp có lẽ sẽ rời bỏ hệ sinh thái.
    [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

    • Vấn đề là chi phí bảo trì liên tục của các nền tảng di động native quá cao. Ai lại muốn phát triển trên một nền tảng mà phần nền cứ liên tục thay đổi như vậy?
      Tôi nhớ tầm nhìn của webOS. Không có nghĩa là tôi nhớ chính phần triển khai webOS của 14 năm trước.
  • Có một fork Syncthing cho Android đang được bảo trì tích cực, và dù chỉ là một chỉ số riêng lẻ, nó đã nhận được 1,3K sao.
    [1] https://github.com/Catfriend1/syncthing-android

    • Cũng nên biết, README viết như sau: “Tôi dự định đóng Google Play Developer Account. Nếu bạn muốn nhận tệp phát hành gplay mới nhất để hỗ trợ xuất bản ứng dụng này, hãy liên hệ.”
    • Tôi đã dùng fork đó khá lâu. Khi bắt đầu dùng Syncthing, việc dùng Syncthing-Fork dường như là quan niệm phổ biến, nhưng tôi không nhớ lý do.
    • Lạ là hiện giờ trên Play không tìm thấy cả hai. Ứng dụng có vẻ là bản gốc mà tôi cài qua Play vẫn còn trên thiết bị.
    • Tôi đã xuất cấu hình từ ứng dụng kia rồi nhập vào fork này và có vẻ nó hoạt động. Cấu hình vẫn còn đầy đủ và dường như đồng bộ cũng chạy. Xin dành lời khen cho các nhà phát triển.
    • Đúng vậy, tôi đang dùng nó. Rất hài lòng suốt mấy năm nay.
  • Nhìn vào thread gốc, tác giả nói rằng việc đăng lên Google Play rất khó.
    Họ nói “lý do là Google đang khiến việc phát hành trên Play trở nên khó hoặc gần như bất khả thi”, vậy có ai giải thích thêm chuyện gì đang xảy ra ở đây không?
    [1]: https://forum.syncthing.net/t/discontinuing-syncthing-androi...

    • Trong trường hợp này, tác giả không muốn dùng Storage Access Framework API, thứ đã bắt buộc từ vài năm trước, để truy cập dữ liệu bên ngoài sandbox của ứng dụng.
      API này chỉ dành cho Java, còn phần lõi Syncthing không được viết bằng Java, nên có lẽ họ phải viết mã kết nối JNI để gọi Android khi đọc và ghi tệp. SAF cũng khá phiền vì nó gán URI cho từng tệp và phải liên tục truy vấn cấu trúc thư mục; không thể nối đường dẫn như với tệp thông thường.
      Tác giả không muốn làm việc đó và cố thuyết phục Google tiếp tục cho phép truy cập trực tiếp vào mọi tệp, ảnh, tài liệu, nhưng Google đã từ chối. “Khó khăn” ở đây có vẻ nghĩa là nếu không tuân thủ hướng dẫn thì việc đăng lên Play thực sự rất khó. Cũng giống App Store thôi.
    • Tôi không biết vấn đề cụ thể của nhà phát triển này, nhưng với tư cách một lập trình viên Android, tôi có thể nói về những vấn đề mình gặp với Google Play. Google Play ngày càng nghiêm ngặt hơn về quyền của ứng dụng, và tiêu chí phê duyệt quyền thì rất thiếu minh bạch.
      Ứng dụng của tôi có khi được phê duyệt quyền ở một bản phát hành nhỏ, rồi tuần sau bị từ chối dù chỉ có thay đổi rất nhỏ trong ứng dụng. Khi liên hệ bộ phận hỗ trợ Google Play, câu trả lời luôn mơ hồ, rập khuôn và lặp lại. Không thể biết liệu bản cập nhật ứng dụng có được duyệt hay không, nên đây là một cách rất tệ để phát triển bất cứ thứ gì.
    • Tôi từng làm vài ứng dụng cho công việc, và phép ví von phù hợp nhất là quy định của chính phủ. Yêu cầu của cửa hàng, API và quy tắc được viết quá chi tiết trong một tài liệu 49 trang rải rác nhiều nơi, và nếu không biết chuyện nội bộ thì không có cách nào triển khai ổn định.
      Cuối cùng, cấu trúc này chỉ trừng phạt các nhà phát triển nhỏ, ít ngân sách, thiếu thời gian, và thúc đẩy sự hợp nhất quanh các công ty lớn. Các công ty lớn có thể tạo ảnh hưởng ở mức nào đó, có sẵn độ tin cậy mặc định, và có ngân sách cũng như thời gian để triển khai những yêu cầu vô lý, đôi khi nặng nề. Kết quả là trông như nó củng cố vị thế thị trường và tạo ra những người tham gia gắn bó để chống đỡ Play Store trong nhiều thập kỷ tới.
  • Tôi đang dùng cái này để đưa cơ sở dữ liệu KeePass lên điện thoại, giờ thấy khó xử quá. Có ai cùng cảnh ngộ không?

    • KeePass2Android dùng cùng SFTP thì chức năng tốt hơn một chút. Ví dụ, khi có xung đột, nó có thể hợp nhất các thay đổi.
      Tôi khuyên nên kết nối bằng SFTP tới một máy, rồi trên máy đó chạy Syncthing với các thiết bị còn lại.
    • syncthing-fork trong vài năm qua hoạt động rõ ràng tốt hơn đối với tôi: https://f-droid.org/en/packages/com.github.catfriend1.syncth...
    • Resilio Sync cũng khá ổn, nhưng là phần mềm độc quyền.
    • Cuối cùng có lẽ KeepassDX sẽ phải tự tích hợp chức năng Syncthing.
    • Cả KeePass và Joplin đều bị ảnh hưởng.
  • Với những người dùng đủ biết và đủ muốn dùng Syncthing, có lẽ việc dựa vào F-Droid làm nguồn APK cũng hoàn toàn khả thi. Chỉ dùng nó làm kênh phân phối thôi thì chưa đủ sao?

    • Có lẽ vài tháng tới sẽ thấy, khi mọi người chuyển sang “syncthing-fork” dựa trên F-Droid hoặc sang công cụ đồng bộ khác.
  • Tôi ghét điện toán di động quá.

    • Tình hình tệ đến mức tôi bắt đầu nhớ trải nghiệm phát triển Win32 thời Pocket PC.
  • Tôi sẽ cất APK ở nơi an toàn cùng với các đĩa mềm Turbo Pascal. Syncthing cho Android từng rất thiết yếu để quản lý bộ sưu tập bản nhạc của tôi.

  • Có ai biết ứng dụng Syncthing Android hiện tại sẽ còn tiếp tục hoạt động trong bao lâu không?