O futuro dos plugins do Obsidian
(obsidian.md)- A Obsidian Community foi lançada com um novo diretório e painel para desenvolvedores de plugins e temas, unificando o fluxo de envio, gestão, descoberta e uso
- Desde a abertura da Obsidian API em 2020, a comunidade criou mais de 4.000 plugins e temas, e os downloads de plugins já passaram de 120 milhões
- O novo diretório oferece navegação, busca, filtragem e ordenação, e mostra capturas de tela, detalhes e um boletim de segurança nas páginas dos projetos
- A revisão automática passa a valer para todas as versões, verificando conformidade com as políticas para desenvolvedores, qualidade de código, vulnerabilidades conhecidas e possível malware
- Os projetos existentes serão migrados para o novo sistema, e plugins e temas que não atenderem aos padrões atuais serão temporariamente excepcionados antes de serem removidos gradualmente do diretório oficial
Lançamento do Obsidian Community
- O Obsidian Community foi lançado como um novo diretório e painel para desenvolvedores de plugins e temas do Obsidian
- Desde a abertura da Obsidian API em 2020, a comunidade criou mais de 4.000 plugins e temas, e os plugins do Obsidian somam mais de 120 milhões de downloads
- O objetivo é permitir que qualquer pessoa crie, distribua, descubra e use plugins e temas com mais facilidade e segurança
- Este lançamento é o começo de um plano maior que introduz junto o site Community, o painel para desenvolvedores, a revisão automática, a segurança dos plugins e ferramentas para equipes
Site Community e painel para desenvolvedores
- O novo site Community oferece navegação, busca, filtragem e ordenação para explorar plugins e temas
- É possível encontrar plugins em dezenas de categorias, como Integrations, Bases, Charts e mais categorias
- Os projetos podem ser ordenados por nome, número de downloads, popularidade, data de lançamento e data de atualização
- Cada página de detalhes do projeto inclui capturas de tela, detalhes e um boletim de segurança
- Plugins pagos e integrações oficiais exibem novos rótulos
- Os autores podem adicionar opções de apoio, links para site e links de redes sociais na página de perfil
- O site Obsidian Community oferece um novo painel para desenvolvedores no qual os autores podem enviar, gerenciar e acompanhar o status dos projetos
- Todos os plugins, temas e envios pendentes que antes eram adicionados via GitHub foram migrados automaticamente para o novo site
- Para reivindicar a propriedade de projetos existentes, é preciso fazer login no site Community e conectar a conta do GitHub
- Ao conectar a conta do GitHub, é possível gerenciar projetos existentes, enviar novos projetos e editar a página de perfil
Revisão automática e segurança
- A revisão automática foi introduzida para todos os projetos da comunidade
- O novo sistema de revisão automática faz varreduras não apenas no envio inicial, mas em todas as versões, com base em critérios de segurança e qualidade de código
- Antes, uma equipe pequena fazia revisão manual dos envios iniciais para verificar conformidade com as Developer Policies, mas, com o crescimento da popularidade do Obsidian, ficou difícil acompanhar o ritmo dos envios, e as versões posteriores não eram revisadas
- Com agentes de codificação acelerando a criação de plugins, a fila de revisão ficou ainda maior, e ferramentas como o Obsidian CLI estão tornando a criação de plugins mais fácil
- Quando um plugin ou tema é enviado, o sistema de revisão automática verifica conformidade com as políticas para desenvolvedores, aderência a boas práticas de código-fonte e ausência de vulnerabilidades conhecidas
- Como os testes automáticos podem ser melhorados continuamente, isso cria uma base para elevar de forma mais abrangente a qualidade e a segurança do ecossistema Obsidian
- A revisão manual continua. Com o novo sistema, a equipe pode concentrar capacidade em plugins que exigem análise mais profunda, como plugins populares, recomendados ou com problemas sinalizados pela comunidade
- Plugins e temas existentes foram revisados novamente no novo sistema, e foram encontrados plugins e temas antigos que não atendem às diretrizes mais recentes
- Projetos existentes que não passaram nos padrões atuais receberão exceções temporárias, mas todos os plugins e temas que não passarem no novo processo de revisão acabarão sendo removidos gradualmente do diretório oficial
- Nos últimos dias, o novo sistema processou mais de 2.300 envios pendentes, e desenvolvedores que estavam aguardando a revisão de plugins podem fazer login no site Community para verificar o status atual
-
Varredura automática
- Todas as versões passam automaticamente por verificações de qualidade de código e vulnerabilidades de segurança
- Também inclui varredura de malware para detectar adições potencialmente maliciosas em plugins
- No painel para desenvolvedores, é possível ver sugestões detalhadas, alertas e sinalizações de falha para cada projeto
-
Boletim
- Usuários e desenvolvedores podem verificar o status das checagens automáticas no boletim de todos os projetos
- O boletim continuará evoluindo para integrar informações públicas, rótulos de privacidade, comprovação de artefatos, resultados de revisão manual e adoção de recursos do app
-
Divulgação do escopo de acesso
- Nos próximos meses, haverá mais transparência sobre plugins e autores
- Os plugins passarão a declarar a que acessam, como rede, sistema de arquivos, área de transferência e outros recursos
- Os usuários poderão consultar essas informações antes de instalar um plugin
-
Autores verificados
- Um rótulo será adicionado a desenvolvedores confiáveis que passarem por etapas extras de verificação e mantiverem boa reputação
- Usuários podem reportar diretamente problemas de segurança à equipe do Obsidian a qualquer momento
Equipes e mudanças no nível do app
- Equipes que usam Obsidian já podem implantar controles de segurança para usuários
- Nos próximos meses, as equipes poderão gerenciar com mais facilidade quais plugins da comunidade permitir e distribuir plugins privados aos membros da equipe
- Equipes que distribuem plugins oficiais do Obsidian podem solicitar o selo Official no diretório Community
- Se um plugin se qualificar, é possível entrar em contato
- Junto com melhorias no diretório Community e no sistema de revisão automática, também haverá mudanças no app e na API do Obsidian para aumentar a descoberta e a segurança
- O ecossistema da comunidade é uma das partes divertidas e poderosas do Obsidian, e a direção é fornecer a base necessária para que ele continue crescendo
- O novo Obsidian Community receberá feedback
Principais mudanças para usuários e desenvolvedores
-
Impacto para usuários
- Agora é possível explorar plugins e temas no novo site Community
- Como o tempo de revisão caiu bastante, pode diminuir a necessidade de instalar manualmente plugins de acesso antecipado
-
Envio de novos plugins ou temas
- Faça login no site Community para acessar o novo painel para desenvolvedores
- Conecte a conta do GitHub, escolha o repositório a enviar e conclua as etapas no painel
- A revisão do projeto começa imediatamente após o envio, e normalmente é possível ver o resultado em poucos minutos
- Se o projeto for aprovado, ele poderá ser pesquisado e baixado no app em até 24 horas
-
Reivindicar a propriedade de plugins e temas existentes
- Faça login no site Community para acessar o novo painel para desenvolvedores
- Ao conectar a conta do GitHub, é possível reivindicar a propriedade do plugin e atualizar título, descrição e capturas de tela
-
É possível atualizar sem usar o painel para desenvolvedores?
- Continua sendo possível lançar novas versões via GitHub
- Novas versões passam por revisão automática, e se não forem aprovadas será preciso verificar os detalhes no painel para desenvolvedores
-
Plugins e temas que falharem na revisão automática
- Novos plugins e temas precisam passar na revisão automática antes de serem adicionados ao diretório e se tornarem pesquisáveis
- Cada nova versão é escaneada, e se não passar na revisão será removida da busca em até 24 horas
- Plugins e temas anteriormente aprovados continuarão utilizáveis por enquanto, mesmo se falharem na revisão automática
- Plugins antigos também acabarão precisando atender aos novos padrões, mas ainda não há prazo definido, e a transição será definida junto com os desenvolvedores da comunidade
-
Executar a revisão automática sem enviar uma release
- É possível verificar localmente um plugin do Obsidian de acordo com as diretrizes oficiais para desenvolvedores usando o eslint plugin
- Também é possível executar uma varredura de prévia para qualquer branch, tag ou commit no painel para desenvolvedores
-
Co-mantenedores e repositórios de organização
- No momento, no Obsidian Community apenas o proprietário do repositório no GitHub pode editar o projeto correspondente
- Repositórios de organização podem ser reivindicados e editados se a associação à organização estiver pública
- Suporte a vários colaboradores será adicionado em um futuro próximo
-
Plugins de código-fonte fechado
- No momento, novos plugins de código-fonte fechado não são aceitos no diretório
- Plugins de código-fonte fechado já existentes poderão continuar sendo usados até novo aviso
- No futuro, será avaliada uma forma de adaptar o novo sistema de revisão a plugins de código-fonte fechado
-
Requisitos de conta e GitHub
- É necessária uma conta Obsidian para acessar o novo painel para desenvolvedores
- No momento, o uso do GitHub é obrigatório, e no futuro será avaliada a adição de outras plataformas de hospedagem de software
- O login com GitHub compartilha o nome de usuário e a lista de repositórios públicos, e essas informações são usadas apenas para verificar a propriedade do repositório
-
Rótulos Paid e Optional payments
- O Obsidian Community não é uma loja e não oferece solução de pagamento embutida
- Desenvolvedores podem continuar usando mecanismos externos de pagamento, como chave de licença, chave de API e barreira de login
- Os desenvolvedores devem classificar corretamente o plugin em uma de três categorias
- Free significa um plugin sem qualquer forma de pagamento e sem qualquer vínculo com serviços pagos, embora links de doação e apoio sejam permitidos
- Optional payments significa que o usuário pode optar por pagar para desbloquear recursos adicionais, ou que o plugin se conecta a um serviço pago
- Se o plugin se conectar a um serviço ou API pagos, ele deve ser marcado como Optional payments, mesmo que esse serviço tenha camada gratuita
- Paid significa que o usuário necessariamente precisa pagar para usar os recursos principais, mesmo que exista teste grátis
- Esse rótulo indica o tipo de pagamento que o usuário deve esperar, e não se o desenvolvedor coleta pagamentos diretamente
-
Erros no boletim e contato
- Como o boletim é um recurso novo, ele pode ter erros, incluindo falsos positivos e falsos negativos
- Se encontrar algo incorreto, é preciso entrar em contato pelo canal #plugin-dev no servidor Discord do Obsidian
- Em caso de dúvidas ou preocupações, também é possível entrar em contato pelo canal
#plugin-devno servidor Discord do Obsidian
1 comentários
Comentários do Hacker News
Tentei colocar o máximo possível no post do blog, no FAQ e até nos próximos passos do roadmap, mas provavelmente deixei passar algumas coisas, então fiquem à vontade para perguntar
Como somos uma equipe de apenas 7 pessoas lidando com milhares de desenvolvedores de plugins e milhões de usuários, foi muito difícil equilibrar prioridades conflitantes
O novo sistema precisava ser fácil de adotar, manter a compatibilidade retroativa, melhorar bastante em relação ao modelo anterior sem quebrar completamente o fluxo de trabalho existente, e também permitir aumentar gradualmente a segurança e a descobribilidade dos plugins
Gostaria que isso fosse visto como um trabalho ainda em andamento; vamos ouvir ideias e reclamações e continuar iterando
Um dos motivos para eu hesitar não era só o enorme investimento de tempo, mas também o medo de que, depois que as pessoas passassem a depender desse processo de revisão, a responsabilidade recaísse sobre o projeto se um código malicioso ofuscado conseguisse passar e depois houvesse um ataque
Tenho curiosidade sobre como vocês enxergam isso
Para mim, isso parece a diferença entre o modelo Debian/Ubuntu, que revisa rigorosamente tudo no repositório, e o modelo PyPI/npm, que não oferece garantia alguma de revisão
Dá para ver o exemplo em https://community.obsidian.md/plugins/zotlit
Por exemplo, se um plugin de resumo por IA inicialmente acessa
url="api.openai.com"+pathusando uma chave OpenAI fornecida pelo usuário, isso seria um formato bem comum, e estou animado com o que a comunidade pode criar a partir daíMas, se depois de uma atualização o usuário puder escolher qualquer endpoint para uma API compatível com OpenAI, como vocês podem garantir que isso não seja uma atualização que explora essa flexibilidade para criar um canal de exfiltração de rede que drible a varredura, além de discretamente pré-preencher um endpoint malicioso?
Quando experimentei o Obsidian, descobri que o recurso de tabela de dados não vinha embutido, mas era um plugin com acesso total, e apaguei o app na hora
Dito isso, estou surpreso que a equipe tenha só 7 pessoas
A insatisfação na comunidade de desenvolvedores só vinha crescendo, e a equipe também estava ficando esgotada com a carga
Então parabéns para o time. Isso basicamente remove um enorme gargalo de escalabilidade, e é bem legal ver como eles estão construindo e ampliando isso
Quando uma empresa de software usa um título como “o futuro de XYZ”, normalmente isso faz a gente esperar que esteja se preparando para restringir pesadamente o XYZ ou encerrá-lo
Na minha visão, a melhor — e talvez única — forma de resolver o problema de segurança de plugins é um sandbox com API explícita e sistema de permissões
Por outro lado, se eles não puderem se comunicar com a internet, talvez isso nem seja um grande problema
E, olhando mais a fundo, por causa da estrutura de JavaScript e Electron, parece que plugins do Obsidian são apenas blocos de JavaScript executados no escopo global, capazes de ler e gravar o sistema de arquivos inteiro dentro do que as permissões do usuário permitirem, além de fazer requisições HTTP. Alguém pode confirmar se é isso mesmo?
Ainda assim, tenho curiosidade sobre o quão bem isso realmente funciona neste ecossistema. Pela minha experiência, varreduras amplas tendem a gerar muitos falsos positivos, ou seja, há uma CVE, mas ela não se aplica de fato ao contexto de uso
Então é preciso conhecimento para interpretar corretamente o resultado da varredura, o que pode acabar virando uma carga considerável para os mantenedores
Permissões sozinhas não conseguem impedir certos comportamentos maliciosos, então tudo isso é necessário
Basta olhar alguns dos placares no site da Community para perceber rapidamente que alguns alertas não podem ser tratados por sistema de permissões nem por sandboxing
O post do blog traz detalhes sobre a forma de lançamento, e como isso exige mudanças na API de plugins, será implementado de forma gradual
Segurança e concessão de permissões simplesmente são difíceis, e ao projetar uma plataforma em algum momento você precisa se perguntar se vale a pena aceitar esse risco em troca de flexibilidade
Planejar um sistema perfeitamente seguro é uma causa perdida
Algum dia eu provavelmente deveria aprender a implementar um sistema parecido no meu próprio projeto
Exfiltração de dados acontece em silêncio
Se ele mostra uma lista enorme de erros e avisos de linter, o que exatamente eu devo fazer com isso?
Tenho curiosidade sobre qual seria o fluxo ideal para o usuário. O placar parece ótimo do lado do desenvolvedor
Gerenciar esse tipo de contribuição da comunidade é difícil, e isso parece um grande avanço
Também me pergunto se a IA pode ter algum papel nessa review automática. Parece um caso de uso bem promissor
Se o Obsidian não fosse software proprietário, eu mesmo teria mudado isso
Já passou da hora de alguém fazer um clone compatível
.obsidian/pluginsdentro do vault.obsidian/plugins/