Mostrando entradas con la etiqueta eclipse. Mostrar todas las entradas
Mostrando entradas con la etiqueta eclipse. Mostrar todas las entradas

lunes, junio 06, 2011

Erich Gamma se va a Microsoft

lunes, junio 06, 2011 por Martín

Hoy abrí InfoQ. Hacía ya bastante que no lo hacía, y como habréis visto también unas semanas que no escribía nada en el blog. La carga de trabajo está siendo importante. Pronto hablaré de eso también por aquí.

Pero el caso es que he visto que Eric Gamma se ha ido a Microsoft, como Distinguished Engineer (si no me equivoco el máximo rango técnico en la compañía) y se une al equipo de Microsoft Visual Studio. ¡Pedazo fichaje! Ya no por el trabajo que hizo hace muchos años con el libro de Gang of Four o por coescribir jUnit. ¿Por qué entonces?

miércoles, agosto 06, 2008

Programación en parejas con Eclipse ECF

miércoles, agosto 06, 2008 por Martín


Tenía pendiente mencionar esto desde que lo leí hace unos días. Ferrán Rodenas escribía hace unos días sobre dos tesoros ocultos en Ganymede (la última release de Eclipse) que merece mucho la pena leer.

Sin duda, el me ha dejado impresionado es la nueva funcionalidad de ECF (Eclipse Communication Framework) para editar un fichero simultáneamente entre varias personas. Este screencast es realmente descriptivo, y la verdad es que parece realmente útil.

Muchas veces cuando tienes que explicar algo a alguien se vuelve realmente complicado, especialmente cuando esta persona no se puede sentar a tu lado y recorrer contigo el código, y no queda otro remedio que utilizar Skype o gchat para intentar explicar como funciona todo. Con este plugin, sigue siendo necesario algún mecanismo para hablar entre las dos personas, pero vaya la edición simultánea de ficheros es espectacular.

sábado, septiembre 22, 2007

Lotus Symphony, Eclipse RCP y Open Source

sábado, septiembre 22, 2007 por Martín

Como quizás ya conoceréis porque se ha anunciado en todas partes, esta semana IBM ha lanzado Lotus Symphony una suite ofimática destinada a competir con Microsoft Office y que por ahora se basa en Open Office 1.x pero que pronto lo hará en 2.x.



Ya adentrándose un poco más en la parte técnica del producto, lo que muchos no saben es que está basado en Eclipse RCP y por lo tanto se beneficia de muchas de las características que vienen ya con Eclipse como el soporte de OSGi, su update manager, su sistema de ayuda y sobre todo el poder integrar y aprovechar toda la plataforma en la que han trabajado durante años. No deja de ser interesante como se pueden sacar productos como una suite ofimática a partir de algo que inicialmente sólo era un entorno de desarrollo.



Ahora bien, realmente lo de que pueda competir con Microsoft Office, o google docs, ya es un poco más utópico, al menos por ahora. El anuncio del producto es bastante confuso y aunque en algunos sitios comentan que la suite es Open Source, a mi me da más bien la impresión de que simplemente han querido decir que se basa en Open Source (OpenOffice), ya que no he podido acceder al código fuente o encontrar nada relacionado con el desarrollo.

En caso de que fuese realmente Open Source, entonces sí que puede que la suite tuviese algo que decir, ya que al estar basado en Eclipse RCP sería realmente sencillo el crear aplicaciones que incrustasen esta suite, o aplicaciones que aprovechasen todos los componentes gráficos que incluye.



Una de las preguntas más típicas que me llegaban cuando estaba haciendo el cliente de jLibrary, y que todavía me llega de vez en cuando, era si se podía integrar OpenOffice en Eclipse RCP, y como hacerlo. Básicamente las opciones no eran demasiado agradables:

  1. Usar las librerías Java de OpenOffice.

  2. Integrar directamente el componente ActiveX (windows) y olvidarse de todo.



Sin embargo, si esta suite ofimática fuese realmente Open Source entonces ya se podría simplemente añadir los plug-ins necesarios y ya tendríamos OpenOffice listo para utilizar e integrar en nuestras aplicaciones corporativas. Y es que creo que eso de "¿puedo integrar Microsoft Office?" o "tenemos que crear un editor que sea igual que Office" es algo que más de uno estará acostumbrado a escuchar.



