A contracorriente

Hace unos meses Microsoft anunció que Windows 10 soportaría aplicaciones de Android e iOS y recientemente ha publicado el código de uno de los bridges (que es cómo se llama el invento), concretamente el de iOS.

Esto de dar soporte para las APIs de un sistema operativo en otro no es algo tan extraño, es algo que lleva haciendo (¿intentando?) wine desde hace mucho tiempo en linux, pero que Microsoft dé el paso es representativo del escenario actual.

Todo esto de tener que buscarte la vida para poder ejecutar aplicaciones que otros sistemas operativos tienen y el tuyo no, me ha hecho recordar algo y es que, hace mucho…

Yo fui linuxero

Sí, lo reconozco. Todos tenemos un pasado y, a principios de los 2000, durante cosa de 5 años, fui linuxero. Y no un linuxero cualquiera, no. Un linuxero de los malos, pesado y tenaz como un runner vegano que siempre intenta convencerte de lo bueno que es ser como él.

Nunca llegué a ser ningún experto en linux (nada más lejos de la realidad), pero sí aprendí a manejarme con soltura en ese entorno, compilando cosas cuando era necesario y cogiéndole cierto cariño (que a día de hoy aún dura) a la línea de comandos. Llegó un momento en que me sentía muy cómodo en linux, e incluso su escritorio (yo usaba KDE) me resultaba mucho más práctico y usable que Windows.

Pero también llegó un día que me harté.

Me harté de que la web de mi banco funcionase en Internet Explorer y no en Konqueror. De tener que sudar un par de tardes para configurar mi módem ADSL por USB. De que para hacer la declaración de la renta tuviera que conectarme por Citrix a un servidor de hacienda porque el programa PADRE no tenía versión para linux. De tener que buscar alternativas a las aplicaciones que usaban todos mis amigos (desde el MSN Messenger hasta el eMule) que, sí, funcionaban, pero nunca tan bien ni con todas las opciones que tenían las versiones oficiales. De acabar usando wine para intentar medio ejecutar algunas aplicaciones de Windows.

Y como me harté, me rendí. Cuando llegó el momento de comprar el siguiente portátil, no tuve ganas de pasarme varios días buscando uno que tuviera todo el hardware compatible con linux, así que decidí dejarle Windows puesto, que ya más adelante le instalaría linux.

Pero ya no tenía ganas de tener que andar buscando aplicaciones alternativas, pegándome con el hardware o enviando emails a mi banco quejándome porque su web no funcionaba en un navegador con el 0,3% de cuota de mercado (el día a día de los usuarios de Windows Phone).

En mi caso, preferí dejar de nadar contracorriente, dejarme llevar, usar Windows, y dedicar mi tiempo a otros menesteres.

Nota para talibanes linuxeros: Antes de enfadaros en nombre de linux, del software libre, de Richard Stallman y hablarme sobre libertad y cosas así, recordad que ésta es mi experiencia personal usando linux hace 10 años. No estoy muy al tanto de la situación actual, pero estoy seguro de que, aunque haya mejorado bastante, sigue siendo un sistema operativo minoritario a la hora de decidir invertir en dar soporte para él en aplicaciones y hardware “de consumo”.

Y ahora desarrollo en Windows

Hoy en día me siento cómodo con Windows. Es verdad que, como usuario “normal”, paso el 90% del tiempo en un browser y me daría igual usar un sistema operativo u otro, pero me resulta cómodo Windows, estoy familiarizado con él, es razonablemente estable y seguro y, cuando quiero hacer algo más, como por ejemplo jugar un rato, no tengo que preocuparme de si el juego estará disponible o no.

Excepto cosas extrañas para hipsters, rara es la aplicación que no está disponible para Windows antes que para linux o OSX: el escritorio sigue siendo “Windows First”.

Mientras siga desarrollando sobre .NET, Windows me ofrece las mejores herramientas para ello: Visual Studio y ReSharper. Además Office sigue siendo la mejor opción para conectarme a Exchange y me resulta cómodo para hacer esa presentación que me toca de vez en cuando o preparar el Excel de turno para analizar algunos datos.

Lo malo de Windows como plataforma de desarrollo es cuando sales del mundo Microsoft. En cuanto sales de Visual Studio y lo que le rodea, parece que más que «Windows First», el mundo del desarrollo es más bien “Windows Last” y a veces hay que dar demasiadas vueltas para que todo funcione.

Javascript, el lenguaje de moda. Llevo varios años desarrollando bastante en Javascript usando herramientas basadas en node.js sobre Windows, y seguro que al igual que muchos de vosotros me ha tocado pegarme con los problemas de las rutas excesivamente largas.

En realidad ni siquiera es un problema de Windows, que puede soportar rutas mucho más largas, sino de ciertas aplicaciones (el caso más sangrante es el del propio Explorer), pero es una vuelta a mis tiempos de linuxero: la culpa es de otros que no hacen las cosas bien, pero el que paga los platos rotos soy yo. Por cierto, no os preocupéis, que parece que solucionan el problema en npm 3, nada más y nada menos que 6 años después de la primera versión de node.js.

Si quieres trabajar con Ruby o Python, efectivamente, hay instaladores e incluso puedes usar Chocolatey, pero la instalación es… rara. No siguen las convenciones de Windows, crean sus propias carpetas con una estructura estilo linux y sí, funcionan, pero en cuanto quieres hacer algo un poco más complicado, como instalar rvm acabas necesitando cygwin o algún «emulador de linux».

Las herramientas multiplataforma, por ejemplo emacs, muchas veces funcionan peor en Windows porque sus usuarios son usuarios de linux (bueno, en este caso de GNU/linux, que no se enfade el señor Stallman) y se apoyan en la existencia de herramientas típicas de linux como find o grep, lo que hace que la experiencia en Windows no sea la mejor.

