Desarrollo colaborativo con VS Anywhere (¡y sorteo de licencias!)

Ya sabéis que me encantan las aplicaciones colaborativas en tiempo real, ¿verdad? Bien, y si aplicamos este concepto a nuestro entorno de desarrollo favorito, Visual Studio, ¿qué podemos esperar? Pues seguro que un producto espectacular.

En este artículo vamos a ver echar un vistazo a VS Anywhere, un producto del que seguro habéis oído hablar,  que supone una revolución en la forma en que podemos colaborar en tiempo real con colegas y compañeros desarrolladores utilizando Visual Studio, sin importar donde estos se encuentren.

Pero antes de empezar, deciros que al final del artículo encontraréis las instrucciones para participar en el sorteo de 5 licencias de servidor por cortesía de VS Anywhere. ¡No dejéis de participar!

1. Qué es VS Anywhere

VS Anywhere es una extensión para Visual Studio 2013, 2012 y 2010 que permite que equipos de trabajo remotos colaboren sobre la misma base de código en tiempo real. Es decir, no se trata de una solución de control de código fuente o de simple comunicación: son desarrolladores que pueden estar tocando simultáneamente el mismo proyecto y viendo “en vivo” lo que otros hacen en el mismo.

Va mucho más allá que la simple compartición de pantalla o el control remoto de un equipo, es colaboración al puro estilo Google Docs, pero en Visual Studio y con herramientas específicamente diseñadas pensando en los desarrolladores.

Esto abre unas posibilidades interesantísimas en el campo de la colaboración para equipos de trabajo remotos, formación, consultoría, asistencia, etc. De hecho, algunos escenarios en los que VS Anywhere encaja de forma natural en equipos distribuidos que necesitan trabajar en tiempo real son:

  • Definición conjunta de arquitecturas o pruebas de concepto.
  • Coaching, tutorización y seguimiento.
  • Revisiones de código.
  • Transmisión de conocimiento.
  • Pair programming.
  • Pruebas de selección de personal.
  • Mentoring.
  • Soporte técnico y resolución de incidencias.

Se trata de un producto que se comercializa en régimen de suscripción mensual con costes por servidor (cloud/on premise) y usuario, pero es gratuito para estudiantes o proyectos open source. De hecho, es posible probarlo utilizando los servidores gratuitos de VS Anywhere, sólo hay que registrarse y descargar la extensión desde la galería de Visual Studio.

En su sitio web, vsanywhere.com, y en su sitio de soporte, http://support.vsanywhere.com, podéis encontrar documentación, vídeos, tutoriales y descripciones mucho más formales y concienzudas de lo que vamos a ver aquí 😉

2. Instalación

La instalación de la extensión puede realizarse desde el propio Visual Studio, accediendo a la galería de extensiones del entorno de desarrollo. Basta con buscar “VS Anywhere” y pulsar el botón de descarga correspondiente para que se instale automáticamente:

Búsqueda en la biblioteca de extensiones
Una vez finalizada la instalación y reiniciado el entorno, tendremos a nuestra disposición una nueva opción en el menú de Visual Studio, a través de la cual podremos acceder a las ventanas y herramientas de este complemento.

Menú VS Anywhere
Además de esta nueva opción en el menú, VS Anywhere añadirá a nuestro Visual Studio un par de ventanas nuevas, que pueden ser acopladas o movidas a donde más nos interese:

  • VS Anywhere control center, como su nombre indica, es la ventana desde la cual gestionaremos prácticamente todo: nuestros contactos, grupos, sesiones, servidores, etc.
  • Otra ventana llamada VS Anywhere a secas, que es donde se mostrará información genérica del producto, y desde donde realizaremos la interacciones vía chat con nuestros contactos o grupos de ellos.

Ventanas añadidas por VS Anywhere

Pero bueno, salvo curiosear por estas herramientas, nada podremos hacer si no nos registramos como usuarios de VS Anywhere, así que vamos allá…

3. Registro e identificación de usuarios

