5 pontos por GN⁺ 2026-05-10 | 1 comentários | Compartilhar no WhatsApp
  • Relato de um desenvolvedor independente que, ao tentar distribuir no macOS um utilitário simples para desenvolvedores feito em Go, esbarrou na barreira da assinatura de código e do Apple Developer Program
  • Em Linux e Windows, a distribuição é relativamente simples, mas no macOS binários não assinados são bloqueados por causa da política de quarentena
  • O custo anual da assinatura do Apple Developer Program fica em um nível que a receita de utilitários pequenos não consegue cobrir, e o processo de verificação de identidade também falhou repetidamente por causa da baixa qualidade da webcam do MacBook
  • Serviços de assinatura eletrônica baseados em governo, como SmartID e eParaksts na região do Báltico, fazem em dezenas de segundos a 1 minuto algo que o sistema de uma empresa de centenas de bilhões de dólares não consegue fazer direito
  • A assinatura de código no Windows também custa caro, a partir de 209 EUR por ano, e todo o ecossistema de assinatura de código parece tão irracionalmente caro quanto os certificados TLS antes da chegada do Let's Encrypt

Barreiras expostas na distribuição de software para Mac

  • Ao criar um pequeno utilitário para desenvolvedores para facilitar o gerenciamento de perfis do Claude Code, foi possível gerar facilmente executáveis estáticos para várias plataformas com a toolchain de Go
  • A primeira versão pode ser vista em ccode.kronis.dev e na página do Itch.io, onde é possível baixar/comprar binários pré-compilados e consultar o código-fonte
  • No momento, o código está sem assinatura, e como o utilitário ainda está em estágio inicial, a recomendação é usá-lo primeiro de graça e pagar depois se ele for útil
  • No Linux, a distribuição funcionou sem problemas após chmod +x; no Windows, é possível gerar um .exe, e o alerta do SmartScreen pode ser contornado no mesmo pop-up
  • No macOS, softwares baixados recebem quarentena e têm a execução bloqueada; o mesmo acontece até com arquivos compartilhados para si mesmo via Nextcloud
  • É possível orientar a remoção manual da quarentena no terminal, mas, embora um desenvolvedor possa aceitar isso, a experiência não é boa e ainda pode gerar desconfiança

Custo de adesão ao Apple Developer Program e viabilidade econômica

  • Para resolver o problema, tentou entrar no Apple Developer Program para assinar o executável, mas o custo anual da assinatura não combinava com a escala de distribuição de um utilitário pequeno
  • O utilitário que seria distribuído estava planejado para o Itch.io em um modelo de pague quanto quiser, por cerca de 7 dólares, com expectativa de no máximo 12 a 24 downloads
  • Como a maioria pode escolher 0 dólar, e após VAT e as taxas do Itch.io sobrariam apenas cerca de 25 dólares de uma receita de 50, isso cobriria somente uns 3 meses do Apple Developer Program
  • Uma estrutura em que fornecer binários para distribuição pública custa dinheiro é desfavorável para desenvolvedores hobby e empurra a economia de desenvolvimento de software para um foco maior em monetização
  • Para software desktop existe o Homebrew, mas por esse caminho fica difícil cobrar mesmo alguns dólares, ou então seria preciso colocar instruções separadas como mac-homebrew-install-instructions.txt na página de download do Itch.io, o que soa estranho
  • Reconhece-se que eliminar totalmente o custo poderia trazer outros problemas, como spam, mas mesmo para software privado ou apenas com código aberto, uma estrutura que cobra pela distribuição de binários ainda representa um peso
  • Apps para macOS/iOS nem sequer podem ser compilados em Windows ou Linux, o que já cria um problema de vendor lock-in, exigindo comprar antes um MacBook caro