En fin, os dejo aquí unos cuantos enlaces en los que hablan de Symphony y su relación con Eclipse. Será interesante seguir como evoluciona el proyecto y ver si realmente tiene algún éxito.

Chris Aniszczyk sobre Lotus Symphony.
Lotus Symphony: First Impression.
Escape Velocity: Lotus Symphony.
My firsts impressions of Lotus Symphony.

viernes, septiembre 14, 2007

Eclipse y su infraestructura de testing

viernes, septiembre 14, 2007 por Martín

Hace tiempo hablaba del Eclipse Way y de como me fascina el proceso de desarrollo que siguen.

Repasando un ppoco las charlas de este año de la EclipseCon 2007 (ya ha llovido) me he encontrado con una bastante interesante de Sonia Dimitrov y Kim Moir donde hablaron sobre todo el proceso de QA que se sigue en Eclipse.



Se extraen varias cosas interesantes:

  • Tienen el rol de build engineer para proteger a los desarrolladores del proceso de build (este rol merece un post en si mismo).
  • 176.000 tests en 33.000 JUnit tests ejecutándose en cinco build machines con máquinas virtuales 1.4, 1.5 y 1.6.
  • 469 tests de rendimiento con 2345 tests que se ejecutan en cinco máquinas diferentes. Se ejecutan sólo unos cuantos días debido a que lleva unas 10 horas ejecutar los tests y procesar los resultados.
  • Para asegurarse la validez de los tests de rendimiento utilizan imágenes ghost que instalan justo antes de lanzar los tests.
  • Tienen un conjunto de tests de limpieza. Chequean que todo esté correcto: javadocs, licencias, políticas de código, etc.
  • Los desarrolladores escriben test unitarios, pero el código de los tests se mantiene separado en un CVS propio.
  • Los resultados de los tests de rendimiento se almacenan en una base de datos dedicada.
  • Para detectar fallos tienen un parser que analiza la salida de los tests y en caso de errores genera reportes y los envia a una lista de correo.
  • La mayor parte de los errores que obtienen no se deben en realidad a errores en el código sino a problemas con las máquinas, poco espacio en disco, actualizaciones de software, antivirus, etc.


No sé que os parece, pero a mi me ha sorprendido especialmente toda la infraestructura dedicada al testing, incluido el dedicar un CVS específicamente para el almacenar el código de los tests. Está claro que toda esta infraestructura y este proceso tan elaborado debe tener algo que ver con la capacidad para estar lanzando versiones sin retraso durante cinco años.

sábado, septiembre 08, 2007

Rich Ajax Platform

sábado, septiembre 08, 2007 por Martín

Hace tiempo (desde que vine a Irlanda) que vengo estando desconectado del desarrollo con Eclipse. No me entendáis mal. Sigo trabajando con Eclipse diariamente (sigue siendo mi IDE preferido), pero ya no estoy al día de los diferentes plug-ins que van saliendo, de las diferentes versiones de los frameworks, etc.

Sin embargo, hoy en sus blogs me ha llamado la atención una entrada que referenciaba al proyecto Rich Ajax Platform. La verdad es que desde que coincidimos en los JAX Innovation Awards del 2006 no había sabido más del proyecto (si a alguien le interesa en esos Awards consiguió el tercer puesto sin tener nada que funcionase minímamente, y es que vale más una buena buzzword hace más que mil desarrolladores ;-)).



La captura de pantalla que se ve arriba es de una demo online que tienen en la página web del proyecto ejecutándose sobre Firefox. Es una especie de mashup de Google Maps incluyendo funcionalidades de chat (Eclipse ECF supongo). El caso es que hay que reconocer que el interfaz es exactamente igual al de una aplicación desarrollada con Eclipse RCP.

Según se puede leer en la página web del proyecto, todavía no se soportan todos los widgets, pero sí una buena cantidad de ellos a juzgar por esta demo.

Parece que según algunos creen, parece que el desarrollo web podría estar cambiando y ahora mismo es ya posible crear un núcleo compacto basado en RCP común a varias aplicaciones y desplegar éstas en el escritorio, dispositivos móviles (eRCP) y la web (RAP) "simplemente" creando algunos adaptadores para cada plataforma.

