Open Source no mundo Apple

Augusto Campos em 6/07/2011

Open Source, ou código aberto, como é conhecido no Brasil, é um método de desenvolvimento de software que se vale, em um processo transparente, da possibilidade de revisão coletiva do código por todos os interessados.

Tendo como requisitos, entre outros, a disponibilidade do código para que ele possa ser estudado, modificado e redistribuído por qualquer interessado (assim como ocorre no âmbito do movimento Software Livre), o Open Source busca oferecer maior qualidade e flexibilidade, custo mais baixo, e menores riscos oriundos da dependência em relação ao fornecedor ou desenvolvedor original.

A Apple, em seu site oficial sobre suas iniciativas open source, descreve a si mesma como integrante do grupo das grandes empresas de informática que fazem do desenvolvimento em código aberto uma parte importante da sua estratégia de software, bem como relata que continua a usar e a disponibilizar quantidades significativas de software neste modelo.

 

Darwin e a evolução open source na Apple

Na nossa série comemorativa dos 10 anos do Mac OS X já apresentamos com mais detalhes este personagem interessante do histórico da Apple, até hoje ocupante de lugar relevantíssimo debaixo do capô do Mac OS X e do iOS: o Darwin, lançado pela Apple como código aberto em 2000.

Em si um sistema operacional compatível com o POSIX e com a Single UNIX Specification, o Darwin – que é fortemente baseado em código derivado ou obtido do NeXTSTEP e do FreeBSD - provê o grupo central de componentes nos quais as plataformas atuais da Apple se baseiam.

Os detalhes sobre a arquitetura e o funcionamento do Darwin – kernel, drivers, sistemas de arquivos, serviços de rede, componentes BSD, X11, gerenciamento de processos, gerenciamento de memória, APIs, etc. – podem ser encontrados neste documento da Apple para desenvolvedores interessados no Mac OS X, mas o essencial para o nosso foco de hoje está em outra URL: o código-fonte do Darwin, contendo boa parte dos elementos mais centrais dos produtos da empresa, sob uma variedade de licenças livres: GPL, BSD, Apache, MIT e outras.

 

Via de mão dupla

A Apple se beneficiou de uma série de projetos open source, mas ela também contribui com eles. Um exemplo envolve o FreeBSD, do qual muitos componentes estão presentes no Darwin (e no OS X e iOS, portanto): melhorias e novos componentes desenvolvidos pela Apple costumam ser incorporados ao seu código.

Um exemplo recente é o Grand Central Dispatch (GCD), API para execução concorrente de código que tem uma série de vantagens sobre o modelo tradicional baseado em threads. Introduzido a partir do Mac OS X 10.6 (Snow Leopard) e presente também no iOS, o código do GCD foi aberto já em 2009, e logo em seguida portado para o FreeBSD, no qual está presente desde a versão 8.1 (há port para Linux também).

Não faltam exemplos de outros projetos open source populares em diversas plataformas mas que são mantidos ou custeados pela Apple (para seus próprios interesses, naturalmente).

Vamos a alguns deles:

CUPS: provavelmente o mais popular sistema de impressão entre as distribuições de Linux, o CUPS é um software open source mantido diretamente pela Apple, que o usa desde 2002 e adquiriu os direitos sobre seu código em 2007 (quando ele já era extremamente popular no segmento), permanecendo livre (GPL/LGPL) para usuários de outros sistemas e um componente fundamental do OpenPrinting – bem como formando a base do sistema de impressão dos produtos da Apple, naturalmente.

 

WebKit: O engine HTML do navegador Safari, do OS X e iOS, também está presente no navegador Chrome, no sistema de jogos Steam, nos navegadores do BlackBerry e do Android, no Plasma do KDE, no WebOS da HP e em vários outros projetos.  Trata-se de um projeto de código aberto mantido pela Apple e derivado originalmente do componente KHTML (do KDE), mas que conseguiu dar a volta completa, sendo hoje adotado no próprio desktop livre que lhe deu origem.

 

LLVM: esta suíte de ferramentas open source de desenvolvimento (o compilador Clang, linker, debugger e mais) surgiu no meio acadêmico mas desde 2005 é patrocinada pela Apple, que a incluiu como parte integrante do conjunto de ferramentas de desenvolvimento oficiais de sua linha de produtos. Desde meados de 2010 o Clang passou a ser integrante do FreeBSD (que já pode ser completamente compilado com ele), e no momento este compilador, ainda em desenvolvimento, já alcançou um estágio em que é capaz de compilar uma versão funcional do kernel Linux, bem como uma máquina virtual Java, tarefas certamente não-triviais.

