Mostrando entradas con la etiqueta noticias. Mostrar todas las entradas

A los "mergenarios" nos encanta nuestro trabajo: desarrollar Plastic SCM un sistema de control de versiones distribuido (DVCS). Pero todavía nos gusta más compartirlo y enseñarte como todo puede ser más fácil si utilizas un control de versiones.

El próximo miércoles 27 de Febrero tienes la oportunidad de compartir una jornada de trabajo con nosotros en la Universidad de Valladolid(UVA).

La ETSI de Informática oferta actividades culturales durante los miércoles del curso 2012/2013 para todos sus alumnos y tenemos la inmensa suerte de estar entre los elegidos para impartir un taller. Toda la información la puedes encontrar aquí.

Ya sabes, elige tu arma... El resto lo ponemos nosotros!!!

Os esperamos a todos!!!

Para mantener Plastic SCM al día tenemos que integrarnos con una larguísima lista de productos de terceros: desde Issue Trackers (JIRA, Mantis, Bugzilla, Trac, VersionOne...) a CI systems (CruiseControl, TeamCity, FinalBuilder...) pasando por IDEs (IntelliJ, Eclipse... Visual Studio también) y sistemas de Code Review...

Por alguna razón los desarrolladores de estos productos no dejan de sacar nuevas versiones ;-) así que supone un enorme esfuerzo mantenernos al día, probar sus últimos cambios, implementar fixes, mejoras, etc, etc.

Por eso estamos buscando un "plugin hacker" que se una al equipo para trabajar a tope en todas estas integraciones.