En general, todas estas cosas se pueden acabar salvando y, con un poco de paciencia, puedes desarrollar en Windows para casi cualquier lenguaje y plataforma, especialmente cuando Microsoft decide que así sea e integra las herramientas en su (cada vez más) mastodóntico Visual Studio.

Lo malo es que al final cansa y la gente se va a aburriendo de dar vueltas para hacer lo que en otros sistemas operativos es algo directo. Windows seguirá siendo una plataforma predominante para los que trabajen con tecnologías Microsoft y para los desarrolladores «empresariales», pero cada vez veo más desarrolladores usando otros sistemas operativos como sistema operativo principal.

Como ejemplo puramente anecdótico, si no recuerdo mal ni una sola de las charlas a las que asistí el año pasado en el codemotion se dio utilizando un equipo con Windows. Ni las de C++, ni las de Scala, ni las de Ruby, ni las de Python, ni siquiera la de Java. Hubo linux y Mac OSX a partes iguales.

Está claro que los ponentes del codemotion no son representativos del desarrollador medio sobre Windows, pero incluso entre estos conozco a más de uno que empieza a flirtear con linux o, sobre todo, MacOSX.

Además, no olvidemos que estos «alpha geeks» que usan a diario plataformas distintas de Windows son los que acaban desarrollando los proyectos open source que luego queremos usar en Windows, y si ellos no usan Windows, es normal que no se preocupen mucho por cómo será la experiencia de uso en Windows.

Nota para los fanboys de Microsoft: No os preocupéis que Windows no se va a ir a ninguna parte a corto plazo, no estoy diciendo eso. Podréis seguir defendido a la empresa que más os guste durante, por lo menos, unos cuantos años más. Sólo digo que para los que no viven dentro de Visual Studio, Windows se ha convertido en una plataforma de segundo nivel para el desarrollo.

La vida da muchas vueltas

Cuando llevas cierto tiempo en el mundo de la tecnología es bueno volver al vista atrás y ver cómo cambian las cosas. Ayuda a relativizar la importancia que le damos a las plataformas y las tecnologías que usamos actualmente y ser más conscientes de lo importante que es dominar los conceptos básicos que nos permitan independizarnos de la tecnología/plataforma/fabricante concreto con el que estemos trabajando, porque nunca sabes cuándo dejará de ser tan preponderante como es ahora.

8 comentarios en “A contracorriente

  1. Cada día que pasa todo lo relacionado al desktop queda y se siente como en un segundo plano. El tema del móvil esta arrasando el mercado del desktop incluyendo MacOSX, WindowsX etc. Es evidente que en un futuro solo habrá un pequeño grupo de personas que realmente necesitaran una desktop (artistas y developers). En cambio el móvil se convertirá en esa terminal con acceso a «la nube» en donde se podrá hacer de todo como se hacía desde una desktop. Digo esto porque a veces me siento contracorriente cuando trato de correr Visual Studio desde una vm en Azure y pienso si algún día podré olvidarme de mi laptop y desde una sesión de RDP en mi iPhone podré desarrollar como lo hago desde mi desktop.

  2. Cumplo exactamente el mismo perfil que tú. También fui linuxero hasta hace 10 años y acabé cansado de perder tanto el tiempo pegándome con ficheros de configuración, investigar en foros y soltar largos tochos de instrucciones en línea de comandos.

    Hoy en día ya me planteo volver a Linux. Cada vez es más insostenible desarrollar en entornos cerrados debido a la tendencia multiplataforma y a la necesidad de independencia tecnológica que demandan los clientes.

    Veremos cómo actúa Microsoft, pero como no libere .NET al 100% en un plazo corto de tiempo puede perder la guerra. Sería una pena, es una tecnología magnífica, pero inviable con el futuro del desarrollo software.

  3. Hola Lázaro,

    Veo que hemos seguido padecimientos similares :-)

    En mi caso, que .NET sea libre al 100% tampoco me solucionaría gran cosa. Hay casos en los que realmente no quiero usar .NET, quiero usar javascript, clojurescript, erlang, haskell, o lo que sea, y desgraciadamente hoy parece que para cualquier lenguaje que no proceda de Microsoft (excepto, quizás, Java, por la gran adopción que tiene a nivel empresarial), Windows es una plataforma secundaria.

    También reconozco que la idea de pasarme a linux me da pereza, porque me temo que las búsquedas en foros y la ejecución de comandos «a lo loco» en la consola es algo que no me iba a quitar.

    Un saludo.

  4. La situación que describes es muy habitual (un ejemplo que produjo algo de revuelo fue que Icaza se pasara a Mac por razones similares a las que describes), como casi todas las cosas Linux tiene cosas buenas y cosas malas.

    Yo por mi parte pasé a usar linux como mi entorno principal hace 5 años, para mi las ventajas superan con creces las desventajas.

  5. «¿Cómo haces el desarrollo sobre .NET?…»

    no se si va para mi, pero cuando trabajo (que es donde tenemos todo bajo MS) desde casa tiro de rdp básicamente.

    Si no es de trabajo, algunas cosas las he hecho con mono/monodevelop que no está mal, pero principalmente haskell y trastadas varias, por lo que en linux genial, pero como no es nada serio, no se si vale :P

    Aunque el ecosistema MS me resulta bastante cómodo (por familiar) podría vivir perfectamente dejándolo a un lado, hay montones de tareas que me resultan muchísimo más sencillas en linux que en windows y sólo unas pocas al revés.

    Por otro lado, estoy expectante como evoluciona MS, hay cuestiones que no termino de entender bien como el tema Docker, vNext, … pero en lo que vea hueco para pasar a Linux no creo que me tiemble mucho el pulso XD XD XD

Comentarios cerrados.