Outro exemplo ilustrativo é o do launchd, que desde 2005 é o sucessor, no Mac OS X, de vários componentes históricos do Unix: init, inetd, atd e crond, entre outros. Devido à sua robustez, entre outras vantagens, em 2006 a distribuição Ubuntu pensou em adotá-lo, mas deixou de fazê-lo devido a questões de licenciamento. Logo em seguida à divulgação do fato, a Apple anunciou que, “de forma a encorajar a adoção em outras plataformas”, mudou a licença deste componente, deixando para trás a APSL que o Ubuntu rejeitou e adotando a licença Apache.

 

Listão dos aprovados

A Apple mantém ainda uma longa lista de projetos open source que são adotados e distribuídos por ela.

Esta lista de projetos open source na Apple é longa, e seu preâmbulo é especialmente interessante por trazer um forte argumento para a adoção do código aberto: “A Apple acredita que o uso da metodologia Open Source faz do Mac OS X um sistema operacional mais robusto e seguro, pois seus componentes centrais foram submetidos ao extenuante teste da revisão pelos pares ao longo de décadas. Qualquer problema encontrado com estes softwares pode ser imediatamente identificado e resolvido pela Apple e pela comunidade Open Source”.

A lista de projetos Open Source incluídos no OS X e no iOS também é bastante variada: tem componentes do BSD, do GNU, projetos independentes e mais. Alguns exemplos ilustrativos:

  • Apache, Samba, Tomcat
  • Bsdmake, gnumake, autoconf, gcc
  • Bzip2, gzip, zip
  • Curl, netcat
  • OpenSSH, OpenSSL
  • Emacs, vim, nano
  • SQLite, BerkeleyDB
  • Perl, PHP, Python, Bash, Awk, Tcl

 

Mas é tudo open source?

Certamente que não: a Apple é uma empresa opaca e proprietária em muitos aspectos, incluindo boa parte dos seus aplicativos e outros componentes de software, suas relações tortuosas com DRM e suas extensas coleções de patentes de software.

Mas há um diferencial entre a sua forma de agir em relação ao código aberto e o de outros concorrentes: a Apple coloca o código aberto perto do núcleo de seus produtos, e constrói a sua vantagem competitiva ao redor – e beneficiar-se do poder de desenvolvimento e revisão de código da comunidade open source oferece a ela o incentivo para contribuir ativamente em uma série de projetos que são úteis também aos usuários de outras plataformas.

Tendo de enfrentar, na arena do desktop da virada deste século, um concorrente quase monopolista, a adoção e o incentivo ao uso de padrões abertos e de software open source fez todo o sentido como uma forma de impulsionar a estratégia da Apple e tornar mais nivelado o campo de batalha – ou seja, longe de ser uma decisão altruísta, trata-se de uma escolha consciente pelo modelo melhor adequado para a situação.

Hoje a Apple colhe os frutos desta decisão, e tanto os seus usuários quanto as comunidades dos projetos de software com os quais ela contribui se beneficiam. Torcemos para que este relacionamento frutífero perdure, e que as partes em que a Apple é bem menos do que open se tornem menos numerosas no futuro!

 

Veja também:

Comentar

Comentários arquivados

Comentário de Erick em 06/07/2011 às 10:23:07

Bacana! Sabia que a Apple tinha coisas open source, mas pensei que eram ainda menos!

Comentário de Tiago em 06/07/2011 às 12:09:18

Hehehe, esse artigo tinha que ser publicado no br-linux.org também, porque lá tem muitos . Acredito que eles não gostariam de ler essa reportagem. Ou ao menos não ficarão felizes.

Comentário de Ju em 06/07/2011 às 12:43:34