Requisitos y habilidades

  • Pasión por el software -> te tiene que encantar probar nuevas cosas, estar al día de lo último, aprender nuevas herramientas de desarrollo, entornos... de todo
  • Más pasión por el software -> tendrás que usar macs, linuxes, windows... sin venirte abajo...
  • Buen nivel de Java -> muchos de los plugins están escritos en Java
  • Buen nivel de C# -> porque el resto de los plugins son en C#...
  • Sería estupendo que tuvieras experiencia haciendo plugins de Eclipse, o de IntelliJ, o integrando JIRA con algún control de versiones... vamos, haciendo justo lo que hacemos aquí...
  • Conocimientos de control de versiones: cuanto más sepas de git, mercurial, subversion, perforce, ClearCase y por supuesto de Plastic SCM... mejor!
  • Inglés -> lo usamos a diario, y para hablar con los desarrolladores de todos estos productos será importante

    Responsabilidades

  • Estar al día de todas las mejoras y versiones de los productos de desarrollo con los que trabajamos (y de los que no trabajamos también)
  • Mantener y actualizar los plugins e integraciones actuales
  • Crear nuevas integraciones para nuevos productos o para nuevas versiones de los productos existentes

    Interesado?

    Te ofrecemos un sueldo competitivo, oportunidades de seguir avanzando en tu carrera, un entorno de trabajo flexible (trabajamos mucho, pero somos flexibles) y la posibilidad de unirte a un equipo de trabajo muy motivado que crea un producto para desarrolladores (es un privilegio ser un desarrollador haciendo productos para developers) que compite y se vende en todo el mundo.

    Nos gustaría alguien que pudiera unirse a nuestro equipo principal en Boecillo (Valladolid) pero consideraremos también trabajar desde fuera.

    Si alguna vez has querido competir con los más grandes del sector ... es tu oportunidad. Mándanos tu currículum a cv@codicesoftware.com.

  • Año nuevo, vida nueva... así que si tienes ganas de cambiar y unirte al equipo que hace Plastic SCM... esta es una muy buena oportunidad... En Inglés, eso sí, que para este puesto nos hace falta... :)

    Description

    Plastic SCM is full featured distributed version control system, competing worldwide with best of breed SCM such as Perforce, ClearCase, Git and Subversion.

    Keeping plasticscm.com website looking fresh and clear is a big task. The site explains what is Plastic SCM all about and it has to keep the pace with our core development team, which currently is able to produce features faster than can be published! The site needs to be attractive to different audiences ranging from project managers to hard-core coders. This is why we are looking for a full-time Front End web developer to help us with the design and implementation of the site.

    The successful candidate will be passionate about coding and have an excellent eye for detail and an absolute commitment to making sure features on the website are well implemented and as bug free as possible.

    Key Responsibilities

  • Translating requirements and mockups into fully functioning features using HTML/CSS and JavaScript (new features, tutorials, campaigns and so on)
  • Day to day maintenance of the plasticscm.com websites and optimizing code for the best user experience
  • Working together with colleagues of product development, external agencies and marketing to improve usability and implement a/b tests
  • Eventually contribute to web interfaces in Plastic SCM, although initially plasticscm.com is the top concern

    Skills and Requirements

  • Expert in HTML, CSS and Javascript
  • Knowledge of version control systems
  • Excellent communicator with a pragmatic able to understand requirements
  • Solid experience with Javascript
  • Experience with graphical software (e.g. Photoshop)
  • Dealing with browser compatibility and implementing workaround
  • B.S. in Computer Science or equivalent degree would be a great to have (or equivalent work experience)
  • Deep understanding of the intricacies of rendering across browsers IE 7+ on Windows, Firefox, Chrome and Safari
  • Spoken and written English is a must since all the materials you'll handle and create will be in English
  • Design flair (yes, we need you to have a taste for beautiful interfaces...)

    Interested?

    We offer a competitive salary, with opportunities for career progression within our fast growing company. A flexible work environment and the chance to join a highly motivated team developing world class software, which is most likely a huge plus if you already live in Castilla y León. We need someone to join our HQ in Boecillo (Valladolid) although we're open to remote working alternatives after a initial on-site period. If you ever wanted to compete worldwide against the coolest product companies... the time has come!

    Send us a resume at cv@codicesoftware.com

  • Códice Software desarrolla Plastic SCM, un sistema de control de versiones distribuido (DVCS) para desarrollos de todos los tamaños con la mejor implementación de “ramas por tarea” y totalmente visual.

    ¿De qué va el puesto?

    Necesitamos un “ingeniero de soporte”. ¿Qué es eso? Pues un desarrollador de software (nuestros clientes son desarrolladores… así que hay que hablar su mismo lenguaje) al que le guste el trato con la gente, resolver problemas complicados, y ser la primera línea de nuestro equipo de desarrollo.

    Alguno estará pensando: “pero si eso de ser de soporte es responder preguntas aburridas por email… paso!”.

    Bueno, de eso no va el soporte de un producto como Plastic SCM. Va más bien de:

    • Que te llegue un equipo de 50 developers que quiere montar Plastic SCM en dos continentes diferentes con dos backends de base de datos, y hay que ponerlos en marcha en tiempo record.
    • Que otro día tengas que echar una mano para resolver bugs de concurrencia en un sistema Linux al otro lado del mundo.
    • Que en vez de cincuenta, sean 1200 developers (sí, mil doscientos) con una base de código más grande que todo lo que hayas visto y hablando un idioma que no conozcas.
    • Que tengas que escribir un blogpost para explicar un escenario de uso de cualquiera de las características del producto.
    • Que tengas que echar una mano para hacer un webinar (en Inglés) contando como usar las funcionalidades de Plastic SCM.

    En el día a día vas a necesitar:

    • Conocimientos de desarrollo
    • Trabajo en equipo: vas a trabajar con gente
    • Dominio el Inglés (lo vas a usar todos los días)
    • Y muuuuchas ganas de aprender, trabajamos en lo que nos gusta

    En tu incorporación pasarás por un intenso proceso de formación, trabajando codo con codo con nuestra estrella del soporte, con el que librarás todas estas batallas y muchas más.

    Necesita refuerzos! Y tú podrías ser la persona que está buscando!

    ¿Qué te ofrecemos?

    • Competir contra software de nivel mundial como Perforce, Git, Mercurial, Subversion, ClearCase, Team Foundation Server, AccuRev… Luchar contra los mejores del mundo en el sector, cada día.
    • Retos de programación, problemas de software complicados, que pondrán a prueba tu mente cada día.
    • Evolucionar en una carrera técnica: siempre en contacto directo con el cliente, siendo pieza clave para que nuestros usuarios estén contentos.
    • Flexibilidad y libertad: controlar, de verdad, cómo y cuándo trabajas.
    • Incorporarte en un gran momento cuando todavía se puede ser parte del núcleo.
    • Remuneración económica muy competitiva.

    ¿Qué buscamos?

    Necesitamos ingenieros con talento y apasionados, ansiosos por unirse a nuestro equipo y hacer grandes cosas, y lo suficientemente locos como para competir contra el resto de grandes desarrolladores SCM.

    Necesitamos que demuestres amplios conocimientos en desarrollo de software, unas excelentes habilidades de programación y nociones en diferentes sistemas operativos así como en herramientas de SCM.

    Añade capacidad de comunicación y que hables Inglés muy, muy bien.

    Estamos interesados en perfiles y niveles de experiencia muy diversos, así que si de verdad te gusta desarrollar software, envíanos tu currículum a cv@codicesoftware.com y cuéntanos por qué eres el desarrollador que nos falta.


    Y llegamos al final de la serie. He intentado cubrir con una visión general todo el ciclo de trabajo que realiza el equipo de Plastic SCM, para sacar adelante el producto: herramientas, test, documentación.
    ¿Qué me falta por contar? Pues cómo sacamos una nueva versión de nuestro producto.

    Nueva Release

    Una vez que hay un número de tareas terminadas, probadas por Bamboo, revisadas y validadas… se crea una nueva release. Durante años se hacía una release nueva a la semana, muchas veces interna, otras veces la publicaban en la web. Con esto se pretendía tener:

    • Visibilidad de todo el proceso de trabajo (medible en releases) 
    • Solución de respaldo (frente a imprevistos) 
     Desde hace más de medio año dejaron de hacer releases semanales y pasaron a realizar una nueva release cada 24 horas. Sí, una cada día y no, no están locos al final de cada sprint. Cada día integran las tareas que se han sido revisadas, validadas y han pasado los tests.
    Uno de los desarrolladores es el encargado de las releases o “integrador”.("The IntegraTHOR") En muchos equipos “top-agile” esto parece que no encaja, pero se trata de la base del proceso de integración controlada por el que primas versiones estables ante todo.

    Test de Release

    Es una de la tareas del integrador y tiene su sitio de honor porque es donde se dispara toda la artillería de testing.
    Se pasan todos los tests automáticos en todas las combinaciones soportadas.
    • Smoke tests: en todas las plataformas y backends (bases de datos) soportados. 
      • Windows: desde W2k (que todavía soportan porque son unos nostálgicos), XP, W2003 server, 2008, Vista, 7 y ahora W8. 
      • Mac OS X 
      • Un montón de “sabores” de Linux: openSuSE, ReadHat, Ubuntu.
    Combinando arquitecturas 32 y 64 bits (y en ocasiones SPARC 64 aunque hace tiempo que no están incluyendo este juego de pruebas).
    Se usan los mismos juegos que usamos para “Bamboo” más otros como tests de instalación en línea de comandos, tests de “restart”, es decir , reinician el servidor a mitad de cada test para comprobar que no hay problemas de cachés y juegos especiales de merge y localización. 

    • GUI tests: ahora lanzamos el mismo juego que usamos durante las pruebas de “Bamboo” sobre todas las plataformas soportadas (no sólo una) para asegurar la compatibilidad. Han lanzado juegos especiales para la Shell Extension, plugins para Eclipse, Visual Studio, etc.
    • Performance tests: usan Amazon EC2 para esto, tests especialmente diseñados para asegurar que no se rompe el rendimiento de ciertas operaciones básicas con gran carga de datos. Miden también memoria y uso de CPU. 
    En total los Tests de Release necesitan más de 24h para ejecutarse, pero con 7 servidores y un buen número de máquinas virtuales se pueden reducir a aproximadamente 6 horas.
    El siguiente objetivo es usar mucho más las máquinas en cloud y reducir el tiempo a menos de 1h antes de que acabe el año, lo que les dará mucha más flexibilidad en la creación de las releases. Utilizan herramientas como FxCop para mantener la limpieza del código. NCover para medir la cobertura de sus tests y medir la complejidad ciclomática del código.

    Tareas del Integrador

    Las ventajas son muchas, pero la más importante es que tienen un responsable encargado de avisar de lo bien (o menos bien) que ha ido la release.

    El trabajo del integrador es, en esencia es como un guardia de tráfico:
    • Coger cada tarea, integrar su rama. Sólo coge ramas que hayan pasado todo el proceso de test, revisión y validación. Vigila que las tareas pasen por cada uno de sus estados: de Open a Resolved, Reviewed y Validated. Y además que estén correctamente introducidas en el control de tareas para posteriormente obtener estadísticas útiles.
    • Encargarse de que los conflictos de merge se resuelvan bien y hacer saltar las alarmas ante cualquier problema (es una fase más de revisión). 
    • Pasar un juego inicial de tests: todos los unitarios y smoke lo más rápido posible (usa unas 6 máquinas para esto, reduciendo el tiempo de “smoke” a menos de 20 minutos). 
    • Pasar y monitorizar todos los Tests de Release
    • Crear las Release Notes
    • Generar los binarios de release. 
    • Actualizar los servidores internos. 
    • Lanzar la subida de la nueva release a la web.
    • Dirigir el test manual, supervisión y control de bugs detectados
    El integrador es el último responsable de que la release vaya bien, de que se cumplan los criterios de calidad, de hacer saltar las alarmas si algo no va bien, de mantener siempre funcionando el juego de tests de release (ya sea haciendo el tareas de mantenimiento o asignando a miembros del equipo dichas tareas). Dada la posición privilegiada del integrador, tiene unan visión global del proyecto, por lo que es capaz de detectar puntos de mejora en el proceso y de sugerir nuevas funcionalidades, mayor cobertura en los tests, etc.

    Conclusión

    Como habeis podido leer, en el proceso de trabajo tiene un peso muy importante toda la parte de pruebas, con un número bastante alto de tests automáticos que completan con tests exploratorios. Soportamos muchas plataformas y cómo ya hemos dicho la calidad es una constante en nuestro trabajo. Nuestro proceso tiene que seguir mejorando mucho porque Plastic SCM compite codo con codo con productos como Perforce, ClearCase, TFS, Subversion o Git.
    El equipo de desarrollo es el más pequeño que el de ninguno de ellos, pero Plastic SCM cuenta con una lista de características de control de versiones más amplia.
    No es un trabajo sencillo, pero se ve que les encanta su trabajo y se esfuerzan  cada día por ser los mejores.
     ¿Te gustaría venir a conocernos?

    En el anterior post el tema fueron los test, en este será el DoD (Definition Of Done ) dentro del ciclo de trabajo de Codice Software.
    En el proceso de mejora continua de Plastic SCM han incorporado dos nuevas actividades:

    Revisión de Código de cada Tarea

    Todas las tareas, independientemente del tipo que sean, se revisan. Al escribir una nueva tarea en su propio issue tracker, TTS, le asignan el revisor de la misma y dentro de su planificación le reservan el tiempo correspondiente a la revisión.

    El code review de cada tarea se puede hace con el sistema incluido en Plastic SCM, o con simples notas añadidas desde la vista de WebUI, cómo se puede ver en la siguiente imagen.

    Code reviews on WebUI (Plastic SCM)


    Validación de cada Tarea

    Una vez revisada la tarea, otro miembro del equipo que tiene asignada la validación, coge la tarea y verifica que hace efectivamente lo que tiene que hacer.
    Busca errores típicos que un test no encontraría:

    • un label mal puesto en un formulario
    • errores ortográficos
    • tab orders rotos
    • código que no tenga ningún sentido
    Si el resultado es un bug se intenta reproducir de nuevo y se verifica que no vuelve a suceder. Todo el equipo está metido en las actividades de verificación y validación.

    ¿Que obtienen?

    Pues sobre todo implicación en el proceso de calidad. Todo el equipo está concienciado y sabe que no hay labores de “tester”. La calidad es indiscutible en Plastic SCM

    Al implantar el proceso completo con la validación/revisión de las tareas se ha ralentizado mucho el proceso completo de desarrollo. Hay que hacer estimaciones teniendo en cuenta estas dos nuevas fases para cada una de las tareas.

    Han sido un par de semanas a ritmo más lento, y sin duda han sufrido un impacto en el número de tareas cerradas, pero la idea es evitar regresiones, bugs, …

    Ahora están muy contentos porque notan que vuelven a coger velocidad de nuevo. Revisión y Validación están completamente incorporados a su flujo de trabajo.

    Y seguimos desgranando el ciclo de trabajo de Plastic SCM!!! Aún hay más!!!


    Ya conocemos los inicios de Plastic SCM, ahora veamos cómo trabajan.

    Las armas del equipo de Plastic SCM son muchas y variadas. Son guerreros preparados para cualquier batalla :P. Pero hay tres que destacan por encima de todas, son las que utilizan a diario:


    TTS

    TTS es su propio issue tracker con el que manejan todas las tareas. TTS son las siglas de Task Tracking System.  La primera versión de TTS data de 2001!!. La desarrollaron David y Pablo.



    TTS, no es un producto comercial, aunque muchas veces han pensado en que sería un buen complemento para Plastic SCM. Puede que una de las razones para no hacerlo, es que saben el trabajo que hay detrás del lanzamiento y el mantenimiento de un producto.
     Dicho esto, TTS está en el ciclo de mejora continua. El equipo propone ideas que se valoran y se van implementando.
     ¿Pero qué contiene el TTS? Pues todas las descripciones de:
    • Información de Bugs: priorizados usando el cálculo del user pain. Basado en este artículo de Jonathan decidieron utilizar estas reglas para pensar de manera más estructurada, y no simplemente aventurarse en la calificación de las incidencias con un muy alto o muy bajo. 
    • Nuevas tareas: suelen llevar un análisis y/o un diseño asociados, normalmente bastante visuales, ya sea en un documento o en la wiki, dependiendo del ánimo de quien escriba. 
    • Rendimiento:horas estimadas vs horas trabajadas. Las trabajadas (un poco anti-Scrum) les sirven para tener una base de datos de estimaciones propias muy buena, muy Steve McConnell

    Wiki Interna

    En al wiki se guarda y actualiza información acerca de documentación del proyecto, artículos técnicos,  infraestructura, y un divertidísimo apartado con frases míticas del equipo:
    "No he pasado los test, pero este cambio no puede romper nada...

    fatal error
     "Es un fallo muy raro que no le va a salir a nadie..."

    El arma secreta

     Dentro de las herramientas ocultas existe una poderosa hoja de cálculo. Es su particular gurú que les ayuda a hacer el cross-check del plan, la estimación de las tareas en horas (con PERT) y alguna que otra banal tarea. Creo que la erradicarán cuando terminen Plastic SCM version 9.

    En el siguiente capítulo hablaremos de la parte de test dentro del ciclo de trabajo de desarrollo.

    Ha pasado casi 1 mes desde que hicimos el anuncio oficial de Plastic SCM Community Edition en nuestro blog en inglés.

    Aunque somos una empresa española nuestra audiencia y nuestros usuarios son la mayoría de fuera y de ahí que siempre publiquemos primero en inglés.

    Pero me parece que no viene mal incluir, aunque sea con un poco de retraso, la noticia del lanzamiento aquí.

    El objetivo de Plastic SCM Community Edition es llegar a un número elevado de equipos de desarrollo pequeños y medianos (de ahí lo de hasta 15 usuarios de la licencia gratuita). Plastic es un sistema SCM de última generación (distribuido, con muy buen soporte de ramas, etc, etc) y nuestro objetivo con esta iniciativa es llegar a muchos equipos pequeños (que son mayoría en todo el mundo) dentro de empresas. ¿Por qué esto de "dentro de empresas"? Pues porque para proyectos open source, a pesar de que Plastic es ilimitado y gratis para ellos, ya hay alternativas excelentes como Git y Mercurial que han nacido en el entorno OSS y que están pensados para ese tipo de proyectos. Sin embargo Plastic ha sido diseñado y desarrollado para empresas. ¿Cuál es la diferencia? Pues (generalizando) que características como la seguridad basada en ACLs, integraciones nativas con los IDEs, almacenar los datos en bases de datos relacionales estándar (a elegir: Firebird, MySQL, SQL Server, Oracle e incluso SQLite) y por supuesto nuestra cuidada interfaz gráfica han sido una prioridad para nosotros y algo que sabemos que los desarrolladores valoran cuando buscan un sistema para su trabajo. La propia gestión de ramas (inmutables y persistentes en Plastic contra mutables y un potencialmente volátiles en Git, por ejemplo) está más orientada al uso en empresas.

    Normalmente las empresas buscan herramientas que sean fáciles de poner en marcha, que tengan soporte comercial de primer nivel, que no les den muchos quebraderos de cabeza... y eso es lo que ofrecemos con Plastic para todo tipo de empresas y con CE para las más pequeñas.

    Además consideramos que la situación económica actual fuerza a muchos equipos a no gastar dinero en software, de ahí también la iniciativa: facilitar y universalizar las mejores prácticas de SCM.

    Plastic evoluciona muy rápido y podéis estar al día de todo lo que hacemos a través de twitter (@plasticscm).

    Espero que nos ayudéis a extender el mensaje!
    La Gestión de Configuración de Software (Software Configuration Management, SCM, o Source Code Management para los hackers de verdad) existe ya desde hace una buena temporada y ha ido evolucionando lentamente desde los lejanos días casi prehistóricos en los que era casi una labor manual hasta la brillante actualidad de los sistemas DVCS (Distributed Version Control System).

    Todos habéis usado al menos uno de los SCMs de la lista siguiente pero, ¿eres consciente de lo viejo que es el sistema que usas? ¿Conoces los grandes nombres? Vale, pues voy a intentar hacer una breve recopilación.

    A grandes rasgos…


    En el diagrama he colocado la mayoría de los principales nombres de la historia de los SCM. Sí, sí, ya sé que falta StarTeam, falta el nuevo sistema de IBM, ¿cómo se llama? RTC? Pero es que no me caben todos así que he dejado a los más feos fuera de la foto :P. En cualquier caso, escribe un comentario para hablar de tu sistema favorito (o el que más odias, o el que más has sufrido) tanto si me lo he dejado como si me he acordado de él...



    Por si todavía te sientes bien usando uno de los “old irons” (hierracos :P), he añadido unas fotos debajo de cómo eran los teléfonos móviles de la época… para que no te quede más remedio que sentirte viejo y totalmente desactualizado :P.

    Vamos, que si todavía estás usando CVS y piensas que “vale, está bien”, echa un vistazo justo debajo de “CVS” en el gráfico … ¿No te sientes como el protagonista de Wall Street, el dinero nunca duerme (Gordon Gecko/Michael Douglas) cogiendo el teléfono-ladrillo antes de salir de la cárcel? Pues eso. ;)

    Nota: en los comentarios de mi post original en inglés algunos empezaron a protestar diciendo “eh, qué pasa, que porque un software haya empezado hace 20 años quiere decir que ya no sirve?”. Evidentemente no me refiero a eso. (Hay un comentario muy gracioso de un tío que usa el “grep” y protesta amargamente… para troncharse). El tema es que cuando el sistema evoluciona, pues no hay problema, pero hay sistemas en este dibujo de arriba que llevan muertos, sin evolución, con diseños anticuados, desde hace muchísimos años, y deformando la forma en la que los desarrolladores ven lo que es un control de versiones… A eso me refiero…

    La prehistoria


    Hubo un tiempo en el que las versiones se guardaban a mano. Vale, para muchos de vosotros ese tiempo no eran los 80 sino hace mucho menos, cuando en la universidad guardabais las prácticas con nombres como practica.zip, practica-version2.zip, practica-buena.zip, practica-buena-de-verdad.zip… Bueno, pues lo creáis o no, había un tiempo en el que la gente trabajaba sin SCM… era un tiempo sombrío y los programadores vivían en cuevas…

    SCCS


    Nota: añadido por petición de los lectores más nostálgicos!

    En 1972 cuatro de los mejores hombres del ejército de los Estados Unidos que formaban un comando.... Espera! Para! Que me he equivocado de película...

    En 1972 apareció SCCS y se quedó con el mejor nombre "Source Code Control System" así que a partir de ahí los demás han tenido que inventarse otros nombres porque ese ya estaba cogido... ;) Lo más interesante, además de ser uno de los primeros de verdad, es que su formato interno sigue usándose por TeamWare y BitKeeper. Más allá de eso... SCCS está ya fuera de combate, pero la historia no estaría completa sin él. (Gracias a los lectores por las notas!).

    RCS


    Y entonces llegó 1982 y RCS vio la luz (bueno, y naranjito, pero esa es otra historia). RCS no es un gran avance tecnológico pero todavía lo puedes encontrar en diferentes distribuciones de Unix. Es sencillo y va directo al grano.
    Una buena característica era que los cambios de texto se almacenaban como deltas (muy importante teniendo en cuenta que los discos de la época no eran muy grandes). Los deltas todavía se usan actualmente en la mayoría de los SCMs.

    Algunos inconvenientes y carencias que merece la pena mencionar:
  • Sólo soporta texto
  • No hay repositorio central. Cada fichero controlado tiene su propio repositorio en el formato de un fichero RCS, guardado cerca del propio fichero. Por ejemplo, el fichero RCS para /usr/project/foo.c será /usr/project/foo.c,v.
  • Para crear un workspace (espacio de trabajo) los programadores creaban links simbólicos a los directorios RCS. Ejemplo: symlink de /usr/home/John/RCS a /usr/project/RCS.
  • La nomenclatura de versiones y ramas es… hostil. Una versión podría llamarse 1.3 y una rama 1.3.1 y una versión en la rama 1.3.1.7.

    La época clásica


    En el mundo de los SCM, la época clásica fueron los 90.

    CVS


    Todo empezó con CVS (Concurrent Version System) en 1990. Era capaz de gestionar múltiples versiones desarrolladas de forma concurrente en diferentes máquinas y almacenadas en un servidor central. La era cliente-servidor estaba naciendo y los desarrolladores sacaron partido de ello.

    CVS era capaz de gestionar versiones de forma decente. Incluso soportaba ramas y merges (branching and merging) aunque no era muy bueno haciéndolo. Y esa es una de las razones por las que hay tantos programadores a los que les da miedo la letra “B” y la letra “M”… :P

    CVS no trazaba cambios en directorios o en nombres de ficheros (¡olvidad los refactors!) y necesitaba hacer bloqueos de todo el repositorio para muchas operaciones. CVS está totalmente desactualizado ahora pero… ¡funcionaba en los 90! Regla de oro: si estás usando CVS… no le des muchas vueltas… ¡¡cambia a otro sistema moderno!! Cualquiera (repito, cualquiera) será mejor. (Esto va dedicado a los equipos que evalúan 3 SCMs, encuentran pegas a todos y … ¡¡siguen usando un CVS o un VSS!!. En fin.).

    PVCS


    Polytron Version Control System (PVCS) vio la luz en 1985 y después fue cambiando de mano en mano a través de compras de empresas y fusiones: Polytron, Sage, Merant y finalmente Serena.
    Es un sistema viejo y desactualizado, inicialmente diseñado para evitar desarrollo concurrente usando bloqueos de ficheros, pero todavía mantenido por Serena Software.

    Clearcase


    En 1992 nació una de las mayores bestias de la historia del SCM. Clearcase estaba claramente adelantado a su tiempo y para muchos es todavía el SCM más potente jamás construido.
    Sin evolución clara, demasiado caro y demasiado complejo de administrar (en los viejos tiempos tenías que compilar un nuevo kernel de Unix para que funcionase la bestia!), el bueno de CC ya no es el tío guay de la ciudad, de hecho casi ya no se puede leer nada sobre él en la red. Pero, es todavía muy bueno con ramas y merges y tiene algunas características únicas, como las legendarias “vistas dinánicas”. Aunque potente, CC viene de una época en la que el espacio en disco era muy escaso y las redes eran LANs, sin preocupaciones por cosas como la latencia o trabajar tras un firewall.

    Atria, el desarrollador original de Clearcase, se fusionó con Pure (cuando lo dirigía Reed Hastings, ahora el jefe de Netflix), luego fue adquirido por Rational y finalmente por IBM. Y entonces el poderoso Clearcase dejó de evolucionar. Bueno, evolucionó hacia UCM a principios de 2000, que básicamente sirvió para quitarle todas las características buenas y dejar sólo las malas, junto con un precio demasiado caro. No fue muy buena idea.

    A pesar de todo Clearcase sigue siendo uno de los SCMs más usados por grandes empresas en todo el mundo, y según los analistas, uno de los líderes en cuanto a facturación.

    VSS


    Todos los sistemas de mi lista han tenido su momento y ventajas claras respecto a sus predecesores. Todos menos Visual Source Safe. VSS ha sido un sistema flojo desde el primer día, forzando a los desarrolladores a coordinar su trabajo mediante bloqueos, prohibiendo el desarrollo paralelo y creando una cultura de “miedo al merge”. Nota: vale, ya sé que se puede llegar a hacer un poco de desarrollo paralelo con VSS configurándolo para trabajar sin el modo de bloqueo… pero vamos, que creo que es menos doloroso dormir en una cama de clavos.

    Lento, lleno de fallos, limitado por todos los lados, VSS ha sido uno de los sistemas más utilizados por los desarrolladores en Windows en todo el mundo (¡ojo! Por los desarrolladores EN Windows, no los desarrolladores DE Windows, que en Microsoft la gente de los equipos punteros jamás utilizó esta aberración). VSS todavía está en uso, extendiendo el dolor y el miedo entre ingenuos programadores de buen corazón.
    Pero sí que hay una cosa en la que VSS estaba por delante de su tiempo: debería pertenecer a la categoría de “la oscura edad media del SCM” (ver debajo) en lugar de a la era clásica.
    VSS, eso sí, es totalmente gráfico y esa ha sido una de las principales razones de que se haya usado tanto (eso y que venía con Visual Studio ;) ).

    Perforce


    Perforce (P4) es una de las empresas de software independientes que están totalmente centradas en SCM y que luchan por llevarse el oro del mercado SCM contra los grandes gigantes del sector. Es todavía uno de los líderes del mercado en el rango de empresas medianas con equipos grandes, y tiene una presencia muy fuerte en ciertos nichos de mercado, como por ejemplo el sector de los video-juegos.
    Cuando salió a mediados de los 90, Perforce era uno de los sistemas más potentes y asequibles hasta la fecha. Estaba infinitamente por delante de VSS y de SVN aunque nunca llegó al nivel de Clearcase (ni en funcionalidad, y me refiero a branching y merging, ni en precio y complejidad), pero podía machacarlo en precio, rendimiento y facilidad de uso.

    Al ser un sistema centralizado y no demasiado bueno con ramas y merges (las ramas se implementan como subdirectorios) Perforce no parece ser la mejor opción de futuro, pero es innegable que es muy sólido, muy maduro y muy bien establecido en el mercado. Eso le ayudará a seguir creciendo. Ahora mismo, Perforce es todavía el sistema que gestiona todos los grandes repositorios dentro de Google. No está mal, ¿no?

    Y llegó la edad media


    Un tiempo de oscuridad en la que la mayor parte de los avances previos se perdieron y sistemas claramente menguados florecieron…

    Subversion


    Subversion fue concebido como un “CVS mejorado” y sus desarrolladores lo lograron: es mejor que CVS. Punto.

    Mientras que sistemas como Clearcase eran ya perfectamente capaces de gestionar el desarrollo paralelo mediante branching y merging, Subversion (SVN) es el responsable de que una generación entera de desarrolladores se formase con la idea de que hay que evitr las ramas y los merges a toda costa. Esto creó un daño global que todavía persiste y sólo está empezando a curarse gracias al auge de los DVCS.
    SVN estaba cerca de P4 en características y se extendió como una enfermedad contagiosa: más de 5 millones de desarrolladores usan SVN cada día en todo el mundo. ¡¡Tremendo!!

    Subversion es muy sencillo y evangelizó a todo el mundo en el “desarrollo en línea principal” (mainline development model). Una técnica propensa a errores en proyectos que no sean de juguete, ayudó a crear técnicas como “integración continua” como forma de “evitar merges”. Aunque la idea es buena, muchos de los conceptos en las que se basa surgen únicamente de las limitaciones de SVN.

    El mismísimo Linus Torvalds cargó contra Subversion cuando presentó Git en 2006.
    La realidad es que Subversion ya no está de moda y la mayor parte de los proyectos open source importantes en todo el mundo se han ido de Subversion durante 2009 y 2010. Un buen síntoma de lo equivocado que Subversion estaba. Pero todavía está muy extendido y no será extirpado en décadas.

    AccuRev


    Aunque nació en una época de oscuridad marcada por SVN, AccuRev fue diseñado como una forma nueva de hacer control de versiones. Su forma original de hacer las cosas todavía es novedosa parra muchos desarrolladores.
    AccuRev tiene un soporte muy bueno de ramas (“streams” en su jerga) y de merges. Ha jugado un papel esencial ayudando a empresas a moverse fuera de Clearcase y de sistemas más antiguos como CVS.

    El Renacimiento


    Tras una época de oscuridad una nueva generación de sistemas SCM rompieron el “status quo”. “El mercado de SCM es muy maduro y estable” repiten todavía algunos analistas como loros, pero la nueva generación ha entrado en escena rompiendo con todo lo establecido.

    Capaces de romper las cadenas de Internet y de trabajar desconectados (unplugged, como las estrellas de rock más “cool”), la nueva generación es también excelente haciendo branching y merging, lo que se conoció como “la madre de todos los males” durante la anterior edad oscura. Estos sistemas han podido romper con el pasado y proclamar “las ramas y los merges son buenos” marcando una nueva dirección.

    BitKeeper


    BitKeeper fue uno de los innovadores en el área de los DVCS. Diseñado por Larry McVoy (que antes trabajó en TeamWare, el sistema interno de control de versiones de la mismísima Sun Microsystems, construido usando SCCS como base y con una larga historia de evolución por detrás) saltó a la fama en 2002 cuando los desarrolladores del kernel de Linux comenzaron a usarlo. Entonces comenzó una guerra de email con algunos programadores protestando por usar un sistema comercial para gestionar el desarrollo del proyecto open source más conocido del mundo. Las cosas se pusieron todavía peor en 2005 cuando las luchas entre los programadores principales del kernel fueron a más. BitMover, la empresa detrás del producto, se comenzó a preocupar por que hicieran ingeniería inversa a su código, cortó el soporte a los proyectos open source e irónicamente desencadenó la creación de Git para cerrar el hueco creado.
    Para más información echa un vistazo a http://en.wikipedia.org/wiki/Bitkeeper.

    Git


    Linus Torvalds, el mismísimo creador de Linux, diseñó e implementó la primera versión de Git (prácticamente durante un fin de semana, al puro estilo hacker) para dar a sus programadores del kernel una alternativa a BitKeeper. Linus no sólo hizo el diseño original (simple, sencillo… ¡¡genial!!) sino que fue vital para promover el proyecto con su estilo único (mira See http://codicesoftware.blogspot.com/2007/05/linus-torvalds-on-git-and-scm.html). Durante su famosa presentación criticó duramente (vale, insultó abiertamente) a CVS, Subversion e incluso Perforce. Dijo perlas como “Subversion ha sido el proyecto con menos sentido que jamás se ha empezado”, “si te gusta usar CVS es que deberías estar en un centro mental o algo así” y “Deja de usar Perforce, es triste, pero es cierto”. Puedes odiarlo o adorarlo pero está claro que Linus dejó algo muy claro: la edad media de los controles de versiones ha pasado y ahora los DVCS dominarán el mundo, erradicando el miedo ancestral al branching y merging, un concepto vital en todos los sistemas de control de versiones distribuidos.

    Durante los siguientes años, y especialmente desde 2009, todos los proyectos open source importantes del mundo migraron de Subversion a Git (y aquí www.github.com ha sido clave mediante un fantástico sistema de hosting) convirtiéndolo en uno de los SCM más guays y potentes del mundo.

    Git se basa en una estructura de grafo acíclico dirigido (DAG, directed acyclic graph) en el que la principal unidad de cambio es el changeset (o commit en su jerga). Git implementa merge tracking completo pero a nivel de “commit” en lugar de a nivel de revisión (como, por ejemplo, hace Clearcase). Es muy rápido y las únicas pegas son el manejo de ficheros grandes y la restricción de tener que replicar los repositorios completos.

    Git está claramente influenciado por sus raíces como herramienta de desarrollo del kernel de Linux y obviamente no es el sistema más fácil de usar del mundo. Pero definitivamente será el SCM de la próxima década. Recomiendo leer el siguiente libro, que me parece buenísimo: http://peepcode.com/products/git-internals-pdf.

    Mercurial


    Mercurial (Hg) fue anunciado en Abril de 2005, también a toda prisa tras la decisión de BitMover de eliminar el soporte de su versión gratuita. Hg es el otro DVCS open source junto con Git. Incluso pueden conectarse bastante bien: Scott Chacon, el “evangelista de Git” y uno de los mejores escritores sobre SCM que he visto, preparó una integración bastante buena: http://mercurial.selenic.com/wiki/HgGit.

    Pero Hg es bastante diferente de Git en cuanto a su diseño interno. Ambos comparten el concepto de commit/changeset como unidad de cambio. Git implementa sus commits basándose en árboles, cada árbol apunta a un árbol más antiguo y así sucesivamente (de ahí lo del grafo acíclico). Con Hg cada changeset es una lista completa de todos los ficheros y directorios, y se le llama revlog (internamente la implementación del propio revlog está basado en deltas por lo que el almacenamiento es eficiente).

    Para más información sobre Hg, incluyendo cómo funciona internamente, merece la pena ver http://mercurial.selenic.com/wiki/Design y http://mercurial.selenic.com/wiki/DeveloperInfo.

    Mercurial también proporciona un merge muy potente pero su sistema de ramas es un poco diferente a los otros controles de versiones. Tiene “ramas con nombre” pero la preferencia es crear un nuevo repositorio como rama separada en lugar de tener varias “cabezas” (heads) dentro de uno sólo.

    Joel Spolsky (el de joelonsoftware.com, un blog buenísimo) ha escrito un tutorial muy bueno sobre Hg (hginit.com). La empresa de Spolsky, Fog Creez Software, acaba de lanzar Kiln, un SCM comercial aprovechando el esfuerzo open source hecho con Hg… No es listo ni nada el tío, y nosotros desarrollando un SCM completo… :P

    Darcs


    Darcs (Darcs Advanced Revision Control System) es otro intento de quitarse del medio a SVN y a CVS. Empezó en 2002 y ha continuado evolucionando desde entonces, llegando a la versión 2.5 en Noviembre de 2010.
    Las mayores limitaciones de Darcs han sido siempre el rendimiento y su forma un poco diferente de manejar la historia: en lugar de hacer “snapshots” (commits o changesets capturando un estado completo del proyecto en un instante dado) maneja “patches” pero de un modo que hace que recorrer la historia sea difícil de entender (un estado concreto puede no haber sido nunca una situación real del desarrollo).

    Bazaar


    Bazaar (bzr) es otro DVCS open source que intenta traer un poco de aire fresco al mundo del SCM. A pesar de ser menos usado que Git y que Mercurial, Bazaar introduce características interesantes como la posibilidad de trabajar también de forma centralizada (de hecho los DVCS puros no consideraban tener servidores centrales en su diseño original).
    Bazaar ha sido desarrollado por Canonical (sí, la empresa de Ubuntu!) y se pasó a licencia GNU al principio de 2008.

    Plastic SCM


    Plastic es un DVCS diseñado para ser usado en empresas en lugar de en proyectos open source a diferencia de Git y Mercurial. La primera versión de Plastic salió a finales de 2006 centrándose en branching y merging, con trazabilidad de merge completa (merge tracking) y soporte de renombrados en los merges. Proporciona un entorno de trabajo fundamentalmente gráfico, con muchas visualizaciones como por ejemplo el árbol de historia en 3D o el “explorador de ramas”. Esto es uno de los puntos que lo diferencian de los DVCS open source que están orientados a usuarios que usan más la línea de comandos.

    El objetivo de los desarrolladores de Plastic (recordad que soy uno de ellos) es llegar a equipos pequeños y medianos y cerrar el hueco que había entre los grandes sistemas como Clearcase y los de menor nivel como SVN, con un producto tan potente como los primeros, más fácil de usar, rápido, pero asequible (de hecho hemos lanzado una Community Edition gratuita en Noviembre de 2010).

    Plastic se centra en el concepto de desarrollo paralelo y recomienda el uso del patrón de “rama por tarea” (feature branches). Puede gestionar miles y miles de ramas sin problema. Plastic también es distribuido, soportando desarrollo desconectado, haciendo “push” y “pull” de ramas y gestionando posibles conflictos.

    Team Foundation Server


    Microsoft también ha querido meterse en el mercado de SCM/ALM y lanzó Team Foundation Server (TFS). Un esfuerzo para curar el dolor creado por su propio demonio: Source Safe.

    A pesar de que TFS no es muy bueno como sistema de control de versiones (es el chico nuevo en el barrio SCM pero usando tecnología de la década pasada) viene con un montón de herramientas accesorias como gestión de tareas, sistema de test integrado, etc, al más puro estilo “paquete corporativo con todo en uno”.

    No harás muchas ramas ni muchos merges ni desarrollo distribuido si vas a TFS, pero quizá tu empresa ya lo tiene junto a su subscripción de MSDN.
  • En 3.0 hemos introducido en la GUI una característica que muchos usuarios estaban esperando: poder cambiar de vista activa usando teclas. Algo básico, pero que todavía no teníamos.

    Así que hemos desarrollado un "view switcher" (cambia-vistas): pulsando CTRL-TAB se muestra una ventana que te permite ir saltando de una vista a otra.

    He grabado un vídeo corto, esta vez en Mac OS X en lugar de en Windows, para que se vea un poco de cómo queda Plastic en Mac.

    Por cierto, que es interesante, para los desarrolladores de Mono, ver como su MWF queda con un poco de diseño ;)



    Queda bien, no?

    Tengo algún vídeo más en Mac, mostrando el branch explorer (de nuestro repositorio, así que montones de ramas), que subiré en los próximos días.

    Pero, primero, un vídeo más en Mac, esta vez mostrando la nueva "code review", una de las características importantes en 3.0. (Recordad que el vídeo se puede poner a pantalla completa y en HD)



    Lo bueno de esta característica es que todos los usuarios de Plastic tendrán ahora code review integrada, y además es, que sepamos, la primera code review distribuida...
    Una de las características más importantes que acabamos de sacar para 3.0 es el nuevo Xdiff. Lo llamamos "cross-diff" porque localiza código movido y lo solíamos dibujar en papel con líneas que se cruzaban entre el código original y el movido...

    Bueno, vamos a ver por qué esto es tan bueno...

    Empecemos con un trozo de código como el siguiente:



    Y entonces movemos un fragmento un poco hacia abajo:



    Y después de haberlo movido modificamos el código como se ve aquí:



    Y a ver qué es lo que puede hacer el Xdiff de Plastic!



    Como veis puede localizar código que se ha movido incluso aunque después se haya modificado. Y se puede hacer click en el botón de "mostrar diferencias" que lanza un nuevo "subdiff" con el fragmento que ha detectado como movido para poder ver en detalle qué ha cambiado.



    Mola, o no???

    Podemos detectar el código movido en cualquier lenguaje de programación porque el algoritmo no se basa en parsing sino en detección de texto plano (os suena Levenstein?? :-P).

    En el siguiente vídeo se puede ver el Xdiff en acción.



    Espero que os guste!
    ¡¡Plastic SCM 3.0 ya está disponible para descargar!!

    Nos ha costado casi 400mil líneas de código y 83 sprints (usamos SCRUM) llegar aquí desde la versión 1.0, pero 3.0 es la mejor "release" que hemos hecho hasta ahora.

    Por un lado tenemos muchas características nuevas: desde Xmerge/Xdiff (capaz de mostrar diferencias en los merges y en las diferencias, algo que ninguna otra herramienta del mercado tiene!) hasta revisión de código integrada, y por otro muchísimas mejoras de usabilidad (cosas que nos habían pedido varias veces, otras que hemos encontrado nosotros mismos) y como siempre de rendimiento (3.0 es un 30% más rápido que 2.9 en nuestras pruebas de carga).

    En Códice tenemos un equipo mucho más pequeño que el de nuestros competidores: desde Accurev (www.accurev.com) a Perforce (www.perfoce.com) pasando por Clearcase (el sistema más extendido a nivel empresarial, ahora de IBM), Team Foundation Server (el ALM de Microsoft, que a nivel de control de versiones es un chiste comparado con Plastic) e incluyendo Subversion y los otros DVCS open source como Git y Mercurial, todos tienen un equipo de desarrollo al menos cuatro veces más grande (echad un vistazo al número de 'committers' diarios en Git). Por eso estamos especialmente orgullosos de 3.0, porque nuestro 'pequeño equipo' es capaz de producir uno de los SCMs más avanzados del mercado: realmente Plastic proporciona de todo, desde distribuido (ningún otro sistema comercial excepto BitKeeper es distribuido, por mucho que diga su marketing engañoso! :-P) hasta manejo ágil y avanzado de ramas, representaciones gráficas, etc. La verdad es que un equipo más pequeño no es una desventaja, más bien todo lo contrario.

    Mi objetivo para las próximas semanas es reactivar el blog en español. La verdad es que casi todos nuestros clientes hablan inglés, pero creo que no viene nada mal reforzar un poco el "blog nativo". Espero contar experiencias sobre el desarrollo de 3.0, así como de nuestro propio proceso (SCRUM + branch per task + gestión de releases + testing!) (bendito testing automático!).

    Pero ahora vamos a por la 3.0, ¿qué hay de nuevo?

  • Revisión de código integrada (y distribuida): hace unos meses desarrollamos una integración con ReviewBoard. No está mal y aunque algunos de nuestros clientes lo usan (os suena el juego GuitarHero??? Pues la gente de Vicarious Visions usa Plastic + ReviewBoard) al final nosotros nunca lo pusimos en marcha. ReviewBoard, como casi todos los sistemas de 'code review', recibe un parche (patch) y es eso lo que analiza. Para nosotros lo natural es revisar ramas y changesets, y hacerlo de esa forma, no mediante un "intermediario". Así que añadimos esa funcionalidad para 3.0: desde una rama puedes crear una "code review" y añadir comentarios. Muy sencillo. Y lo mejor: también se replica! Es decir, que acabamos de lanzar el primer sistema de code review distribuido del mercado. :)


  • Shell extension: integración con el Shell de Windows. Nada nuevo porque seguro que todo el mundo ha usado TortoiseSVN (o TortoiseHg, muy común en estos días también), pero algo que nos habían pedido varias veces. Por supuesto, no nos hemos limitado a las operaciones básicas y ahora puedes usar todo Plastic desde la "shellext": sacar vistas, gráficos, etc, etc... Eso ya no lo hacen las "tortugas" :)

  • Nuevo importador para Subversion. Bueno, en primer lugar hemos vuelto a escribir el "SVN importer" (los desarrolladores que han trabajado en esto durante meses bromeaban diciendo que ya no trabajaban en una empresa de software sino en el negocio de la "importación-exportación" :-^) que ahora es más rápido, más usable (el wizard es mejor, también la ayuda) y soporta conexión directa mediante el ra_api (raw access) en lugar de sólo automatizando la línea de comandos. Lo hemos probado con más de 100 repositorios de SVN con éxito.

  • Importador de Perforce: desde que estuvimos en GDC 2010 han venido muchas empresas del sector de los video-juegos interesadas en abandonar Perforce para venir a Plastic. ¿Los motivos? Los de siempre: necesitan branching y merging a tope, como todo el mundo! Y necesitan un sistema distribuido, y que sea gráfico... Bueno, el caso es que hemos desarrollado un importador de Perforce que simplifica el proceso de migración. Listo en 3.0.

  • Nueva vista de "cambios pendientes" en la GUI (y en la shellext): ahora los checkouts + los cambiados (modificados fuera del control de plastic, por ejemplo sobrescribiendo un fichero sin más) + los privados (y potencialmente pendientes de añadir) se muestran juntos y se les puede hacer "checkin" a la vez. Mucho más cómodo que antes, especialmente para usuarios SVN.



  • Xmerge / Xdiff 2.0: la joya de la corona en 3.0. Hemos estado desarrollando esta tecnología durante mucho tiempo, y por fin ve la luz. ¿De qué va esto de "cross-merge" y "cross-diff"? Símplemente, de detectar código movido en las diferencias. Editas un fichero, mueves un trozo de código de sitio, lo modificas, y Plastic sigue sabiendo de dónde viene. Y lo mejor, que es capaz de hacerlo con los "merges" también. Suena pretencioso pero... ¡¡nadie más es capaz de hacer esto a día de hoy!! Merece la pena probarlo.



  • External data storage: una característica totalmente pensada para los equipos de desarrollo de videojuegos que trabajan con ficheros enormes. La idea es poder "extraer" revisiones de la base de datos del repositorio de modo que dejen de ocupar en el "servidor central" pero que todavía sigan siendo accesibles, ya sea bajo demanda (el usuario accede a esa revisión y Plastic le pide que meta un DVD con esos datos, vamos, un DVD o lo que sea) o centralizado (se monta un disco externo en el servidor y se ponen ahí los datos extraídos en lugar de en el repo principal). Útil cuando se manejan ficheros muuuuy grandes.

  • Annotate en la GUI: ahora el annotate (cm annotate or cm blame) ya no sólo es accesible en la línea de comandos (y en IntelliJ) sino también desde la herramienta gráfica.


  • SQLite backend: otra base de datos más a la lista! Hasta ahora un servidor de Plastic se podía configurar para trabajar contra Oracle, SQL Server, MySQL y Firebird, y a partir de ahora SQLite está también en la lista. Yo lo llevo usando desde hace 3 meses y va muy bien (tan rápido como un MySQL para uso individual), pero claro, está pensado no para servidores centrales (no admite acceso concurrente!) sino para montarte un servidor en un portátil y replicar.

  • Selector explorer: algo que también nos habían pedido 1 millón de veces: poder explorar selectores, ramas, etiquetas, sin tener que bajar el contenido. Sirve para experimentar con selectores y aprender mejor cómo funcionan.

  • Mejoras de rendimiento. 3.0 es al menos un 30% más rápido que 2.9 en situaciones de carga. ¿Qué quiere decir esto? Probamos Plastic con un servidor (un QuadCore con 4Gb de RAM, nada del otro mundo) y 100 máquinas cliente simulando usuarios a tope de carga (de hecho realmente la carga simulada es mucho mayor que la de un grupo de 100 desarrolladores, en nuestras pruebas generamos más carga en 20 minutos de test que un grupo de 150 programadores durante un día entero), y con esa configuración optimizamos Plastic y comparamos con otros sistemas, como por ejemplo Subversion. Publicaremos en las próximas semanas los números de Plastic vs SVN, pero os puedo adelantar que, literalmente, volamos mientras SVN se arrastra... y cuanta más carga, más rápidos nosotros y peor Subversion. También se aplica a operaciones individuales. Por ejemplo, un ciclo "add + ci" (añadir un workpace y hacer ci) es mucho más rápido ahora que con 3.0.

    Detallaré cada una de las características en los próximos días, mientras tanto, ¡¡descargad 3.0 y probad todas las nuevas características!! :)
  • Plastic SCM llega a su versión 2.9 y está listo para descargarse desde nuestra web: www.plasticscm.com.

    La nueva versión viene cargada con un buen número de nuevas características y también es mucho más rápida, especialmente bajo carga.

    Estas son algunas de las nuevas características:

  • Soporte de Oracle: hemos añadido Oracle a la lista de backends con los que PLlastic puede funcionar. Hasta ahora soportábamos MySql, SQL Server y Firebird (tanto servidor como embebido). Nos han pedido Oracle varias veces, especialmente desde grandes equipos así que por fin está disponible. Se trata posíblemente del gestor de bases de datos más conocido tanto por rendimiento como estabilidad y escalabilidad y puede usarse con servidores Plastic en Windows, Linux y MacOS X.

  • Integración continua con Pulse: hemos desarrollado un plugin para el producto de integración continua de Zutubi. Hasta ahora ya nos integrábamos con productos como CruiseControl y FinalBuilder, pero Pulse es quizá mi favorito y estamos trabajando en ampliar la integración para que soporte patrones como rama por tarea, y así poder implantarlo internamente. Otros sistemas, como Hudson, también funcionan con Plastic.

  • Servidor proxy: otra de las características más esperadas. Ahora se puede configurar un servidor proxy de Plastic para reducir el uso de red mientras se trabaja conectado a un servidor central. El servidor proxy es muy sencillo: símplemente descarga datos bajo demanda que le solicitan los clientes y los cachea para el siguiente uso. Con esto se ahorra uso de red lo que puede ser crítico cuando se acceede al servidor a través de VPN o conexiones lentas. Nota: Plastic puede funcionar en modo distribuido pero algunas empresas prefieren llevar ciertos proyectos de forma centralizada, y es ahí donde el proxy server juega un papel importante.

  • Sparse tree y cloaking: que se traduce por algo como árboles parciales y evitar que ciertos ficheros se actualicen. Mediante un nuevo fichero de configuración llamado cloaked.conf es posible definir reglas para indicar qué ficheros se pueden descargar y qué ficheros no, es algo complementario a lo que ya se puede hacer con los selectores, pero permite funcionalidades diferentes. Por ejemplo, se puede descargar un árbol de directorios y luego indicar que ese árbol está cloaked lo que quiere decir que no se volverá a actualizar. Es útil para mejorar el rendimiento cuando se trabaja con proyectos muy grandes. Sólo para usuarios avanzados.

  • Uso de memoria en la replicación. El uso de memoria en todo el proceso de replicación se ha reducido considerablemente, haciendo que el proceso sea mucho más rápido y eficiente que antes. Ahora se puede replicar un repositorio completo sin que el servidor se entere a nivel de uso de memoria!

  • ¡Eliminación del workspace server! Sí, como leeéis, el hemos eliminado el componente servidor de workspaces del mapa. Bueno, de hecho no se ha ido sino que se ha trasladado a cada cliente, de modo que el rendimiento aumenta de forma espectacular. ¿Qué significa esto? Echa un vistazo a un nuevo workspace y verás que contiene un directorio (oculto) denominado .plastic. Contiene información sobre el workspace como el selector y el árbol de la copia de trabajo. Toda esa información solía estar en el servidor y ahora se ha movido al cliente, lo que supone que se reduce significativamente el uso de red, lo que podrán apreciar especialmente los usuarios de redes VPN (en LAN la velocidad ya era tan alta que no se apreciará mucha diferencia). Nota importante: cuando te actualices de Plastic 2.8 a 2.9 verás, en el primer arranque, un diálogo como el siguiente que indicará el progreso de la conversión de workspaces.


  • Workspaces compartidos: tras las modificaciones realizadas en los workspaces ahora se pueden compartir: se puede ubicar un espacio de trabajo en un directorio compartido (por Samba o por NFS, por ejemplo) de forma que más de un usuario pueda acceder a él e incluso actualizarlo y acceder a información de Plastic desde varias ubicaciones. Antes se podía hacer registrando el workspace en diferentes máquinas, pero se podía llegar fácilmente a condiciones en las que el sistema no se comportase bien porque para Plastic eran workspaces diferentes. Lógicamente es una característica para usar con cuidado: es útil para usarlo con sistemas de compilación, o de paso a producción, no para trabajar a diario ya que el objetivo de un control de versiones es precísamente coordinar diferentes copias de trabajo, ¡¡no trabajar sobre una misma!!

  • Exploración de changesets: una de las nuevas características más potentes. Ahora se puede caminar por las ramas cambio a cambio (changeset a changeset) leyendo la historia que cuentan. Escribiré otro post sobre esto pero para hacer una breve introducción: en tu propia rama de tarea eres libre de hacer tantos checkins como quieras, pero todos esos checkins deberían de tener un significado, ir describiendo cambios uno a uno, de modo que todos tengan una lógica. Supongamos que vamos a hacer un refactor importante, de muchos ficheros, si comparas el contenido de la rama una vez que has terminado verás tantísimos cambios que será difícil de entender lo que has hecho, sin embargo si has podido descomponer el refactor en pequeñas operaciones y has ido haciendo checkin de cada una de ellas, se podrá revisar posteriormente los cambios que has hecho, como si fuera ver una repetición de la jugada. El mecanismo de commit no es nuevo, por supuesto, pero la herramienta de recorrido de cambios permite que se usen para describir cambios casi contando cómo lo has ido haciendo, dejando registrado no sólo lo que haces sino cómo lo haces, con todas las aplicaciones que eso tiene.



  • Mejoras en el branch explorer: siempre en evolución, hemos añadido la capacidad de búsqueda que permite ir navegando las ramas que cumplan el filtro, lo que es mucho más útil que antes. También la posibilidad de hacer clic sobre los link de merge y ver de dónde vienen y hacia dónde van. Y por último el editor de visibilidad que tantas veces nos han pedido y que permite ocultar ramas que no interese ver.





    Y estas son todas las funcionalidades importantes en 2.9 junto con un buen número de correcciones.

    Y por supuesto mejoras de rendimiento: probamos Plastic cada semana en un cluster con 100 nodos y bajo esa carga 2.9 es un 30% más rápida que 2.8. Recordad que Plastic 2.8 era ya 10 veces más rápido que SVN... así que calculad 2.9!!

    Y por supuesto a pesar de seguir creciendo Plastic es todavía fácil de usar y de instalar. Echad un vistazo al siguiente vídeo en el que se configura un servidor en menos de 45 segundos!! Y después se hace una importación inicial de código (algo que es muy común en cualquier evaluacion) durante el siguiente minuto!