1 pontos por GN⁺ 2024-10-21 | 2 comentários | Compartilhar no WhatsApp
  • O app oficial syncthing-android será aposentado, e a última versão no GitHub e no F-Droid deve ser lançada com a versão do Syncthing de dezembro de 2024
  • Entre os motivos da descontinuação estão o fato de a distribuição pelo Google Play ter se tornado “difícil ou impossível” e a ausência de manutenção ativa
  • O bloqueio de lançamentos na Play Store não é a única causa; para reviver ou continuar mantendo o app, alguém teria de assumir a manutenção de longo prazo
  • Isso não significa que o Syncthing vai desaparecer do Android, e alternativas como usar o app existente, o Syncthing Fork ou executá-lo via Termux estão sendo discutidas
  • É provável que o último app oficial continue funcionando por algum tempo, mas usuários que precisem de versões mais novas do Syncthing devem considerar exportar as configurações e migrar para o Fork

Encerramento do app oficial syncthing-android

  • Foi decidido aposentar o app oficial syncthing-android, e a última versão no GitHub e no F-Droid deve sair junto com a versão do Syncthing de dezembro de 2024
  • O encerramento resulta da combinação de dois fatores
    • O Google tornou a distribuição pela Play Store “difícil ou impossível”
    • Não há manutenção ativa do app
  • O app já estava há muito tempo sem desenvolvimento significativo, e, com os lançamentos na Play Store também ficando difíceis, houve menos vantagem e motivação para investir em manutenção contínua
  • Foram feitos agradecimentos aos contribuidores do app, e vários usuários também expressaram gratidão pelo trabalho de manutenção e lamentaram o encerramento

Problemas de distribuição na Play Store e limites de manutenção

  • Na comunidade, houve reações de que as políticas da Play Store acabam prejudicando apps legítimos que precisam de permissões avançadas
    • Ficou mais difícil publicar na loja apps que exigem permissões avançadas
    • Também houve críticas de que apps que coletam dados de usuários ou se aproximam de spyware continuam na loja sem grandes restrições
  • Também surgiu a sugestão de manter mais algumas versões no F-Droid, com orientações de transição ou documentação
  • O projeto deixou claro que não poder lançar em canais comuns de distribuição é apenas um fator adicional de desmotivação, não a causa única
  • A retomada ou continuidade do app só seria possível se alguém assumisse um esforço de longo prazo; o app já estava em estado de “life support” havia muito tempo

Como continuar usando Syncthing no Android

  • Esta decisão se limita à descontinuação do app oficial para Android, que já estava praticamente inativo há muito tempo
  • Isso não significa que o próprio Syncthing deixará de poder ser usado no Android, e outras pessoas ainda podem continuar distribuindo apps do Syncthing para Android
  • Houve preocupação de que o Android possa caminhar cada vez mais para algo parecido com o iOS, tornando isso mais difícil, mas foi mencionado que recentemente também surgiu um novo app open source do Syncthing para iOS
  • O responsável pelo anúncio disse que também usa Syncthing no Android e que, pessoalmente, espera que ele continue utilizável por muito tempo na plataforma

Alternativas discutidas: Fork e Termux

  • Como alternativa direta, foi citado Catfriend1/syncthing-android
  • A última versão do app oficial existente não receberá mais atualizações, mas provavelmente continuará funcionando bem por algum tempo
  • Se for necessário usar uma versão mais recente do Syncthing, é possível migrar para o Syncthing Fork
    • É possível exportar a configuração atual nas opções do app oficial
    • Depois, ela pode ser importada no Fork
    • Do ponto de vista do Syncthing, os dois apps são compatíveis entre si
  • Executar o Syncthing no Termux também foi discutido como alternativa
    • Funciona exportando ou copiando arquivos e ajustando algumas configurações
    • A desvantagem é que, se você não quiser manter o celular sempre acordado, será preciso iniciar e parar manualmente
    • Também houve a observação de que, se a otimização de bateria do app Termux estiver ativada nas configurações do Android, ele pode ser forçado a entrar em modo de suspensão durante o doze mode do Android
  • A Web GUI pode ser acessada no navegador local em http://127.0.0.1:8384, e isso já era possível também ao usar o app Syncthing existente

Exemplo de configuração com Termux + Tasker

  • Um usuário confirmou que a combinação Syncthing + Tasker + Termux funciona como alternativa
  • A instalação foi configurada assim
    • Instalar o Tasker pela Play Store
    • Instalar o Termux e o termux:tasker pelo F-Droid
  • As permissões adicionais são as seguintes
    • Tasker: additional → run commands in termux environment
    • Termux: Appear on top
  • No Termux, o comando para instalar o Syncthing é o seguinte