Obviamente, para poder colaborar en tiempo real con otros usuarios, necesitamos disponer de un servidor central que se encargue de coordinar la comunicación y acciones entre todos los extremos. Si nos interesan las opciones comerciales del producto, podemos contratar el servicio alojado en la nube o bien utilizar infraestructura on-premise, pero VS Anywhere ofrece la posibilidad de utilizar servidores públicos gratuitos con los que podremos probar el producto completo, sólo a cambio de completar un sencillo formulario de registro disponible siguiendo este enlace.

Podemos registrando usando nuestras credenciales de Facebook, Microsoft, Google o Yahoo, o bien introducir nuestro nombre, email y elegir una contraseña de acceso. En cualquier caso, los datos de contacto son importantes porque son los que utilizarán otros usuarios de la herramienta para localizarnos y que podamos comenzar a trabajar conjuntamente.

Hecho esto, ya podemos iniciar la sesión en el servidor de pruebas (public.vsanywhere.com) utilizando la opción “Connect to server” en el menú de VS Anywhere:

image

4. Seamos sociales

Una vez identificados en un servidor de VS Anywhere, ya apareceremos en su directorio de usuarios y, por tanto, estaremos disponibles para que otros usuarios puedan contactar con nosotros. Si, en cambio, queremos tomar la iniciativa, también podremos buscar a nuestros contactos o compañeros en dicho directorio.

Como era de esperar, el mecanismo es bien sencillo: basta con pulsar el botón correspondiente a añadir contactos en el Control Center o en el menú principal y aparecerá un buscador en el que podremos localizar a nuestros compañeros utilizando su nombre o email:

Añadir contactos

Entre dos usuarios sólo puede haber una relación consentida por ambos; es decir, desde este punto enviaremos una solicitud al usuario indicándole que queremos convertirlo en nuestro contacto, pero esto sólo ocurrirá si él lo acepta. Vaya, como en Facebook 😉

Desde el punto de vista opuesto, cuando otro usuario solicita añadirnos como contacto, VS Anywhere nos notificará y podremos decidir si nos interesa:

Solicitud de un contacto
Conforme vayamos siendo aceptados, los contactos irán apareciendo en el Control Center de VS Anywhere, donde podremos ver si están o no conectados, e incluso saber en tiempo real qué están haciendo en Visual Studio (!):

Contactos

5. Preparando la fiesta

Las funcionalidades y herramientas más espectaculares de VS Anywhere giran en torno a la sesión. Una sesión es la unión de varios usuarios trabajando simultáneamente sobre un proyecto que uno de ellos debe haber compartido con el resto. Este proceso se inicia cuando, con una solución VS activa, pulsamos el botón “Share project” o “Share solution” desde el centro de control o el menú principal, o bien desde los propios proyectos usando el menú contextual en el explorador de soluciones.

En cualquier caso debemos decidir qué proyecto o proyectos deseamos compartir en la sesión, y con cuáles de nuestros contactos queremos hacerlo. Estas opciones se configuran en un cuadro de diálogo:

Configurar sesión de trabajo

Los usuarios participantes recibirán una notificación indicándoles que han sido invitados a participar en una sesión en la que se está compartiendo un proyecto o solución determinada. Desde esta misma notificación, los invitados podrán acudir al panel de VS Anywhere para aceptar o declinar dicha invitación:

Invitación a sesión
Para poder disfrutar de la colaboración en tiempo real sobre Visual Studio, es importante que todos los participantes partan de una base común de código. Tened en cuenta que con VS Anywhere el usuario que inicia la sesión de trabajo no está compartiendo pantalla ni cediendo el control de su máquina a los invitados: cada uno trabajará en local con su propia copia del proyecto, pero los cambios o acciones que vaya realizando se propagarán automáticamente al resto de participantes.