La verdad es que aunque discrepo con esta opinión, lo cierto es que la demo me ha sorprendido por su similaridad a Eclipse. Eso sí, como comprobaréis es terriblemente lentoooooo.

lunes, julio 02, 2007

Jugando con JIRA y Mylyn

lunes, julio 02, 2007 por Martín

Uno de los plug-ins más interesantes que vienen con Europa es Mylyn, vamos lo que antes se conocía como Mylar pero que ahora ya forma parte de los plugins "de primera" que vienen con Eclipse.

Mylyn te permite integrar Eclipse con gestores de tareas como Bugzilla o JIRA enfocando el desarrollo a la resolución de tareas. La idea es que pasar del típico desarrollo descoordinado a algo más orientado a tareas, de forma que se pueda estimar su duración, que se asocie un determinado contexto (clases, métodos, atributos) a dichas tareas, que se integre con el sistema de control de versiones y que se pueda interactuar con el sistema de tareas que utiliza la empresa.



El soporte de JIRA todavía está en incubación, y hay que descargárselo de otro sitio de updates, pero bueno, se pueden hacer cosas como buscar tareas, crear grupo de tareas, asociar los contextos (esto es de lo más chulo de la herramienta y os recomiendo echar un vistazo), actualizar las tareas con comentarios y attachments, y también tiene la integración con subversion de modo que cuando haces commits actualizará la tarea en JIRA.

De todas formas se nota que para JIRA todavía está algo flojo porque hay cosas que no funcionan, como que no es capaz de ver attachments (pero sí es capaz de subirlos), o que no es capaz de asociar los contextos de trabajo con las tareas de JIRA (la idea es que si tienes un contexto de trabajo con varias clases, lo asocias a la tarea, y así otro desarrollador se lo descarga y sabe exactamente qué es lo que tiene que mirar).

Si os interesa más el tema aquí dejo unos enlaces:

domingo, junio 17, 2007

Construyendo aplicaciones con Maven 2 y Eclipse RCP

domingo, junio 17, 2007 por Martín

En las últimas semanas he estado modificando jLibrary y migrando su proceso de construcción de Ant a Maven 2. El principal reto ha sido sin ninguna duda el integrar Maven 2 con Eclipse RCP, ya que automatizar la construcción de aplicaciones en este último es bastante complejo.

Afortunadamente al final todo ha salido bien. La clave al final está en utilizar el Maven PDE Plugin y seguir su guía. A nuesro fichero pom.xml hay que añadirle una nueva entrada en plugins especial:
<plugin>
<!-- Maven PDE Eclipse Plugin configuration -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>pde-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<eclipseInstall>E:\eclipse-final</eclipseInstall>
<pdeProductFilename>jlibrary.product</pdeProductFilename>
<pdeBuildVersion>3.2.1.r321_v20060823</pdeBuildVersion>
<format>folder</format>
</configuration>
</plugin>

Si seguís la guía del Maven PDE plugin veréis que los proyectos tienen que estar en una localización especial workspace/plugins. Este es el lugar donde el plugin buscará todas las cosas para instalar. Toda la instalación se basa en el fichero de producto de la aplicación (ejemplo) que especifica todas las partes a construir.

Por último, el otro fichero a tener en cuenta es el de configuración del build (ejemplo). Las posibilidades de configuración son muy amplias. Lo que más me gusta es que con tan sólo modificar una línea puedes tener tu aplicación preparada para ejecutarse en montones de plataformas diferentes:
configs=win32, win32, x86
linux, gtk, ppc &\
linux, gtk, x86 & \
linux, gtk, x86_64 & \
linux, motif, x86 & \
solaris, motif, sparc & \
solaris, gtk, sparc & \
aix, motif, ppc & \
hpux, motif, PA_RISC & \
macosx, carbon, ppc


En fin, que si necesitáis más ayuda simplemente echarle un vistazo a la página donde explico el proceso de construcción para jLibrary, y al proyecto cliente en el SVN de jLibrary. Es bastante sencillo así que no debería haber problemas para adaptarlo a vuestros productos.

viernes, junio 15, 2007

Europa se acerca

viernes, junio 15, 2007 por Martín

