1 puan yazan GN⁺ 2024-10-21 | 2 yorum | WhatsApp'ta paylaş
  • Resmî syncthing-android uygulaması emekliye ayrılıyor; GitHub ve F-Droid’deki son sürümün Aralık 2024 Syncthing sürümü ile birlikte yayınlanması planlanıyor
  • Sonlandırma kararının arkasında, Google Play dağıtımının “zor ya da imkânsız düzeye” gelmesi ile aktif bakım eksikliği birlikte yer alıyor
  • Neden yalnızca Play Store sürümlerinin engellenmesi değil; uygulamanın yeniden canlandırılması veya sürdürülmesi için birinin uzun vadeli bakım sorumluluğunu üstlenmesi gerekiyor
  • Bu, Android’de Syncthing’in tamamen ortadan kalktığı anlamına gelmiyor; mevcut uygulamayı kullanmak, Syncthing Fork veya Termux tabanlı çalışma gibi alternatifler tartışılıyor
  • Son resmî uygulama bir süre daha çalışmaya devam edebilir, ancak daha yeni Syncthing sürümlerine ihtiyaç duyan kullanıcıların ayarlarını dışa aktarıp Fork’a geçişi değerlendirmesi gerekiyor

Resmî syncthing-android uygulaması sona eriyor

  • Resmî syncthing-android uygulamasının emekliye ayrılmasına karar verildi ve son GitHub ile F-Droid sürümü Aralık 2024 Syncthing sürümü ile birlikte yayınlanacak
  • Kararın arkasında iki nedenin birleşimi var
    • Google’ın Play dağıtımını “zor ya da imkânsız düzeye” getirmesi
    • Uygulama için aktif bakımın bulunmaması
  • Uygulama uzun süredir anlamlı bir geliştirme almıyordu; Play sürümü de zorlaştıkça sürekli bakım için zaman ve motivasyon ayırmanın getirisi azaldı
  • Uygulamaya katkı sunanlara teşekkür edildi ve birçok kullanıcı da bakım süreci için hem teşekkürlerini hem üzüntülerini dile getirdi

Play Store dağıtım sorunu ve bakım sınırları

  • Toplulukta, Play Store politikalarının meşru gelişmiş yetkiler isteyen uygulamalar için dezavantajlı işlediği yönünde tepkiler geldi
    • Gelişmiş yetki gerektiren uygulamaların Store’a girmesi zorlaşıyor
    • Buna karşılık kullanıcı verisi toplayan veya casus yazılıma yakın uygulamaların ciddi bir yaptırım olmadan kalabildiği de eleştiriliyor
  • F-Droid’de birkaç sürüm daha devam edilip geçiş rehberi veya dokümantasyon sağlanıp sağlanamayacağı da önerildi
  • Proje tarafı, genel dağıtım kanallarında sürüm yayınlayamamanın yalnızca ek bir motivasyon kaybı unsuru olduğunu, tek neden olmadığını özellikle vurguladı
  • Uygulamanın yeniden canlanması veya sürmesi ancak birinin uzun vadeli emek vermesiyle mümkün; uygulama uzun süredir “life support” durumundaydı

Android’de Syncthing kullanmaya devam etme yolları

  • Bu karar, uzun zamandır neredeyse uykuda olan resmî Android uygulamasının sonlandırılmasıyla sınırlı
  • Bu, Android’de Syncthing’in artık kullanılamayacağı anlamına gelmiyor; başka kişiler Android için Syncthing uygulaması dağıtmaya devam edebilir
  • Android’in giderek iOS’a benzer bir yöne gitmesi nedeniyle işlerin zorlaşabileceği endişesi var, ancak yakın zamanda iOS için yeni bir açık kaynak Syncthing uygulamasının geliştirildiği de hatırlatılıyor
  • Resmî duyuruyu yapan kişi, kendisinin de Android’de Syncthing kullandığını ve kişisel olarak Android’de uzun süre kullanılmaya devam etmesini umduğunu belirtti

