No todo el OWIN es Katana

En los últimos meses he visto una gran cantidad de artículos enfocados en definir que es OWIN y como este ha cambiado la forma de “pensar”  y “hacer” las cosas en el mundo Web Microsoft, artículos en inglés y español, grandes y chicos, buenos y malos, claros y complejos… pero en lo que todos concuerdan es en que ¡siempre se habla de Katana! 😦 Pareciera que la comunidad misma le esta cerrando las puertas a las iniciativas oss hechas por la comunidad.

Vale recordar aquí que OWIN NO fue ideado por Microsoft! esta es una especificación ideada y liderada por la comunidad que inició en una lista de correo,  Katana es la implementación hecha por Microsoft y que muchos, al parecer, consideran el “único OWIN” que existe.

Hace unos días veía esta entrada en el blog de  Jimmy Bogard, en el que intenta aclarar y dar su punto de vista sobre el tema del oss en el mundo .NET, y al discutir luego con algunos colegas sobre este tema, mi conclusión es que la comunidad misma debería como mínimo conocer (si no impulsar y apoyar) algún tool oss desarrollado por la comunidad como alternativa a las del fabricante (aka Microsoft), digo como mínimo conocer, porqué otro punto que concluimos es que no estarían dispuestos a cambiar las  herramientas hechas por el fabricante por unas desarrolladas por la comunidad. Es decir, opiniones como las de este tweet de Rob Ashton (hablando sobre scriptcs):

Pero como dice Jimmy Bogard en su entrada, muchas de las herramientas Microsoft fueron reinventadas, estas ya existían antes como productos desarrollados y dirigidos por comunidades, muchas de ellas oss. Además de aclarar que son otros tiempos en la compañía, solo hay que ver equipos de producto como Windows Azure o ASP.NET  por ejemplo.

No se necesita entonces que Microsoft adopte cada uno de los productos dirigidos por la comunidad para que sean buenos o estables, estos podrán ser buenos y madurar por si mismos siendo dirigidos y apoyados por nosotros, conociéndolos, trabajándolos, reportando bugs, codificando o documentando.

Esta introducción era para abrir paso a una de las herramientas de las que ya había en una entrada anterior, y de la que su autor ha anunciado nuevas características 🙂

Fix y OWIN

Mark Rendle, quien ya en una ocasión había hablado sobre el oss en .net, ha publicado en su blog un articulo en el que habla sobre algunas nuevas características incluidas en el proyecto Fix.

En este articulo se queja de la posible “súper” dependencia con Owin.dll (¿System.Web? :P) y la interfaz IAppBuilder, además de dejar en claro que no le gusta el tema de tener una compleja navaja suiza cuando muchas veces solo se necesita un simple cuchillo:

My other issue is that Katana is full-on Microsoft, enterprise-ready, all-things-to-all-consumers, and complicated in ways I don’t quite understand, such as in the way it’s interacting with IIS’s integrated pipeline. That’s what Microsoft do, and I’m not exactly criticising them for it, but sometimes you don’t need a Swiss Army knife. Sometimes you just need a knife.

Fix es ahora mas simple 🙂 ya no usa MEF! ahora hace uso un concepto mas simple de Setup, para configurar el pipeline[…] Como no quiero caer en el error de simplemente traducir la fuente original recomiendo leer el articulo de Mark con todo lo que pensó para la nueva versión de Fix.

Fix, Nowin y Simple.Web

Veamos ahora un pequeño fragmento de código, usando tres proyectos de código abierto que muestran la simplicidad de Fix y Simple.Web, otro proyecto de Mark Rendle, corriendo sobre Nowin… haciendo uso de la especificación de OWIN:

    using Fix;
    using Nowin;
    using Simple.Web;
    using Simple.Web.Behaviors;

    class Program
    {
        static void Main()
        {
            // Build the OWIN app
            var app = new Fixer()
                .Use(Application.Run)
                .Build();

            // Set up the Nowin server
            var builder = ServerBuilder.New()
                .SetPort(1337)
                .SetOwinApp(app);

            // Run
            using (builder.Start())
            {
                Console.WriteLine("Listening on port 1337. Enter to exit.");
                Console.ReadLine();
            }
        }
    }

    [UriTemplate("/")]
    public class Index : IGet, IOutput
    {
        public Status Get()
        {
            return 200;
        }

        public RawHtml Output
        {
            get { return "¡Hola mundo!"; }
        }
    }

NOTA: Este ejemplo esta en el proyecto Fix.

Y como resultado:

image

No quiero entrar en detalles sobre funcionalidad del ejemplo o el código pues no es el objetivo del post, lo que si es que vemos como es posible tener implementaciones muy limpias de OWIN por fuera de Katana, y si te preocupa el soporte… hay interacción directa con el equipo de producto! como se ve en este tweet donde Boris Letocha, el creador de Nowin, ayuda a un usuario con un problema con un certificado 🙂

Conclusión

Katana es muy, muy bueno! vendrá ya con Visual Studio 2013 y listo para trabajar… pero no hay que olvidar que hay mas OWIN fuera de Katana y así mismo hay muchos productos dirigidos por la comunidad que Microsoft no adopta pero no por ello no dejan de ser muy buenos! es responsabilidad nuestra no dejar morir estos proyectos antes de que vean la luz.

Algo de lo que no hablé es que Katana no tendrá restricción de plataforma! y sobre este tema si que hay un gran debate entre los equipos de producto, Phil Haack ha abierto esta petición para que la apoyen quienes lo deseen.

Hasta el próximo post.

Un comentario sobre “No todo el OWIN es Katana

Deja un comentario