lunes, 6 de septiembre de 2010

News: 0.3.12 ¿Dónde está?

 

 

News: 0.3.12 ¿Dónde está? ¿Cuándo se va a lanzar la 0.3.12?

¿Por qué no se lanza ya?

¿Qué problemas existen?

¿Cuáles se han resuelto?

¿Os habéis cansado de crear código?

¿Cómo puedo seguir su evolución?

¿Será tan buena como dicen? ¿O será mejor?

Estas y otras respuestas a continuación…

 

 

 

 

Mejoras

La versión 0.3.12 va a ser un enorme salto cualitativo de ReactOS. De eso no tenemos duda alguna. Resumiendo los mejores cambios:

  1. Reescritura de gran parte del Memory Manager.
  2. Resolución de múltiples problemas de Timers/Mensajes.
  3. Resolución de graves problemas en el pintado/repintado
  4. Soporte de “Alpha Channels”.
  5. Grandes mejoras en el Networking.
  6. Decenas de regresiones arregladas.

Muchos de estos cambios y arreglos han tenido lugar en la zona denominada “Kernel Área” (los cimientos de ReactOS) . Este área es sumamente delicada pues es la base de todo el Sistema Operativo y está formada por varias “subareas” muy interrelacionadas.

 

Memory Manager y la Tubería.

 

Por un momento imagina que eres Fontanero.

 

News: 0.3.12 ¿Dónde está? Supongamos que tenemos 2 Tuberías de distintos diámetros (5 y 10 cm) y un cuerpo acoplador para poder unirlos. 

De pronto sentimos que el agua nos llega hasta las rodillas. La fuga solo puede venir de estas uniones.

 

 

 

News: 0.3.12 ¿Dónde está? Comprobamos las tuberías y el cuerpo acoplador, y lo  que descubrimos es que el cuerpo acoplador tiene 3 salidas, 2 están ocupados por las tuberías, pero por el tercero se escapa el agua libremente.

¿3 orificios?Revisamos las especificaciones de la arquitectura NT, y efectivamente, el cuerpo acoplador solo une 2 tuberías. Alguien la “cagó” al hacerle una salida extra.

 

Existen dos opciones: Crear un parche de caucho que selle la 3ª salida ( a esto lo llamamos un “HackFix” ) o resolverlo correctamente(Creando un cuerpo acoplador que sigue las especificaciones de la arquitectura NT)

El Fontanero decide hacer un cuerpo acoplador con 2 orificios (uno de 5 cm y otro de 10 cm) y tras meses de esfuerzo decide cambiar uno por otro.

Vuelve a dejar correr el agua y un par de semanas más tarde vuelven a avisarle de que hay agua escapándose. El problema se ha agravado, ahora sale agua de la junta entre las tuberías y el cuerpo acoplador. Antes esto no ocurría. Es lo que denominamos “Regresiones”..

¿Pero cómo puede ser que el problema se haya agravado si ahora la pieza acopladora sigue PERFECTAMENTE las especificaciones de la Arquitectura NT?

La respuesta es sencilla. Las tuberías no son exactamente de 5 y 10 cm sino de 3 y 8 cm. Así pues el antiguo cuerpo acoplador no solamente tenía un agujero de más, sino que tampoco seguía las especificaciones de la arquitectura NT a lo que a diámetros se refiere.

Probablemente el que diseñó el antiguo cuerpo acoplador se encontró con las tuberías de diámetro incorrecto y decidió tirar “pa’lante”, pues reescribir (rediseñar) las dos tuberías le habría llevado un buen tiempo.

Así pues, al colocar el nuevo cuerpo acoplador se han provocado fugas que no tienen relación con la nueva pieza, sino con otras ya existentes. A esto se le denomina “underlying Bug” : Son fallos que ya existían pero que ahora se ponen de manifiesto.

El problema es que las dos tuberías de 3 y 8 cm “bailan”  en los agujeros correctos de 5 y 10 cm.¿Qué hacemos?

  1. Volvemos a poner un cuerpo acoplador que no sigue la arquitectura NT y que provoca fugas.
  2. Colocar el nuevo cuerpo acoplador que sigue la arquitectura NT pero que provoca muchas más fugas.
  3. Arreglar las tuberías para que éstas también sigan las especificaciones de la arquitectura NT.

La decisión es la tercera. No podemos lanzar la versión 0.3.12 si nuestro sistema hace aguas por todas partes(opción 2) , tampoco sería correcto volver a colocar la pieza antigua(opción 1) pues nunca mejoraríamos el Sistema Operativo. No queda más opción que rediseñar las tuberías.

El cuerpo acoplador es en este caso nuestro “Memory Manager”. Es una pieza fundamental, pues se encarga de manejar la memoria. Tener fugas aquí implica comprometer la estabilidad y rendimiento del Sistema Operativo.

