26 de septiembre de 2013

¿Cómo será recordado Steve Ballmer? El fin del "Embrace, extend and extinguish"

El anuncio de salida de Microsoft de Steve Ballmer desató una serie de resúmenes sobre sus años de CEO. Se ha destacado el aumento de recaudación la brutal caja registradora de la compañía, de 20 mil a 70 mil millones anuales, el éxito de la Xbox, la silenciosa y sorprendentemente poco comentada consolidación de sus plataformas para servidores. Pero se han recordado sobre todo sus fallos, sobre todo su incapacidad para anticipar la revolución portáctil.

Y este es un punto en el que no estoy de acuerdo, porque supone olvidar cuál fue el rasgo identitario fundamental de Microsoft en los 90: Embrace, extend and extinguish. El Microsoft pre-Ballmer, además de ser una definición académica de monopolio, era una máquina de desplazar a competidores, cuando no de llevarlos a la bancarrota.

Ganó a Digital Research y DR-DOS, ganó a Apple e IBM(!) la carrera por convertirse en el principal sistema operativo gráfico, ganó la batalla a Novell por las redes, ganó a Borland/Delphi, Wordperfect, Lotus, Netscape; cada una de esas empresas ocupaban nichos que han generado montones de millones de dólares, cuando no plataformas sobre las que han creado industrias. Intentaron parar los pies a Java como lenguaje para aplicaciones de escritorio con extensiones propietarias y con ActiveX en la web. Su desviación de los estándares de internet hizo que, durante años, fuese imposible usar la web a diario sin encontrarse con páginas que sólo eran compatibles con Internet Explorer.

Eran los tiempos en que Bill Gates aun no gastaba sus rentas en ayudar a países pobres, por aquel entonces era profundamente odiado por representar la cara más salvaje y avasalladora del capitalismo. Y no sin razón: recuerden que la publicación de correos de la compañía en un caso anticompetencia revelaron textos suyos tan constructivos como este:

"One thing we have got to change in our strategy—allowing Office documents to be rendered very well by other peoples browsers is one of the most destructive things we could do to the company. We have to stop putting any effort into this and make sure that Office documents very well depends on PROPRIETARY IE capabilities. Anything else is suicide for our platform. This is a case where Office has to avoid doing something to destroy Windows"
O este:

"One thing I find myself wondering about is whether we shouldn't try and make the "ACPI" extensions somehow Windows specific. If seems unfortunate if we do this work and get our partners to do the work and the result is that Linux works great without having to do the work. Maybe there is no way Io avoid this problem but it does bother me. Maybe we couid define the APIs so that they work well with NT and not the others even if they are open. Or maybe we could patent something relaled to this"
Las empresas que fueron arrolladas por la apisonadora de Redmond fueron, por lo general, iniciativas de gente que tuvo una idea brillante e intentó comercializarla. Microsoft no se destacó por generar esa clase de ideas, sino por intuir la relevancia de las ideas de otros, copiarlas y ser mejores que el original, ser muy agresivo comercialmente, y vencer a su competidor. Una habilidad que, aunque no tenga tanto aura, tiene mucho mérito. En los cursos que Microsoft impartía a los nuevos trabajadores enseñaban que su táctica a la hora de afrontar a un nuevo competidor empezaba por simplemente anunciar que entraban a competir con ellos, el mero anuncio hacía que el competidor se pusiera nervioso y cometiera errores estratégicos, que Microsoft aprovechaba para entrar a rematar.

Volviendo a Ballmer, decía que no estaba de acuerdo con que se le recuerde por haberse perdido la revolución de los dispositivos portáctiles. Como acabo de recordar, Microsoft por regla bastante general llegó tarde a todo: llegó tarde a los sistemas operativos gráficos, a los procesadores de texto, a Internet, a los navegadores web. Que Microsoft perdiera el tren de los dispositivos portáctiles no es, por tanto, nada nuevo; lo relevante es que, esta vez, ha sido incapaz de identificar la tendencia, crear rápidamente un producto alternativo mejor, y competir agresivamente hasta batir a sus competidores.