El 29 de Junio se lanzará Europa, y seguramente se lanzará a tiempo. Personalmente soy un fan incondicional del proceso de desarrollo que utilizan para el desarrollo de Eclipse y muchos de sus subproyectos. Es realmente admirable ver como todo el desarrollo funciona como un reloj y como periódicamente van cumpliendo todos los hitos marcados.



En RegDeveloper analizan esta nueva versión y los diferentes proyectos que la forman, muchos de ellos debutantes como el Dynamic Languages Toolkit, Device Debugging Tool o la SOA Tools Platform entre otros.

Ian Skerret ha agrupado todas las partes de Europa en ohloh para extraer una serie de métricas llamativas:

- 17 million LOC
- 290 contributors
- 5055 person years of effort
- $278,041,377 estimated cost of development


Lo que queda ahora es esperar...

martes, abril 03, 2007

Eclipse: 5 años lanzando software a tiempo.

martes, abril 03, 2007 por Martín

Hoy he estado viendo la presentación que Eric Gamma realizó en la JavaPolis 2006. Me parece que es una referencia para cualquier persona que tenga que dedicarse a la gestión de procesos en una compañía de software, y desde luego de obligada visión para cualquiera que esté interesado en estos temas. En las siguientes líneas intentaré condensar los cuarenta minutoes a los que no llega la charla.

Y es que no muchas compañías pueden vanagloriarse de de haber estado liberando software en los plazos establecidos durante cinco años consecutivos. Como dice Eric, shipping matters, al menos si quieres hacer crecer una comunidad.

El proyecto Eclipse está actualmente distribuido a lo largo de todo el globo pero comenzó como un desarrollo cerrado en el que simplemente algo no existía si no había sido liberado previamente. Nadie podía hablar de proyectos que no habían sido liberados. Es fácil comprender que esto suponía una gran barrera entre los desarrolladores y los usuarios ya que era imposible recoger feedback hasta que el producto no se lanzaba.

Es muy interesante ver como Eclipse migró a una cultura orientada al lanzamiento de software. La regla es sencilla: "Si algo contribuye al lanzamiento de software, incluso indirectamente, entonces se considera bueno. Si algo no contribuye, entonces es malo". ¿Vamos a liberar enormes documentos de diseño? ¿No? Ok, entonces no los haremos. Dentro de la cultura se valora siempre la habilidad para liberar software. ¿Has liberado software? Bien, entonces puedes hablar.

En 2001 Eclipse realizó la transición a un proceso abierto de desarrollo. Pero un proceso abierto de desarrollo genera una comunidad, y una comunidad requiere atención. De repente los desarrolladores se encontraron con que los usuarios podían interactuar con su bugzilla, que en los newsgroups aparecían constantemente preguntas, etc. Para sobrevivir a este efecto, Eric señala como algo fundamental el invertir en interacción con la comunidad. Cada desarrollador de Eclipse puede invertir el 30% de su tiempo en interactuar con la comunidad. Se trata de romper las barreras entre los usuarios y los desarrolladores.

En un proceso de desarrollo abierto las dos partes se comprometen y las dos partes ganan. El proyecto le ofrece al usuario el compromiso de escuchar y reaccionar a su feedback, demostrar un progreso continuo y hacer transparente el proceso de desarrollo, es decir, mostrar los planes de desarrollo, permitir acceso a las diferentes milestones, etc. Por otra parte, como contrapartida los usuarios comenzarán a involucrarse y a resolver las preguntas fáciles (si la comunidad es saludable los desarrolladores sólo tendrán que gastar su tiempo en contestar las preguntas complejas), informarán sobre errores y defectos, validarán la tecnología escribiendo plug-ins, enviarán mejoras y parches, etc.

Para conseguir un proceso de desarrollo abierto se requieren live betas, es decir, se requiere que el software se pueda probar pronto, conforme se va creando. Esto requiere que el proyecto sea saludable ya que se debe obtener calidad en todo momento. En Eclipse esto son las milestones. Eclipse lanza una versión mayor de su software por año, de otro modo sería demasiado estrés para el equipo, el resto son milestones.

El proceso de desarrollo comienza con una fase de calentamiento que dura un mes. En esta fase cualquiera puede hacer lo que desee y nadie le va a pedir cuentas por ello. Es una fase también en la que se analiza lo que se ha hecho en la versión anterior y se buscan posibles mejoras. Al final de esta fase se crea el plan inicial de lanzamiento.