Atrito no processo de verificação de identidade

  • No processo de adesão ao Apple Developer Program, a verificação de identidade em si é compreensível, mas exigir fotos do documento pela webcam do MacBook foi um grande problema
  • Com a câmera embutida de um M1 MacBook Air, mesmo mudando a iluminação, a qualidade da foto do documento não era suficiente, e o sistema não conseguia reconhecer o documento corretamente mesmo após várias tentativas
  • Mesmo com um iPhone conectado na mesma rede local, não houve orientação para usá-lo como câmera, e o processo continuou falhando por cerca de 10 tentativas
  • Depois, foi testada uma webcam principal, mas ela também não era suficiente por não ter autofoco para fotografar um documento de perto
  • Não havia opção de enviar um documento digitalizado, e a cada falha aparecia apenas um erro genérico, muitas vezes obrigando a reiniciar todo o processo desde o começo
  • Ao instalar o app diretamente no iPhone, a primeira tentativa deu certo, mas isso pode ser uma barreira ainda maior para quem não tem iPhone nem webcam melhor
  • O pagamento foi processado normalmente e em seguida a conta de desenvolvedor pareceu ter sido ativada, mas o app mostrava que era preciso esperar um e-mail, enquanto o app de desktop nem reconhecia a tentativa de cadastro e mandava reiniciar o processo
  • Pode ser um caso de processamento em background ou consistência eventual, mas do ponto de vista do usuário o fluxo fica frustrante, com estados diferentes em cada aplicativo

Insatisfação acumulada com o ecossistema Apple

  • A qualidade de construção do hardware da Apple e os chips da série M são muito bem avaliados, e para quem pode comprar modelos mais potentes eles podem ser excelentes máquinas de desenvolvimento
  • O iPhone SE 2022 também foi satisfatório, mas o fato de a Apple ter acabado com a linha de entrada, de a nova série e ser mais cara e de remover o botão lateral de modo silencioso e o TouchID é motivo para voltar ao Android no próximo celular
  • Para usar o macOS da forma desejada, são necessárias ferramentas como AutoRaise, Rectangle e DiscreteScroll
  • Ao mover o foco da janela entre vários monitores, é preciso clicar a mais, e o AutoRaise é útil, mas pode agir de forma agressiva demais
  • O Finder não tem opção de “Cut”, os atalhos de teclado são pouco familiares, e a disposição das teclas Control/Command ainda quebra até software de desktop remoto
  • A abordagem em que fechar um programa não o encerra de fato também incomoda, e isso pesa ainda mais quando somado à necessidade de desenvolver dentro do ecossistema fechado da Apple em um MacBook com 8 GB de RAM
  • Prender o desenvolvimento de apps ao ecossistema Apple, cobrar pela assinatura de software, bloquear o envio de documentos por causa da qualidade da câmera do hardware e, mesmo após usar o app do iPhone, não refletir claramente o estado do cadastro foram os principais fatores de frustração

Exemplos melhores de verificação de identidade e assinatura eletrônica

  • Em um mercado local, ao comprar energético, é possível verificar identidade e idade em cerca de 20 segundos com o SmartID
  • Com o eParaksts, é possível assinar digitalmente um documento em cerca de 1 minuto usando um documento de identidade emitido pelo governo e um leitor de cartão no PC, ou então pelo app no celular
  • O resultado é uma assinatura criptográfica adequada anexada a um contêiner EDOC (ASIC-E) ou incorporada diretamente em um arquivo PDF
  • É possível que outros países também tenham serviços semelhantes para verificação de identidade, verificação de idade, assinatura de documentos e serviços digitais; nem todos os países são iguais, e também há limitações de infraestrutura de pagamentos
  • Ainda assim, é difícil aceitar que vários pacotes de software da região do Báltico funcionem melhor do que o processo de uma gigante de tecnologia

Assinatura de código no Windows e o problema mais amplo dos custos

  • Não é um problema exclusivo da Apple; a assinatura de código no Windows também pesa no bolso
  • A assinatura de código da Certum parece ser uma das opções relativamente mais baratas, mas ainda exige cerca de 209 euros por ano
  • O Azure Artifact Signing parece melhor porque o plano Basic custa 8,54 euros por mês, mas ao tentar configurar uma conta Azure, pessoas físicas fora dos EUA e Canadá não conseguem assinar certificados, e na UE apenas organizações podem fazer assinatura de código
  • Hoje, o espaço de assinatura de código tem preços excessivamente altos e lembra a época em que certificados TLS custavam algo como 100 euros por ano antes do Let’s Encrypt
  • O Let’s Encrypt substituiu muitas estruturas de captura de renda, mas como ainda não há muitas alternativas e concorrentes, também existe o risco de caminhar para um enorme ponto único de falha
  • Deveria ser possível fazer assinatura de código com um documento de identidade emitido pelo governo, e a área de assinatura de código também precisa de uma inovação no estilo do Let's Encrypt

