Recientemente, cuando Patrick Galbraith y yo preparamos la próxima versión de moxi, pasamos un poco de tiempo limpiando la compilación en varias plataformas y con varios compiladores. Construir y probar continuamente en múltiples plataformas ayuda a asegurar la utilidad, calidad y longevidad del código.
Esto es algo que todos en NorthScale creemos que es bueno para los proyectos que dirigimos y a los que contribuimos. Dustin Sallings lleva mucho tiempo haciendo esto para memcached, como puedes ver en la wiki de memcached y en la propia granja de construcción. Todos nosotros en NorthScale hemos continuado este esfuerzo unido a las contribuciones de la comunidad. Como puedes ver, es una lista bastante completa. También hacemos esto en otros proyectos. Para el proxy memcached, moxi, tenemos otra granja de construcción. Para quienes no estén familiarizados con la integración continua, buildbot nos permite acortar el tiempo entre el código nuevo y los problemas encontrados en varios entornos de compilación. Cada vez que un desarrollador realiza un cambio*, todas estas plataformas intentarán compilar y probar memcached. Si hay un problema, podemos detectarlo de inmediato y solucionarlo, de modo que los problemas de compilación en otras plataformas no persisten. Hay muchos beneficios: mantiene el código "listo para ser lanzado", algunas plataformas pueden detectar errores en tiempo de compilación que otras plataformas no detectan, etc. Para dar un ejemplo de cómo nos ha funcionado esto en la práctica, si alguien se encuentra con una plataforma con un problema, por supuesto abordamos el problema en sí (por lo general, pidiéndoles que errores de archivo y proporcionar un caso de prueba), pero también pedimos ayuda para añadir a la granja de construcción. El sitio Proyecto Gentoopor ejemplo, incluye memcached y cubre muchísimas plataformas. Recientemente surgió un problema con Gentoo para la arquitectura ARM. En el proceso, Dustin preguntó al contribuyente, Robin Johnsonasí que ahora tenemos un constructor para Gentoo en ARM. Para Patrick y para mí, en esta última versión de moxi, esto significó añadir algunos nuevos constructores a la granja de construcción de moxi, aumentar las advertencias del compilador y corregir una serie de pequeños errores. Mientras que muchos de estos errores son más bien advertencias de las que sólo se quejarían los compiladores pedantes, otros apuntan a la seguridad de tipos, que son ese tipo de lugares en los que a los errores de software les gusta esconderse. Un poco de calafateo y sellado mantendrá a los bichos fuera. Al final, el objetivo de NorthScale aquí es mantener un resultado de alta calidad para memcached, moxi, libmemcached y otros proyectos que dirigimos o a los que contribuimos. Como Dustin boletín de notas entrada de blog muestra que ya hemos progresado hacia nuestros objetivos; la vigilancia constante de buildbot sobre nuestro árbol debería ayudarnos a mantenernos ahí. * Técnicamente, el proceso que intentamos utilizar es usar primero un "buildbot try" (también contribuido por Dustin) cuando hacemos cambios, así mantenemos un árbol que es construible en todas las plataformas todo el tiempo. Permite a un desarrollador que ni siquiera ha confirmado un cambio para probarlo. Simplemente funciona con git para generar un diff, luego parchea el árbol contra alguna historia común.