1 puntos por GN⁺ 2024-10-21 | 2 comentarios | Compartir por WhatsApp
  • La app oficial syncthing-android se retirará, y el último lanzamiento en GitHub y F-Droid se entregará junto con la versión de Syncthing de diciembre de 2024
  • El contexto de la discontinuación combina una situación en la que la distribución en Google Play se volvió “difícil o imposible” y la falta de mantenimiento activo
  • El bloqueo de lanzamientos en Play Store no es la única causa; para revivir la app o seguir manteniéndola, alguien tendría que asumir el mantenimiento a largo plazo
  • Syncthing como tal no desaparecerá de Android, por lo que se discuten alternativas como seguir usando la app existente, Syncthing Fork o ejecutarlo mediante Termux
  • Es probable que la última app oficial siga funcionando durante un tiempo, pero quienes necesiten versiones nuevas de Syncthing deberían considerar exportar la configuración y migrar al Fork

Fin de la app oficial syncthing-android

  • Se decidió retirar la app oficial syncthing-android, y el último lanzamiento en GitHub y F-Droid se hará junto con la versión de Syncthing de diciembre de 2024
  • El cierre es resultado de dos factores combinados
    • Que Google haya hecho que la distribución en Play sea “difícil o imposible”
    • Que no haya mantenimiento activo de la app
  • La app llevaba mucho tiempo sin desarrollo significativo y, al volverse difícil lanzar versiones en Play, disminuyeron los beneficios y la motivación para dedicar esfuerzos a su mantenimiento continuo
  • Se agradeció a quienes contribuyeron a la app, y varios usuarios también expresaron gratitud por el mantenimiento y tristeza por la decisión

Problemas de distribución en Play Store y límites de mantenimiento

  • En la comunidad surgieron reacciones de que las políticas de Play Store perjudican a las apps legítimas que requieren permisos avanzados
    • Las apps que necesitan permisos avanzados se vuelven difíciles de publicar en la tienda
    • También hubo críticas de que apps que recolectan datos de usuarios o que se acercan al spyware permanecen sin mayores sanciones
  • También se sugirió mantener algunos lanzamientos más en F-Droid y ofrecer guías o documentación para la transición
  • El proyecto aclaró que no poder publicar lanzamientos en los canales de distribución habituales es solo un factor adicional de desmotivación, no la única causa
  • La reactivación o continuidad de la app solo sería posible si alguien invierte esfuerzo a largo plazo, ya que la app llevaba mucho tiempo en estado de “life support”

Cómo seguir usando Syncthing en Android

  • Esta decisión se limita a la discontinuación de la app oficial para Android, que llevaba mucho tiempo casi inactiva
  • No significa que Syncthing como tal deje de poder usarse en Android, y otras personas pueden seguir distribuyendo apps de Syncthing para Android
  • Aunque existe la preocupación de que Android se vuelva cada vez más parecido a iOS y eso complique las cosas, se mencionó que recientemente incluso se creó una nueva app open source de Syncthing para iOS
  • La persona que hizo el anuncio oficial dijo que también usa Syncthing en Android y que, en lo personal, espera que siga siendo posible usarlo allí durante mucho tiempo

Alternativas discutidas: Fork y Termux

  • Como alternativa directa se mencionó Catfriend1/syncthing-android
  • La última versión de la app oficial existente ya no recibirá actualizaciones, pero es probable que siga funcionando bien durante un tiempo
  • Si se necesita una versión más reciente de Syncthing, se puede migrar a Syncthing Fork
    • Desde la configuración de la app oficial se puede exportar la configuración actual
    • Se puede importar en el Fork
    • Desde el punto de vista de Syncthing, ambas apps son compatibles entre sí
  • También se discutió como alternativa ejecutar Syncthing en Termux
    • Funciona si se exportan o copian los archivos y se ajusta parte de la configuración
    • La desventaja es que, si no se quiere mantener el teléfono despierto todo el tiempo, hay que iniciarlo y detenerlo manualmente
    • También se comentó que, si en la configuración de Android se mantiene activada la optimización de batería para la app Termux, el modo doze de Android podría forzarla a entrar en estado de sleep
  • La Web GUI se puede acceder desde el navegador local en http://127.0.0.1:8384, algo que también es posible al usar la app existente de Syncthing

Ejemplo de configuración con Termux + Tasker

  • Un usuario confirmó que la combinación Syncthing + Tasker + Termux funciona como alternativa
  • La instalación es la siguiente
    • Instalar Tasker desde Play Store
    • Instalar Termux y termux:tasker desde F-Droid
  • Los permisos adicionales son los siguientes
    • Tasker: additional → run commands in termux environment
    • Termux: Appear on top
  • El comando para instalar Syncthing en Termux es el siguiente
