Publicada la CTP de Mayo de Oslo: Quadrant, mejoras en el lenguaje M, modelos para UML 2.1 y CLR… y más!

Los lectores habituales de este blog probablemente hayan notado durante las últimas semanas un considerable descenso de la actividad en el mismo (apenas un post al mes durante los últimos 2 meses). Una de las causas que más ha influido en ello es el intenso trabajo que los miembros del equipo de Oslo hemos llevado a cabo, con el objetivo de llegar a este “hito”.

Hoy, 26 de Mayo, hemos alcanzado una “meta parcial” en nuestro camino, hemos publicado nuestra tercera CTP: la CTP de Mayo de Oslo. Se trata de una “major release” CTP que incluye mejoras bastante considerables respecto a las anteriores. Entre estas mejoras, cabe destacar al menos las siguientes:

  • Instalador unificado para todos los elementos que componen nuestra CTP: IntelliPad, Lenguaje M, herramientas de línea de comandos, repositorio de modelos…

clip_image001

  • Un único compilador para el Front-End del lenguaje M (a.k.a. One M to rule them all!). Hasta el momento, disponíamos de dos compiladores diferentes para MSchema (m.exe) y para MGrammar (mg.exe), ahora ambos son sólo uno: m.exe
  • Primera versión pública de Quadrant: Esta es nuestra primera release en la cual incluímos Quadrant, nuestra herramienta gráfica para consultar y modificar datos del repositorio. Podéis encontrar información al respecto en la nueva sección de Quadrant en nuestra web de MSDN.
  • Primera versión pública de los modelos de dominio para UML 2.1 y CLR.
  • Nuevas funcionalidades en el lenguaje M y redefinición de algunas ya existentes, en base al feedback recibido por parte de la comunidad y a través de la M Specification Community.

En próximos posts explicaré detalladamente cada una de estas novedades, ya que sin duda suponen cambios significativos y que esperamos que sean de vuestro agrado. Por el momento, os animamos a que descarguéis e instaléis la nueva CTP y nos contéis a través de nuestros foros vuestras impresiones.

Enjoy!

El Profesor Stephen Hawking evoluciona favorablemente…

Durante las primeras horas de la mañana de este Lunes, apareció en Internet la noticia de la hospitalización inmediata de Stephen Hawking, en el Addenbrooke’s Hospital de la Universidad de Cambridge (Inglaterra), debido a complicaciones en su estado de salud.

El Dr. Hawking, que el pasado mes de Enero cumplió 67 años, sufre esclerosis lateral amiotrófica desde los 21 años. Este hecho ha reducido progresivamente su capacidad motora pero no ha sido capaz de frenar en ningún modo a una de las mentes más poderosas de nuestro planeta; hasta el punto de ser considerado por muchos como el físico teórico de mayor importancia en la Historia. Para aquellos que no hayan disfrutado de sus obras, recomiendo la lectura de «The Illustrated Brief Story of Time» y «The Universe in a Nutshell» (el Universo en un vistazo), dos de esos libros que uno no puede soltar de las manos hasta que los termina de leer.

La nota informática de este post radica en el hecho de que, a raíz de la aparición de esta noticia, el tráfico en Internet relacionado con este gran hombre ha sufrido un gran incremento y, como consecuencia de ello, los administradores de su sitio web oficial (habitualmente repleto de artículos, anuncios sobre sus próximas conferencias, enlaces a sus obras, biografía, etc.) han decidido sustituir este contenido por una única página en HTML en la cual, diariamente, añaden una breve actualización sobre su estado de salud, a fin de evitar problemas de saturación en su servidor… Es curioso ver bajo qué inescrutables circunstancias salen a relucir posibles deficiencias en los planes de pruebas de una aplicación informática, como en este caso las pruebas de Stress sobre un sitio web…

Me gustaría para cerrar el post mandar un fuerte abrazo al Profesor, y mis mejores deseos de pronta recuperación para él, su esposa y sus tres hijos: Keep fighting, Mr Hawking!

 

Mis pensamientos sobre cocina, Office, Windows 7, Internet Explorer 8 y la gestión de grandes proyectos en Microsoft

