4 puntos por GN⁺ 2025-10-24 | 2 comentarios | Compartir por WhatsApp
  • SourceFS es un sistema de archivos virtual de alto rendimiento diseñado para resolver los problemas de velocidad y eficiencia de compilación en grandes bases de código de dispositivos
  • Mejora la velocidad de compilación de Android hasta 9 veces y la velocidad de checkout de código más de 10 veces, reduce el uso de disco en 83% y disminuye los costos de cómputo hasta 14 veces
  • El principio clave es la virtualización de archivos y la materialización bajo demanda, una estructura donde los archivos parecen reales, pero su contenido solo se carga cuando hace falta
  • Durante el proceso de compilación, la mayoría de las etapas pueden reproducirse de inmediato mediante caché basada en sandbox que registra y reutiliza la entrada/salida y el entorno

El problema de las compilaciones lentas y el checkout de código

  • Los dispositivos conectados modernos funcionan con bases de código de cientos de millones de líneas
    • El kernel de Linux tiene alrededor de 40 millones de líneas, Android AOSP supera los 140 millones, y los dispositivos reales añaden soporte de hardware, funciones personalizadas y código de servicios, superando las 200 millones de líneas
    • Los vehículos eléctricos (EV) alcanzan más de 500 millones de líneas y siguen creciendo con las actualizaciones de software
  • Al hacer checkout del código se descargan cientos de GB de datos, y la compilación pasa por cientos de miles de etapas
    • Debido a la imperfección del grafo de dependencias, incluso cambios pequeños pueden provocar recompilaciones masivas o generar resultados incorrectos
  • Como resultado, se producen pérdidas de varias horas diarias de tiempo de los desarrolladores y un aumento drástico de los costos de cómputo en CI

Source File System (SourceFS)

  • SourceFS no es un sistema de compilación nuevo, sino un sistema de archivos virtual de alto rendimiento que puede integrarse con los flujos de trabajo existentes
    • Mejora de forma drástica la velocidad de checkout y compilación de bases de código Android, con casi nula carga de migración
    • El principio central es virtualizar todos los archivos, materializarlos solo cuando se necesiten y hacer que este proceso sea transparente
  • Aceleración del checkout: crea una representación virtual de archivos de toda la base de código y solo carga el contenido cuando se accede a él
    • Los archivos se ven como si fueran reales, pero la mayoría permanece en estado virtual, lo que ahorra espacio en disco
    • Totalmente compatible con Git y Repo
  • Aceleración de compilación: cada etapa de compilación se ejecuta en un sandbox ligero que registra la entrada/salida y el entorno
    • Las etapas idénticas reutilizan resultados sin volver a ejecutarse, y solo se procesan de nuevo las etapas modificadas
    • Se aplica no solo a la compilación, sino a todo el proceso de build, incluyendo linking, empaquetado y generación de documentación
  • Internamente usa algoritmos de caché y replay de alto rendimiento, sandboxing eficiente y un backend basado en Rust
    • Puede escalarse a toda la organización con un overhead casi nulo

Compilaciones más rápidas, almacenamiento más eficiente y reducción de costos

  • En un entorno SourceFS, el checkout de código es más de 20 veces más rápido que antes
    • Los desarrolladores pueden trabajar dentro de una carpeta de SourceFS manteniendo el mismo flujo de trabajo que en un árbol Git tradicional
  • La reducción en uso de disco es una gran ventaja para desarrolladores de dispositivos que necesitan cambiar entre múltiples bases de código
    • Incluso al cambiar entre varias versiones de dispositivos o al corregir bugs a gran escala, se puede trabajar con la ligereza de un repositorio pequeño de GitHub
  • La velocidad de compilación mejora hasta 9 veces, permitiendo completar builds grandes rápidamente incluso en máquinas de desarrollo comunes
    • Al acortar el ciclo de retroalimentación en pipelines de CI, se maximiza la productividad de desarrollo
  • El ahorro de costos puede llegar hasta 14 veces
    • Usar SourceFS en máquinas comunes resulta más rápido y más barato que usar máquinas de alto rendimiento
    • Es posible hacer más trabajo con el mismo presupuesto de cómputo

