Llegamos a ustedes gracias a:



Reportajes y análisis

Herramientas de programación de código abierto

Trece proyectos de desarrollo de código abierto que hacen olas en la empresa.

[26/04/2011] Si el modelo de código abierto tiene un punto dulce, este es sus herramientas de programación. Quizá nunca llegue la legendaria dominación mundial de Linus Torvalds a los escritorios de los empleados o CEO, pero ya está en los equipos de programadores de todo el mundo. Incluso, en los rincones más profundos de los cuarteles propietarios, se pueden encontrar herramientas de código abierto, a menudo dominantes.

La razón es clara: las licencias de código abierto están diseñadas para permitir que los usuarios revisen, corrijan y amplíen su código. El peluquero o el policía no están lo suficientemente familiarizados con el código para contribuir, pero los programadores sí saben cómo jugar con sus herramientas.
El resultado es una ecología fértil de ideas y código fuente, alimentada por el entusiasmo de los desarrolladores de aplicaciones que saben como "rascar y picar". Los programadores son un grupo bien informado y obstinado; el código abierto les permite compartir sus conocimientos y poner en práctica lo que quieren.
A continuación un grupo muy poco científico de herramientas de código abierto valiosas que han llamado nuestra atención. Algunos son proyectos totalmente nuevos, otros son los favoritos de siempre que siguen generando nuevas formas de sorprendernos, ya que se transforman para soportar las últimas tendencias de programación.
Esta es la belleza del código abierto. Modificar y volver a compilar, y su vieja herramienta de programación puede ser nueva otra vez.
Rhomobile Rodes
Ruby puede ser el segundo idioma más popular en Github, pero eso no le hará ningún bien si desea programar para el iPhone, una plataforma que prefiere Objective-C, la intención de Dios cuando creó por primera vez la máquina NeXT.
Rhomobile Rodes es una plataforma de código abierto para crear sitios web de Ruby y agregarlos a una aplicación para el iPhone. Puede incluso utilizar jQuery móvil para manejar el diseño si lo desea. Es como construir una aplicación web, pero hay que recordar que el usuario tiene los dedos grandes de grasa, en lugar de un puntero del mouse mucho más preciso.
Git
Mientras que muchos desarrolladores siguen utilizando CVS y Subversion, una serie de proyectos se están trasladando a Git, una herramienta de control de código que funciona bien para los equipos menos centralizados, en un donde podría no existir un repositorio central dominante.
Git hace prácticamente todas las copias de su propio repositorio central y ofrece herramientas sofisticadas para fusionar la proliferación de repositorios resultantes. Con SVN o CVS, los usuarios solo le echan un vistazo a una copia, una versión subordinada del código que luego debe volver al centro. Los usuarios de Git, por el contrario, crean repositorios independientes con todos los derechos y privilegios del centro. Con Git, puede crear cuatro o cinco depósitos en su caja de desarrollo y, finalmente, combinar todos ellos. Para usar una analogía, Git es como la democracia, mientras que CVS representa el mundo feudal.
Por supuesto, no todo el mundo le da la bienvenida a la flexibilidad que proporciona Git. Algunos ven que esta libertad genera confusión. Los defensores responden que usted no está obligado a utilizar todo el poder de Git, pero que está ahí para ayudarlo cuando el proyecto requiere más de un gobierno central. Algunos desarrolladores han creado Repo para luchar contra la complejidad de Git. Una herramienta para impulsar cambios a través de múltiples repositorios, Repo es, en cierto modo, la reaparición del control central para el ecosistema Git.
Hadoop
El poder de Hadoop se puso públicamente en la pantalla en forma de Watson, la máquina "DeepQA" de IBM que hace poco venció a los dos más grandes campeones humanos en un juego de "Jeopardy". El marco se utiliza para organizar docenas de algoritmos que buscan una respuesta en paralelo.
Hadoop es un kit de herramientas para dividir el trabajo en piezas que se pueden calcular en servidores independientes, y que luego se pueden unir en un producto final. Google fue el pionero con esta idea cuando necesitó coreografiar un vasto ejército de servidores para rastrear la web, y ahora Hadoop ofrece un marco general que está siendo utilizado una y otra vez en situaciones similares.
El simple núcleo original de Hadoop puede tener varios años de antigüedad a la fecha, pero hay un gran interés en los spinoffs que empaquetan Hadoop con el código para hacer frente a problemas específicos. Mahout, por una parte, es un marco escalable de aprendizaje automático que analiza grandes conjuntos de datos de patrones que pudieran surgir. Hive ofrece un almacén de datos que se puede consultar en una búsqueda paralela utilizando HiveQL. Este método se está volviendo popular para hacer frente a cantidades masivas de registros web.
jQuery
jQuery no es una nueva herramienta para la construcción de páginas web activas con JavaScript, que manipula el DOM. Muchos desarrolladores web comienzan aprendiendo jQuery antes de tratar de entender Javascript puro, porque es mucho más simple y eficiente. Parte de la razón de su éxito es la capa de plug-ins creados por un gran ejército de devotos. Esta colección de plug-ins es un ecosistema cambiante lleno de herramientas muy creativas y sorprendentes para mejorar la web. Hay demasiadas como para empezar a enumerar.
Estos plug-ins son generalmente bastante fáciles de hilar y pegarlos en una exhibición coherente. Incluso hay algunas colecciones más grandes de plug-ins que armonizan los widgets. jQuery móvil, por ejemplo, se dedica a la producción de aplicaciones que se ejecutan bien en las pequeñas pantallas de los teléfonos inteligentes.
Emacs LISP
De vez en cuando regreso a emacs y reconozco lo maravilloso que es, 20 años después de su aparición. Incluso hoy en día, es más fácil grabar macros, volver a enlazar teclas, y personalizar el kit de herramientas, que muchas de las más grandes y llamativas herramientas de programación que hay por ahí.
Aunque probablemente no sea justo llamar a emacs "nueva" o "en aumento", la plataforma no está disminuyendo el radar de nadie. Git ranquea a "emacs lisp" como el idioma 13 más popular basado en proyectos e intereses. En comparación, C# es el 12. La mayoría del código está construido solamente por programadores. Uno de los proyectos, Rinari, por ejemplo, convierte a emac en un IDE de Ruby. Otro, MozRepl, permite que los usuarios de Mozilla retocen con las entrañas de Firefox usando emacs.
Eclipse (y el mercado de Eclipse)
Es difícil escribir acerca de las herramientas de programación sin mencionar a Eclipse. Mientras que el IDE está bien establecido, los plug-ins se siguen vigorizando. Tomemos, por ejemplo, el hecho de que los plug-ins de Eclipse existen en prácticamente en todos los idiomas disponibles. PHP, Ruby, Python, C, y todos viven cómodamente en este IDE, gracias a la evolución del ecosistema de plug-ins de Eclipse.
Casi tan importante como los plug-ins son las ecologías sofisticadas que les dan soporte, muchas de las cuales son de código abierto. El mercado de Eclipse es uno de estos sitios dedicados a ayudar a que los usuarios descubran las herramientas que necesitan. El sitio incluye una capa de red social, mostrando a quién le gusta determinado plug-in y los complementos que ofrecen soluciones similares o competidores, abriendo su búsqueda más allá de simples listas de los más populares o los más descargados.
Firebug
La mayoría de la gente ve al navegador como un mecanismo para llegar a Facebook o para buscar direcciones de Google Maps. Los programadores, sin embargo, cada vez son más capaces de aprovechar las herramientas de programación integradas en el navegador, con el plug-in Firebug de Firefox a la cabeza.
La ecología Firebug es tan fértil que ha dado lugar a una subcategoría de plug-ins que se extienden como Firebug, a menudo de maneras sorprendentes. FirePython, por ejemplo, en realidad no vive en el navegador, sino que se inserta en el servidor, donde ofrece información de depuración en el navegador.
Gracias, en cierta medida, a la popularidad de Firebug entre los desarrolladores, todos los navegadores principales ahora ofrecen información detallada acerca de las imágenes, fragmentos de código, y otras cosas que componen la página visitada -un enfoque que solo se hará más común a medida que se escriba más software para tomar ventaja de los navegadores cada vez más robustos.
Preprocesadores
Muchos programadores suelen decir, "Me gustan las bibliotecas y la distribución y la fiabilidad de las X, pero no puedo soportar la sintaxis". Por eso ahora tenemos una proliferación de preprocesadores que modifican el código antes de que el compilador se afiance. Ellos le permiten programar en un lenguaje X, mientras lo escribe diferente, porque todo lo que escribe se convierte en X después de que lo escriba y antes de que el compilador lo lea.
CoffeeScript parece un precompilador para JavaScript, pero en realidad es un compilador completo construido como todos los compiladores. El creador dijo: "Debajo de todas esas llaves vergonzosas, y puntos y comas, JavaScript, siempre ha tenido un hermoso modelo de objetos en su corazón. CoffeeScript es un intento de exponer las partes buenas de JavaScript de una manera sencilla". En esencia, lo hace más como escribir Python, porque la barra de espacio hace todo el trabajo que las llaves y algunas otras marcas de puntuación hacían antes.
Generar herramientas de gestión
En los últimos años, las herramientas para la construcción de proyectos Java han evolucionado desde algo que una persona ejecutaba en un escritorio de vez en cuando, a herramientas que se ejecutan en un servidor cada pocos segundos para coordinar el trabajo de un equipo de programadores. El servidor monitorea constantemente el árbol de fuentes, ejecutando scripts Ant o Maven cada vez que aparece un nuevo código. La compilación y los resultados de las pruebas luego son publicadas para que todos los desarrolladores las vean. Lujosos cuadros de mando que muestran los errores y las correcciones en tiempo real, son una atracción popular.
La riqueza del aumento de proyectos de código abierto en esta área indica que los programadores aún no han encontrado la combinación óptima de características. Cruise Control es la herramienta de construcción original de código abierto que está bien integrada con la mayoría de los repositorios y bases de datos de errores. Continuum de Apache está muy integrada con Maven, y a los usuarios de Continuum les gusta decir que todo lo que necesita hacer es "apuntar el archivo pom.xml en el repositorio". Otro proyecto popular, una vez conocido como Hudson, es más abierto al uso de scripts de construcción, escritos para Ant y algunos otros. A finales del 2010, el equipo se partió en dos y el grupo dominado por los desarrolladores pagados de Oracle mantuvieron el nombre de "Hudson", mientras que los otros están creando una nueva herramienta de construcción de código abierto llamada Jenkins.
Muchos usuarios hacen hincapié en que la constante creación del software y su inmediato despliegue, aumenta la armonía del equipo y evita que los programadores se vayan a la deriva por caminos diferentes que requieren demasiado tiempo para armonizarse. Con la continua reconstrucción del software y la aplicación de pruebas unitarias, es probable que el equipo converja.
OpenVidia
Las unidades de procesamiento gráfico son mejor conocidas por hacer surgir triángulos de mundos míticos donde la gente está siempre disparándose. Esto está cambiando rápidamente ya que tanto los fabricantes de tarjetas de video como los programadores se están dando cuenta que los chips son masivas computadoras paralelas preparadas para manipular casi cualquier código, no solo los que implican los juegos. Los científicos en todas partes están aprendiendo que la tarjeta gráfica para jugar Grand Theft Auto también puede ejecutar simulaciones para ayudar a curar a los seres humanos. Muchos problemas científicos se pueden estructurar para incluir un gran número de eventos que suceden al mismo tiempo, un trabajo perfecto para una computadora paralela masiva que hace cosas a la vez: en otras palabras, una tarjeta de vídeo.
El repositorio OpenVidia está lleno de proyectos que realizan el reconocimiento de imágenes, búsqueda, y mucho más. Son una excusa perfecta para que todos los programadores le pidan a su jefe una tarjeta gráfica cara con el potencial de generar una velocidad muy alta -eh, me refiero a una alta tasa de cura del cáncer en las simulaciones.
NoSQL
La tendencia NoSQL comenzó hace varios años, pero se sigue calentando a medida que más sitios web reconocen que su futuro está en grandes cantidades de datos que no necesitan todas las correas y tirantes de protección que ofrecen las bases de datos serias como Oracle.
Las herramientas más recientes hacen más fácil implementar NoSQL en las nubes, muchas de los cuales se venden directamente al departamento de TI. SimpleDB de Amazon puede ser pagado por byte, y muchos otros equipos están ofreciendo herramientas adicionales NoSQL como servicios. Cassandra, por ejemplo, tiene el soporte de de DataStax. MongoDB ha inspirado a más de un puñado de hosts de nubes. Las herramientas siguen proliferando, tanto que son casi demasiadas como para enumerarlas. Agradezca a Dios que alguien está manteniendo una lista de todas las bases de datos NoSQL.
Sistemas de gestión de contenidos
En los viejos tiempos, había código que se estaba ejecutando y código que estaba en desarrollo. Incluso hoy en día, la mayoría de los programadores llenan archivos de texto y pulsan un botón para compilar y ejecutar el código. Esto está cambiando gradualmente, ya que los usuarios obtienen más y más control para modificar el software a medida que se ejecuta.
Los sitios web de Drupal, por ejemplo, a menudo mezclan módulos tradicionales con código adicional insertado para tomar decisiones sobre la selección de datos y dar formato. Aunque gran parte de esto ocurre en el extremo posterior, Drupal puede ser configurado para permitir que los usuarios incluyan código PHP en campos de datos particulares. Como resultado, los programadores ya no están presionando compilar y ejecutar, sino que van actualizando una parte del código sobre la marcha. Por lo general son lo suficientemente inteligentes como para hacer esto en una versión de prueba, pero a veces llegan a actualizar código en marcha ya que no es tan difícil. ¿Qué podría salir mal?
Esto es lo último en código abierto, donde cualquier cosa puede modificarse sobre la marcha.
Peter Wayner, InfoWorld (US)