- आधिकारिक syncthing-android ऐप को रिटायर किया जा रहा है, और GitHub व F-Droid पर इसकी आख़िरी रिलीज़ दिसंबर 2024 Syncthing वर्ज़न के साथ दी जाएगी
- बंद होने की पृष्ठभूमि में Google Play पर डिस्ट्रीब्यूशन का “मुश्किल या लगभग असंभव” हो जाना और सक्रिय मेंटेनेंस की कमी — दोनों शामिल हैं
- सिर्फ Play Store रिलीज़ रुकना ही वजह नहीं है; ऐप को फिर से जीवित रखने या जारी रखने के लिए किसी को दीर्घकालिक मेंटेनेंस संभालनी होगी
- Android पर Syncthing खुद गायब नहीं हो रहा है, इसलिए मौजूदा ऐप का उपयोग, Syncthing Fork, और Termux आधारित रनिंग जैसे विकल्पों पर चर्चा हुई
- आख़िरी आधिकारिक ऐप कुछ समय तक काम करता रह सकता है, लेकिन जिन्हें नए Syncthing वर्ज़न चाहिए उन्हें सेटिंग्स एक्सपोर्ट करके Fork में जाने पर विचार करना चाहिए
आधिकारिक syncthing-android ऐप का अंत
- आधिकारिक syncthing-android ऐप को रिटायर करने का निर्णय लिया गया है, और GitHub तथा F-Droid पर इसकी आख़िरी रिलीज़ दिसंबर 2024 Syncthing वर्ज़न के साथ होगी
- इसके पीछे दो कारण एक साथ काम कर रहे हैं
- Google ने Play डिस्ट्रीब्यूशन को “मुश्किल या लगभग असंभव” बना दिया है
- ऐप के लिए सक्रिय मेंटेनेंस मौजूद नहीं है
- ऐप में लंबे समय से कोई अर्थपूर्ण डेवलपमेंट नहीं हुआ था, और Play रिलीज़ भी कठिन होती जाने से लगातार मेंटेनेंस में समय लगाने का लाभ और प्रेरणा कम हो गई
- ऐप में योगदान देने वालों को धन्यवाद दिया गया, और कई उपयोगकर्ताओं ने भी मेंटेनेंस के लिए आभार और अफ़सोस व्यक्त किया
Play Store डिस्ट्रीब्यूशन की समस्या और मेंटेनेंस की सीमाएँ
- कम्युनिटी में यह प्रतिक्रिया आई कि Play Store की नीतियाँ वैध advanced permission वाले ऐप्स के लिए प्रतिकूल तरीके से काम करती हैं
- advanced permission की ज़रूरत वाले ऐप्स को Store पर लाना कठिन हो गया है
- वहीं उपयोगकर्ता डेटा इकट्ठा करने वाले या spyware के क़रीब ऐप्स बिना खास रोक-टोक बने रहने की आलोचना भी हुई
- F-Droid पर कुछ और रिलीज़ बनाए रखते हुए migration guide या दस्तावेज़ देने का सुझाव भी सामने आया
- प्रोजेक्ट पक्ष ने स्पष्ट किया कि सामान्य डिस्ट्रीब्यूशन चैनलों में रिलीज़ न कर पाना अतिरिक्त रूप से उत्साह घटाने वाला कारण है, लेकिन यही एकमात्र वजह नहीं है
- ऐप का पुनर्जीवन या जारी रहना तभी संभव है जब कोई दीर्घकालिक प्रयास लगाए; ऐप लंबे समय से “life support” की स्थिति में था
Android पर Syncthing का उपयोग जारी रखने के तरीके
- यह निर्णय केवल लंबे समय से लगभग निष्क्रिय पड़ी आधिकारिक Android ऐप को बंद करने तक सीमित है
- इसका मतलब यह नहीं है कि Android पर Syncthing का उपयोग असंभव हो जाएगा; कोई दूसरा व्यक्ति Android के लिए Syncthing ऐप जारी रख सकता है
- Android के धीरे-धीरे iOS जैसी दिशा में जाने से मुश्किलें बढ़ने की चिंता जताई गई, लेकिन यह भी कहा गया कि हाल में iOS के लिए नया open source Syncthing ऐप भी बनाया गया है
- आधिकारिक घोषणा करने वाले ने कहा कि वे खुद भी Android पर Syncthing इस्तेमाल करते हैं, और व्यक्तिगत रूप से चाहते हैं कि यह Android पर लंबे समय तक उपयोगी बना रहे
चर्चा में आए विकल्प: Fork और Termux
- सीधे विकल्प के रूप में Catfriend1/syncthing-android का ज़िक्र किया गया
- मौजूदा आधिकारिक ऐप का आख़िरी वर्ज़न अब अपडेट नहीं होगा, लेकिन कुछ समय तक ठीक से काम करता रह सकता है
- अगर नया Syncthing वर्ज़न चाहिए, तो Syncthing Fork में स्विच किया जा सकता है
- आधिकारिक ऐप की सेटिंग्स से मौजूदा कॉन्फ़िगरेशन एक्सपोर्ट किया जा सकता है
- उसे Fork में इम्पोर्ट किया जा सकता है
- Syncthing के नज़रिए से दोनों ऐप्स एक-दूसरे के साथ compatible हैं
- Termux में Syncthing चलाने का तरीका भी विकल्प के रूप में चर्चा में रहा
- फ़ाइलें एक्सपोर्ट या कॉपी करके और कुछ सेटिंग्स बदलकर इसे चलाया जा सकता है
- अगर आप फ़ोन को लगातार जागृत नहीं रखना चाहते, तो इसे मैन्युअली शुरू और बंद करना पड़ेगा — यह एक कमी है
- यह राय भी आई कि Android सेटिंग्स में Termux ऐप की battery optimization चालू होने पर Android doze mode में इसे ज़बरदस्ती sleep स्थिति में डाला जा सकता है
- Web GUI को लोकल ब्राउज़र में
http://127.0.0.1:8384 पर खोला जा सकता है, और यह तरीका मौजूदा Syncthing ऐप के साथ भी संभव है
Termux + Tasker कॉन्फ़िगरेशन का उदाहरण
- एक उपयोगकर्ता ने पुष्टि की कि Syncthing + Tasker + Termux का संयोजन काम करने वाला विकल्प है
- इंस्टॉलेशन सेटअप इस प्रकार है
- Play Store से Tasker इंस्टॉल करें
- F-Droid से Termux और
termux:tasker इंस्टॉल करें
- अतिरिक्त permissions इस प्रकार हैं
- Tasker:
additional → run commands in termux environment
- Termux:
Appear on top
- Termux में Syncthing इंस्टॉल करने का कमांड इस प्रकार है
termux-setup-storage
apt install syncthing
~/.termux/tasker/start-syncthing-for-5minutes.sh फ़ाइल बनाकर Syncthing को 5 मिनट तक चलने के लिए सेट किया जाता है
#!/usr/bin/bash
timeout -s KILL 5m syncthing
- Tasker में 00:00 से 23:59 तक हर 1 घंटे पर
Plugin→Termux:Tasker के ज़रिए वही स्क्रिप्ट चलाने के लिए सेट किया जाता है
start-syncthing-for-5minutes.sh
- terminal session:
X
- GUI में Start browser विकल्प बंद करने पर शुरू होते समय ब्राउज़र अपने-आप नहीं खुलेगा
- मौजूदा Android ऐप से सेटिंग्स एक्सपोर्ट करके
~/.local/state/syncthing में कॉपी करने पर नई इंस्टॉलेशन के बजाय पुरानी कॉन्फ़िगरेशन को जारी रखा जा सकता है
- इसके बाद
config.xml में GUI access के लिए username/password हटाकर, ज़रूरत हो तो फिर से सेट किया जा सकता है
2 टिप्पणियां
Syncthing - निरंतर फ़ाइल सिंक्रोनाइज़ेशन ओपन सोर्स
Hacker News की राय
Google के साथ चर्चा से कोई नतीजा नहीं निकला। अनुमति पाने के लिए Google ने जो बदलाव मांगे थे वे अस्पष्ट थे, इसलिए यह समझना भी मुश्किल था कि कैसे प्रतिक्रिया दें, और यह भी साफ़ नहीं था कि कुछ भी करने पर सफलता मिलेगी या नहीं।
इसके बाद भी Play पर बने रहने के लिए developer verification, target API level जैसी अलग-अलग चीज़ें और आ गईं, और आखिर में उन्हें एहसास हुआ कि इस खेल को जारी रखने की प्रेरणा और समय अब नहीं बचा है।
यह वैसा लगता है जैसे कंपनी में कोई PR comments ठीक करने के बजाय यह कहकर भड़क जाए कि उसका तरीका बेहतर है। Apple भी सिर्फ इसलिए arbitrary directories में लिखने नहीं देता कि ObjC/Swift API इस्तेमाल करना कठिन है।
पहले Dropbox में 2010s में Android पर पेशेवर रूप से काम किया था, और पुराने Android filesystem API की भी कुछ जानकारी थी, लेकिन जानबूझकर developer experience/backend की तरफ चला गया और Android छोड़ दिया। मेरे पुराने Android colleagues में से भी ज़्यादातर ने ऐसा ही किया।
ऐप को चलता रखने के लिए लगातार पार करनी पड़ने वाली प्रक्रियाएँ और API changes बेहद दर्दनाक थे। 2014 में जब “security” Storage Access Framework नया आया, तब मैंने एक मामूली directory traversal vulnerability खोजी थी, जिसमें file name में बस
"../../"पास करने पर किसी भी app की private directory में लिखा जा सकता था। SAF को समझने के लिए AOSP source देख रहा था और यह तुरंत नज़र आ गया।Android लंबे समय तक app folders पर global execute bit भी देता था, जिससे malicious app किसी दूसरे app की files के नाम से hard link बना सकता था और फिर उसे वापस उसी app को देकर file contents तक पहुँचने वाला confused deputy attack कर सकता था।
यह अच्छी बात है कि Android ने security को मजबूत किया है, लेकिन यह बहुत ढीले आधार पर बना था और अनगिनत apps उस आधार का इस्तेमाल या दुरुपयोग करती रही हैं। इसलिए जैसे-जैसे locking मजबूत होगी, लगातार होने वाले बड़े compatibility breaks के साथ तालमेल बैठाने वाले developers शायद ecosystem छोड़ते जाएंगे।
[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 का vision याद आता है। इसका मतलब यह नहीं कि 14 साल पुरानी webOS implementation ही याद आती है।
Android के लिए Syncthing का एक सक्रिय रूप से maintained fork है और, भले ही यह अलग metric है, इसे 1.3K stars मिले हैं।
[1] https://github.com/Catfriend1/syncthing-android
original thread देखें तो लेखक कहता है कि Google Play पर publish करना बहुत कठिन है।
वह कहता है, “कारण यह है कि Google Play publishing को कठिन या असंभव स्तर तक बना रहा है”; क्या कोई बता सकता है कि यहाँ क्या हो रहा है?
[1]: https://forum.syncthing.net/t/discontinuing-syncthing-androi...
यह API सिर्फ Java के लिए है और Syncthing core Java में नहीं लिखा गया, इसलिए files पढ़ते और लिखते समय Android को call करने के लिए JNI glue code लिखना पड़ता। SAF हर file को URI देता है और folder structure को लगातार query करना पड़ता है, इसलिए ordinary files की तरह paths जोड़कर इस्तेमाल नहीं कर सकते; यह काफी झंझट भरा भी है।
लेखक वह काम नहीं करना चाहता था और Google को मनाने की कोशिश कर रहा था कि उसे सभी files, photos, documents तक सीधे access की अनुमति मिलती रहे, लेकिन Google ने मना कर दिया। यहाँ “कठिनाई” का मतलब लगता है कि guidelines न मानें तो Play पर publish करना सचमुच कठिन है। App Store की तरह ही।
मेरी app को भी एक minor release में permission approval मिल जाता है, और अगले हफ्ते app में सिर्फ मामूली बदलाव होने पर भी reject कर दिया जाता है। Google Play support से संपर्क करो तो जवाब हमेशा vague, template जैसे और repetitive होते हैं। app update approve होगा या नहीं, इसका कोई अंदाज़ा नहीं होता, इसलिए कुछ develop करने के लिए यह भयानक तरीका है।
आखिर में यह structure सिर्फ छोटे, low-budget और समय की कमी से जूझ रहे developers को सज़ा देता है और बड़े players के इर्द-गिर्द consolidation को बढ़ावा देता है। बड़े players कुछ हद तक influence डाल सकते हैं, उनकी default trust भी होती है, और उनके पास अजीब और कभी-कभी भारी requirements implement करने के लिए budget और time होता है। नतीजतन ऐसा लगता है जैसे market position मजबूत करनी हो और आने वाले दशकों तक Play Store को सहारा देने वाले चिपके रहने वाले participants बनाने हों।
मैं इससे phone में KeePass database रखता था, अब मुश्किल में हूँ। क्या और भी कोई इसी स्थिति में है?
SFTP से एक machine में connect करने और उस machine पर बाकी devices के साथ Syncthing चलाने का तरीका सुझाऊँगा।
जो user Syncthing इस्तेमाल करना जानता और करना चाहता है, वह APK source के लिए F-Droid पर निर्भर रह सकता है, ऐसा लगता है। क्या इसे distribution channel बनाना ही काफी नहीं है?
mobile computing से मुझे बहुत नफरत है।
मैं APK को अपने Turbo Pascal floppies के साथ किसी सुरक्षित जगह रखूँगा। Android के लिए Syncthing मेरे sheet music collection को manage करने के लिए जरूरी था।
क्या किसी को पता है कि मौजूदा Syncthing Android app आगे कितने समय तक चलती रहेगी?