Back-End

4 jan, 2016

O Swift é Open Source!

Publicidade

Uma das maiores surpresas da WWDC 2015, realizada em junho, foi o anúncio pela Apple de que a linguagem Swift seria liberada como open source “até o final do ano”, inclusive com o Chris Lattner reafirmando que estavam “nos trilhos” para a liberação. Em novembro os ânimos já estavam exaltados, mas nem sinal da liberação pela Apple. Eis que no início de dezembro finalmente recebemos a notícia: Swift agora é open source. Já está disponível para as plataformas Apple e agora também para Linux (em breve para mais plataformas, de acordo com o anúncio).

A linguagem e algumas ferramentas já lançadas/anunciadas usam a bastante permissiva licença Apache.

Muita gente vinha desenvolvendo projetos já prevendo o lançamento e a liberação da linguagem para desenvolvimento de código para servidores, como por exemplo os projetos Caramel ou Perfect, as ferramentas para linha de comando como o Swiftline, ou até mesmo servidores HTTP como o Taylor e alternativas à Foundation (biblioteca base do Objective-C, usada pelo Swift para muita coisa), como o projeto SwiftFoundation. Esses projetos tentavam ser o mais independente possível de outras tecnologias mantidas a portas fechadas pela Apple, para poderem ser utilizados no dia zero em outras plataformas. Entretanto, uma das grandes surpresas foi a Apple liberar justamente a Foundation no pacote.

Outra grande surpresa é a adição proposta para a versão 3.0 de um gerenciador de pacotes integrado à linguagem, independente de plataforma e de ferramentas de terceiros como CocoaPods ou Carthage.

Propostas de evoluções são bem vindas, e já temos algumas grandes para a próxima “minor version” e para Swift 3.0. Uma alteração que achei bastante curiosa para a versão 3.0 é a remoção dos operadores — e ++. É uma alteração pequena, mas de grande impacto. Ficar de olho em coisas assim pode ajudar a evitar escrever código que terá de ser removido ou reescrito no futuro.

Já a alteração da tradução do nome de métodos de Objective-C e funções C para métodos/funções mais swifty tem potencial de quebrar mais os apps na migração de Swift 2.0 para Swift 3.0 do que de Swift 1.2 para Swift 2.0. Isso porque, em média – segundo conversas com outros desenvolvedores – as migrações levavam por volta de duas semanas. Agora, a migração não é apenas na transcrição “direta” do método em Objective-C – que seguia o Coding Guidelines for Cocoa – para Swift. Agora, segundo a nova proposta, a chamada de um método de Objective-C em Swift será feita seguindo o documento Swift API Design Guidelines. Por exemplo, ao invés da chamada abaixo, como é feita hoje:

let contentString = listItemView.stringValue.stringByTrimmingCharactersInSet(
  NSCharacterSet.whitespaceAndNewlineCharacterSet())

Teríamos uma forma mais “swifty”, assim:

let content = listItem.stringValue.trimming(.whitespaceAndNewlines)

Ficar de olho pode nos salvar bastante tempo de migração para novas versões da linguagem – e considerando que o Xcode 7 exigia compatibilidade com Swift 2.0 quebrando a compatibilidade com 1.2, podemos prever que uma possível versão 8.0 do Xcode virá a quebrar o código de versões 2.0.

Quer colaborar? Já temos um guideline e um guia para o contribuir, além de um código de conduta. Inclusive um dos documentos já influenciou o Miguel de Icaza, criador do GNOME (gerenciador de interfaces para Linux) e do Mono (implementação open source do .Net) e que mudou para Mac não muito tempo atras, que acabou criando o código de conduta para o contribuir do Mono. No início do guideline temos uma demostração da visão da Apple sobre as APIs criadas e usadas em toda a extensão de linguagens, bibliotecas e frameworks que ela mantém:

  • clareza no ponto de uso;
  • clareza é mais importante do que brevidade;
  • escreva um comentário de documentação.

O código está todo no GitHub, com dezenas de forks sendo criados – vamos esperar que boa parte deles gerem pull requests aceitos – e mais informações podem ser obtidas no site oficial – que no momento em que esse post foi escrito estava bastante instável devido ao volume de acessos. Já temos inclusive versões pré-compiladas para Ubuntu. Vários pull requests já foram aceitos, desde de erros gramaticais, passando por otimizações de tipos/classes da Foundation ou suporte a compilação em FreeBSD. Ontem inclusive o Craig Federighi, Vice Presidente Senior de Engenharia de Software na Apple afirmou em uma entrevista para a The Next Web que todo o trabalho daqui pra frente no Swift será feito no GitHub.

Ainda temos muita informação para processar e muita documentação para ler, mas é um passo gigantesco para uma empresa que, apesar de sempre apoiar e manter diversos projetos open source (mesmo projetos mais conhecidos em Linux do que em plataformas Apple, como o gerenciador de impressão CUPS), sempre foi conhecida por manter tudo em segredo, com mão de ferro sobre as plataformas. É bacana ver, por exemplo, o primeiro commit feito pelo Chris Lattner em 17 de Julho de 2010 – a única pessoa com 5 anos de experiência em Swift ?

E você, o que achou da novidade? Compartilhe com a gente nos comentários. Até a próxima!