También ha sido incapaz de competir -y sorprende que, entre tanta moda portáctil, casi se olvide- con Google. Casi se diría que no les interesa: recuerden que tuvieron, por ejemplo, una web de vídeos análoga a youtube y una red social. En ambos casos se dieron por vencidos y cerraron, una actitud aletargada inimaginable en la antigua Microsoft. Windows Phone surgió mal, tarde, y se desarrolla a velocidad glacial. Internet Explorer tiene un desarrollo lento y está siendo incapaz de frenar su caída. Messenger fue eliminado sin intentar hacer algo decente con él, prefiriendo pagar una millonada por Skype.

En suma, Microsoft se ha convertido en una multinacional aburguesada que es incapaz de seguir el hilo de sus competidores, que en muchos casos directamente desiste de hacerles frente, y si lo intenta es recurriendo a su multimillonaria, pero no infinita, billetera; una compañía que, según sus trabajadores, está plagada de la clase de reuniones inútiles y entorpecimientos burocráticos de los que se burlan las tiras cómicas de Dilbert. Una compañía que cada vez es más un fantasma lejano de la Microsoft agresiva que se comía el mundo. El responsable de ese cambio es Steve Ballmer, y por ello es por lo que debería ser recordado.

3 de septiembre de 2013

Las novedades de Linux 3.11

Ya se ha anunciado la versión 3.11 del kernel Linux. Esta versión incorpora soporte para una nueva bandera O_TMPFILE en open(2) que permite la creación sencilla de archivos temporales seguros, soporte de gestión de energía dinámica para todas las GPUs Radeon desde la r600, soporte preliminar de NFS 4.2 y de etiquetado SELinux en NFS, soporte experimental de clientes del sistema de archivos distribuido Lustre, seguimiento detallado de las páginas a las que escribe un proceso, soporte de huge pages en ARM y soporte de KVM y Xen en ARM64, mejoras de escalabilidad de la cola de mensajes SYSV IPC, polling de tarjetas de red con latencia baja y un cache de swap comprimido. También se han incluido drivers nuevos y muchas otras mejoras y pequeños cambios. La lista completa de cambios, en inglés, puede encontrarse aquí, como siempre.


· Nueva flag O_TMPFILE para open(2) para reducir las vulnerabilidades de archivos temporales

O_TMPFILE es una flag nueva para open(2)/openat(2) que facilita la creación de archivos temporales seguros. Los archivos que sean abiertos con O_TMPFILE son creados, pero no son visibles en el sistema de archivos. Y tan pronto como se cierre el descriptor de archivo, es eliminado, al igual que ocurriría con un archivo que hubieras abierto y desenlazado.

Hay dos usos para este tipo de archivos. El primero es la creación de archivos temporales sin condiciones de carrera (se elimina cuando se cierra; nunca es accesible desde ningún directorio, no hay necesidad de crearlos con un nombre de archivo único - básicamente, un tmpfile(3) bien hecho). Otro uso es crear un archivo inicialmente imposible de acceder, escribir lo que quieras en él, hacer fchmod()/fchown()/fsetxattr() como desees, y entonces enlazarlo al sistema de archivos atómicamente, ya preparado.

 · Soporte experimental de gestión de energía dinámica en tarjetas gráficas AMD Radeon

Los drivers para tarjetas gráficas AMD han incorporado soporte para la gestión dinámica de energía para todas sus GPUs, de la r600 hasta el día de hoy. Este código es experimental, y está desactivado por el momento. Para activarlo es necesario pasar el parámetro radeon.dpm=1 al módulo.

· Soporte experimental como cliente del sistema de archivos Lustre

Lustre es un sistema de archivos distribuido que soporta múltiples clústers de computación con cientos de miles de nodos clientes, decenas de Petabytes de almacenamiento en cientos de servidores, y más de un Terabyte por segundo de E/S agregada. Es el sistema de archivos para clusters más popular en la computación de alto rendimiento: seis de los 10 mejores y 60 de los 100 mejores supercomputadores del mundo usan Lustre.

Esta versión añade soporte como cliente, pero es experimental, el código no está muy limpio y necesita estar un tiempo en drivers/staging. Ver drivers/staging/lustre/TODO para más detalles. Para más detalles sobre Lustre, visitar http://lustre.org.