Me encanta cocinar. Es un hecho. Y desde que abandoné la casa de mis padres para retomar la aventura de construir Oslo con unos cuantos amigos, hace algo más de 6 meses, y vivo independizado en Vancouver, este hecho se ha convertido además en clara necesidad vital. Sin embargo, en este post, no voy a hablaros sobre Oslo como últimamente acostumbro a hacer, no voy a hablar de ningún gran proyecto software concreto; o, tal vez, hable un poco sobre todos ellos.

Retomando mis aficiones culinarias, hay algo en el proceso de preparación de una buena Paella Alicantina que se asemeja mucho a la ingeniería de procesos en grandes proyectos software. Desde el momento en el que captamos los requerimientos de nuestro proyecto (hora a la que queremos comer, cantidad de raciones a preparar, etc.), hasta que realizamos las estimaciones del proyecto (cantidades de cada uno de los ingredientes, tiempo de cocción, etc.) el razonamiento no difiere demasiado del que llevamos a cabo para construir software. Existen además una gran cantidad de técnicas que el tiempo y la experiencia previa nos aportan, de forma que podamos medir con una mayor precisión los riesgos de cada fase del proceso. De este modo, seremos capaces de determinar aquellas tareas críticas a las que deberemos dedicarnos de manera exclusiva, así como aquellas que podamos pararelizar y por tanto ser capaces de realizar de forma simultánea (tales como pelar una cabeza de ajos mientras freímos ñora picada, e incluso calentar agua para cocer el arroz mientras el resto de ingredientes ya están en la paella…). Eventualmente, también seremos capaces de cocinar al mismo tiempo que buscamos en los armarios de la cocina algunos de los ingredientes para añadir al proceso, e incluso nos sentiremos cómodos y consideraremos esta capacidad como algo natural, proporcionado por la experiencia. Por último, cuando cocinemos varios platos al mismo tiempo, deberemos hacerlo al ritmo adecuado para que todos ellos estén preparados en el momento preciso: la hora de comer. Este proceso, ya de por sí algo complejo, tiende a incrementar su nivel de dificultad cuando cada una de estas tareas o platos son elaborados por personas diferentes, incluso por equipos de personas diferentes.

De igual forma sucede en el mundo del desarrollo software. Existen diferentes formas de organizar y coordinar a esas personas, a esos equipos, con el fin de convertir el lanzamiento de un gran producto en un auténtico homenaje a la cooperación, sincronización y coordinación transversal. Analizando globalmente la estructura de los equipos de producto en Microsoft, encontraremos dos modelos principales de organización, a través de los cuales un proyecto evoluciona desde su fase de incubación hasta alcanzar su madurez.

Pensemos en un gran proyecto como Office, compuesto actualmente por más de una veintena de proyectos (yo ya he perdido la cuenta). Si recordamos los orígenes de este producto, veremos que “en la noche de los tiempos”, no existía Office… Existía Word, y Excel, y Access, y más adelante PowerPoint y OneNote, y… (paremos aquí de contar, ya que quiero acabar algún día este post). Office es uno de los grandes proyectos de Microsoft, junto con Windows, Visual Studio y unos cuantos más, que han experimentado una transición entre estos dos modelos, visiones, filosofías, enfoques para gestionar un gran proyecto software.

El primero de estos modelos es el conocido como Product Unit Management (PUM). Este modelo es probablemente el más habitual entre todos los equipos en Microsoft, y se basa en la definición de una unidad de producto (conjunto de arquitectos, desarrolladores, testers, program managers y otros roles implicados) como órgano independiente y hegemónico en la planificación de todas las fases del proyecto, desde su incubación hasta su lanzamiento. Generalmente, estas unidades de producto no dependen de otras, a menos que exista una tecnología concreta empleada por esta PUM que se encuentre próxima a su fecha de lanzamiento. Este independencia convierte al modelo PUM en el modelo óptimo en términos de agilidad, de “time-to-ship” (tiempo hasta el lanzamiento) y capacidad de respuesta ante la competencia. Sin embargo, es deficiente en términos de colaboración entre proyectos, estandarización de infraestructuras tales como automatización de builds, o ejecución de pruebas automatizadas. Esto genera un aumento de los costes para estas tareas, que si bien se llevan siempre acabo, en estos casos resultan más laboriosas para el grupo de producto al tener que duplicar esfuerzos de otros grupos. A menudo, encontramos este modelo organizativo en pequeños equipos, como el equipo de Surface, de Zune, de Live Mesh… También en proyectos más grandes como es el caso de Oslo (donde disponemos de distintas organizaciones PUM, para el lenguaje M, para Quadrant, etc.), e incluso en proyectos monstruosos (en volumen, se entiende) como es el caso de Windows u Office. En este último tipo de proyectos, generalmente el modelo de independencia a nivel de PUM se adopta para nuevas características del producto que se encuentran todavía en fase de incubación…