1 comentários

 
GN⁺ 2026-05-10
Comentários no Hacker News
  • Quem não gosta do Gatekeeper pode desativá-lo em 10 segundos executando sudo spctl —-master-disable no terminal
    Dá para dizer que é uma marreta grande demais ou que não é seguro, mas é preciso decidir o que se quer. Se você quer o atrito criado pelo Gatekeeper, deixe-o ligado; se não quer, desligue. O desenvolvedor não pode decidir pelo usuário, e faz sentido que seja o usuário a decidir que código executar no próprio dispositivo. O padrão ser restritivo também faz sentido, porque quem sabe o que está fazendo pode mudar isso facilmente
    No iOS não existe jeito nenhum de instalar software não assinado, e no Android dizem que em breve esse processo vai levar 24 horas em vez de 10 segundos, o que de fato tira a liberdade de escolha do usuário e é absurdo
    Dito isso, o macOS mais recente também tem várias outras restrições que não dá para desligar, e isso é realmente irritante. Não acho que o Gatekeeper seja uma delas. Desde o Sequoia, talvez leve uns 30 segundos porque, depois do comando no terminal, você precisa marcar uma caixa nas configurações, mas ainda assim não acho grande coisa

    • O que eu quero é a capacidade de escolher em que confiar
      Esse esquema de “confie só na Apple e em mais ninguém, nem em si mesmo, ou então confie literalmente em todo mundo” não é uma implementação de boa-fé. A Apple é ótima em conduzir a narrativa com falsa equivalência e falso dilema. Houve também a antiga discussão sobre secure boot, em que a Apple empurrou a ideia de “ou a Apple fica com as chaves de criptografia, ou não há criptografia”, e as pessoas esqueceram de perguntar “por que eu não posso ter as chaves do meu próprio dispositivo?”
    • Em vez de deixar só “Concluído” e “Mover para o Lixo”, eu queria que houvesse uma opção para realmente executar o app sem ter que entrar em Ajustes do Sistema toda vez
      E isso sem desativar os recursos de segurança. Esse atrito extra me parece menos algo para me proteger e mais uma forma de forçar desenvolvedores a pagar uma anuidade para a Apple para poder distribuir. Não estou dizendo que não ajude em nada na segurança, mas acho que o peso maior está no primeiro ponto
    • Eu queria poder clicar com o botão direito no app, escolher “Abrir” e executá-lo passando pelo diálogo de confirmação
      Antes isso era possível, mas a Apple removeu e trocou por um processo extremamente irritante de ter que entrar em Ajustes do Sistema toda vez
    • Acho que a forma correta seria a Apple permitir um Developer ID gratuito para distribuição, desde que o app seja gratuito e não tenha compras dentro do aplicativo
      Assim daria para manter boas práticas de distribuição e ainda ganhar boa vontade no geral
    • Impedir que o app seja aberto não é atrito, é um bloqueio completo
      Podia simplesmente mostrar um aviso e permitir executar só desta vez, ou liberar para que depois rode normalmente
  • Desenvolvo software para Mac e PC como indie há 20 anos e entendo totalmente o sentimento do autor
    A Apple passa a sensação de achar que os desenvolvedores deveriam ser gratos por ela “permitir” que façamos apps para a plataforma dela. O texto não falou do descaso da Apple com compatibilidade retroativa, mas a Apple adora bombardear todo o sistema dos desenvolvedores periodicamente e refazer tudo. Se você tentar rodar no macOS atual um app feito há 10 anos, há uma boa chance de ele não funcionar
    A Microsoft é muito melhor em compatibilidade retroativa e não obriga adesão ao programa de desenvolvedor, mas cada renovação de certificado digital Authenticode para Windows é uma facada completa. Só o certificado digital já custa mais do que 99 dólares por ano, é um belo esquema comercial

    • No lado do Windows é bem mais caro. Certificados comuns de assinatura de código OV da DigiCert e da Sectigo agora ficam na faixa de 700 a 1000 dólares por ano
      O Azure Artifact Signing da Microsoft custa perto da anuidade da Apple, mas há um mês os instaladores assinados com ele têm disparado alertas do SmartScreen com frequência. Isso apesar de os dois lados serem controlados pela própria Microsoft
      A opção da Store também não é gratuita para organizações e exige uma taxa de registro única. Pior ainda, ela força um modelo simplificado de licença/avaliação. Normalmente isso não combina com software B2B que usa upgrades pagos, contrato anual de suporte, atualizações controladas e períodos de avaliação estendidos
      https://github.com/Azure/artifact-signing-action/issues/128#...
    • Esse descaso com compatibilidade retroativa é muito real
      Em vez de manter estabilidade de ABI e API, a Apple transfere para milhares de desenvolvedores uma carga contínua de manutenção só para garantir que apps existentes não quebrem a cada nova versão anual do iOS. Esse tempo poderia ir para coisas mais produtivas, como corrigir bugs, adicionar recursos ou criar novos apps. Considerando o efeito multiplicador que a estabilidade traz para todo o ecossistema, isso parece um péssimo trade-off
      A Apple parece querer que os apps morram para reduzir o excesso de aplicativos ruins na App Store, mas precisa haver um jeito melhor. Para exposição e descoberta de apps, curadoria humana ainda parece ser a única abordagem realmente confiável
      A maioria dos apps iOS é jogo, mas, ao contrário de outras plataformas de games, desenvolvedores de iOS precisam atualizar os jogos todo ano para mantê-los funcionando. A Apple matou sem dó os jogos 32 bits tanto no iOS quanto no macOS, e muitos deles nunca conseguiram migrar para 64 bits. Isso contrasta com Nintendo DS/DSi/3DS, em que os jogos em geral continuaram funcionando ao longo de 2004 a 2020 apesar de revisões grandes e pequenas de hardware e dezenas de revisões de firmware, e também com o Switch, em que os jogos em geral continuaram funcionando desde 2017 entre Switch 1 e 2
    • Só para constar, distribuir pela Microsoft Store é gratuito e você não precisa pagar custo de assinatura
    • Sinceramente, eu até apoio em parte essa falta de compatibilidade retroativa
      Muitos apps corporativos grandes que uso ainda são baseados em Intel e estão desperdiçando muito desempenho. Quando a Rosetta for descontinuada, eles vão ter que mudar. Todos os apps open source que uso já são nativos
  • Como autor do texto, fiz uma atualização rápida no post
    Sendo justo, ao olhar os preços de empresas como a Certum para assinar algo para Windows, talvez a Apple não seja a única excepcionalmente cara. Parece que todo mundo opera assim: https://www.certum.eu/en/code-signing-certificates/
    Olhando mais o lado do Windows, também há o Azure Artifact Signing, que dizem ser barato, 8,54 euros por mês, mas ele não atende usuários pessoa física da UE. Só pessoas físicas dos EUA e Canadá; na UE, só organizações. Aqui eu teria primeiro que criar uma SIA, equivalente a uma Ltd., o que estava nos meus planos para depois, mas vira obstáculo para usar o Azure: https://azure.microsoft.com/en-us/products/artifact-signing
    O tom pode ter soado frustrado, mas quero dizer com toda certeza que a indústria de assinatura de código precisa de um momento tipo Let’s Encrypt de algum jeito. No mínimo, ela precisa se commoditizar, como o Azure Artifact Signing tentou fazer, e funcionar para desenvolvedores individuais em todas as plataformas. Só que não parece possível porque as plataformas são deliberadamente jardins murados. Não tenho nada contra assinatura de código em si; quando bem feita, é uma boa ideia, como TLS em muitos sites

    • Para evitar que um app seja bloqueado pelo Windows SmartScreen, você precisa pagar mais e comprar um certificado EV de assinatura de código. Um certificado comum não basta
      Numa discussão do Stack Overflow de 8 anos atrás, já diziam que a única forma garantida de remover de imediato e permanentemente os alertas do Microsoft SmartScreen era comprar um certificado EV de assinatura de código emitido por uma autoridade certificadora aprovada pela Microsoft e assinar o app com ele
      Esses certificados EV normalmente custam entre 300 e 700 dólares por ano, então vale pesquisar preços, e só são emitidos para empresas registradas. Se você é desenvolvedor solo, precisa ser empresário individual e ter um registro empresarial válido
      https://stackoverflow.com/questions/48946680/how-to-avoid-th...
    • Você não precisa se esforçar para ser justo. Eu entrei no Apple Developer Account e levou semanas, provavelmente porque, ao enviar minha carteira de motorista com um iPhone da Apple, a iluminação da câmera refletia no holograma e o sistema não aceitava o upload
      Então passei o processo de inscrição para um notebook da Apple e caí num buraco ainda mais fundo. Continuei usando o mesmo documento oficial de identidade, mas de algum jeito o processo se dividiu em duas inscrições concorrentes; uma parecia ter dado certo e a outra, errado. A parte boa é que pegaram meu dinheiro; a parte ruim é que não me deram o que comprei. No fim, passei semanas reenviando dados pessoais, e claro que isso nunca vai causar problema nenhum no futuro, né. Tudo isso só para colocar no meu celular as minhas próprias bugigangas vibe-coded
  • Ao tentar descobrir como distribuir esse tipo de binário para usuários finais, senti a mesma frustração do autor e escrevi um guia organizando exatamente como fazer isso
    A documentação da Apple era surpreendentemente ruim, e eu não consegui achar posts de blog relevantes, então tive que descobrir na prática por tentativa e erro e por engenharia reversa em projetos open source populares no GitHub
    https://ofek.dev/words/guides/2025-05-13-distributing-comman...

  • Acho que esse foi o maior motivo para eu ter migrado totalmente para Linux há cerca de um ano
    Eu estava cansado de não conseguir criar software e fazer as pessoas usarem. Talvez a solução pudesse ser algo como um diálogo ao estilo do VS Code dizendo “eu confio neste autor”, mas até isso me parece meio fora do ponto. Criar no Linux é realmente prazeroso e quase não sinto falta do macOS. As poucas coisas de que sinto falta eu mesmo programei [1][2] e entreguei para as pessoas. Quem imaginaria que isso seria tão difícil
    https://github.com/zackb/tether
    https://github.com/zackb/hyprwat

  • Não sei como alguém que se importa com open source ou com desenvolvimento de forma mais ampla olha para isso e pensa “sim, esse é o sistema operacional que eu quero usar”
    Sinceramente, é difícil entender por que tantos desenvolvedores topam tantos compromissos por causa de um notebook fino

    • Porque muitos desenvolvedores simplesmente nunca esbarram nesse tipo de problema
      Uso Mac como máquina principal de desenvolvimento desde os tempos do G4 PowerBook, e já tentei migrar para Linux algumas vezes, mas a experiência sempre foi pior. Aí vejo discussões como esta e percebo de novo que usamos computadores de formas muito diferentes
    • O MacBook serve para outras coisas além de desenvolvimento, e é justamente aí que o Linux costuma desmoronar
      Incompatibilidades esquisitas de hardware, várias arestas, e tempo demais gasto mantendo a máquina em vez de trabalhar. Ter que rodar xattr -d com.apple.quarantine de vez em quando para baixar algum app FOSS aleatório com poucos usuários não é nada perto do que usuários de Linux enfrentam
    • Não é só por ser fino. Ele é silencioso e rápido, tem o melhor trackpad e um teclado decente, e, tirando aquela fase idiota do Touch Bar em que removeram a tecla Escape, o layout também não mudou muito. Todos os estados de energia funcionam direito sempre
      Eu sou provavelmente o segundo mais teimoso sobre esse assunto entre os meus amigos, e passei alguns anos da pandemia usando só desktop e depois mais 5 anos evitando notebooks da Apple, mas foi muito ruim. No fim eu me rendi ao perceber que um novo MacBook Air M5 provavelmente seria mais rápido em tarefas de navegação web e estranhamente competitivo até na compilação de código com a monstruosidade Xeon novinha que eu tinha acabado de montar, e ainda por cima sem nem ter ventoinha
      Para mim, acabou. A Apple venceu em tudo, exceto qualidade de tela. É uma pena eu ter ficado viciado em OLED, e eu discordo em princípio da posição da Apple de não colocar touchscreen em notebook. Passei ainda mais a pensar assim depois de passar muito tempo com crianças
    • Se você circular com um notebook “normal” entre colegas da CA/SV, não vai parecer descolado e sofisticado
    • Não é pela finura, é pela duração da bateria
  • No Linux, todo mundo aceita de boa que para executar uma ferramenta pode ser preciso usar chmod +x, então será que precisar rodar xattr no macOS é realmente motivo para escrever um post inteiro reclamando?
    Pergunta sincera: o Windows 11 realmente executa um .exe não confiável sem aviso?

    • Acho que essa é a parte mais importante do texto inteiro
      Esta é uma ferramenta Claude Code para desenvolvedores. Usuários em potencial deveriam ser perfeitamente capazes de executar o comando xattr. Se não conseguem, talvez nem devam mexer com Claude Code. Tem até um pouco de “gatekeeping” da minha parte aqui
      Para esse tipo de usuário, você também pode fazer um script curl -sL [https://github.com/myrepo/installme.sh](<https://github.com/myrepo/installme.sh>;) | bash que já lide com o comando xattr
      O usuário final típico de macOS não usa ferramenta de linha de comando, ou usa algo como Homebrew. A forma correta de distribuir binários provavelmente é um instalador pkg
    • Por padrão, o Windows 11 basicamente não executa arquivos .exe/PE não confiáveis
      Quem cuida disso é o Microsoft Defender SmartScreen, que mostra um pop-up para assustar as pessoas. Se você nunca fez isso antes, nem o processo de clicar para contornar o bloqueio e rodar o programa é intuitivo
    • Dá para configurar para bloquear completamente, mas no padrão aparece uma mensagem que força três cliques
      É o suficiente para assustar pessoas sem conhecimento mais profundo. Claro que tudo isso pode ser desativado
    • A principal diferença é que no Linux dá para permitir pela interface gráfica
      É muito mais fácil explicar e convencer um usuário a marcar a caixa “permitir executar arquivo como programa” do que ensiná-lo a usar um comando de linha de comando opaco como xattr
  • Ontem passei por esse processo de verificação de identidade e só consegui na oitava tentativa, mais ou menos
    É um design realmente horrível. Agora estou trocando documentos com um terceiro qualquer para vincular a LLC à conta. Seria bom poder simplesmente escrever e distribuir software, mas como o monopólio do iOS é único, só resta acompanhar o jogo

  • Há um ano eu concordaria, mas agora fico do outro lado
    A quantidade de malware entrando no software hoje está aumentando exponencialmente. De fato é um imposto doloroso sobre todo software, seja malicioso ou não, mas até acharmos um sistema melhor, isso vai fazer uma certa parcela de agentes mal-intencionados desistir. Especialmente pelo fato de ter taxa envolvida
    Como usuário de Mac, eu quero saber se o desenvolvedor pagou um custo significativo para me entregar esse software. Para mim isso é um sinal útil. Se a pessoa não pagou nem a taxa e nem enviou passaporte, quero pensar com muito cuidado no risco que assumo ao executar aquilo

    • Há muitos casos de software assinado e notarizado que mesmo assim roubou usuários
    • Agentes mal-intencionados também conseguem pagar taxas facilmente. Eles operam negócios ou trabalham para Estados-nação
  • Nunca se deveria enviar documento de identidade
    Se isso significa não desenvolver para certa plataforma, então que não se desenvolva para ela

    • Concordo com o sentimento geral, mas não acho que seja realista considerar isso uma solução viável para a maioria dos desenvolvedores