· Soporte preliminar de NFS 4.2 y SELinux Labeled NFS

Esta versión incorpora soporte preliminar para clientes de NFS 4.2, una nueva versión del estándar NFS que está siendo desarrollada. Para más detalles sobre qué novedades incorpora este nuevo estándar, vea este post.

Esta versión también ha incorporado soporte para Labeled NFS, que añade soporte completo de SELinux a NFS. Hasta ahora, los montajes NFS eran tratados como una única etiqueta de SELinux, típicamente nfs_t; o como mucho permitían al administrador cambiar la etiqueta por defecto con la opción --context de mount. Con Labeled NFS, es posible tener muchas etiquetas diferentes. Esto es útil para asegurar las aplicaciones de virtualización con una etiqueta en la imagen virtualizada. También es útil para exportar directorios home desde NFS, y así poder confinar aplicaciones para que sólo puedan escribir en ciertos lugares, en lugar de tener permisos para escribir en cualquier directorio.

· Seguimiento detallado de qué páginas escribe una aplicación


Esta versión incorpora un mecanismo que ayuda a seguir qué páginas escribe una aplicación. Esta característica es utilizada principalmente por el proyecto checkpoint-restore, pero puede ser usado para conseguir mejores estadísticas y construir mejores aplicaciones de profiling. Para más detalles, ver Documentation/vm/soft-dirty.txt

· Soporte de huge pages en ARM, soporte de KVM y Xen en ARM64

La arquitectura ARM ha incorporado soporte de huge pages tanto para las CPUs de 32 bits como para las de 64 bits. Esta implementación permite el mapeado de secciones de 2MB; la configuración de páginas de 64K no está soportada. También añade soporte para huge pages transparentes; cuando estén activadas, el kernel intentará mapear páginas anónimas en secciones de 2MB cuando sea posible.

Esta versión también incorpora soporte de virtualización KVM y Xen para la arquitectura ARM64.

· Mejoras de escalabilidad de la cola de mensajes SYSV IPC

Esta mejora continúa el trabajo que comenzó con las mejoras de escalabilidad en los semáforos SYSV que fue incluído en Linux 3.10.

Como los semáforos, la lista de mensajes también abusa del bloqueo utilizado por el código SYSV IPC, sosteniéndolo para operaciones como comprobaciones de seguridad y de permisos, lo que daña la escalabilidad y el rendimiento. En esta versión, se han utilizado una mezcla de algoritmos sin bloqueos, secciones críticas acortadas, estadísticas individuales para cada semáforo y ajustes del uso del caché de CPU para hacer la lista de mensajes más veloz y escalable.

· Polling de red con baja latencia

Los drivers de Linux modernos no notifican al sistema de la llegada de nuevos paquetes con interrupciones, porque con los actuales requisitos de ancho de banda se generarían cientos de miles de interrupciones por segundo, que no pueden gestionarse sin degradación del rendimiento. Por esa razón se utiliza un sondeo periódico a la tarjeta (polling), llamado NAPI en Linux. Sin embargo, el intervalo del sondeo añade latencia. Esta versión permite a las aplicaciones requerir en cada socket un intervalo de sondeo menor.

· Zswap: un caché de swap comprimido

Citando de este artículo de LWN recomendado:

"Zswap es un caché para páginas de swap. Toma las páginas que están en proceso de ser enviadas al espacio de intercambio e intenta comprimirlas en un espacio de memoria RAM. Si este proceso tiene éxito, se retrasa el proceso de escritura al espacio de intercambio y, en muchos casos, se evita completamente. Las consecuencias son una reducción de E/S y ganancias de rendimiento en los sistemas que utilizan a menudo el espacio de intercambio". Para mas detalles y mediciones, ver el artículo de LWN recomendado. (Nota: esto viene a ser el equivalente Linux de la compresión de memoria de OS X 10.9)


Y eso es todo. La lista completa de cambios en inglés, aquí.

25 de agosto de 2013

El fallido crowdfunding del Ubuntu Edge

