Porque es dificil hacer proyectos colaborativos con Genexus?
Los que hemos intentado hacer proyectos con Genexus, trabajando con gente desde diferentes lugares, colaborando a traves de Internet, nos hemos encontrado con algunos problemas que a veces no son faciles de resolver.
Para ver la dificultades de trabajo en grupo con GeneXus y compararlo contra otras forma de trabajo es bueno ver algunos ejemplos:
El KBDoctor, por ejemplo se desarrollo utilizando Assembla entre tres personas y Visual Studio para programar. Cada día (en realidad, cada noche) publicábamos los cambios que programábamos en el repositorio y cada uno podía ver la ultima version y los cambios que había realizado los otros integrantes del grupo. El proyecto tiene la granularidad a nivel de archivo, por lo que es fácil subir solamente los archivos en los que trabaje. Si hay conflictos entre lo cambiado por dos integrantes hay que resolverlos.
Con GeneXus, en cambio la forma "oficial" de compartir es GXOpen, que permite subir XPZ (o sea conjunto de varios fuentes) y hay una sola version activa por cada proyecto.
Por ejemplo, baje el proyecto de GXWiki RC4, que tiene los fuentes del GxWiki. Encontré algunas mejoras que se podían hacer a la documentación de instalación, que servirían para que otros no tengan que perder tiempo en su instalación. Yo hice las modificaciones en mi KB.
Ahora, como subo esos cambios a GXOpen?. Tiene sentido que yo publique una nueva versión completa, cuando solo cambié algunos objetos?.
Estaria bueno poder hacer un repositorio donde yo pueda mandar los objetos que modifiqué y que los consolide, indique se hay conflictos. También debería poder sincronizar mi proyecto con el subido en GXopen, trayéndome solo los objetos que tienen diferencias.
Con GeneXus X, es mucho mas factible la realización de esto. Estoy a la espera que salga el tan esperado (por mi) Change Replicator para poder evaluarlo. No se sabe que funcionalidades tendrá, pero seguramente ayude a las tareas del desarrollo en grupos distribuidos.
Cuales serian mis requerimientos para una repositorio de proyectos?
* Poder sincronizar una KB local con un repositorio central
* Poder subir los cambios realizados desde la ultima vez que me sincronice.
* Poder bajar ver los cambios realizados por otros usuarios.
* Poder ver el resultado de la especificación/generación/compilación/ejecución de pruebas del repositorio.
* Poder volver mi KB a un estado anterior conocido (por ejemplo 2 dias atras).
* RSS con los cambios de otros.
* RSS con los resultados de los builds permanentes.
* Una interfaz web, para poder administrar proyectos, darle permisos a usuarios, poder subir documentacion y ese tipo de sutilezas.
* Poder registrar incidentes/problemas/nuevas features y poder asignarselas a personas del proyecto.
Si tenemos esto (que me animo a decir que es muy implementable) se nos facilitaría bastante el desarrollo en grupos mas numerosos.
UPDATE: No está muy relacionado pero me gustó el articulo que esta en http://www.ddj.com/hpc-high-performance-computing/208802468 que habla de desarroyo de aplicaciones en ambientes distribuidos.
Para ver la dificultades de trabajo en grupo con GeneXus y compararlo contra otras forma de trabajo es bueno ver algunos ejemplos:
El KBDoctor, por ejemplo se desarrollo utilizando Assembla entre tres personas y Visual Studio para programar. Cada día (en realidad, cada noche) publicábamos los cambios que programábamos en el repositorio y cada uno podía ver la ultima version y los cambios que había realizado los otros integrantes del grupo. El proyecto tiene la granularidad a nivel de archivo, por lo que es fácil subir solamente los archivos en los que trabaje. Si hay conflictos entre lo cambiado por dos integrantes hay que resolverlos.
Con GeneXus, en cambio la forma "oficial" de compartir es GXOpen, que permite subir XPZ (o sea conjunto de varios fuentes) y hay una sola version activa por cada proyecto.
Por ejemplo, baje el proyecto de GXWiki RC4, que tiene los fuentes del GxWiki. Encontré algunas mejoras que se podían hacer a la documentación de instalación, que servirían para que otros no tengan que perder tiempo en su instalación. Yo hice las modificaciones en mi KB.
Ahora, como subo esos cambios a GXOpen?. Tiene sentido que yo publique una nueva versión completa, cuando solo cambié algunos objetos?.
Estaria bueno poder hacer un repositorio donde yo pueda mandar los objetos que modifiqué y que los consolide, indique se hay conflictos. También debería poder sincronizar mi proyecto con el subido en GXopen, trayéndome solo los objetos que tienen diferencias.
Con GeneXus X, es mucho mas factible la realización de esto. Estoy a la espera que salga el tan esperado (por mi) Change Replicator para poder evaluarlo. No se sabe que funcionalidades tendrá, pero seguramente ayude a las tareas del desarrollo en grupos distribuidos.
Cuales serian mis requerimientos para una repositorio de proyectos?
* Poder sincronizar una KB local con un repositorio central
* Poder subir los cambios realizados desde la ultima vez que me sincronice.
* Poder bajar ver los cambios realizados por otros usuarios.
* Poder ver el resultado de la especificación/generación/compilación/ejecución de pruebas del repositorio.
* Poder volver mi KB a un estado anterior conocido (por ejemplo 2 dias atras).
* RSS con los cambios de otros.
* RSS con los resultados de los builds permanentes.
* Una interfaz web, para poder administrar proyectos, darle permisos a usuarios, poder subir documentacion y ese tipo de sutilezas.
* Poder registrar incidentes/problemas/nuevas features y poder asignarselas a personas del proyecto.
Si tenemos esto (que me animo a decir que es muy implementable) se nos facilitaría bastante el desarrollo en grupos mas numerosos.
UPDATE: No está muy relacionado pero me gustó el articulo que esta en http://www.ddj.com/hpc-high-performance-computing/208802468 que habla de desarroyo de aplicaciones en ambientes distribuidos.
Probaste alguna vez utilizando GxTend?
ResponderBorrarSiempre he pensado que debería existir una suerte de KB-Server basado en WebServices, con un GX-Flow como administración de los cambios para un manager.
ResponderBorrarPero en realidad a veces las necesidades son más mundanas. Como bien dices, a veces necesitamos que todos puedan pasar los cambios hacia una KB central y saber quien cambió que, generar un paquete de TRNs o de toda la KB para distribuir a los participantes del desarrollo, poder hacer "queries" a la KB del tipo "ultimos objetos modificados entre 2 Fecha-Hora", poder saber la versión de quien es el objeto que está corriendo, y un par de cosas que a veces ni necesitan la autorización de nadie, pero que aún así no las tenemos.
Anonimo:
ResponderBorrarNo he tenido oportunidad de evaluar GXTend. Me han hablado muy bien de ese producto y me gustaria poder probarlo en serio, con algun proyecto que trabajemos varias personas en diferentes lugares.
Diego:
ResponderBorrarTu idea es similar a lo que tengo en mente. Me da la sensacion que es una necesidad que esta madurando y deberian aparecer productos para cubrir dicha necesidad.
gracias por el comentario.