image

A medida que un producto madura, los equipos habitualmente crecen de tamaño y la centralización de algunas tareas e infraestructuras para mejorar la eficiencia y reducir costes sucede de forma natural. Este modelo recibe muchos nombres, pero tal vez el nombre más apropiado sea el de “modelo de equipos coordinados/compartidos” (en Inglés lo conocemos como “Shared Team”). Con este enfoque, muchas tareas y características del producto se asignan a un equipo compartido central y el resto de equipos que participan en el proyecto deben sincronizarse con este equipo central, o por el contrario no serán capaces de finalizar el proyecto y lanzar un producto con todas las características previstas.

Office es un gran ejemplo de adopción de este modelo, tal cual comentábamos unas cuantas líneas más arriba. Desde el día en que alguien tuvo la gran idea de que todas las aplicaciones de productividad deberían empaquetarse juntas y vender el producto como una suite ofimática, la jerarquía dentro del equipo de Office ha evolucionado hacia este segundo modelo. De hecho, este equipo compartido recibe el nombre de Office Shared Services Team (OSS).

image

Dentro de la división de Office, existen diferentes grupos de producto (como Word, Excel, Sharepoint, etc.) cuya labor es centrarse en el desarrollo de cada una de estas aplicaciones y ofrecer un producto de gran calidad, capaz de satisfacer a los clientes. Y frente a este tipo de grupos, encontramos otros grupos transversales encargados de una serie de características del producto comunes a todas las aplicaciones de la suite (Interfaz de Usuario, Infraestructura de Builds, Documentación, Internacionalización, etc.). Combinando los esfuerzos de ambos tipos de grupos, se consigue por una parte innovar en cada aplicación y mejorarla de una a otra versión, a la vez que mantener una coherencia a nivel de producto en toda la suite, y también alinear fechas de lanzamiento del producto. De igual modo, la creación de estos grupos transversales nos proporciona una mejor visión a la hora de implementar estrategias de diseño, desarrollo y pruebas en el conjunto de la suite de Office.

Existen muchas variaciones y modelos intermedios entre ambos enfoques de organización. Siendo sinceros, probablemente no seamos capaces de encontrar dos grupos en Microsoft con una estructura idéntica entre sí. Sin embargo, las filosofías y buenas prácticas de estos dos modelos son la base ideológica sobre la que todos los equipos se apoyan.

A menudo, desde fuera de Microsoft, esto puede parecer una batalla, un cierto grado de rivalidad entre equipos. Pensemos en equipos de desarrollo como el equipo de C# y el equipo de Visual Basic, la forma en que alternativamente van añadiendo características nuevas a su lenguaje respectivo y la consiguiente “respuesta” del otro grupo. Afortunadamente, la colaboración entre estos dos grupos (y entre otros muchos!) es cada vez mayor a nivel global dentro de Microsoft, y en lugar de ser transatlánticos independientes luchando por llegar primeros a la otra costa, son auténticas flotas navales avanzando de forma coordinada con un mismo rumbo

Una estructura muy similar a la explicada para Office sería la existente en la división de Windows. Espero y deseo que a estas alturas todos conozcais y sigais de manera habitual el blog Engineering Windows 7, en el que nuestros amigos de Windows 7 encabezados por Steven Sinofsky (Senior VP de Windows, de hecho), nos cuentan muchas de las decisiones de diseño (y también de ingeniería de procesos), que se toman a lo largo del desarrollo de un proyecto de semejantes dimensiones.

Valga el párrafo previo para darme la oportunidad de mencionar el reciente lanzamiento de Internet Explorer 8 (Release Candidate). Si acudís a la web de descargas, observaréis que la versión para Windows 7 no está disponible para descarga, debido a que deben llevarse a cabo una serie de pruebas adicionales sobre ciertas características exclusivas de Windows 7 (tales como interfaz de usuario táctil, etc. podéis leerlo en la propia web de descarga)… como podréis adivinar, este tipo de característica pertenece a uno de esos “grupos transversales” de los que os hablaba arriba… y antes de que nadie se escandalice por el hecho de no disponer aún de una versión RC de IE8 en Windows 7, podréis leer entre líneas en este post la explicación razonada y metodológica de este hecho… Es “inminente” la aparición de una versión RC de Windows 7 que incluya IE8, así como otras características excepcionales en las que están trabajando.

