Modular por construcción
Los componentes son separables, y los que no quieres están ausentes en lugar de instalados y apagados. Un sistema al que puedes restar piezas es un sistema sobre el que puedes razonar.
Un sistema basado en Linux, pensado para desarrolladores y organizaciones que quieren un entorno ligero, transparente y muy personalizable, en lugar de un sistema generalista con décadas de valores por defecto acumulados. Está en diseño y desarrollo inicial, y todavía no hay nada que descargar.
Linux con interfaz gráfica ya es un problema resuelto. Ubuntu, Fedora, Mint, Zorin y Pop!_OS lo hicieron accesible, lo hicieron bien, y no queda nada que ganar repitiéndolo. 0dyssey no persigue esa mitad del problema, y concederla es lo que convierte el resto de esta página en una afirmación y no en una fanfarronada.
La mitad que nadie ha tomado es la puesta en marcha. Un entorno de mosaico ligero con las herramientas ya elegidas sigue teniendo que montarse a mano, a partir de archivos de configuración y de experiencia acumulada con Linux, por cada persona que quiere uno. Ese coste es el objetivo. Quitar el impuesto de la puesta en marcha, no la potencia.
La terminal se queda. Es una función, no el enemigo, y un sistema construido para mantenerte lejos de ella resuelve otro problema para otra persona. Lo que se asienta sobre la base se construye a mano en lugar de heredarse como los valores por defecto de otro con un tema encima.
Los sistemas operativos modernos se construyen para el mercado masivo, y eso no es un insulto, es una restricción de diseño. Servir a todo el mundo significa entregar valores por defecto que no le sirven exactamente a nadie, arrastrar décadas de compatibilidad y esconder la máquina tras capas difíciles de inspeccionar y más difíciles aún de cambiar.
El resultado le resulta familiar a cualquiera que trabaje cerca del metal: te pasas el tiempo adaptándote al sistema en lugar de al revés, y cuando algo se comporta de forma extraña, la respuesta honesta suele ser que nadie de los que trabajan hoy en ello sabe por qué ese código está ahí.
Queremos las propiedades opuestas. Un sistema donde lo que se ejecuta al arrancar es una decisión que alguien tomó y puede explicar, donde las piezas que no quieres están ausentes en lugar de desactivadas, y donde cambiar un comportamiento significa cambiar un componente en lugar de pelearse con él.
Eso no es un sistema operativo generalista, ni pretende serlo. Es un sistema para quienes prefieren ser dueños de la capa de abajo antes que negociar con ella.
Estas son las restricciones a las que se somete el desarrollo. Se enuncian en presente porque las decisiones son reales, aunque el software esté en sus comienzos.
Los componentes son separables, y los que no quieres están ausentes en lugar de instalados y apagados. Un sistema al que puedes restar piezas es un sistema sobre el que puedes razonar.
Lo que ocurre entre el encendido y una shell utilizable se puede inspeccionar y está documentado. Ningún comportamiento que solo exista como folclore en un hilo de foro de hace seis años.
La seguridad se trata como una propiedad de la compilación: una superficie menor, privilegios explícitos, valores por defecto sensatos. No una guía de endurecimiento publicada a posteriori para que el usuario la aplique.
El peso es un fallo de diseño, no un impuesto que aceptar. Lo que se entrega es lo necesario, que es la única forma fiable de seguir siendo rápido en lugar de serlo solo en un benchmark.
Cambiar cómo se comporta el sistema significa cambiar un componente por una vía prevista, no esquivar un valor por defecto que daba por hecho que nunca querrías hacerlo.
Desarrolladores, especialistas en sistemas y organizaciones que operan su propia infraestructura. El entorno está ajustado para ese trabajo, en lugar de ser lo bastante amable para todo el mundo a su costa.
Un sistema operativo es un problema de integración antes que un problema de código. Este es el orden en que tiene que ocurrir la integración.
Esto es el plan de trabajo, no un registro de cambios. Ninguna de estas capas está terminada, y las que están más abajo en la lista no se han empezado.
La configuración del kernel, la ruta de arranque y el conjunto más pequeño de espacio de usuario que constituye una máquina en la que puedes iniciar sesión y confiar.
Qué arranca, en qué orden y bajo qué autoridad. La parte de una distribución que determina si el sistema es legible o mágico.
Cómo llega el software, cómo se verifica y cómo una máquina pasa de un estado conocido al siguiente sin convertirse en un caso único.
Los límites de privilegios, los valores por defecto y lo que expone una instalación estándar. Se decide junto con la base en lugar de añadirse encima.
Cadenas de herramientas, contenedores y la superficie de trabajo diaria, tratados como una parte de primera clase del sistema y no como algo que el usuario monta después.
Compilaciones reproducibles, imágenes y la maquinaria que convierte un directorio de decisiones en algo que otra persona puede instalar.
Cada capa por debajo de la superior es software existente, elegido por sus méritos y usado tal cual. Lo único nuevo es la capa de arriba, y ese es el alcance honesto del trabajo.
No es un fork, sino una composición cuidadosa de capas probadas sobre una base Void Linux. Cada una hace su trabajo y pasa el relevo limpiamente a la siguiente. Nombrar un componente es una decisión tomada, no una afirmación de que las piezas ya estén ensambladas.
La única capa que se escribe aquí en lugar de adoptarse: valores por defecto elegidos, una superficie de control para los ajustes que importan y la documentación que convierte las cuatro capas de abajo en un sistema que otra persona pueda usar. Todavía no se ejecuta, y es el único peldaño de la lista que aún no existe.
Mosaico, manejado con el teclado, configurado en un único archivo legible. Sigue siendo un gestor de ventanas en lugar de convertirse en un entorno de escritorio.
Cómo llega el software y cómo una máquina pasa de un estado conocido al siguiente, con las mismas herramientas para un solo paquete y para un sistema entero.
Qué arranca, en qué orden y qué lo reinicia cuando se cae. Lo bastante pequeño para leerlo de principio a fin, que es la razón por la que está aquí en lugar de un init mayor.
Controladores, memoria y planificación de procesos bajo una sola autoridad. Elegido por razones aburridas: amplio soporte de hardware y un comportamiento ya documentado en profundidad.
Cada línea es una decisión ya tomada, escrita con claridad para poder discutirla en lugar de adivinarla.
Esta ficha recoge decisiones, no mediciones. Nada de lo que aparece se ha evaluado con benchmarks, porque no hay una compilación lo bastante estable para ello, y una cifra publicada ahora sería una cifra inventada ahora. La fila que normalmente llevaría los números dice exactamente eso.
No se está integrando ninguna vía de envío de datos. No hay nada que desactivar después, porque nada entra desde el principio.
Cada capa de la que se compone ya es abierta, y la capa específica de este proyecto está pensada para publicarse de la misma manera. Cómo funciona la máquina no pretende ser un secreto comercial.
Lo que arranca al iniciar, lo que instala un paquete y lo que supone un valor por defecto deben poder leerse por la persona que usa la máquina. Un comportamiento que nadie sabe explicar cuenta como un defecto, no como una rareza.
Un alcance enunciado solo como ambiciones no es un alcance. Son las lecturas que queremos descartar ahora en lugar de decepcionar más tarde.
Esta banda cambia en el momento en que haya algo real que entregarte.
No hay ISO, ni instalador, ni espejo de paquetes, ni canal de versiones, ni lista de preinscripción. Lo que existe es la arquitectura, las decisiones de arriba y un desarrollo inicial contra ellas. El trabajo se va documentando a medida que ocurre, y esa documentación es la forma honesta de seguirlo hasta que haya una compilación.
Seguir las bitácoras de desarrolloEl estándar con el que se escribe la bitácora, fijado antes de que haya algo en ella. La numeración empezará en 001, cada entrada llevará el día en que ocurrió el trabajo y nada tendrá fecha retroactiva.
La numeración es la garantía. Empieza en 001 sin nada detrás, así que esta bitácora no puede adquirir en silencio un historial que no tuvo.
La bitácora no ha empezado. Todavía no hay entrada 001, nada tiene fecha retroactiva y ninguna entrada de ejemplo ocupa su lugar. 0dyssey está en desarrollo, y la primera entrada se escribirá cuando haya un trabajo lo bastante terminado como para describirlo con exactitud, no cuando esta página necesite tener algo dentro.
Leer lo que está publicadoFijada de antemano, para que el formato quede decidido antes de que la primera entrada lo defina en silencio. Cada entrada responderá a estas cuatro cosas, en este orden.
Lo concreto que debía lograr este tramo de trabajo, enunciado antes de afirmar nada de él. Un objetivo escrito después es un objetivo que siempre se cumplió.
Solo lo que funciona hoy, en pasado, sin afirmar nada que un lector no pueda comprobar a partir del propio trabajo. Sin capturas de maquetas, sin teatro de hoja de ruta.
Las partes realmente inacabadas, nombradas en lugar de darlas por hechas. Si dos cosas están a medias, se nombran las dos.
El siguiente trabajo concreto y por qué va antes que los demás. Sin fecha asociada, porque no hay ninguna fecha que asociar.
Fases, no fechas. El marcador está en la fase en la que el trabajo se encuentra realmente hoy.
Ninguna entrada de abajo lleva un trimestre, porque ninguna lo tiene. Cuando exista una fecha real, se imprimirá aquí y en ningún otro sitio antes.
Los compromisos de diseño, el modelo de módulos y el alcance, incluidos los rechazos. Suficiente para construir sobre ello y suficiente para discutirlo.
La base de la pila: configuración del kernel, arranque y el espacio de usuario mínimo que forma una máquina en la que puedes iniciar sesión. Aquí es donde está realmente el trabajo.
Las capas que deciden si el sistema es legible: qué arranca y por qué, cómo llega el software y cómo una máquina pasa de un estado conocido a otro.
Compilaciones reproducibles e ingeniería de versiones, el punto en el que esta página deja de ser un plan y pasa a ser una descarga.
Ninguna de las tres existe, ninguna tiene fecha y ninguna es una fase posterior de la hoja de ruta de arriba. Es la dirección a la que se somete el diseño, impresa aquí para que la hoja de ruta no se confunda con toda la ambición, ni la ambición con el estado del software.
Un sistema lo bastante pequeño para que la velocidad sea una propiedad de su tamaño y no un ejercicio de ajuste, con la cadena de herramientas y la superficie de trabajo diaria tratadas como parte de él y no como algo que el usuario monta después. Herramientas elegidas por cómo trabajan realmente los desarrolladores, que crecen con el sistema en lugar de acumularse en él.
Integrada a nivel de sistema en lugar de añadida como una aplicación: una máquina que automatiza lo que puede, actúa en tu nombre y te habla, sugiriendo, explicando y preguntando, en lugar de obligarte a manejar cada comando a mano. Es el único peldaño en el que el sistema operativo y el resto de la ingeniería son el mismo problema. También es un reto de investigación difícil, así que se enuncia como estrella polar y nada más.
Construir el sistema desde cero, con el tiempo hasta el kernel. Se nombra aparte a propósito: es una empresa de décadas y no el siguiente punto tras los anteriores, y archivarla como una entrada de la hoja de ruta sería mentir sobre su tamaño.
Se responden aquí y en las preguntas frecuentes desde una sola fuente, así que nunca pueden decir cosas distintas. Cuando la respuesta honesta es que todavía no existe nada, esa es la respuesta que se da.
Cada respuesta de abajo está escrita según el estado del trabajo hoy. Ninguna describe software que puedas ejecutar.
Las capas que compone son software libre existente y conservan sus propias licencias, decida lo que decida aquí. La licencia de las partes escritas para este proyecto no se ha decidido, así que no hay nada que anunciar ni nada que insinuar. Se indicará aquí cuando se elija. Una licencia citada hoy sería una postura tomada para una web, no una decisión tomada sobre el software.
Para desarrolladores, especialistas en sistemas y organizaciones que operan su propia infraestructura: las personas que trabajan cerca de la máquina y prefieren ser dueñas de la capa de abajo antes que negociar con ella. La mitad más útil de la respuesta es para quién no es. No es un intento de hacer Linux amable para quien no quiere una terminal. Ese problema está resuelto, y lo resolvieron otras distribuciones: un escritorio Linux gráfico es hoy realmente bueno, y construir una versión peor no ayudaría a nadie. El público de aquí ya eligió la terminal y quiere que el entorno que la rodea deje de costar días de montaje.
La intención de diseño es que la línea de comandos esté siempre ahí y nunca sea la única forma de entrar. Sentirse cómodo con una terminal debería hacer el sistema más rápido de usar, no ser el precio para entrar. Tómalo como un compromiso que puedes exigirle al proyecto y no como una función con la que planificar: la superficie que lo haría cierto está diseñada y no construida, y hoy no hay nada frente a lo que sentarse para comprobar esa afirmación.
No. La base es Void Linux, con el kernel de Linux debajo, runit como init, xbps para los paquetes e i3 como gestor de ventanas en mosaico. Son capas probadas, y reescribirlas mal sería una pérdida de tiempo para todos. No es un fork, es una composición cuidadosa: cada capa hace su trabajo y pasa el relevo limpiamente a la siguiente. Lo que se construye para este proyecto es todo lo que está encima, las herramientas, los valores por defecto y la superficie de trabajo, y esa es la parte que merece ser juzgada. No merecería la pena publicar los valores por defecto de otro con un tema encima.
Todavía no hay respuesta, y cualquier cifra impresa aquí sería inventada y no medida. Funcionar bien en máquinas modestas y antiguas es un objetivo de diseño, y se deriva de las mismas decisiones que el resto: lo que está ausente no puede costarte nada. Pero un requisito es una medición, nada es lo bastante estable para medirse, y una cifra publicada ahora es una cifra a la que una compilación futura se vería obligada sin motivo. Los requisitos se publicarán cuando se hayan medido, y no antes.
No puedes. No hay compilación: ni ISO, ni instalador, ni espejo de paquetes, ni canal de versiones, ni número de versión, ni lista de preinscripción a la que apuntarse. Tampoco hay fecha, lo que significa que no se está guardando ninguna fecha en secreto. El trabajo se documenta a medida que ocurre, y seguir esa documentación es la forma honesta de seguir el progreso real en lugar de una cuenta atrás de marketing.
Nada, porque no hay nada que instalar. Cuando haya una imagen, la intención es que se comporte como cualquier otra instalación de Linux: particionado normal, gestor de arranque normal, arranque dual normal, y documentación para las configuraciones habituales en lugar de un camino especial que solo entendemos nosotros. Nada de eso es una promesa sobre la que planificar hasta que exista una imagen y se haya probado en máquinas reales. Nadie debería reparticionar una máquina que funciona por un software sin compilación.
Las decisiones de arriba se enuncian aquí y se argumentan en otro sitio. Estas son las piezas que muestran el trabajo.
Las decisiones, los callejones sin salida y las reescrituras se documentan mientras siguen frescos. Si quieres saber cuándo habrá algo que ejecutar, ahí es donde se dirá primero.