Tart: VMs en macOS usando el Virtualization.Framework nativo de Apple

Los desarrolladores están examinando Tart, una herramienta para macOS que envuelve `Virtualization.framework` de Apple para ejecutar VMs de macOS y Linux y distribuir imágenes mediante registros de contenedores, como una forma simplificada de automatizar CI y entornos de desarrollo en Apple Silicon. Gran parte del debate gira en torno a las compensaciones de rendimiento y arquitectura: virtualización frente a emulación completa para x86 en ARM, el papel de Rosetta 2 para ejecutar binarios Intel dentro de VMs Linux, el rendimiento del sistema de archivos y de Docker en macOS, y hasta qué punto se pueden estirar realmente máquinas de 8 GB. La licencia es otro punto de fricción, con el modelo “Fair Source” no OSS y basado en núcleos de Tart empujando a algunos a preferir alternativas abiertas como UTM, Lima/Colima, VirtualBuddy o configuraciones QEMU personalizadas.

Resumen de Tart y su propuesta

  • Herramienta de línea de comandos que envuelve Virtualization.framework de Apple para ejecutar VMs de macOS y Linux en Apple Silicon.
  • Diferenciador clave: usa registros OCI/de contenedores para imágenes de VM, habilitando flujos de trabajo similares a los de imágenes de contenedor (build, push, pull, reuse).
  • Los usuarios elogian la CLI limpia, la facilidad de scripting y las integraciones (plugin de Packer, GitLab/Buildkite, CI).
  • Se valora especialmente para entornos de prueba reproducibles de macOS y para pasar rápidamente de IPSW a una VM.

Licencia y modelo de negocio

  • Usa una licencia al estilo Fair Source con “seats” por núcleo para organizaciones; el uso personal y las instalaciones pequeñas en servidores son gratuitos hasta un límite de núcleos.
  • Algunos ven la licencia como restrictiva/confusa, se preocupan por el cumplimiento en organizaciones y no les gustan los términos no-OSI “tipo BSL”.
  • Otros señalan que el LICENSE y el sitio web son explícitos, y que los usuarios comerciales siempre deberían revisar las condiciones.
  • Las versiones anteriores eran AGPLv3; esos commits siguen en el repo y pueden reutilizarse o bifurcarse.

Virtualización vs. emulación vs. contenedores

  • Largo subhilo debatiendo la terminología:
    • Un lado: en el uso actual de la industria, “virtualización” implica ejecutar código invitado directamente en la CPU del host (misma ISA), distinto de la emulación.
    • El otro lado: históricamente, la emulación es una técnica dentro de la virtualización; las categorías se solapan y el marketing ha distorsionado los términos.
    • Acuerdo general en que los contenedores son distintos (aislamiento a nivel de SO, kernel compartido), aunque algunos señalan que las pilas modernas de contenedores usan virtualización por debajo.

x86_64 en Apple Silicon y Rosetta

  • Varias explicaciones de que los invitados completos de SO x86 requieren emulación; la traducción binaria al estilo Rosetta solo es adecuada para el espacio de usuario, no para los kernels.
  • Enfoque recomendado: ejecutar una VM Linux aarch64 y usar Rosetta 2 dentro de la VM (mediante el soporte documentado por Apple) o mecanismos similares para ejecutar binarios x86_64; mucho más rápido que la emulación QEMU de sistema completo.
  • Los usuarios reportan que la emulación x86_64 de UTM es “prácticamente inutilizable” para cargas de trabajo pesadas; las VMs ARM nativas van bien.

Comparaciones del ecosistema y alternativas

  • Alternativas mencionadas: los propios frameworks Virtualization/Hypervisor de Apple (hecho a mano), virt, Lima/Colima (enfocados en Linux), UTM, VirtualBuddy, Viable, VMTek, OrbStack, Multipass.
  • Tart se ve como algo distintivo principalmente por el soporte de invitados macOS más los flujos de trabajo con registros de imágenes y las herramientas de CI.
  • Algunos argumentan que se puede obtener la mayor parte de la funcionalidad con QEMU/Hypervisor.framework si se invierte el tiempo; otros valoran la UX pulida de Tart.

Rendimiento, hardware y experiencia de desarrollo

  • Preocupaciones sobre el rendimiento del sistema de archivos en VMs de macOS y Docker; VirtioFS ha mejorado las cosas, pero aún va por detrás de Linux nativo.
  • Sugerencias: usar herramientas de sincronización como Mutagen; o ejecutar Docker completamente dentro de una VM Linux.
  • Debate sobre si 8 GB de RAM son suficientes: algunos reportan cargas fluidas (incluso edición de vídeo), otros encuentran inutilizables los IDE modernos y proyectos grandes, y recomiendan 16 GB o más para uso intensivo de VMs/desarrollo.

Casos de uso y notas legales

  • Muy usado para CI de Mac, testing de gestión/flujo de trabajo, escenarios de enrolamiento tipo DEP de macOS y arranque rápido en Recovery para ajustar configuraciones de seguridad.
  • Las imágenes de macOS en GHCR generan preguntas; un comentario cita las excepciones del EULA de macOS para “Permitted Developer Services” como CI, aunque el soporte de layering en Tart actualmente no existe.
  • El passthrough de GPU para invitados macOS se limita a una GPU paravirtual; no está claro si sirve para cargas de trabajo LLM.