""A Apple, em seu site oficial sobre suas iniciativas open source, descreve a si mesma como integrante do grupo das grandes empresas de informática que fazem do desenvolvimento em código aberto uma parte importante da sua estratégia de software, bem como relata que continua a usar e a disponibilizar quantidades significativas de software neste modelo.""" Vindo de um empresa que bane da sua AppStore todo software opensouce, isso soa como um piada de muito mal gosto que só as applebixas mais fanáticas vão achar graça.

Comentário de Augusto Campos em 06/07/2011 às 13:10:42

De mau gosto é usar esse preconceito todo pra caracterizar as pessoas cujas escolhas você quer criticar. E não é verdade que a Apple bane da sua AppStore todo software open source. Tem até uma boa quantidade por lá: XPilot, ZBar, WordPress for iPhone, Wolfenstein 3D, Task Coach, sci15, NowPlaying, Molecules, Last.fm for iPhone, Colloquy, Battle for Wesnoth, etc. Aconteceram mesmo várias questões de divergência em relação ao licenciamento que levaram à retirada da App Store de apps open source com copyleft. Dois casos que chamaram bastante atenção foram o do GNU Go e o do VLC, mas em ambos os casos a retirada ocorreu só após desenvolvedores de ambos os projetos, depois de já terem sido submetidos para distribuição sob os termos da App Store, notificaram a Apple de que a continuidade da distribuição do software sob os termos inicialmente aceitos infringia os direitos deles (como de fato provavelmente infringia, a ponto de se questionar se quem enviou inicialmente tinha o direito de aceitar os termos da App Store). Quando a remoção ocorre após notificação de um autor discordando de uma licença que havia sido aceita por quem submeteu o projeto, o fato precisa de muito esforço de retórica para poder ser descrito como um banimento praticado pela Apple, e ainda mais como uma prática generalizada de banir de sua App Store todo software open source. A coisa está mais para o contrário: softwares copyleft (e não todo o conjunto dos softwares open source) em tese não permitem que interessados os ofereçam à Apple para inclusão na App Store (nem a qualquer outra repositório com termos similares), a não ser que estes interessados detenham a integralidade dos direitos autorais sobre o software em questão. O ato de os autores destas licenças copyleft banirem este tipo de distribuição é coerente com os objetivos deles, na minha opinião, ainda que a efetividade de limitar a distribuição em nome da liberdade seja eventualmente debatida. O que não é coerente é alguém dizer que, quando ocorre o efeito desta restrição decorrente da natureza da licença copyleft, e como efeito da manifestação expressa de um licenciador, quem "baniu" foi o distribuidor...

Comentário de leley em 06/07/2011 às 16:08:17

Ola Augusto Campos , queria dar uma sugestao de post , falar sobre o ports que existe no Mac, seria legal muitas pessoas desconhecem. Obrigado

Comentário de Augusto Campos em 06/07/2011 às 19:13:18

Sugestão anotada, obrigado! Pessoalmente prefiro o Rudix, já mencionado por aqui (o link consta ao final do post acima).

Comentário de Victor em 06/07/2011 às 20:54:10

Muito bom o post. Eu sabia que uma parte dos sistemas da Apple era Open Source, mas não tinha essa visão geral. Parabéns!

Comentário de Rafael Gimenes Leite em 07/07/2011 às 20:28:26

Sou usuário de linux ah uns 8 anos, tendo adotado ele por no mínimo as uns 6 anos como meu carro frente inclusive já contribui algumas vezes pro br-linux.org, atualmente estou de mac os x, pois comprei um macbook pro. Confesso que apanho as vezes o terminal me salva, tenho em filosofia não instalar nada pirata e até agora tudo que tinha no linux consegui com sucesso usar no mac os, e o que achei interessante acabei comprando. A única coisa que falta pra mim seria um sistema de atualização decente para os aplicativos do mac, se aplicativos open-source estivessem na apple store com suporte atualização me sentiria muito feliz, depois de anos usando debian e apt-get upgrade, me sinto preguiçoso em ficar entrando em sites de apps opensource para ver se saiu uma nova versão do mesmo e nem todos apps avisam sobre uma nova versão, se tiver algum app que gerencie ou a app-store fizesse isso eu seria muito mais feliz com a apple. Ainda tenho linux no desktop e com certeza irei mantê-lo como meu servidor que é :), me sinto avontade no mac os x, quando a coisa aperta o terminal me salva :)

Comentário de Fellipe em 11/07/2011 às 15:28:02

Concordo, o que falta mesmo é um apt-get "like"... o uso do cachimbo deixa a boca torta.. rsrs..com um simples comando eu deixo o meu linux atualizado..