Comensales, ocupen sus asientos, y dispónganse a degustar esta suculenta paella llamada Windows 7. 🙂

Disponibles los vídeos de todas las sesiones del Mix ‘09

Tras la finalización del Mix’09, se ha publicado los vídeos de todas las sesiones en la web oficial del evento.  image

Tan sólo debemos seleccionar la sesión en el horario y pinchar en el título de la sesión en la ficha de la parte inferior de la página para cargar el player de Silverlight con los contenidos de la misma.

 

https://content.visitmix.com/2009/Sessions/

Enjoy!!

Lo mejor del Mix’09: Vídeo sobre la Historia de Internet

A juzgar por la opinión de mucha gente, estos han sido los mejores 5 minutos del Mix’09. Con motivo del lanzamiento de Internet Explorer 8, Microsoft ha creado un video recogiendo los hitos más destacables en la historia de la World Wide Web. Sí, ya sé que eso es algo que puedes encontrar en la Wikipedia… Bueno, realmente no. Lo que la Wikipedia nos cuenta al respecto es la versión aburrida de la historia de Internet. En este video podrás encontrar a esos célebres personajes que has ido conociendo a lo largo de los últimos años, desde el dancing hamster hasta el Ninja de “Ask a Ninja”, pasando por grandes fenómenos sociales como el “Update Status” o el “Poke a Friend”.

Si Internet es de los usuarios, la Historia de Internet debería guiarse por aquello que a los usuarios más les ha impactado, ¿no? Pues aquí lo tenemos…

Anunciando la nueva “M” Specification Community

Esta mañana, con motivo de la presentación de Doug Purdy y Chris Sells en el Mix’09 en Las Vegas, hemos anunciado la creación de la “M” Specification Community (MSC).

¿En qué consiste esta iniciativa?

La MSC es un esfuerzo de nuestro equipo por “democratizar” la creación del lenguaje M. Esta nueva Comunidad forma parte de la promesa que realizamos de que la especificación del lenguaje M se liberaría bajo la iniciativa Microsoft OSP, promesa hecha pública al anunciar Oslo en el PDC de Octubre de 2008.

La MSC estará formada por un colectivo de personas y organizaciones diversas dentro de la industria del software a nivel mundial, cuyo objetivo será aportar ideas y debatir sobre los criterios de diseño y funcionalidades ofrecidas por el lenguaje M. El medio de comunicación empleado para este fin será una lista de correo. Esta lista de correo será de acceso público, cualquiera podrá leerla y mantenerse al tanto de novedades y debates allí surgidos. No obstante, sólo aquellos miembros seleccionados para formar parte de la lista, tendrán derecho a escribir en ella.

Me gustaría colaborar en la especificación del lenguaje M, y poder participar activamente en la lista MSC… ¿Qué debo hacer?

Los pasos para unirse a la lista son muy sencillos. En primer lugar, debes realizar un donativo a la MLF (a.k.a. Miguel Llopis Foundation) aceptar los términos del acuerdo de participación (“M” Specification Participation Agreement) y proporcionarnos algo de información acerca de ti mismo y de tu organización/empresa (información profesional, se entiende :-P). Seguidamente, nosotros revisaremos tu propuesta y te daremos acceso de escritura a la lista si todo lo que nos has contado es coherente 🙂

Resumiendo…

  1. Únete a la “M” Specification Promise.
  2. Accede a la especificación completa del lenguaje:
    1. Último borrador (19 de Marzo de 2009)
      1. Formato Word
      2. Formato PDF
      3. Formato XPS
    2. Versión publicada con nuestra última CTP (Enero 2009)
      1. Formato HTML
      2. Formato PDF
      3. Formato XPS
    3. También puedes echar un vistazo a la versión publicada a finales de 2008 por Addison-Wesley.
  3. Ah, aclarar por si alguien anda un poco despistado al respecto, al tratarse de una iniciativa a nivel mundial, el idioma oficial de esta lista es Inglés. 🙂