Comparación con alternativas existentes

  • SourceFS supera las limitaciones de los enfoques tradicionales
    • La migración a nuevos sistemas de compilación como Bazel o Buck2 es poco realista en proyectos grandes, y en bases de código de dispositivos que incluyen múltiples sistemas operativos (por ejemplo, Yocto, Android, QNX) la complejidad se multiplica
    • SourceFS ofrece las mismas mejoras de rendimiento sin necesidad de esa migración
  • Los wrappers de compilador (REClient, Goma, etc.) solo aceleran algunas etapas del build y no ayudan con el checkout
    • Además, dependen del análisis de flags de línea de comandos, por lo que existe la posibilidad de errores inesperados

Planes a futuro

2 comentarios

 
GN⁺ 2025-10-24
Opiniones de Hacker News
  • Parece que parte del equipo son ex-Googlers, pero esto es distinto del srcfs basado en Piper que conocemos
    Hay similitudes, pero casi no hay detalles, y también decepciona que la versión self-hosted tenga una política de precios tipo “Talk to us”

    • Ojalá Google o Meta liberaran como open source su VFS mágico interno. Lo más cercano por ahora es EdenFS de Meta
    • Esto se siente realmente familiar. En el commit deadbeef se podía compilar solo una parte del monorepo sin materializar todo el árbol
      Y sobre el precio, si es un equipo que maneja una base de código de decenas de miles de millones de líneas, ¿de verdad no puede pagar un precio de tipo “TalkToUs”?
      Incluso open source como Linux corre bien en mi laptop
  • Esto me recuerda al antiguo MVFS de ClearCase
    Durante la compilación interceptaba llamadas como open(2), getenv(3) y registraba por completo qué herramienta usó qué versión de qué archivo y en qué entorno
    Si las condiciones eran las mismas, reutilizaba el resultado existente con “winked-in”, y también permitía control de versiones a nivel de sistema de archivos
    Por ejemplo, se podía acceder con algo como file.c@@/trunk/branch/subbranch/3

  • La cifra de tiempo del título se siente un poco exagerada
    Me hace pensar si estarán intentando convertir en producto algo tipo EdenFS o alguna clase de git fuse

    • Afirman que hacen caché de etapas de compilación de forma independiente del sistema
      Dicen algo como “las etapas de compilación iguales a las anteriores se omiten automáticamente y se reutilizan sus resultados”, pero suena tan bien que cuesta creerlo
    • Al final parece una forma un poco más extendida de caché de salidas de compilación
  • Honestamente, esto se siente como marketing de contenidos comercial. Casi no hay detalles técnicos
    Por compartir algunos tips que me funcionaron cuando trabajaba como ingeniero de builds:
    compilar en tmpfs, usar symlink/hardlink en vez de copiar archivos grandes, reducir I/O innecesario con libeatmydata,
    y elegir bien el cross-compiler
    Lo realmente importante es optimizar el sistema de compilación y hacer buena caché de artefactos intermedios que no cambian

    • Pero estos tips básicos no resuelven el problema que este producto dice atacar
  • Hola, soy Serban, cofundador de Source.dev
    Gracias por los upvotes y la discusión. Para una startup en etapa temprana, este tipo de feedback realmente significa mucho
    Me alegra ver que sienten que lo que estamos construyendo de verdad tiene valor

    • Lo pregunto por curiosidad: ¿se parece a rastrear accesos a archivos con strace, como hace fabricate de Python?
  • Me dio risa leer la frase “SourceFS acelera la compilación 9 veces”
    Mientras más tarde una compilación, más tiempo hay para practicar esgrima, así que las compilaciones lentas también tienen su lado bueno

  • Sus afirmaciones de rendimiento están muy por delante de cualquier sistema distribuido de compilación de Android que yo haya usado
    Me intriga cuál será la salsa secreta

    • Me pregunto si al final no será solo una versión más adornada de ccache
  • Cuando una compilación llega al punto de ser “lo suficientemente rápida”, desaparece el incentivo de negocio para hacer el doloroso trabajo de entender la base de código
    Ahora solo queda el camino hacia una base de código de mil millones de líneas

  • Por la explicación, suena como si estuviera orientado solo al código fuente de Android. Me pregunto por qué, y si puede aplicarse también a otras bases de código

    • Según entiendo, esto solo tiene sentido cuando todo el código no cabe en la memoria de la máquina de compilación más grande que la organización puede operar
    • La propia página explica bastante bien por qué