Tartışılan alternatifler: Fork ve Termux

  • Doğrudan alternatif olarak Catfriend1/syncthing-android anılıyor
  • Mevcut resmî uygulamanın son sürümü artık güncellenmeyecek olsa da bir süre daha sorunsuz çalışması muhtemel
  • Daha güncel Syncthing sürümüne ihtiyaç varsa Syncthing Fork’a geçilebilir
    • Mevcut yapılandırma resmî uygulamanın ayarlarından dışa aktarılabilir
    • Fork içine içe aktarılabilir
    • Syncthing açısından iki uygulama birbiriyle uyumlu
  • Syncthing’i Termux içinde çalıştırmak da bir alternatif olarak tartışılıyor
    • Dosyaları dışa aktarıp veya kopyalayıp bazı ayarları düzenleyince çalışıyor
    • Telefonun sürekli uyanık kalmasını istemiyorsanız elle başlatıp durdurma gereksinimi dezavantaj olarak öne çıkıyor
    • Android ayarlarında Termux uygulaması için pil optimizasyonu açık bırakılırsa Android doze modunda zorla uyku durumuna geçebileceği de belirtiliyor
  • Web GUI’ye yerel tarayıcıdan http://127.0.0.1:8384 adresiyle erişilebilir; bu, mevcut Syncthing uygulaması kullanılırken de mümkün olan bir yöntem

Termux + Tasker yapılandırma örneği

  • Bir kullanıcı, Syncthing + Tasker + Termux kombinasyonunun çalışan bir alternatif olduğunu doğruladı
  • Kurulum şu şekilde
    • Play Store’dan Tasker kurulumu
    • F-Droid’den Termux ve termux:tasker kurulumu
  • Gerekli ek izinler şunlar
    • Tasker: additional → run commands in termux environment
    • Termux: Appear on top
  • Termux içinde Syncthing kurulum komutu şöyle
termux-setup-storage
apt install syncthing
  • ~/.termux/tasker/start-syncthing-for-5minutes.sh dosyası oluşturulup Syncthing’in 5 dakika çalışması sağlanıyor
#!/usr/bin/bash

timeout -s KILL 5m syncthing
  • Tasker içinde 00:00’dan 23:59’a kadar her 1 saatte bir Plugin→Termux:Tasker ile ilgili betiğin çalıştırılması ayarlanıyor
    • start-syncthing-for-5minutes.sh
    • terminal session: X
  • GUI’de Start browser seçeneği kapatılırsa başlangıçta tarayıcı otomatik açılmaz
  • Mevcut Android uygulamasından ayarlar dışa aktarıldıktan sonra ~/.local/state/syncthing içine kopyalanırsa yeni kurulum yapmak yerine mevcut yapılandırma sürdürülebilir
    • Sonrasında config.xml içindeki GUI erişimi için kullanılan username/password silinip gerekirse yeniden ayarlanabilir