MVP Summit 2009: Materiales de mi sesión sobre Oslo en castellano

Como comentaba Rodrigo hace unos días, durante el pasado MVP Summit 2009 tuve la enorme suerte de llevar a cabo una sesión sobre Oslo para MVPs de habla hispana. El objetivo de dicha sesión fue lograr un contacto más directo que el que se puede lograr a través de un blog o de la web de MSDN con un público bastante representativo de la comunidad técnica hispana, debido a que los asistentes a la charla provenían de un gran número de países diferentes (España y países de Latinoamérica) y también estaban especializados en un amplio abanico de tecnologías.

Este objetivo, por supuesto, no impide el hecho de que aquellos que no pudieron asistir al evento por unos u otros motivos, puedan tener acceso a dichos materiales, y por tanto, he decidido subir la presentación a la siguiente carpeta de Skydrive, para que todos podáis echarle un vistazo.

La sesión fue eminentemente práctica, como refleja el hecho de que en las 2 horas de sesión realizáramos cuatro demos. Para cada una de estas demos, he incluído en la presentación un enlace a diferentes recursos del MSDN Oslo Developer Center relacionados con dicha demo. En algunos casos un screencast (en inglés) de 5-10 minutos de duración explicando conceptos similares a los que presenté en la sesión, y en otros casos, también el código fuente empleado como ejemplo.

Dicho todo esto, no me queda más que agradecer nuevamente el interés y participación en esta sesión a todos y cada uno de los MVPs asistentes a la misma, y también al resto de asistentes al MVP Summit y a quienes día a día aportan su pequeña contribución a la Comunidad, tanto dentro como fuera de Microsoft. En situaciones especialmente complicadas a nivel global como la que actualmente nos ocupa, se reafirma la convicción de que, más allá de los billones y billones de líneas de código, PC’s, servidores, etc. de que dispone Microsoft, debemos apostar por el talento, la ilusión y el potencial de sus empleados, así como de los millones de personas involucradas en sus comunidades técnicas, grupos de usuarios, etc. como el principal activo de esta empresa.

Un activo de valor incalculable.

Las primeras fases de Imagine Cup 2009 entran en su recta final

Un año más, la competición sobre tecnología con mayor número de participantes a nivel mundial se acerca a sus rondas finales. En esta edición, existen nuevas categorías muy interesantes (Mashups, Robótica, etc) que se unen a las categorías clásicas (Desarrollo Software, Project Hoshimi, Fotografía, etc).

Otra de las novedades principales de este año es que la temática es mucho más abierta: “Imagina un Mundo en el que la Tecnología ayude a resolver los problemas más complejos a los que nos enfrentamos en la actualidad”.

Personalmente, me parece un acierto por parte de la organización del evento haber abierto la competición a un abanico de posibilidades mayor, no sólo por la cantidad de problemas que se pueden abordar por separado sino porque la posibilidad de integrar diferentes soluciones para problemas de diversa índole (educación, sanidad, pobreza, medioambiente…) es una opción más que interesante, y perfectamente viable gracias a las tecnologías que Microsoft pone al alcance de nuestra mano.

Estoy deseando ver qué soluciones e ideas nos proponen las nuevas generaciones de talentos… Pronostico que éste será el año de la “Cloud Imagine Cup”, con tecnologías como Azure, Live Mesh y .Net Services entre otras, que posibilitan llevar a cabo una gran cantidad de proyectos ambiciosos con “relativo” poco esfuerzo. 🙂

Recordad que para participar deberéis pasaros por la web internacional de Imagine Cup, y también por la web española para los participantes en la categoría de Desarrollo Software (daros prisa porque la fecha límite para esta categoría es el 21 de Marzo!!)

Por último, os dejo un vídeo bastante currado de Channel 8 que recoge los momentos más destacados de la última fase final, celebrada en París en el mes de Julio de 2008… ¡qué recuerdos!

8 minutos en Channel 8 sobre Oslo, con Chris Sells

Durante la pasada conferencia VSOne en Munich, Chris tuvo la oportunidad de conversar con los amiguetes de Channel 8. Si aún no te has enterado de qué va Oslo, no debes perderte esta explicación clara, concisa y divertida por parte de uno de nuestros más ilustres PMs.

Si no puedes ver el vídeo, accede al post original aquí