Por esta razón,  para asegurar que el punto de partida es el mismo, es importante que desde el principio se realice una sincronización del proyecto en todos los extremos participantes. Así, si nos han invitado a unirnos a una sesión relativa a un proyecto cuyo código fuente no tenemos en nuestra máquina, VS Anywhere nos mostrará un cuadro de diálogo como el siguiente:

Conflicto: no tenemos el proyecto
Desde ahí, el botón “Get a Solution copy from the host”, como su nombre indica, iniciará la descarga del proyecto directamente desde el host, aunque se comprimirá antes de enviárnosla para acelerar el proceso.

image

Este punto puede ser un poco delicado con proyectos de cierto tamaño. Por ejemplo, si estoy trabajando desde casa y comparto mi proyecto con varios colaboradores que no lo tenían previamente, deberán descargárselo completo desde mi equipo, y el ancho de banda de subida de mi ADSL doméstica puede resultar insuficiente para poder ofrecer una velocidad razonable. Por ello, VS Anywhere permite también la integración con Github, de forma que los participantes podrían obtener el código fuente directamente desde una rama, changeset o etiqueta de este repositorio, acelerando drásticamente la sincronización inicial del proyecto.

También podría pasar que los participantes tuvieran su propia copia previa del proyecto, ya sea habiéndola compartido previamente, o lo recomendado, usando un control de código fuente, y ésta podría o no estar actualizada respecto a la usada por el organizador de la sesión. VS Anywhere detectará este escenario y mostrará un cuadro de diálogo muy parecido al anterior, pero nos avisará de que existe un conflicto de versiones:

Conflicto: proyecto no sincronizado
Los conflictos de versiones pueden ser solucionados con herramientas de Diff y Merge parecidas a las que encontramos en sistemas tradicionales de control de código fuente:

Diff y merge en VS Anywhere

6. ¡Y que comience el espectáculo!

Una vez los invitados van actualizando su copia local del proyecto, irán uniéndose a la sesión de forma efectiva, y comenzaremos a ser conscientes del potencial de VS Anywhere.

Sesión

Sin duda, lo más espectacular es la edición colaborativa de código sobre Visual Studio. Ver otros usuarios modificando un archivo al mismo tiempo que nosotros es realmente asombroso, a la vez que un poco espeluznante ;-). La siguiente captura de pantalla muestra cómo vemos en tiempo real a un usuario modificando el mismo archivo que estamos retocando nosotros:

image

Esta característica es impresionante en algunos de los escenarios que describimos al comienzo del post por la gran sensación de interactividad y colaboración que aporta. Por ejemplo, en una sesión de formación, que los alumnos puedan ver los pasos que da el formador es genial, pero es algo que podríamos conseguir con un simple software de compartición de pantalla; aquí podemos ir más allá, puesto que el profesor podría solicitar a un alumno que implemente una característica directamente sobre el proyecto, y todos iríamos viendo sobre la marcha los pasos que está dando. También en consultoría, coaching, o soporte técnico encajaría de forma muy natural, y las posibilidades para programación por parejas en remoto (pair programming) son interesantísimas.

Hay otros escenarios a priori muy atractivos donde esta colaboración en tiempo real podría resultar algo más peligrosa, pues podemos vernos “salpicados” por problemas causados por otras manos sobre el proyecto. Por ejemplo, si un desarrollador está creando la característica X y durante su implementación se están produciendo errores de compilación (lo cual es muy normal), el resto de usuarios no podrían probar sus respectivos desarrollos porque el proyecto no compilaría. Como casi todo en esta vida, con VS Anywhere también hay que saber cómo y cuándo aplicarlo, y hacerlo con sentido común.

Pero las herramientas de colaboración a nivel de código no quedan ahí. En todos los archivos que abramos aparecerá en la esquina superior derecha una indicación de los usuarios que lo tienen actualmente abierto, o incluso una marca mostrando su posición exacta dentro de la barra de scroll. Pulsando sobre sus nombres, al igual que si lo hacemos desde el Control Center, podremos ir justo al archivo y posición en la que estén trabajando en ese momento.

