- Testimonio de un desarrollador independiente que, al intentar distribuir en macOS una pequeña utilidad para desarrolladores hecha en Go, se topó con la barrera de la firma de código y el Apple Developer Program
- En Linux y Windows la distribución es relativamente sencilla, pero en macOS la política de cuarentena bloquea los binarios sin firmar
- El costo anual de suscripción del Apple Developer Program está en un nivel que una utilidad pequeña no puede sostener con sus ingresos, y el proceso de verificación de identidad falló repetidamente por la baja calidad de la webcam de la MacBook
- Servicios de firma electrónica basados en el gobierno, como SmartID y eParaksts en la región del Báltico, resuelven en decenas de segundos o un minuto tareas que el sistema de una empresa multimillonaria no logra hacer bien
- La firma de código en Windows también cuesta desde 209 EUR al año, así que todo el ecosistema de firma de código es tan irracionalmente caro como los certificados TLS antes de la llegada de Let's Encrypt
Barreras que quedaron en evidencia al distribuir software para Mac
- Mientras creaba una pequeña utilidad para desarrolladores que facilita la gestión de perfiles de Claude Code, pudo compilar con facilidad ejecutables estáticos para varias plataformas usando la toolchain de Go
- La primera versión puede verse en ccode.kronis.dev y en la página de Itch.io, donde es posible descargar o comprar binarios precompilados y revisar el código fuente
- Por ahora el código está sin firmar y, como la utilidad aún está en una etapa temprana, recomienda probarla gratis primero y pagar después si resulta útil
- En Linux la distribución funcionó sin problemas tras usar
chmod +x; en Windows se puede generar un.exe, pero la advertencia de SmartScreen se puede saltar desde la misma ventana emergente - En macOS, al software descargado se le aplica cuarentena, lo que impide su ejecución; lo mismo ocurre incluso con archivos compartidos a uno mismo mediante Nextcloud
- Se puede indicar al usuario cómo quitar manualmente la cuarentena desde la terminal, pero aunque un desarrollador pueda aceptarlo, no es una buena experiencia de usuario y puede generar sospechas
Costo y viabilidad económica de unirse al Apple Developer Program
- Para resolver el problema intentó unirse al Apple Developer Program y firmar el ejecutable, pero el costo anual de la suscripción no encajaba con la escala de distribución de una utilidad pequeña
- La utilidad que quería distribuir iba a ofrecerse en Itch.io con un modelo de paga lo que quieras de unos 7 dólares, y estimaba como mucho entre 12 y 24 descargas
- Como la mayoría podría elegir pagar 0 dólares y, tras restar el IVA y la comisión de Itch.io, de unos 50 dólares de ingresos quedarían apenas unos 25, eso solo cubriría alrededor de 3 meses del Apple Developer Program
- Que haya que pagar para ofrecer binarios con distribución pública perjudica a los desarrolladores aficionados y empuja la economía del desarrollo de software hacia una lógica centrada en la monetización
- En software de escritorio existe Homebrew, pero usar esa vía dificulta cobrar aunque sea unos pocos dólares, o obliga a poner instrucciones aparte como
mac-homebrew-install-instructions.txten la página de descarga de Itch.io, lo que se siente torpe - Reconoce que eliminar el costo podría traer otros problemas, como el spam, pero incluso para software privado o simplemente con código fuente disponible, que distribuir binarios tenga costo sigue siendo una carga
- Además, las apps de macOS/iOS ni siquiera pueden compilarse en Windows o Linux, así que ya existe un problema de dependencia del proveedor al tener que comprar una MacBook costosa
Fricción en el proceso de verificación de identidad
- Entiende la necesidad de verificar la identidad al inscribirse en el Apple Developer Program, pero el gran problema fue exigir que la foto del documento se tomara con la webcam de la MacBook
- Con la cámara integrada de una M1 MacBook Air, aunque cambiara la iluminación, no lograba suficiente calidad para la foto del documento y, tras varios intentos, el sistema no reconocía correctamente el documento
- Aunque había un iPhone conectado a la misma red local, no se le indicó usarlo como cámara, y siguió fallando durante unos 10 intentos
- Después probó conectando su webcam principal, pero como no tenía autofoco para capturar documentos a corta distancia, tampoco fue suficiente
- No se ofrecía la opción de subir un documento escaneado y, cada vez que fallaba, aparecía un error genérico y a menudo había que reiniciar todo el proceso de inscripción desde el principio
- Cuando finalmente instaló la app en el iPhone, funcionó en el primer intento, pero para quienes no tengan iPhone o una webcam avanzada, eso puede ser una barrera aún mayor
- El pago sí se procesó correctamente y pronto pareció que la cuenta de desarrollador estaba activada, pero la app mostraba que había que esperar un correo, mientras la app de escritorio no detectaba el intento de inscripción y pedía iniciar el proceso otra vez
- Puede tratarse de procesamiento en segundo plano o de un problema de consistencia eventual, pero desde la perspectiva del usuario fue un flujo frustrante en el que el estado de la inscripción se veía distinto según la app
Malestar acumulado con el ecosistema de Apple
- Valora mucho la calidad de construcción del hardware de Apple y los chips de la serie M; para quienes pueden pagar modelos de gama alta, pueden ser excelentes máquinas de desarrollo
- También quedó satisfecho con el iPhone SE 2022, pero como Apple eliminó la serie económica, la nueva serie e es más cara y además quitaron el interruptor lateral de silencio y TouchID, eso se vuelve una razón para volver a Android en su próximo teléfono
- Para usar macOS como quiere necesita herramientas como AutoRaise, Rectangle y DiscreteScroll
- Al mover el foco de ventanas entre varios monitores hace falta un clic extra, y aunque AutoRaise es útil, a veces puede sentirse demasiado agresivo
- Finder no tiene una opción de “Cut”, los atajos de teclado resultan poco familiares y la disposición de las teclas Control/Command incluso rompe el software de escritorio remoto
- También le incomoda el enfoque en el que cerrar un programa no significa que realmente termine, y eso, sumado a tener que desarrollar dentro del ecosistema cerrado de Apple con una MacBook de 8 GB de RAM, hace la carga mayor
- Su mayor molestia viene de que el desarrollo de apps quede atado al ecosistema de Apple, de que se cobre por la firma de software, de que la baja calidad de la cámara del hardware bloquee el envío de documentos y de que, incluso tras usar la app del iPhone, el estado de la inscripción no se refleje con claridad
Mejores ejemplos de verificación de identidad y firma electrónica
- En una tienda local de abarrotes se puede verificar identidad y edad en unos 20 segundos con SmartID al comprar una bebida energética
- Con eParaksts se puede firmar digitalmente un documento en alrededor de 1 minuto usando una tarjeta de identificación emitida por el gobierno y un lector de tarjetas en una PC, o desde la app del teléfono
- El resultado es una firma criptográfica adecuada adjunta a un contenedor EDOC (ASIC-E) o incrustada directamente en un archivo PDF
- Es posible que otros países también tengan servicios similares para verificación de identidad, verificación de edad, firma de documentos y servicios digitales, aunque no todos los países son iguales y también hay limitaciones en la infraestructura de pagos
- Aun así, resulta difícil aceptar que varios paquetes de software de la región báltica funcionen mejor que los procedimientos de una gran empresa tecnológica
La firma de código en Windows y el problema más amplio de los costos
- No es un problema exclusivo de Apple: la firma de código en Windows también supone una carga económica
- Certum Code Signing parece una de las opciones relativamente más baratas, pero aun así requiere unos 209 euros al año
- Azure Artifact Signing parece una mejor alternativa porque su tier Basic cuesta 8.54 euros al mes, pero al intentar configurar una cuenta de Azure, las personas fuera de EE. UU. y Canadá no pueden firmar certificados, y en la UE la firma de código solo está disponible para organizaciones
- Actualmente el espacio de la firma de código tiene precios excesivamente altos, y se siente parecido a cuando los certificados TLS costaban alrededor de 100 euros al año antes de Let’s Encrypt
- Let’s Encrypt reemplazó muchas estructuras de extracción de rentas, pero como no hay muchas alternativas ni competidores, también existe el riesgo de avanzar hacia un enorme punto único de falla
- Debería ser posible firmar código con una tarjeta de identificación emitida por el gobierno, y el ámbito de la firma de código también necesita una innovación tipo Let's Encrypt
1 comentarios
Comentarios en Hacker News
Si no te gusta Gatekeeper, puedes desactivarlo en 10 segundos ejecutando
sudo spctl —-master-disableen la terminalPuedes decir que es un martillo demasiado grande o que no es seguro, pero hay que decidir qué se quiere. Si quieres la fricción que crea Gatekeeper, lo dejas activado; si no, lo desactivas. El desarrollador no puede decidir por el usuario, y es el usuario quien debe decidir qué código ejecutar en su propio dispositivo. Que el valor predeterminado sea restrictivo también tiene sentido porque quien sabe lo que hace puede cambiarlo fácilmente
En iOS no hay ninguna forma de instalar software sin firmar, y dicen que en Android pronto ese proceso ya no tomará 10 segundos sino 24 horas; eso sí que le quita al usuario la capacidad de elegir, y es absurdo
Aun así, en las versiones recientes de macOS hay muchas otras restricciones que no se pueden desactivar, y eso sí es realmente molesto. No creo que Gatekeeper sea una de ellas. Desde Sequoia, después del comando en terminal hay que marcar una casilla en Configuración, así que puede tomar unos 30 segundos, pero tampoco me parece grave
Eso de “confía solo en Apple y en nadie más, ni siquiera en ti mismo, o si no confía literalmente en todos” no es una implementación bien intencionada. Apple es muy hábil para empujar narrativas con falsas equivalencias y falsos dilemas. En su momento, incluso el debate sobre arranque seguro terminó reducido por Apple a “o Apple tiene las claves de cifrado o no hay cifrado”, y la gente se olvidó de preguntar “¿por qué no puedo tener yo las claves de mi propio dispositivo?”
Y sin desactivar funciones de seguridad. Esta fricción extra me parece menos por mi seguridad y más una forma de obligar a los desarrolladores a pagarle a Apple una cuota anual para poder distribuir. No digo que no ayude en nada a la seguridad, pero creo que el peso está más en lo primero
Antes se podía hacer eso, pero Apple lo quitó y lo cambió por un proceso muy fastidioso donde hay que entrar siempre a Configuración del sistema
Así se mantendrían buenas prácticas de distribución y al mismo tiempo se ganaría buena voluntad en general
Bastaría con mostrar una advertencia y permitir ejecutarla solo esta vez, o autorizar que después ya se ejecute normalmente
Llevo 20 años desarrollando software indie para Mac y PC, y entiendo perfectamente cómo se siente el autor
Apple da la impresión de pensar que los desarrolladores deberían agradecerle que les deje hacer apps para su plataforma. El artículo no hablaba de la falta de respeto por la compatibilidad hacia atrás de Apple, pero a Apple le encanta bombardear periódicamente todo el sistema para desarrolladores y rehacerlo por completo. Si intentas correr en el macOS más reciente una app que hiciste hace 10 años, es muy probable que no funcione
Microsoft tiene mucha mejor compatibilidad hacia atrás y no obliga a inscribirse en un programa de desarrolladores, pero cada vez que renuevas un certificado digital Authenticode para Windows te saquean por completo. Solo el certificado digital ya cuesta más que 99 dólares al año; es un negocio redondo
Azure Artifact Signing de Microsoft cuesta parecido a la cuota anual de Apple, pero desde hace un mes los instaladores firmados con eso suelen activar advertencias de SmartScreen. Y eso que ambos sistemas los controla Microsoft
La opción de Store tampoco es gratis para organizaciones, y tiene una tarifa de registro única. Peor aún, obliga a un modelo simplificado de licencias y pruebas. Eso normalmente no encaja con software B2B que usa actualizaciones pagadas, contratos de soporte anual, actualizaciones controladas y periodos de prueba extendidos
https://github.com/Azure/artifact-signing-action/issues/128#...
En lugar de mantener estabilidad de ABI y API, Apple les impone a miles de desarrolladores una carga continua de mantenimiento para que las apps existentes no se rompan con cada nueva versión de iOS. Ese tiempo podría usarse en cosas más productivas, como corregir bugs, agregar funciones o crear apps nuevas. Si piensas en el efecto multiplicador que tiene la estabilidad en todo el ecosistema, parece una mala compensación
Casi da la impresión de que Apple quiere que las apps mueran para reducir el exceso de apps de baja calidad en la App Store, pero debería haber una mejor forma. Para exposición y descubrimiento de apps, lo único que todavía parece realmente confiable es la curaduría humana
La mayoría de las apps de iOS son juegos, pero a diferencia de otras plataformas de juegos, los desarrolladores de iOS tienen que actualizarlos cada año para que sigan funcionando. Apple mató sin problema los juegos de 32 bits tanto en iOS como en macOS, y muchos nunca lograron pasar a 64 bits. Contrasta con Nintendo DS/DSi/3DS, donde entre 2004 y 2020 los juegos siguieron funcionando en general a pesar de revisiones grandes y pequeñas de hardware y decenas de revisiones de firmware, y con Switch, donde desde 2017 los juegos han funcionado en general tanto en Switch 1 como en 2
Muchas de las apps empresariales que uso siguen siendo Intel, y están perdiendo bastante rendimiento. Cuando Rosetta desaparezca, al fin se verán obligadas a cambiar. Todas las apps open source que uso ya son nativas
Como autor del artículo, ya reflejé una actualización rápida en el texto
Siendo justos, al intentar firmar algo para Windows y ver precios de proveedores como Certum, quizá Apple no sea excepcionalmente caro. Todos parecen funcionar igual: https://www.certum.eu/en/code-signing-certificates/
Revisando más el lado de Windows, también vi Azure Artifact Signing, que parece barato con 8.54 euros al mes, pero no da soporte a usuarios individuales en la UE. Solo acepta individuos de Estados Unidos y Canadá; en la UE solo admite organizaciones. Aquí primero tendría que crear una SIA, equivalente a una Ltd., algo que estaba en mis planes a futuro, pero que es un obstáculo para usar Azure: https://azure.microsoft.com/en-us/products/artifact-signing
Puede que el tono haya sonado frustrado, pero sí quiero decir con claridad que la industria de la firma de código necesita de alguna forma su momento tipo Let’s Encrypt. Al menos algo generalizado, como intentó Azure Artifact Signing, y que funcione también para desarrolladores individuales en todas las plataformas. Pero no parece viable porque las plataformas son jardines amurallados a propósito. No es que odie la firma de código en sí; bien hecha, es una buena idea, como TLS en muchos sitios web
Incluso en una discusión de Stack Overflow de hace 8 años se decía que la única forma realmente segura de eliminar de inmediato y de manera permanente las advertencias de Microsoft SmartScreen era comprar un certificado EV de firma de código de una autoridad certificadora aprobada por Microsoft y firmar la app con eso
Estos certificados EV suelen costar entre 300 y 700 dólares al año, conviene comparar precios, y solo se emiten a negocios registrados. Si eres desarrollador independiente, necesitas ser autónomo o empresa registrada y tener un registro comercial válido
https://stackoverflow.com/questions/48946680/how-to-avoid-th...
Entonces moví el proceso de solicitud a una laptop Apple y caí en un agujero todavía más profundo. Seguí usando el mismo documento oficial, pero de alguna manera terminó dividido en dos solicitudes en competencia: una parecía haber salido bien y la otra parecía haber fallado. Lo bueno es que sí me cobraron; lo malo es que no me dieron lo que compré. Al final tuve que volver a subir mis datos personales durante semanas, y seguro eso jamás me va a causar problemas después. Todo para poder subir a mi teléfono el revoltijo de cosas hechas con vibe coding que yo mismo fabriqué
Sentí la misma frustración que el autor al intentar averiguar cómo distribuir este tipo de binarios a usuarios finales, y escribí una guía con el proceso exacto
La documentación de Apple era sorprendentemente mala y tampoco pude encontrar posts de blog relevantes, así que tuve que averiguar cómo funcionaba a base de prueba y error y observando proyectos open source populares en 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...
Probablemente esta fue la razón principal por la que hace alrededor de un año me pasé por completo a Linux
Me cansé de no poder crear software y hacer que la gente lo use. La solución podría ser un diálogo tipo “confío en este autor” al estilo VS Code, aunque incluso eso se siente un poco fuera de lugar. Crear cosas en Linux sí da gusto, y casi no extraño nada de macOS. Lo que sí extraño, lo programo yo mismo y se lo doy a la gente [1][2]. Quién iba a pensar que algo así sería tan difícil
https://github.com/zackb/tether
https://github.com/zackb/hyprwat
No sé cómo alguien que se preocupe por el open source o por el desarrollo en un sentido más amplio puede ver esto y pensar “sí, este es el sistema operativo que quiero usar”
De verdad me cuesta entender por qué tantos desarrolladores están dispuestos a ceder tanto solo por una laptop delgada
He usado Mac como máquina principal de desarrollo desde la época de la G4 PowerBook, e intenté pasarme a Linux varias veces, pero siempre fue una experiencia peor. Luego leo historias como esta y me doy cuenta otra vez de que usamos las computadoras de formas muy distintas
Incompatibilidades raras de hardware, asperezas por todos lados, y demasiado tiempo dedicado a mantener la máquina en vez de trabajar. Tener que ejecutar de vez en cuando
xattr -d com.apple.quarantinepara descargar una app FOSS cualquiera con pocos usuarios no es nada comparado con lo que vive un usuario de LinuxSoy de los segundos más tercos entre mis amigos con este tema, pero después de pasar unos años usando solo desktop durante la pandemia y evitar laptops Mac por otros cinco años, fue realmente horrible. Al final me rendí al darme cuenta de que una nueva MacBook Air M5 probablemente sería más rápida para navegar por la web y extrañamente competitiva incluso compilando código frente a la monstruosa build Xeon de última generación que acabo de armar, y encima ni siquiera tiene ventilador
Para mí ya se acabó. Apple ganó en todo menos en la calidad de pantalla. Me da pena estar tan malacostumbrado al OLED, y en el fondo no estoy de acuerdo con la postura de Apple de no poner pantalla táctil en laptops. Desde que paso mucho tiempo con niños, pienso eso todavía más
En Linux se da por hecho que para ejecutar una herramienta haga falta
chmod +x, así que no sé si realmente da para escribir todo un post de blog quejándose de tener que usarxattren macOSLo pregunto en serio: ¿Windows 11 de verdad deja ejecutar un
.exeno confiable sin advertencias?Esta es una herramienta Claude Code para desarrolladores. Los posibles usuarios deberían ser perfectamente capaces de ejecutar el comando
xattr. Si no pueden, tal vez no deberían estar usando Claude Code. También hay un poco de “gatekeeping” de mi parte aquíPara este tipo de usuarios también podrías hacer un script
curl -sL [https://github.com/myrepo/installme.sh](<https://github.com/myrepo/installme.sh>) | bashque se encargue incluso del comandoxattrEl usuario final típico de macOS no usa herramientas de línea de comandos o usa algo como Homebrew. La forma correcta de distribuir un binario probablemente sea un instalador pkg
.exe/PE no confiables sin másMicrosoft Defender SmartScreen se encarga de eso y muestra un popup intimidante. Si nunca lo has hecho antes, el proceso de hacer clic para saltarte la advertencia y ejecutar el programa tampoco es muy intuitivo
Es suficiente para asustar a gente sin conocimientos profundos. Claro, todo esto se puede desactivar
Es mucho más fácil explicar y convencer a un usuario de que marque la casilla “permitir ejecutar el archivo como programa” que enseñarle un comando opaco de línea de comandos como
xattrAyer pasé por este proceso de verificación de identidad y creo que recién funcionó como al octavo intento
Es un diseño realmente terrible. Ahora además estoy intercambiando papeles con un tercero para vincular mi LLC con la cuenta. Ojalá uno pudiera simplemente escribir software y distribuirlo, pero como el monopolio de iOS es uno solo, no queda más que seguirle el juego
Hace un año habría estado de acuerdo, pero ahora me pondría del otro lado
La cantidad de malware que entra en el software hoy está creciendo de forma exponencial. Sí, es un impuesto doloroso que se aplica a todo el software, sea malicioso o no, pero hasta que encontremos un sistema mejor, esto hará que cierto porcentaje de actores maliciosos desista. Sobre todo el hecho de que haya que pagar una tarifa
Como usuario de Mac, me gusta saber que el desarrollador pagó una suma considerable para hacerme llegar este software. Para mí es una señal útil. Si no pagó el costo ni subió su pasaporte, quiero pensar con muchísimo cuidado qué riesgo estoy asumiendo al ejecutar eso
Nunca deberías subir tu identificación
Si eso significa no desarrollar para cierta plataforma, entonces simplemente no desarrolles para esa plataforma