termux-setup-storage
apt install syncthing
  • Crear el archivo ~/.termux/tasker/start-syncthing-for-5minutes.sh y configurarlo para ejecutar Syncthing durante 5 minutos
#!/usr/bin/bash

timeout -s KILL 5m syncthing
  • En Tasker, configurar que entre las 00:00 y las 23:59 se ejecute ese script cada 1 hora mediante Plugin→Termux:Tasker
    • start-syncthing-for-5minutes.sh
    • terminal session: X
  • Si se desactiva la opción Start browser en la GUI, el navegador no se abrirá automáticamente al iniciar
  • Después de exportar la configuración desde la app de Android existente, se puede copiar a ~/.local/state/syncthing para continuar usando la configuración anterior en lugar de una instalación nueva
    • Luego se pueden eliminar del config.xml el username/password para acceso a la GUI y, si hace falta, configurarlos de nuevo

2 comentarios

 
GN⁺ 2024-10-21
Opiniones de Hacker News
  • Las conversaciones con Google no dieron ningún resultado. Los cambios que Google exigía para conceder el permiso eran ambiguos, así que era difícil incluso saber cómo responder y no estaba claro si cualquier cosa que hicieran tendría éxito.
    Después surgieron más tareas separadas para permanecer en Play, como la verificación de desarrollador y el nivel de API objetivo, y al final se dieron cuenta de que ya no tenían la motivación ni el tiempo para seguir jugando ese juego.

    • No creo que Google hubiera aceptado como excusa para un problema de seguridad algo como “no queremos usar la API de archivos porque escribir el código es difícil”. Tampoco veo qué clase de conversación podría haber sido posible con un argumento tipo “no queremos usar la API SAF, así que déjennos acceder a todos los datos de usuario, fotos, etc.”.
      Se parece a alguien en una empresa que, en vez de corregir comentarios de un PR, explota diciendo que su manera es mejor. Apple tampoco permite escribir en directorios arbitrarios solo porque las API de ObjC/Swift sean difíciles de usar.
  • Antes trabajé en Dropbox desarrollando específicamente para Android en la década de 2010, y conocía en cierta medida las API antiguas del sistema de archivos de Android, pero de forma consciente me pasé a experiencia de desarrollador/backend y dejé Android. La mayoría de mis excolegas de Android hicieron algo parecido.
    Era demasiado doloroso el flujo interminable de trámites y cambios de API que había que superar para que una app siguiera funcionando. En 2014, cuando salió el nuevo Storage Access Framework “seguro”, encontré una vulnerabilidad trivial de recorrido de directorios: bastaba con pasar "../../" en el nombre de archivo para escribir en el directorio privado de cualquier app. Fue algo que saltó a la vista de inmediato mientras revisaba el código fuente de AOSP para entender SAF.
    Durante mucho tiempo, Android también asignaba el bit global de ejecución a las carpetas de apps, lo que permitía un ataque de delegado confundido: una app maliciosa podía crear un hard link por nombre hacia archivos de otra app y luego pasárselo de vuelta a esa app para acceder al contenido del archivo.
    Me alegra que Android haya reforzado su seguridad, pero fue construido sobre una base demasiado laxa, y muchísimas apps usaron o abusaron de esa base. Por eso, a medida que se refuercen los bloqueos, creo que los desarrolladores que tienen que adaptarse a constantes grandes rupturas de compatibilidad acabarán abandonando el ecosistema.
    [0] Bug 18512473 corregido en https://android.googlesource.com/platform/frameworks/base/+/...
    [1] Video de prueba de concepto: https://www.dropbox.com/s/8dpd8visrttqbfo/poc.mp4?dl=0

    • El problema es que el costo de mantenimiento continuo de las plataformas móviles nativas es demasiado alto. ¿Quién querría desarrollar sobre una plataforma cuyos cimientos cambian todo el tiempo?
      Extraño la visión de webOS. No quiero decir que extrañe la implementación de webOS de hace 14 años.
  • Hay un fork de Syncthing para Android mantenido activamente y, aunque sea solo una métrica aparte, recibió 1.3K estrellas.
    [1] https://github.com/Catfriend1/syncthing-android

    • Es bueno saberlo, pero el README dice esto: “Planeo cerrar mi Google Play Developer Account. Si quieres recibir el archivo más reciente de lanzamiento para gplay para ayudar a publicar esta app, contáctame”.
    • He usado ese fork durante bastante tiempo. Cuando empecé con Syncthing, usar Syncthing-Fork parecía ser la sabiduría convencional, aunque no recuerdo por qué.
    • Curiosamente, ahora no puedo encontrar ninguno de los dos en Play. La app que parece ser la original, instalada a través de Play, todavía está en mi dispositivo.
    • Exporté la configuración de la otra app e importé en este fork, y parece funcionar. Toda la configuración sigue ahí y también parece sincronizar. Aplausos para los desarrolladores.
    • Correcto, uso ese. Estoy muy satisfecho desde hace años.
  • Si miras el hilo original, el autor dice que publicar en Google Play es muy difícil.
    Dice que “el motivo es que Google está haciendo que publicar en Play sea difícil o imposible”. ¿Alguien puede explicar mejor qué está pasando aquí?
    [1]: https://forum.syncthing.net/t/discontinuing-syncthing-androi...

    • En este caso, el autor no quería usar la API Storage Access Framework, que desde hace años es obligatoria para acceder a datos fuera del sandbox de la app.
      Esa API es solo para Java, y como el núcleo de Syncthing no está escrito en Java, habrían tenido que escribir código puente con JNI para llamar a Android al leer y escribir archivos. SAF también es bastante engorroso: asigna una URI a cada archivo y obliga a consultar continuamente la estructura de carpetas, así que no se pueden concatenar rutas como con archivos normales.
      El autor no quería hacer ese trabajo e intentó convencer a Google de que le siguiera permitiendo acceso directo a todos los archivos, fotos y documentos, pero Google se negó. La “dificultad” aquí parece significar que si no sigues las pautas, publicar en Play es realmente difícil. Igual que en la App Store.
    • No conozco el problema concreto de este desarrollador, pero puedo hablar de mis problemas con Google Play como desarrollador Android. Google Play se está volviendo cada vez más estricto con los permisos de las apps, y los criterios de aprobación de permisos son muy opacos.
      Mi app podía recibir aprobación de un permiso en una versión menor y luego, la semana siguiente, ser rechazada aunque la app solo tuviera cambios triviales. Cuando contactas al soporte de Google Play, las respuestas son siempre vagas, estandarizadas y repetitivas. No tienes forma de saber si una actualización de la app será aprobada, lo cual es una forma horrible de desarrollar algo.
    • He creado algunas apps por trabajo, y la analogía más adecuada es la regulación gubernamental. Los requisitos de la tienda, las API y las reglas están detallados en exceso en un documento de 49 páginas repartido en varios lugares, y si no conoces cómo funcionan las cosas por dentro, no hay forma de implementarlo de manera confiable.
      Al final, esta estructura solo castiga a los desarrolladores pequeños, con poco presupuesto y poco tiempo, y empuja la consolidación alrededor de los grandes actores. Las empresas grandes pueden ejercer cierta influencia, tienen un nivel básico de confianza y cuentan con el presupuesto y el tiempo para implementar requisitos absurdos y a veces pesados. Como resultado, parece algo diseñado para afianzar su posición de mercado y crear participantes pegajosos que sostengan la Play Store durante las próximas décadas.
  • Yo estaba usando esto para poner una base de datos de KeePass en mi teléfono, así que estoy en problemas. ¿Hay alguien más en la misma situación?

    • KeePass2Android funciona un poco mejor si se usa con SFTP. Por ejemplo, puede fusionar cambios cuando hay conflictos.
      Recomiendo conectarse por SFTP a una máquina y, en esa máquina, ejecutar Syncthing con el resto de los dispositivos.
    • syncthing-fork me ha funcionado claramente mejor durante los últimos años: https://f-droid.org/en/packages/com.github.catfriend1.syncth...
    • Resilio Sync también es bastante bueno, pero es software propietario.
    • Al final, creo que KeepassDX tendrá que integrar por su cuenta la funcionalidad de Syncthing.
    • Tanto KeePass como Joplin se ven afectados.
  • Si alguien sabe usar Syncthing y lo quiere lo suficiente, quizá también sea perfectamente viable que dependa de F-Droid como fuente de APK. ¿No basta con usarlo como canal de distribución?

    • Probablemente se sabrá en los próximos meses, cuando la gente migre al “syncthing-fork” basado en F-Droid o pase a otras herramientas de sincronización.
  • Odio demasiado la computación móvil.

    • Esta situación es tan mala que hasta extraño la experiencia de desarrollo Win32 de la época de Pocket PC.
  • Voy a guardar el APK en un lugar seguro junto con mis disquetes de Turbo Pascal. Syncthing para Android era esencial para gestionar mi colección de partituras.

  • ¿Alguien sabe cuánto tiempo seguirá funcionando la app actual de Syncthing para Android?