- Flatpak vem ganhando popularidade entre desenvolvedores e usuários, mas o problema de estagnação no desenvolvimento do próprio projeto está se tornando evidente
- Com a saída de desenvolvedores centrais e gargalos, a incorporação de novos recursos e as revisões de código estão sendo atrasadas
- Foram propostos vários recursos de fortalecimento, como suporte a imagens OCI, granularidade de permissões e controle de acesso a áudio, mas sua adoção real tem sido lenta
- Para o desenvolvimento de longo prazo do projeto, estão em discussão a adoção do padrão de tecnologia de contêineres (OCI) e uma reimplementação baseada em Rust
- Resolver desafios importantes, como melhorias nos portais, suporte a drivers e sandboxing de rede, será decisivo para o crescimento do Flatpak
Visão geral e estado atual do projeto Flatpak
- O Flatpak começou em 2007 como um projeto semelhante, teve seu primeiro lançamento em 2015 como XDG-App e, em 2016, passou a se chamar Flatpak
- Ele oferece ferramenta de linha de comando, ferramentas de build e componentes de runtime, com isolamento de aplicações (sandboxing) baseado em cgroups, namespaces, bind mount, seccomp, Bubblewrap e outros
- Usa OSTree como método padrão de distribuição e, mais recentemente, também passou a contar com suporte a imagens OCI, sendo utilizado em distribuições como o Fedora
- Apesar do crescimento da loja de aplicativos Flathub e da adoção por distribuições, internamente o projeto enfrenta uma desaceleração do desenvolvimento ativo
Estagnação do desenvolvimento e principais causas
- Há atividade de manutenção e correções de segurança, mas o desenvolvimento de grandes novos recursos e as revisões de código estão em longa estagnação
- Com a saída de desenvolvedores importantes (como Larsson), faltam revisores, o que dificulta a entrada de novos contribuidores e mudanças de grande porte
- Até recursos como a pré-instalação (Preinstall) do Flatpak, para os quais há contribuição de empresas como a Red Hat, têm repetido o padrão de levar meses até a integração final devido a atrasos na revisão e à saída de responsáveis
OSTree e suporte a imagens OCI
- O OSTree foi aplicado com sucesso ao Flatpak, mas, por problemas de ferramentas não padronizadas e limitadas, não tem recebido evolução ativa além da manutenção
- O OCI conta com um amplo ecossistema de ferramentas para imagens de contêiner, o que, do ponto de vista da equipe do Flatpak, pode reduzir a carga de manutenção e o esforço duplicado caso seja adotado
- Até recursos como suporte a formatos eficientes de compressão, como zstd:chunked, foram propostos em novos PRs, mas continuam em estado de atraso ou sem integração
Gerenciamento de permissões e granularidade do sandbox
- O Flatpak foca em restringir o acesso ao sistema por meio de sandboxing, e versões recentes do Flatpak oferecem granularidade de permissões (por exemplo,
--device=input)
- Como as distribuições Linux usam versões diferentes do Flatpak, surgem problemas em que novos recursos de permissão não conseguem ser amplamente adotados, além de questões de compatibilidade entre versões
- No caso das permissões de áudio, as limitações de compatibilidade com o PulseAudio dificultam separar reprodução e gravação, e por isso se levanta a necessidade de melhorias com tecnologias como PipeWire
- O suporte insuficiente a sandboxing aninhado impede que aplicativos como navegadores usem internamente outros sandboxes
D-Bus e sandboxing de rede
- O Flatpak não acessa o D-Bus diretamente; ele usa o xdg-dbus-proxy para um modelo de comunicação filtrado
- Wick demonstrou a intenção de mover a política de filtragem para o broker do D-Bus, permitindo aplicação dinâmica de políticas e controle de acesso baseado em cgroup
- Devido à implementação insuficiente de namespaces de rede, existe a possibilidade de comunicação não intencional entre aplicativos Flatpak quando portas de
localhost ficam expostas (caso real: AusweisApp)
- Os drivers da NVIDIA são fornecidos separadamente para cada runtime, o que causa tráfego de rede excessivo e dificuldade de atualização. Inspirando-se no modelo da Valve, estudam-se alternativas como compartilhamento com o host e compilação estática
Uso de portais e necessidade de melhorias
- Os portais são APIs baseadas em D-Bus para acesso a recursos externos, cobrindo várias funções como arquivos, impressão e URL
- Portais como o Documents funcionam bem no nível de arquivo, mas, para aplicativos com forte foco em usabilidade como GIMP e Blender, um modelo de permissões excessivamente granular se torna uma limitação
- Junto com propostas de novas APIs para autopreenchimento de senha, chaves FIDO e síntese de voz, também foram discutidas ideias para reduzir a dificuldade de desenvolvimento e até uma reimplementação em Rust
O futuro do Flatpak (Flatpak-next)
- Partindo da hipótese de que o Flatpak eventualmente deixe de ser desenvolvido, discute-se no longo prazo uma grande transição para o ecossistema OCI (com amplo uso de imagens, registries, ferramentas, políticas etc.)
- Uma reimplementação baseada em Rust e a unificação com o ecossistema de contêineres podem trazer vantagens em carga de gestão, manutenção e escalabilidade
Resumo de perguntas e respostas
- Sobre a questão de como lidar com os aplicativos Flatpak existentes em uma transição para OCI, a resposta foi que, com a automação de build do Flathub, isso não deve ser um grande problema
- Quanto ao problema da falta de metadados em registries OCI, há padrões para dados que não são imagens em desenvolvimento, mas será necessário trabalho de desenvolvimento e integração para adoção prática
- Sobre planos de suporte direto ao PipeWire, as discussões técnicas estão em andamento, e a direção apontada é uma integração baseada em políticas do PipeWire
Conclusão
- O Flatpak se consolidou como uma plataforma padrão de distribuição e sandboxing, mas ainda carrega vários desafios de melhoria, como estagnação em revisões e novo desenvolvimento, problemas de permissões/rede/drivers e transição para padrões futuros
- O uso de tecnologias de contêiner baseadas em OCI e Rust pode se tornar um novo motor de evolução para o Flatpak
- Os principais pontos podem ser resumidos como garantir revisores, padronização, expansão do ecossistema e melhoria da experiência do usuário
2 comentários
Acho que, em vez de simplesmente bloquear o acesso, é melhor mostrar claramente a quais diretórios está sendo acessado.
O Android é razoável nesse aspecto, mas por outro lado agrupa as permissões de forma ampla demais, então acaba sendo preciso conceder junto permissões em um nível que nem é necessário...
Comentários do Hacker News
--device=inpute a impossibilidade de definir permissões mais granulares, como liberar só o alto-falante e bloquear o microfone/tmp, tornando muito incômodo salvar anexos e abri-los em outros apps; argumenta que o dono do computador deve ser o usuário, não o desenvolvedor, e que esse excesso de segurança reduz a produtividade, comparando isso à Useless Machinegit config, pasta de fontes etc., uma abordagem híbrida com opção para todas as instâncias terem o mesmo acesso seria mais práticaflatpak-spawn,polkit-execetc., mas que, nesse caso, praticamente se abandona a proteção do sandboxsysext, e que o Flatpak não é apropriado para isso