Posteriormente se entra en el proceso de milestones. Eclipse lanza de siete a ocho milestones por año. Inicialmente una milestone duraba tres semanas pero pronto encontraron que a medida que el proyecto se hizo complejo esta medida no era suficiente, así que en la actualidad cada iteración consume seis semanas. El objetivo inicial es conseguir software saludable, y las milestones les ayudan a mantener la forma, es decir mantener siempre un ritmo de trabajo saludable. De este modo, cuando llega el momento de lanzar la versión final, el espacio que hay entre la última milestone y una versión de producción no es tan grande y el esfuerzo a realizar es menor. Una vez terminada cada milestone es firmada por los diferentes equipos.

Un proceso de desarrollo transparente requiere también planificación transparente, es decir, mostrar el plan al público. Este plan ya no será nunca más estático, sino dinámico, y se actualizará continuamente según la evolución del proyecto y el feedback de la comunidad. Para eso los elementos que forman el plan tienen estados: commited, proposed o deferred.

Una milestone saludable significa consumible, es decir, que pueda ser probada (testable) y que pueda ser demostrada (demo-able), y al mismo tiempo debe ser honesta, es decir, con un tiempo fijo de lanzamiento y un incremento en las funcionalidades. Con cualquier milestone de Eclipse los usuarios deben ser productivos. El software debe siempre ser continuamente consumible, continuamente interesante y debe continuamente escuchar el feedback.

Para conseguir estos objetivos los equipos de desarrollo tienen que consumir sus propios productos. Eclipse trabaja con un sistema de integración continua multi-componente (es decir cada componente, cada equipo, tiene su sistema de CI que se coordinan para dar el resultado final). La milestone se divide a su vez en dias y semanas. Cada dia un equipo debe consumir lo que ha creado el día anterior y comenzará a trabajar sobre esa base. A su vez, cada semana, los diferentes equipos comenzarán a consumir todo lo que el resto de equipos realizaron la semana anterior. Finalmente, el último gran salto es la milestone, en la que serán los usuarios finales los que consumirán el producto en el que se ha trabajado durante las últimas semanas. Todo esto lleva a un feedback continuo, primero el equipo, después el resto de equipos, para llegar finalmente al usuario final.

Finalmente el proceso termina con el end game. Este se divide en fases de pruebas y corrección de errores: test-fix-test-fix-test ... Eclipse no tiene una sección de testers. Todo desarrollador es un tester. El ritmo de hacer tests puede ser cansino, por ello no pasan más de dos días realizando tests y a continuación pasan a corregir errores. Una vez corregidos, se vuelven a los tests, y el ciclo continua. El ciclo se vuelve más duro y estricto conforme avanza el tiempo y se acerca la fecha definitiva. El número de bugs es menor, hay más revisiones y se controla mucho más el número de regressions.

Posteriormente Eric Gamma habla sobre la transición en productos comerciales hacia un Open Commercial Software Development, que según él (yo estoy de acuerdo) es el futuro del software comercial. El objetivo es conseguir la misma transparencia que hay en Eclipse pero en proyectos comerciales. Todo ello requiere que el proyecto comercial:

  • Ofrezca acceso directo al sitio web de los desarrolladores.

  • Ofrezca acceso al código fuente (o parte), que exista una comunidad, que los propios clientes puedan crear mejoras y parches, ...

  • Permita interactuar directamente con el equipo de desarrollo.

  • Ofrezca acceso a todas las versiones previas, milestones, betas o versiones de integración.



Creo que esto resume más o menos lo que es la charla de Eric. Parecen un conjunto de ideas muy a tener en cuenta, y que pueden ayudar a muchas organizaciones que realmente sufren para ser capaces de lanzar lo que inicialmente parece como una simple versión de producción pero que sin un proceso de desarrollo adecuado se puede convertir en un infierno que se alarga durante meses o incluso años.

domingo, enero 28, 2007

Sobre Eclipse RCP y la EclipseCon 2007

domingo, enero 28, 2007 por Martín