Las tuberías son la “Common Cache” y otros módulos de los depende el “Memory Manager”.

Y son precisamente estos problemas los que están bloqueando,actualmente, el lanzamiento de la 0.3.12.

Algunos de estos problemas relacionados con el manejador de memoria ya han sido resueltos: Problemas del MM

 

Otros bloqueadores

 

Otro de los bloqueadores es un problema con algunos iconos que se muestran en azul. Lo que llamamos “Pitufitis”. Es un bug relacionado con el nuevo código de “Alpha Channels”.

La “Pitufitis” solo aparece cuando ReactOS corre bajo resolución de 16bits, pero se soluciona al cambiar a 32 bits.

Tal vez la solución provenga de integrar el branch Yarotows a ReactOS, ya que no sufre este problema. Pero para poder integrarlo es necesario resolver varios bugs de dicho branch.

Yarotows es una pieza muy compleja por lo que tras la integración sería necesario un gran testeo y tal vez nos encontremos con bugs inesperados.

 

Conclusión

 

El lanzamiento de la 0.3.12 se espera antes de Octubre, si los bugs actuales no nos dan quebraderos de cabeza extras.

No se lanza ya porque no está en condiciones de ser lanzada. Por un lado su estabilidad(cuelgues) se ve comprometida por los “underlying bugs” que han aparecido al reescribir el manejador de memoria(“Memory Manager”). Por otro la “Pitufitis” destroza los ojos de los usuarios.

No nos hemos cansado de crear código. Ahora solo unos pocos desarrolladores tienen acceso al árbol de desarrollo por lo que el envío de parches se ha visto mermado, pero los desarrolladores siguen haciendo parches que serán mandados al árbol en cuanto se abra.

Puedes seguir la evolución uniéndote a nuestros canales IRC (#reactos, #reactos-dev,#reactos-es)

Y sí, la 0.3.12 es muchísimo mejor que su antecesora(la 0.3.11). Prometido.

9 comentarios:

  1. Muy buena explicación lo de las tuberías para no iniciados, no creo que nadie se quede con la ?

    Esperamos ansiosos la nueva versión, y ánimos!

    ResponderEliminar
  2. Gracias,
    Espero que de esta manera se entienda la problematica de un Underlying Bug y de que aun necesitaremos tiempo para terminar de dar los ultimos retoques a la 0.3.12 :)

    ResponderEliminar
  3. Señores pa`lante es pa llà

    No se preocupen entendemos la situaciòn, tener las mejores cosas toman tiempo.
    Exitos!!

    ResponderEliminar
  4. No sé si me alegra más el hecho de que se solucionen los bugs, o el que existan para que nos los podáis explicar de esta forma tan llana y amena. Muy buena la analogía con la fontanería.

    Thank you so much!

    ResponderEliminar
  5. Muy buena la explicación!! Por lo que contás, yo diría (a modo de apuesta, no es ninguna exigencia) que después de que esté lista la 0.3.12 (ojalá no tengan muchos problemas para llegar en octubre) y la unión con YAROTOWS, ya sería posible la 0.4.

    Por ahí cuando salga la 0.3.12 me la instalo en la PIII :P

    ResponderEliminar
  6. Es bastante probable que tras la 0.3.12 venga la 0.4, sin embargo,tras el gran cúmulo d regresiones existen dudas sobre si existirá una versión 0.3.13 antes de la deseada 0.4.Crucemos los dedos.
    :)

    ResponderEliminar
  7. Yo solo pregunto una cosa ¿Desde el principio se uso bien la documentación sobre la arquitectura NT? Por que si es asi esos fallos con el tema de las tuberias y el memory manager no deberian tener lugar.
    Yo sigo apostando por la integración de Yarotows en la 0.3.12

    ResponderEliminar
  8. La Arquitectura NT está documentada en líneas generales. Solo está muy bien documentada en la parte de Modo Usuario, con el objetivo de que los programadores usen las APIs de Windows. El Modo Kernel de la Arquitectura NT está casi-totalmente indocumentada, ni sabemos el nombre de las funciones ni como funcionan realmente. Y si lo sabemos no es gracias a Microsoft sino al trabajo de terceros grupos de personas que van descubriendo sus secretos poco a poco :)
    Por ejemplo, el pintado/repintado de ventanas es procesado en el Modo Kernel y por ello es que tenemos tantos problemas y glitches graficos, pues está casi totalmente indocumentado.
    Integrar Yarotows en la 0.3.12 supondría un gran retraso en el lanzamiento, por lo que solo tendrá lugar si realmente no tenemos otra opción.
    Es más probable que revirtamos el soporte de Alpha Channel (que es la que provoca este bug) que la integración de Yarotows.
    :)

    ResponderEliminar