Thursday, September 17, 2009

Rediseño del TwinPanel

Pues parece que vamos a hacer cierto rediseño del núcleo de TP dado que hay algunos problemas importantes que debemos resolver. Estos son algunos  de los más urgentes:

  • No hay ninguna forma mínimamente cómoda de hacer baterías de pruebas.  Hay que pensar una forma lo menos invasiva posible de poder comprobar entradas y salidas. Yo estoy trabajando en un proyecto para hacer pruebas automáticas de GUIs, pero sería bueno poder probar el modelo sin GUI, o con una capa de presentación alternativa basada en linea de comandos o algún medio de comunicación programático.
    • Los «stores» (ListStore y TreeStore) provocan mucha contención y no están convenientemente probados. Probablemente son la causa más importante de los cuelgues actuales de TP debido a la tácita enemistad entre GTK y los hilos.
      • El diseño basado en método y dominio no escala. Quedan muchos casos que ese modelo no cubre y complica el uso de la factoría. Necesitamos una forma de abstraer el acceso (http, ftp, ice, etc) del modelo (multimedia, repositorio, sensor, etc).
        • Muchas de las interacciones entre plugins y core no están definidas por interfaces. Necesitamos documentar e imponer interfaces concretas de modo que TP se niegue a cargar plugins que no cumplan la interfaz. zope-interface parece una buena solución pero la hemos aplicado a muy pocas interfaces hasta el momento.
          • Necesitamos un sistema de instalación y activación/desactivación de plugins, de modo que los que den problemas se "desactiven" automáticamente evitando la ristra de errores que aparecen al arrancar la aplicación.
          Lo bueno es que todos estos cambios afectan (o deberían afectar) muy poco a los plugins que es dónde está la mayor parte del trabajo hecho hasta la fecha.

          David me dijo que Carlos está trabajando ya en algunos de estos problemas, principalmente en cuestiones de captura de requisitos y diseño pero no he sabido nada más. Empieza a ser urgente ponernos con esto porque la bola de nieve sigue creciendo y empieza a ser preocupante. Personalmente ha llegado un punto en el que me da miedo añadir o modificar nada en TP porque es imposible saber las consecuencias que tiene en el resto de la aplicación.