Estoy de suerte. Parece ser que este año me han vuelto a nominar para los Eclipse Awards Nominations dentro de la categoría de Best Open Source RCP Application. El año pasado por estas fechas estaba ya planeando el viaje. Mi ex-compañía y mis ex-jefes, se portaron fenomenal y pusieron su granito de arena, así que en primavera pude estar en California disfrutando de la EclipseCon.

Este año se celebra la EclipseCon 2007 aunque casi al 99.9% que no estaré allí, salvo sorpresa final. Las razones son varias, la más importante es que ya no estoy tan relacionado con la plataforma como estaba los pasados años. Una versión estable de jLibrary salió finalmente a la luz, así que el proyecto, en su parte cliente, se ha quedado más o menos estancado. Seguramente le dedicaré uno, o varios, post en el futuro, pero bueno, vamos, que por ahora sólo estoy trabajando ya en el servidor, para preparar una especie de entorno de pruebas para otras tecnologías interesantes como spring, ruby on rails, grails, etc.

Por otra parte, porque yo quería publicar este post para hablar de RCP. InfoQ ha publicado un estudio del uso de Eclipse RCP en la industria del mueble. El estudio es interesante porque muestra como integrar un CRM web existente basado en SugarCRM con Eclipse RCP, de modo que se aprovechan todas las ventajas de Eclipse RCP para ofrecer una aplicación de escritorio tradicional, mientras que se mantiene el servidor existente y todos sus servicios.

Si volvemos a echar un vistazo a las nominaciones de la EclipseCon 2007, veréis que realmente hay un mercado importante en cuanto a aplicaciones comerciales y despliegues en torno al concepto que plantea Eclipse RCP y a esta herramienta. De hecho el número de soluciones comerciales nominadas, supera y de largo al número de soluciones Open Source. Eso sí, me da la impresión de que faltan muchas empresas y productos en la lista. Pero aún así esto nos da una idea de que Eclipse RCP puede ser una opción muy interesante a a hora de crear un producto que pueda dar algo de dinerillo.

Pues ala, fin de la cuña publicitaria sobre Eclipse RCP :)

martes, julio 04, 2006

Software bajo demanda de verdad

martes, julio 04, 2006 por Martín

Y otro sobre Eclipse. Buscando descargas de Callisto me he encontrado con esto: Yoxos Eclipse on Demand. Es de lo mejorcito que me he encontrado en cuanto a descargas y configuración de entornos de desarrollo.

Vaya, que si vais a la página de Yoxos os encontraréis con una especie de Eclipse en web (mucho AJAX hay ahí) en el que podéis seleccionar todas las partes de Callisto que queréis y configuraros así vuestro entorno de desarrollo preferido. Por si fuese poco, en la parte de abajo podréis encontrar montones de plug-ins de terceros para de este modo crearos una super-distribución-personalizada-de-Eclipse. ¡Y encima el sistema te chequea las dependencias de manera automática!

Enhorabuena para Yoxos. Gran sistema, gran idea y gran producto.

Eclipse pone en evidencia a Microsoft

martes, julio 04, 2006 por Martín

La Fundación Eclipse lanzó hace unos días (el 30 de Junio) la versión 3.2 de la platforma Eclipse, con el nombre en clave de Callisto. Bajo este lanzamiento se recogen actualizaciones para 23 de sus proyectos liderados por 10 equipos de desarrollo diferente.

Eclipse, mucho más que un entorno de desarrollo de Java (sistemas embebidos, arquitectura, C/C++, PHP, ...) está metiendo cada vez más presión al entorno de desarrollo de Microsoft, Visual Studio. Según datos de la consultora Evans Data, Eclipse es ahora mismo el segundo entorno entorno de desarrollo más utilizado, por detrás de la suite de herramientas de Microsoft.

Pero mientras que los productos de Microsoft como Vista o Microsoft Office acumulan retraso tras retraso, la Fundación Eclipse ha conseguido coordinar todos sus equipos de desarrollo para realizar un lanzamiento con puntualidad británica. Mike Milinkovich, CEP de la fundación afirmó a The Register que la plataforma Eclipse debe ser ante todo predecible y fiable, y que con este lanzamiento lo han demostrado. Erich Gamma y John Wieland ofrecieron una presentación en la Java One 2006 en la que se explican los esfuerzos necesarios para coordinar este tipo de lanzamiento distribuido.

¿Debe tomar nota Microsoft?