Otras características interesantes y útiles son la posibilidad de hacer un “follow” o un “highlight” a un usuario concreto. En el primer caso, pondremos nuestro Visual Studio con el piloto automático para que siga al usuario indicado, de forma que nuestro entorno de desarrollo irá mostrando todos los archivos que vaya usando este individuo, así como los cambios realizados en tiempo real. En el segundo caso, indicamos que los cambios realizados por un usuario concreto aparecerán destacados sobre el resto visualmente, para distinguirlos de modificaciones de otros que quizás nos interesen menos (por ejemplo, durante una formación los alumnos podrían querer destacar lo que vaya haciendo el profesor sobre cambios realizados por otros alumnos).

Herramientas VS Anywhere

Como indican en la web del producto, la colaboración no sólo se extiende a nivel de código fuente, también otros tipos de archivos y diseñadores, como el de Web Forms o XAML.

ChatPor último, a la hora de finalizar la sesión, podemos decidir si mantener los cambios realizados en el proyecto o dar marcha atrás y dejarlo como estaba cuando la comenzamos, puesto que se realiza una copia de seguridad automática al comenzar. Esto puede ser muy interesante, por ejemplo, para realizar pruebas de concepto o formación sobre proyectos reales.

7. Otras herramientas

VS Anywhere viene, además acompañado de otras herramientas adicionales que, si bien no son tan novedosas como las descritas anteriormente, son un complemento ideal para facilitar la colaboración remota.

Por ejemplo, no podía faltar un chat entre usuarios del sistema, tanto de forma privada como a nivel grupal, que pueden configurarse e iniciarse en cualquier momento.

Tampoco podía faltar, obviamente, una utilidad para el envío directo de archivos a usuarios conectados:

Enviar archivos

 

 

 

 

 

Y para facilitar la comunicación por voz, VSAnywhere incluye una sencilla integración con Skype que permite asociar cuentas de esta herramienta de video/audio conferencias con usuarios de la aplicación, de forma que las llamadas puedan realizarse desde el mismo entorno.

8. Últimas noticias: VS Anywhere, rizando el rizo

Hace unos días los usuarios de VS Anywhere hemos recibido un mail notificando la aparición de una actualización de la herramienta con algunas novedades bastante interesantes, a saber:

  • Sesiones moderadas
  • Merge cooperativo
  • Y, la que es sin duda más espectacular, web workspaces.

Si quieres saber más sobre ellas, puedes leer el artículo completo en Variable not found.

9. Participación en el sorteo

Realmente, si estáis interesados podéis descargar la extensión desde la galería de Visual Studio y comenzar a trabajar con ella para haceros una idea del producto de primera mano. No necesitáis nada más; podéis probar por completo VS Anywhere, las únicas limitaciones que tendréis serán relativas a la velocidad, puesto que es un servidor compartido, y a la seguridad, dado que las comunicaciones no serán cifradas.

Pero de todas formas, los chicos de VS Anywhere han tenido la amabilidad de ofrecer 5 licencias de servidor con 5 desarrolladores cada una por tres meses, para lectores de Variable not found, valoradas en 300 euros cada una. Como en otras ocasiones, las sortearemos entre todos aquellos que durante los próximos siete días me hagáis llegar vuestro interés en conseguir esta licencia mediante alguna de las vías disponibles (un comentario en este post, el formulario de contacto, Twitter, Variable not found en Facebook, señales de humo, o como sea ;-)).

No olvidéis facilitar una forma de contactar con vosotros por si resultáis premiados. Ojo, no pongáis vuestros mails directamente en comentarios porque los spammers están siempre al acecho, enmascaradlo de alguna forma creativa, pero que se entienda (por ejemplo “pedro punto lopez arrob@ ge mail punt0 c0m”).

¡Suerte!

Publicado en Variable not found

Gracias a Miguel del Valle (@midellav) por su inestimable colaboración a la hora de escribir este post 🙂

Un comentario sobre “Desarrollo colaborativo con VS Anywhere (¡y sorteo de licencias!)”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *