[Off-Topic] Uma Nova Era para a Microsoft

31 de março de 2016 · 💬 Participe da Discussão
Se tem preguiça de ler, clique aqui pro TL;DR

Atualização 07/04: o preview já saiu antecipando o lançamento em Junho. Se você for membro do programa Insider, baixe e teste já. Deixe suas impressões nos comentários.

Ontem foi um dia histórico para a Microsoft. Na minha visão pessoal, pode ter sido um divisor de águas. Desde ontem venho tentando pensar em como deixar isso registrado para a posteridade.

Prólogo - 1995 a 2005, 1a Década

Digo isso para nós, desenvolvedores de software. Já conhecemos alguns divisores assim na história: o lançamento do Turbo Pascal em 1983, o do Visual Basic em 1991, o do Java em 1995, as primeiras distros de Linux como o Slackware a partir de 1993, o lançamento do OS X em 2000 e a transição de PowerPC para Intel em 2005.

Os anos 80 e 90 foram conturbados, uma época de crescimento acelerado em que tudo ficava obsoleto muito rápido. Numa década, de 1989 até 1999, passei de Basic para dBase, Clipper, Fox Pro, Visual Basic, Delphi, Java, multimídia (Flash, Director/Shockwave) e Internet (HTML, Javascript, ASP, PHP, Perl). Nunca vi uma década andar tão rápido. Fui de um XT de 4 MHz para um Pentium III de quase 1 GHz nesses dez anos.

Chegamos ao fim do século no ápice da Bolha da Internet, tivemos o 11 de Setembro em 2001 e o crash. Mas a Internet chegou para ficar, e os dispositivos começaram a despontar com os Palms e iPods. Em 2001 a Microsoft lançou o Windows XP e passaria a década seguinte carregando esse legado nas costas.

Um ano antes, a pequena Apple iniciava seu levante com os novos iMac, iBook e iPod, além do OS X baseado em BSD UNIX. Um passo de cada vez, ela montava um sistema pensado tanto para consumidores quanto para desenvolvedores, a promessa da NeXT ganhando forma uma década depois de sua concepção.

Então, em 2005, a Apple forjaria aliança com uma das mais antigas parceiras da Microsoft, a Intel, e finalmente os Macs rodariam no mesmo processador que o Windows, dando um salto estratosférico em adoção. E isso abria mais uma porta: como o OS X foi feito agnóstico de processador, era questão de tempo até rodar em chips ARM, menores e mais eficientes. Foi o que aconteceu em 2007 com o lançamento do iPhone. O resto é história.

2005 a 2015 - 2a Década

Enquanto isso, a Microsoft ficou para trás. Fracassou na promessa do Windows Vista, entregou um Windows 7 competente e emendou no controverso Windows 8. Só com o Windows 10, anunciado no fim de 2014, é que as coisas começaram a mudar. E os efeitos da morte de Steve Jobs, no fim de 2011, ficavam mais aparentes: a Apple parou.

De 2011 até hoje, só tivemos novas versões. Nada significativo, nada novo. O último grande iPhone foi o 5, de 2012. O último grande felino do OS X foi o Mountain Lion, de 2011. Enquanto isso, o Google passou à frente no mundo mobile quando o KitKat saiu em 2013, para mim a primeira versão do Android em pé de igualdade com o iOS.

De 1999 até 2005, no geral, o desenvolvedor de software enterprise tinha duas opções: Java e .NET. O PHP tinha boa adoção, mas na maioria como customização de Wordpress e Magento, longe da mesma categoria de Java ou .NET; o resto era nicho. A partir de 2006 surgiu uma nova geração de desenvolvedores para a chamada Web 2.0, o mundo pós-Google, com SEO, UX, iterações rápidas e Agilidade com “A” maiúsculo. Foi ali que Ruby, Python e depois Node aceleraram exponencialmente.

A partir de 2010, o mundo mobile acelerou, e em particular um tipo de desenvolvimento integrado: baseado em “Cloud”, em que uma “app” nativa fala com serviços em servidores remotos, sobretudo da Amazon AWS, que havia estreado não fazia muito tempo, em 2006.

A Microsoft ficou de fora desse movimento e gastou os dez anos seguintes correndo atrás, na ressaca do Vista. Manteve a liderança em mercados puramente enterprise, com licenças de SQL Server e Office, mas à margem do “cutting-edge” do desenvolvimento de software.

Na verdade, eu diria que o divisor de águas veio em 2013, com a saída de Ballmer e o fim da “Era Estendida de Gates”, abrindo espaço para a entrada de Satya Nadella. A Microsoft é uma entidade gigante, muitos cérebros já pesquisavam isso fazia anos, e boa parte só apareceu agora. Mas falo em “Eras” num sentido simbólico: o fim da cultura Highlander da Microsoft, o “there can only be one”.

A profecia de 1995, de que a Internet destruiria a hegemonia do Windows, se cumpriu. E chegamos ao mundo pós-Moore, em que a computação ficou acessível e ubíqua. Pense nisso: em 1995, ter um cluster de “super” computadores para computação distribuída de alto processamento era coisa de universidade ou grande corporação. Hoje, você cria um cluster de quantas dúzias de máquinas quiser no EC2 por um mês pelo preço de um videogame.

Fui usuário de DOS desde 1988, mudei para o Windows 95 assim que saiu e passei quase dez anos desenvolvendo primariamente em Windows, em ambiente corporativo. Fui de Visual Basic para ASP e para .NET ao mesmo tempo que mexia com Java e PHP. Mas eu queria poder usar Perl, PHP, Python e Ruby nativos de Linux, sem abrir mão de Office e Photoshop.

A resposta que já esperávamos era o OS X. Com o lançamento do Tiger, a coisa ficou séria. Eu mesmo experimentei com um Mac Mini G4 em 2004. Era excepcional ter uma usabilidade muito melhor que a do Windows XP e acesso a tudo de UNIX numa única máquina.

Quando a Intel lançou o Core Duo e depois o Core 2 Duo de 64 bits, e o Tiger passou a rodar em Intel em 2005, não havia o que pensar: era hora de migrar. Passaria a década seguinte num ambiente puramente OS X, desenvolvendo em outro tipo de plataforma, com outras ferramentas e outra cultura. Foi toda a minha história com Ruby e OS X nesses dez anos, que vocês conhecem bem se acompanham o blog.

2015 em diante, Epílogo

2015 chegou, quatro anos depois da morte de Steve Jobs. Foi um intervalo importante, porque deu tempo para as plataformas não-Mac se equipararem e superarem o OS X em muitas áreas. Estamos definitivamente na Era do Software como Serviço. Não “compramos” mais nada, “assinamos” serviços.

Passamos da Era Pós-PC. Passamos da Era do Smartphone. Estamos na Era dos Serviços, em que tudo é um serviço. Nossa identidade é um perfil do Facebook, nossa voz é o Zap Zap, e tudo o que fazemos gera dados. Estamos na Era do Big Data, um monte de dados inúteis que nenhum SQL Server do mundo dá conta de manter.

Precisamos de coisas novas para lidar com esse paradigma: Cassandra, Riak, Hadoop, HBase, Spark, Elasticsearch, Go, Rust, Elixir. Todos eles “rodam” em Windows, mas alguém precisa gastar tempo fazendo ports, criando patches de compatibilidade e empacotando instaladores. E o principal: a maioria dos desenvolvedores dessas tecnologias está em Linux ou em OS X, quase ninguém desenvolve essa nova geração de ferramentas dentro do Windows. Todos usam Emacs, Vim ou Sublime Text, quase ninguém quer o Visual Studio.

E isso volta ao começo do post: é uma nova Era para a Microsoft. Ela passou os últimos dez anos correndo atrás e, pela primeira vez, parece ter chances reais de dar a volta por cima e voltar a ser relevante para o desenvolvedor não-.NET.

Para isso, duas coisas aconteceram ontem.

2016 - O Ano do Linux no Desktop

Primeiro, o anúncio de que o “Bash está chegando ao Windows”. Que na prática é muito mais do que o Bash: é uma parceria com a Canonical, que já vinha se desenhando desde o anúncio do SQL Server rodando em Linux. Na prática, é um subsistema Linux rodando em paralelo à kernel do Windows, traduzindo chamadas de sistema Linux para Windows.

A ideia original veio do falecido Projeto Astoria, ou Windows Bridge for Android, que na época queria permitir apps Android rodando em Windows. Tecnicamente o Android é um tipo de Linux, então o salto para ontem foi curto.

Assim, será possível pegar um binário feito para Ubuntu e rodá-lo no Windows sem modificar nada.

Desde que começamos a desenvolver com Ruby, muita gente que usa Windows queria rodar Ruby nativamente. Existe uma distribuição, mas não é boa, e a culpa não é dos mantenedores. O Ruby, assim como Python e PHP, foi feito para funcionar em Linux.

Para portar para Windows é preciso fazer “wrappers”, e ainda falta um ambiente com compiladores como o GCC para compilar pacotes de extensões. Tudo isso é trivial no Linux e uma dor de cabeça no Windows. Não valia o trabalho, então a única saída era rodar uma máquina virtual (como o VirtualBox) com algo como o Vagrant para facilitar e usar o Ruby de Linux de verdade.

Tudo de Linux que “funciona” em Windows, seja Python ou PHP, nunca funcionou 100%, e a gente simplesmente se acostumou com isso.

O que a Microsoft vai lançar no Anniversary Update é uma camada muito fina de tradução no nível mais baixo, e não uma máquina virtual ou um hypervisor: de uma kernel Linux “virtual” para a kernel do Windows. Tudo vai pensar que está rodando em Linux. É o que o projeto Wine tenta fazer para rodar aplicações Windows no Linux, só que ao contrário. Também é diferente do Cygwin, que exige recompilar tudo do Linux para ter um ambiente semi-Linux sobre o Windows.

Provavelmente não haverá ambiente gráfico secundário num primeiro momento, então nada de X, nada de GNOME ou KDE. E nem precisa: estamos num mundo Web, nosso ambiente gráfico agora é HTML e Javascript, e Chrome e Firefox já existem nativos no Windows. Para coisas como compilar gems com extensões nativas, até o GCC vai funcionar. É exatamente o mesmo binário, no mesmo ambiente, com tudo a que estamos acostumados no UNIX. Ter Bash e SSH no Windows é só a ponta do iceberg.

O segundo anúncio é o lançamento das ferramentas Xamarin de graça e como open source! A Microsoft adquiriu a Xamarin, de Miguel de Icaza, há pouco tempo. Eles desenvolveram o .NET open source por pura engenharia reversa, reimplementando tudo em código aberto, e agora a Microsoft fez a coisa inteligente: além de comprá-los, abriu as ferramentas. A última coisa que ainda prendia um desenvolvedor no Mac era precisar do Xcode, que já vem no OS X, para desenvolver para iOS. Agora dá para fazer isso no Windows de graça.

Portanto, a conta ficou bem mais simples. O Windows 10 é a primeira versão respeitável de Windows desde o breve intervalo do 7. Vamos esquecer que o 8 existiu, do mesmo jeito que já esquecemos do Vista. O XP finalmente morreu, levou mais de uma década, junto com os horrorosos Internet Explorer 6, 7 e 8. O Google nos fez o favor de tornar o Chrome ubíquo, e serviços como o Facebook forçaram os usuários a migrar mais rápido.

Com o Windows 10 Anniversary Update, provavelmente vamos poder fazer:

apt-get install build-essential
\curl -sSL https://get.rvm.io | bash
rvm install 2.3.0
bundle install

E tudo deve funcionar.

No mesmo ambiente, ainda vamos poder usar o Xamarin Studio e, com um pouco de esforço para relembrar os músculos de C#, criar apps iOS e Android. Vamos poder usar o Office 365 nativo, todas as ferramentas mais recentes do Adobe CS6 e até jogar The Division, tudo na mesma máquina.

De uma só vez, o Windows 10 vira a escolha com o melhor custo-benefício: comodidade de uso, opções de desenvolvimento e hardware competente na forma de Surface Book, Lenovo Yoga 3 e Razer Blade Stealth, que finalmente alcançaram e passaram o lendário acabamento dos MacBook.

2016 é finalmente o famigerado Ano do Linux no Desktop, só que não do jeito que o pessoal de Free Software gostaria. Não dá para ter tudo.