termux-setup-storage
apt install syncthing
  • Criar o arquivo ~/.termux/tasker/start-syncthing-for-5minutes.sh e configurá-lo para executar o Syncthing por 5 minutos
#!/usr/bin/bash

timeout -s KILL 5m syncthing
  • No Tasker, configurar a execução desse script a cada 1 hora, de 00:00 a 23:59, usando Plugin→Termux:Tasker
    • start-syncthing-for-5minutes.sh
    • terminal session: X
  • Se a opção Start browser for desativada na GUI, o navegador não será aberto automaticamente ao iniciar
  • Depois de exportar as configurações do app Android existente, é possível copiá-las para ~/.local/state/syncthing para continuar usando a configuração anterior em vez de fazer uma instalação nova
    • Depois disso, é possível remover o username/password de acesso à GUI em config.xml e, se necessário, defini-los novamente

2 comentários

 
GN⁺ 2024-10-21
Opiniões no Hacker News
  • As discussões com o Google não levaram a lugar nenhum. As mudanças exigidas pelo Google para conceder a permissão eram vagas, então era difícil até descobrir como responder e não estava claro se qualquer tentativa teria sucesso
    Depois disso ainda surgiram outras tarefas separadas para continuar na Play, como verificação de desenvolvedor e nível de API alvo, e no fim ele percebeu que já não tinha mais motivação nem tempo para continuar esse jogo

    • O Google provavelmente não teria aceitado uma desculpa sobre um problema de segurança do tipo “não queremos usar a API de arquivos porque é difícil escrever o código”. Talvez a conversa tenha sido algo como “não queremos usar a API SAF, então deixem a gente acessar todos os dados dos usuários, fotos etc.”
      Parece parecido com alguém no trabalho que, em vez de corrigir os comentários de um PR, explode dizendo que o jeito dele é melhor. A Apple também não deixa gravar em diretórios arbitrários só porque as APIs de ObjC/Swift são difíceis de usar
  • Antigamente eu desenvolvia Android profissionalmente no Dropbox, nos anos 2010, e conhecia razoavelmente bem as APIs antigas do sistema de arquivos do Android, mas fui deliberadamente para o lado de experiência do desenvolvedor/backend e larguei Android. A maioria dos meus antigos colegas de Android fez algo parecido
    Era doloroso demais lidar com o processo sem fim e com as mudanças de API necessárias para manter o app funcionando. Em 2014, quando saiu o novo Storage Access Framework de “segurança”, encontrei uma vulnerabilidade trivial de path traversal em que bastava passar "../../" no nome do arquivo para escrever no diretório privado de qualquer app. Isso ficou evidente quase imediatamente só de folhear o código-fonte do AOSP para entender o SAF
    Durante muito tempo, o Android também atribuía bit global de execução às pastas dos apps, o que permitia a um app malicioso criar hard links por nome para arquivos de outros apps e depois passá-los de volta ao próprio app, viabilizando um ataque de confused deputy para acessar o conteúdo dos arquivos
    Fico feliz que o Android tenha endurecido a segurança, mas ele foi construído sobre uma base frouxa demais, e como inúmeros apps usaram ou abusaram dessa base, parece inevitável que, conforme o bloqueio aumenta, desenvolvedores tenham de se adaptar a grandes quebras de compatibilidade contínuas e acabem saindo do ecossistema
    [0] Bug 18512473 corrigido em https://android.googlesource.com/platform/frameworks/base/+/...
    [1] Vídeo de prova de conceito: https://www.dropbox.com/s/8dpd8visrttqbfo/poc.mp4?dl=0

    • O problema é que o custo contínuo de manutenção em plataformas móveis nativas é alto demais. Quem vai querer desenvolver em cima de uma plataforma cujo alicerce muda o tempo todo?
      Sinto falta da visão do webOS. Não quer dizer que eu sinta falta da implementação do webOS de 14 anos atrás em si
  • Existe um fork do Syncthing para Android mantido ativamente, e embora seja só uma métrica separada, ele tem outras 1,3 mil estrelas
    [1] https://github.com/Catfriend1/syncthing-android

    • Bom saber, mas o README diz o seguinte: “Planejo fechar a conta de desenvolvedor do Google Play. Se você quiser receber os arquivos da release gplay mais recente para ajudar a publicar este app, entre em contato”
    • Eu uso esse fork há bastante tempo. Quando comecei a usar Syncthing, parecia quase senso comum usar o Syncthing-Fork, mas não lembro o motivo
    • Estranhamente, agora não encontro nenhum dos dois na Play. O app que parece ser o original instalado pela Play ainda está no meu aparelho
    • Exportei as configurações do outro app e importei para esse fork, e parece funcionar. Todas as configurações continuam lá e a sincronização parece funcionar também. Palmas para os desenvolvedores
    • Sim, é esse que eu uso. Estou muito satisfeito há anos
  • Se você olhar o tópico original, o autor diz que publicar no Google Play é muito difícil
    Ele diz que “a razão é que o Google está tornando a publicação na Play difícil ou impossível”; alguém pode explicar melhor o que está acontecendo aqui?
    [1]: https://forum.syncthing.net/t/discontinuing-syncthing-androi...

    • Neste caso, o autor não queria usar a API Storage Access Framework, obrigatória há alguns anos para acessar dados fora do sandbox do app
      Essa API é só para Java, e como o núcleo do Syncthing não é escrito em Java, ele provavelmente teria precisado escrever código de integração JNI para chamar o Android ao ler e gravar arquivos. O SAF também é bem incômodo porque atribui um URI a cada arquivo e exige consultar constantemente a estrutura de pastas, em vez de simplesmente concatenar caminhos como em arquivos normais
      O autor não queria fazer esse trabalho e tentou convencer o Google a continuar permitindo acesso direto a todos os arquivos, fotos e documentos, mas o Google recusou. A “dificuldade” aqui parece significar que, se você não seguir as diretrizes, realmente fica muito difícil publicar na Play. Como na App Store
    • Não conheço o problema específico desse desenvolvedor, mas posso falar dos problemas com o Google Play que vivi como desenvolvedor Android. O Google Play está ficando cada vez mais rígido com permissões de apps, e os critérios de aprovação são muito opacos
      Meu app recebia aprovação de permissão em uma release menor e, na semana seguinte, era rejeitado apesar de só ter mudanças triviais. Quando se pergunta ao suporte do Google Play, a resposta é sempre vaga, padronizada e repetitiva. É uma forma horrível de desenvolver qualquer coisa, porque você nunca sabe se a atualização do app será aprovada
    • Já fiz alguns apps no trabalho, e a comparação mais adequada é com regulação governamental. Os requisitos da loja, APIs e regras estão detalhados em excesso em um documento de 49 páginas espalhado por vários lugares, e sem conhecer os bastidores não há como implementar de forma confiável
      No fim, essa estrutura só pune desenvolvedores pequenos, com pouco orçamento e pouco tempo, enquanto empurra a consolidação em torno das grandes empresas. As grandes conseguem exercer alguma influência, têm um nível básico de confiança e possuem orçamento e tempo para cumprir exigências absurdas e às vezes pesadas. No resultado, parece uma forma de consolidar posição de mercado e criar participantes fiéis que sustentem a Play Store pelas próximas décadas
  • Eu usava isso para manter meu banco de dados do KeePass no celular, então isso é complicado. Mais alguém na mesma situação?

    • O KeePass2Android funciona um pouco melhor junto com SFTP. Por exemplo, quando há conflito, ele consegue mesclar as alterações
      Eu recomendaria conectar por SFTP a uma máquina e, nessa máquina, rodar Syncthing com os outros dispositivos
    • O syncthing-fork funcionou visivelmente melhor para mim nos últimos anos: https://f-droid.org/en/packages/com.github.catfriend1.syncth...
    • O Resilio Sync também é bem decente, mas é software proprietário
    • No fim das contas, o KeepassDX provavelmente vai ter de integrar a funcionalidade do Syncthing por conta própria
    • Tanto o KeePass quanto o Joplin são afetados
  • Se alguém entende e quer usar Syncthing, talvez também seja totalmente viável depender do F-Droid como origem de APKs. Isso por si só não basta como canal de distribuição?

    • Devemos descobrir nos próximos meses, conforme as pessoas migrarem para o “syncthing-fork” via F-Droid ou para outras ferramentas de sincronização
  • Eu odeio muito computação móvel

    • A situação está tão ruim que até sinto falta da experiência de desenvolvimento Win32 da era Pocket PC
  • Vou guardar o APK em um lugar seguro junto com meus disquetes do Turbo Pascal. O Syncthing para Android era essencial para gerenciar minha coleção de partituras

  • Alguém sabe por quanto tempo o app Syncthing Android atual vai continuar funcionando daqui para frente?