2 yorum

 
GN⁺ 2024-10-21
Hacker News görüşleri
  • Google ile yapılan görüşmelerden hiçbir sonuç çıkmamış. İzin alabilmek için Google'ın istediği değişiklikler belirsiz olduğu için nasıl yanıt verileceğini anlamak bile zormuş ve ne yapılırsa yapılsın başarılı olup olmayacağı da açık değilmiş
    Sonrasında da Play'de kalmak için geliştirici doğrulaması, hedef API seviyesi gibi ayrı işler eklenmiş; sonunda bu oyunu sürdürmek için artık motivasyon ve zaman kalmadığını fark ettiğini söylüyor

    • Google'ın güvenlik konularında “dosya API'sini kullanmak istemiyorum çünkü kod yazması zor” bahanesini kabul etmiş olması pek olası görünmüyor. “SAF API'sini kullanmak istemiyorum, onun yerine tüm kullanıcı verilerine, fotoğraflara vb. erişmeme izin verin” gibi bir tartışma dönmüş olabilir
      Bu, şirkette PR yorumlarını düzeltmek yerine kendi yaklaşımının daha iyi olduğunu söyleyip patlayan insanlara benziyor. Apple da ObjC/Swift API'lerini kullanmak zor diye keyfi dizinlere yazma izni vermiyor
  • Eskiden Dropbox'ta 2010'larda profesyonel olarak Android geliştirdim ve eski Android dosya sistemi API'lerini de bir ölçüde biliyordum; ama bilinçli şekilde geliştirici deneyimi/backend tarafına geçip Android'den uzaklaştım. Eski Android ekip arkadaşlarımın çoğu da benzerini yaptı
    Uygulamayı çalışır durumda tutmak için sonsuz prosedür ve API değişikliğinden geçmek çok acı vericiydi. 2014'te “güvenli” Storage Access Framework çıktığında, dosya adına sadece "../../" vermekle herhangi bir uygulamanın özel dizinine yazılabilen basit bir directory traversal açığı bulmuştum. SAF'ı anlamaya çalışırken AOSP kaynak koduna göz atınca hemen fark edilecek kadar açıktı
    Android uzun süre uygulama klasörlerine global execute biti de veriyordu; bu yüzden kötü amaçlı bir uygulama, başka bir uygulamanın dosyalarına isim üzerinden hard link oluşturup sonra bunu tekrar o uygulamaya vererek dosya içeriğine erişen confused deputy saldırıları da yapabiliyordu
    Android'in güvenliği sıkılaştırmış olması sevindirici, ama çok gevşek bir temel üzerine kuruldu ve sayısız uygulama bu temeli kullandı ya da suistimal etti; bu yüzden kilitler sıkılaştıkça ortaya çıkan büyük uyumluluk kırılmalarına uyum sağlamak zorunda kalan geliştiriciler ekosistemi terk edecek gibi görünüyor
    [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

    • Sorun, yerel mobil platformların süregelen bakım maliyetinin fazla yüksek olması. Sürekli altı değişen bir platform üzerinde kim geliştirme yapmak ister ki?
      webOS'un vizyonunu özlüyorum. 14 yıl önceki webOS implementasyonunun kendisini özlediğim anlamında değil
  • Aktif olarak bakımı yapılan bir Android Syncthing fork'u var ve ayrı bir ölçüt olsa da ayrıca 1.3K yıldız almış
    [1] https://github.com/Catfriend1/syncthing-android

    • Bilmekte fayda var ama README'de şöyle yazıyor: “Google Play Developer Account'u kapatmayı planlıyorum. Bu uygulamayı yayınlamaya yardımcı olmak için en son gplay release dosyalarını almak isterseniz benimle iletişime geçin”
    • O fork'u epey uzun süredir kullanıyorum. Syncthing'e başladığımda Syncthing-Fork kullanmanın adeta genel kabul olduğunu hatırlıyorum ama nedenini anımsamıyorum
    • Garip şekilde şu anda Play'de ikisini de bulamıyorum. Play üzerinden yüklediğim, orijinal olan gibi görünen uygulama hâlâ cihazımda duruyor
    • Diğer uygulamanın ayarlarını dışa aktararak bu fork'a içe aktardım, çalışıyor gibi görünüyor. Tüm ayarlar duruyor ve senkronizasyon da oluyor gibi. Geliştiricilere alkış
    • Evet, onu kullanıyorum. Yıllardır çok memnunum
  • Asıl iş parçacığında yazar, Google Play'de yayın yapmanın çok zor olduğunu söylüyor
    “Bunun nedeni Google'ın Play'de yayınlamayı zor ya da imkânsıza yakın hâle getirmesi” diyor; burada tam olarak neler olduğunu biraz daha açıklayabilecek biri var mı?
    [1]: https://forum.syncthing.net/t/discontinuing-syncthing-androi...

    • Bu durumda yazar, uygulama sandbox'ı dışındaki verilere erişmek için birkaç yıldır zorunlu olan Storage Access Framework API'sini kullanmak istememiş
      Bu API yalnızca Java için ve Syncthing'in çekirdeği Java ile yazılmadığından, dosya okuma ve yazmada Android'i çağırmak için muhtemelen JNI bağlantı kodu yazması gerekecekti. SAF ayrıca her dosyaya bir URI veriyor ve klasör yapısını sürekli sorgulamayı gerektiriyor; yani normal dosyalardaki gibi yolları birleştiremiyorsunuz, bu da epey zahmetli
      Yazar bu işi yapmak istememiş ve Google'ı tüm dosyalara, fotoğraflara ve belgelere doğrudan erişime izin vermeye ikna etmeye çalışmış ama Google reddetmiş. Buradaki “zorluk”, yönergelere uyulmadığında Play'de yayın yapmanın gerçekten zor olması anlamına geliyor gibi. App Store'da da durum benzer
    • Bu geliştiricinin özel sorununu bilmiyorum ama bir Android geliştiricisi olarak Google Play ile yaşadığım sorunları anlatabilirim. Google Play uygulama izinleri konusunda giderek daha katı oluyor ve izin onay kriterleri çok opak
      Benim uygulamam da bir küçük sürümde izin onayı alıp sonraki hafta uygulamada yalnızca ufak değişiklikler olmasına rağmen reddedilebiliyordu. Google Play destek ekibine sorunca gelen yanıtlar hep muğlak, kalıp ve tekrarlı oluyor. Uygulama güncellemesinin onay alıp almayacağını hiç bilememek, bir şey geliştirmek için korkunç bir yöntem
    • İş gereği birkaç uygulama yaptım; en uygun benzetme devlet düzenlemesi olur. Store gereksinimleri, API'ler ve kurallar birbirinden kopuk yerlerde duran 49 sayfalık bir belgede aşırı ayrıntılı biçimde yazıyor ve içeriden bilgi olmadan bunu istikrarlı şekilde uygulamanın yolu yok
      Sonuçta bu yapı küçük, düşük bütçeli, zamanı kısıtlı geliştiricileri cezalandırıyor ve birleşmeyi büyük şirketler etrafında teşvik ediyor. Büyük şirketler bir miktar etki kullanabiliyor, varsayılan güvene sahip oluyor ve saçma, bazen de ağır yük oluşturan gereksinimleri uygulayacak bütçe ve zamana sahip oluyor. Sonuç olarak bu, pazar konumunu sağlamlaştırmaya ve önümüzdeki onlarca yıl boyunca Play Store'u ayakta tutacak bağlı katılımcılar oluşturmaya çalışıyormuş gibi görünüyor
  • Bunu telefonumda KeePass veritabanı tutmak için kullanıyordum, can sıkıcı oldu. Benimle aynı durumda olan var mı?

    • KeePass2Android, SFTP ile birlikte kullanıldığında biraz daha fazla işlev sunuyor. Örneğin bir çakışma olduğunda değişiklikleri birleştirebiliyor
      Bir makineye SFTP ile bağlanıp, o makinede de diğer cihazlarla Syncthing çalıştırmanızı öneririm
    • syncthing-fork son birkaç yıldır bende belirgin şekilde daha iyi çalıştı: https://f-droid.org/en/packages/com.github.catfriend1.syncth...
    • Resilio Sync de oldukça iyi ama kapalı kaynak
    • Sonunda KeepassDX'in Syncthing işlevini kendi içine entegre etmesi gerekecek gibi görünüyor
    • Hem KeePass hem de Joplin etkileniyor
  • Syncthing'i kullanmayı bilen ve isteyecek türden kullanıcılar için APK kaynağı olarak F-Droid'a güvenmek gayet mümkün değil mi? Sırf onu dağıtım kanalı yapmak yetmiyor mu?

    • Muhtemelen önümüzdeki birkaç ay içinde insanlar F-Droid tabanlı “syncthing-fork”a geçtikçe ya da başka senkronizasyon araçlarına yöneldikçe bunun cevabı ortaya çıkacak
  • Mobil bilişimden nefret ediyorum

    • Durum o kadar kötü ki Pocket PC dönemindeki Win32 geliştirme deneyimini bile özletiyor
  • APK'yı Turbo Pascal disketleriyle birlikte güvenli bir yerde saklayacağım. Android için Syncthing benim nota koleksiyonumu yönetmek için vazgeçilmezdi

  • Şu an Syncthing Android uygulamasının bundan sonra ne kadar daha çalışmaya devam edeceğini bilen var mı?