Tras el merecido descanso estival para las neuronas, volvemos con los retos de reconocimiento de código. Y lo hacemos con un proyecto bastante conocido, a la par que criticado por su código, algo desorganizado e ineficiente. No obstante, su versión 1.0 contaba ya con 7 millones y medio de líneas de código.
Las pistas
Este proyecto, programado en C++, Java y Python, protagonizó uno de los forks más sonados de los últimos años en la comunidad Open Source, motivado más por cuestiones ideológicas que por divergencias en el código o su estructura.
No obstante, aprovechando el fork, una de las labores más intensas que se realizaron fue una limpieza de todo el código no usado, reduciéndolo en casi un 50%.
El código
El siguiente fragmento de código (levemente ofuscado) evidencia algunas de las malas prácticas achacadas a este proyecto: un código sucio, con funciones comentadas, código probablemente inalcanzable, nomenclatura inconsistente, etc.
void ██InputWindow::Resize() { ████Box::Resize(); if ( ███_██ExperimentalMode() ) { Size █Size = GetPixelSize(); //█TextWindow.SetPixelSize( █Size ); if( █IsMultiLine ) { █Size.Height()=77; } else { █Size.Height()=33; } SetPixelSize(█Size); //Invalidate(); █TextWindow.Resize(); } else { long █Width = GetPixelSize().Width(); long █Left = █TextWindow.GetPixelPosition().X(); Size █Size = █TextWindow.GetPixelSize(); █Size.Width() = Max( ((long)(█Width - █Left - 5)), (long)0 ); █TextWindow.SetPixelSize( █Size ); █TextWindow.Invalidate(); } }
El reto
¿Habéis reconocido el software al que pertenece este código? Bien. Pasemos entonces a otras cuestiones relacionadas.
¿Qué empresa creó el germen de este software, qué empresa lo adquirió y liberó dándole popularidad, cuál estuvo a punto de acabar con él y cuál se fundó para salvarlo?
¿Qué estándar ISO fue impulsado principalmente por los responsables de este software? ¿Qué otro estándar apareció para desbancarlo?
¿Qué sistema de gestión de defectos utilizan? ¿Y qué control de versiones?
El equipo de desarrollo utiliza al menos dos analizadores estáticos de código, cuyos resultados son públicos. ¿Podríais encontrarlos y decir qué fallos son los más comunes en el código de esta aplicación?
Y la última va para nota. Un conocido desarrollador de este proyecto, que también lo es de Gnome, publicó una foto bastante divertida sobre un extensísimo manual para una función casi trivial, como ejemplo de lo burocratizado que estaba el trabajo antes del último fork. ¿Podríais encontrar esa foto o decir quién es este desarrollador?
Solución al anterior reto
En nuestro anterior reto os mostrábamos código de osCommerce. La licencia vírica con la que se distribuyó hasta su versión 2.3 fue la GPL v2, y desde la versión 3.0 se pasaron a BSD.
Las vulnerabilidades encontradas consistían en inyecciones SQL y XSS que permitían insertar iframes en la versión 2.2. En el changelog de la siguiente versión podemos ver cómo esta vulnerabilidad estaba resuelta para la 2.3. Y como ejemplo de web española que hiciese uso de osCommerce, nos valía cualquiera de este listado.
Ver todos los comentarios en https://www.genbeta.com
VER 0 Comentario