- Um pequeno utilitário em Go para gerenciar perfis do Claude Code foi fácil de distribuir como executáveis estáticos para Linux e Windows, mas no macOS a quarentena (quarantine) aplicada aos arquivos baixados bloqueia a execução e ainda prejudica a experiência do usuário ao exigir instruções de desbloqueio manual
- Tentei entrar no Apple Developer Program para assinar o binário no macOS, mas com um modelo de pague o quanto quiser em torno de US$ 7 e uma previsão de apenas 12 a 24 downloads, fica difícil justificar o custo da assinatura anual
- A verificação de identidade do Apple Developer Program não conseguia reconhecer adequadamente o documento pela webcam do MacBook e falhava repetidamente sem oferecer upload de escaneamento ou orientação para usar a câmera do iPhone, enquanto no app do iPhone funcionou na primeira tentativa, expondo a dependência do equipamento
- O hardware da Apple e os chips da série M são muito bem avaliados, mas usar o macOS exige ferramentas complementares como AutoRaise, Rectangle e DiscreteScroll, e o Finder, os atalhos, o foco das janelas e a forma de encerrar apps acabam atrapalhando o fluxo de desenvolvimento
- A assinatura de código no Windows também é cara: o Certum Code Signing custa cerca de 209 euros por ano, e o Azure Artifact Signing tem restrições por região e por tipo de conta, fazendo com que todo o ecossistema de assinatura de código pareça caro e pouco acessível, como os certificados TLS antes do Let’s Encrypt
Barreiras expostas pela distribuição de software para Mac
- Ao criar um pequeno utilitário para desenvolvedores que facilita o gerenciamento de perfis do Claude Code, foi possível compilar com facilidade executáveis estáticos para várias plataformas usando o toolchain de Go
- A primeira versão pode ser conferida em ccode.kronis.dev e na página do Itch.io, onde é possível baixar ou 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 caso ele se mostre útil
- No Linux, a distribuição funcionou sem problemas após
chmod +x; no Windows, é possível gerar um.exe, mas o aviso do SmartScreen pode ser contornado na própria janela - No macOS, a quarentena (quarantine) é aplicada ao software baixado e impede sua execução; o mesmo problema acontece até com arquivos compartilhados para si mesmo via Nextcloud
- É possível orientar o usuário a remover manualmente a quarentena pelo terminal, mas mesmo que um desenvolvedor aceite isso, não é uma boa experiência e ainda pode gerar desconfiança
Custo e viabilidade econômica de entrar no Apple Developer Program
- Para resolver o problema, tentei entrar no Apple Developer Program e assinar o executável, mas o custo anual da assinatura não combinava com a escala de distribuição de um utilitário tão pequeno
- O utilitário seria oferecido no Itch.io com um modelo de pague o quanto quiser (pay-what-you-want) em torno de US$ 7, e a expectativa era de no máximo 12 a 24 downloads
- Como a maioria pode escolher pagar US$ 0 e, depois de VAT e da taxa do Itch.io, de uma receita de cerca de US$ 50 sobrariam apenas uns US$ 25, isso cobriria só cerca de 3 meses do Apple Developer Program
- Uma estrutura em que é preciso pagar para disponibilizar binários em distribuição pública é desfavorável para desenvolvedores por hobby e empurra a economia do software para uma lógica mais centrada em monetização
- Para software desktop existe o Homebrew, mas seguir por esse caminho dificulta cobrar até poucos dólares, ou então exige colocar instruções separadas como
mac-homebrew-install-instructions.txtna página de download do Itch.io, o que fica estranho - Reconhece-se que remover totalmente esse custo pode gerar outros problemas, como spam, mas mesmo para software privado ou apenas com código aberto, cobrar pela distribuição de binários acaba sendo um peso
Atrito no processo de verificação de identidade
- Durante a inscrição no Apple Developer Program, a verificação de identidade em si é compreensível, mas o grande problema foi exigirem que a foto do documento fosse feita com a webcam do MacBook
- A câmera integrada do M1 MacBook Air não conseguia produzir uma imagem do documento com qualidade suficiente, mesmo mudando a iluminação, e o sistema não reconhecia corretamente o documento 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 ao longo de cerca de 10 tentativas
- Depois, foi conectada a webcam principal para tentar novamente, mas como ela não tinha foco automático para fotografar um documento de perto, o resultado também não foi suficiente
- Não havia opção para enviar um documento escaneado e, a cada falha, surgia apenas um erro genérico, muitas vezes obrigando a reiniciar todo o processo de inscrição
- Quando o app foi instalado diretamente no iPhone, a verificação funcionou na primeira tentativa, mas isso pode representar uma barreira ainda maior para quem não tem iPhone nem uma webcam avançada
- O pagamento foi processado normalmente e a conta de desenvolvedor pareceu ser ativada logo depois, mas o app dizia para aguardar um e-mail, enquanto o app de desktop não reconhecia a tentativa de inscrição e mandava reiniciar o processo
- Pode ser um problema de processamento em segundo plano ou de consistência eventual, mas do ponto de vista do usuário o fluxo fica frustrante quando o estado da inscrição aparece de forma diferente em cada app
Insatisfações acumuladas com o ecossistema da 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 uma experiência satisfatória, mas o fato de a Apple ter encerrado a linha de entrada, de a nova série e ser mais cara e de terem removido o botão lateral de silencioso e o TouchID são razões para que o próximo celular volte a ser Android
- Para usar o macOS do jeito desejado, são necessárias ferramentas como AutoRaise, Rectangle e DiscreteScroll
- Ao mover o foco de janelas entre vários monitores, é preciso clicar a mais, e o AutoRaise é útil, mas às vezes pode agir de forma agressiva demais
- O Finder não tem a opção “Cut”, os atalhos de teclado parecem estranhos, e a disposição das teclas Control/Command ainda quebra até o funcionamento de softwares de desktop remoto
- A abordagem em que fechar um programa não significa encerrá-lo de fato também é incômoda, e isso se soma ao peso de ter de desenvolver dentro do ecossistema fechado da Apple em um MacBook com 8 GB de RAM
- A maior frustração vem de manter o desenvolvimento de apps preso ao ecossistema da 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, ainda não refletir com clareza o estado da inscrição
Exemplos melhores de verificação de identidade e assinatura eletrônica
- Em um mercado local, é possível verificar identidade e idade em cerca de 20 segundos com o SmartID ao comprar um energético
- Com o eParaksts, é possível assinar digitalmente documentos em cerca de 1 minuto usando um documento de identidade emitido pelo governo e um PC com leitor de cartão, 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 a um arquivo PDF
- É provável que existam serviços semelhantes em outros países para verificação de identidade, verificação de idade, assinatura de documentos e serviços digitais, embora nem todos os países sejam iguais e a infraestrutura de pagamentos também tenha limitações
- Ainda assim, é difícil aceitar que vários pacotes de software da região do Báltico funcionem melhor do que os processos 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
- O Certum Code Signing 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 configurar uma conta Azure descobre-se que pessoas físicas fora dos EUA e Canadá não podem assinar certificados, e na UE apenas organizações podem fazer assinatura de código
- Hoje, o espaço de assinatura de código parece excessivamente caro, lembrando a época em que certificados TLS cobravam algo como 100 euros por ano antes do Let’s Encrypt
- O Let’s Encrypt substituiu muitas estruturas baseadas em captura de renda, mas também criou o risco de avançar para um enorme ponto único de falha, já que há poucas alternativas e concorrentes
- A conclusão é que, para assinatura de código, deveria bastar poder assinar com um documento de identidade emitido pelo governo
1 comentários
Comentários no Hacker News
Quem não gosta do Gatekeeper pode desativá-lo em 10 segundos executando
sudo spctl —-master-disableno terminalDá 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
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?”
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
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
Assim daria para manter boas práticas de distribuição e ainda ganhar boa vontade no geral
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
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#...
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
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
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...
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...
https://successfulsoftware.net/2018/11/16/how-to-notarize-yo...
https://successfulsoftware.net/2023/04/28/moving-from-altool...
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
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
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.quarantinede vez em quando para baixar algum app FOSS aleatório com poucos usuários não é nada perto do que usuários de Linux enfrentamEu 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
No Linux, todo mundo aceita de boa que para executar uma ferramenta pode ser preciso usar
chmod +x, então será que precisar rodarxattrno macOS é realmente motivo para escrever um post inteiro reclamando?Pergunta sincera: o Windows 11 realmente executa um
.exenão confiável sem aviso?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 aquiPara 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>) | bashque já lide com o comandoxattrO 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
.exe/PE não confiáveisQuem 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
É o suficiente para assustar pessoas sem conhecimento mais profundo. Claro que tudo isso pode ser desativado
É 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
xattrOntem 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
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