Ya ha finalizado el plazo del crowdfunding de Ubuntu Edge , y el resultado, como ya sabemos todos, ha sido un fracaso, tan sólo se han recaudado 12 de los 32 millones que se fijaron como objetivo. Por mucho que Canonical intente relativizarlo con el record de recaudación, se trataba de reunir 32 millones o nada, y en nada se ha quedado.Y la verdad, no es de extrañar. Como ya ha contado mucha gente en otros sitios, esta colecta no ha estado terriblemente bien gestionada.

En los primeros días se evidenció que las opciones disponibles eran confusas y no dejaban claro de qué iba el proyecto. Se podían donar pequeñas cantidades (20$ y 50$) a cambio de regalos simbólicos como una camiseta y, al mismo tiempo, se podía pagar más de $600 por un teléfono. Pero la compra de un teléfono tampoco era exactamente una "compra", a medida que se vendían más teléfonos subía progresivamente el precio. El rango de extremos de precios iba desde los primeros 5.000 teléfonos a 600$, a los $830 que habría que pagar una vez se hubieran vendido 33.500 teléfonos. Una diferencia de nada menos que 230$ dólares.

Al poco tiempo se dieron cuenta de lo enormemente absurdo de este esquema de precios, y lo sustituyeron por un único precio de $695 sin límite, pero para entonces el desconcierto ya había calado. ¿De verdad esperaban que la gente donara 230$ dólares extra, en lugar de simplemente esperar a comprarlo más barato de segunda mano en Ebay? Y todo eso para un teléfono que estaba por construir y que, en todo caso, no se empezarían a enviar a los compradores hasta Mayo del 2014, suponiendo que se cumplan los plazos.

Otro problema fue el teléfono en si mismo. Con 128 GB de almacenamiento y 4GB de RAM, estaba claro que se apuntaba hacia un teléfono de altas prestaciones (en parte, se justificaba con que era necesario para poder ejecutar el Ubuntu desktop tradicional). Pero a medida que el mercado de smartphones de última generación se generaliza como nuevo normal, aumenta el interés por los teléfonos simplemente baratos, como bien está aprendiendo Apple. Para vender un teléfono de altas prestaciones por un precio elevado hace falta algo más que un toolkit gráfico e interfaz de usuario alternativas.

A Ubuntu Edge le faltaba un modelo opcional con peores prestaciones y mas barato. Preguntado por ello, Canonical respondió "we firmly believe that to offer a fully converged experience you need 128GB. Cutting down the specs goes against the ethos of the campaign". El énfasis en "you need" es mío: En su actual fase adolescente de querer imitar a Steve Jobs (que esperamos pase pronto), Canonical pretende tener "visiones" de que la gente "necesita" 128 GB. Lo cual es una falacia, empezando porque aunque se justifiquen los 128 GB por el modo de Ubuntu Desktop (conectar al móvil un monitor, teclado y ratón y usarlo como PC con el Ubuntu de escritorio tradicional), hay mucha gente que no va a estar interesada.

Pero el punto más flojo de todo este invento es que Canonical pidiera 32$ millones a la gente y vendiera teléfonos en una página de colectas, en lugar de simplemente poner ellos los 32$ millones; o buscar inversores interesados y vender los teléfonos en una tienda online propia normalita, directamente. Como mucha gente señaló, resultaba algo insultante que una empresa privada como Canonical pidiera que el público financie con donaciones sus proyectos de I+D. Mark Shuttleworth tuvo en su día más de 500$ millones; se hace difícil de creer que se haya gastado todo, y si él mismo no está dispuesto a arriesgar en un proyecto que, de ser bueno, debería dar beneficios, ¿por qué debería hacerlo yo?

Al final, lo único positivo de todo esto es la publicidad conseguida. Y, de hecho, observando la reacción de Canonical (que da mucha importancia a la atención de la prensa en sus comunicados), es muy posible que todo este invento tuviese como único objetivo el generar atención mediática para que algún gran directivo de una empresa fabricante de teléfonos o de telecomunicaciones considere Ubuntu Mobile como opción. Desde ese punto de vista puede decirse que Ubuntu Edge ha sido un gran éxito, pero para lograrlo habrían necesitado mentir a la gente, ilusionarlos y hacerles considerar el disponer de una generosa parte de sus ingresos para un proyecto que era mentira desde un principio.