12 de setembro de 2008

A História do aMule


O compartilhamento de arquivos via Internet é uma realidade atualmente e a cada dia são criados novos protocolos e softwares capazes de fazer esta tarefa de forma mais fácil e eficiente para o usuário. Por causa disso, hoje em dia é fácil para qualquer usuário de sistemas computacionais compartilhar e receber arquivos compartilhados por outros usuários. Do ponto de vista do usuário, todo este processo consiste em apenas instalar um software que permitirá o compartilhamento, realizar uma pesquisa no próprio software por um arquivo que ele tenha o desejo de obter, selecionar um arquivo dentre os encontrados e iniciar a transferência ou simplesmente colocar um arquivo no diretório específico do software para compartilhamento.

Métodos para compartilhamento e transferência de arquivos existem há muito tempo, principalmente a partir de links em páginas da Web para transferência via HTTP ou FTP, por exemplo. Contudo, este método torna mais difícil a localização de arquivos, já que o usuário terá de fazer uma pesquisa na Web, que pode ser complicada mesmo que ele use o Oráculo. Além de ser difícil para compartilhar um arquivo, pois o usuário terá de abrir uma conta em algum servidor, fazer o upload do arquivo e criar um link para que outros usuários possam encontrar o referido arquivo.

Por causa disso surgiu o tipo de rede que deve ser responsável pelos piores pesadelos dos chefões das indústrias de música e de cinema (incluindo seriados): as redes Peer to Peer (Ponto a Ponto). Com essas redes o usuário não fica amarrado a um único servidor (ou a um pequeno conjunto deles), pois cada computador participante da rede funciona como cliente e servidor. Assim é comum que para um determinado arquivo hajam 300 fontes de download disponíveis, o que diminui muito a possibilidade de um arquivo estar indisponível em determinado tempo. Para acessar essas redes foram criados softwares específicos, responsáveis por fazer toda a gerência de downloads (aquilo que se copia da rede) e uploads (aquilo que a rede copia do computador).

Uma das famílias de softwares P2P (Peer to Peerto em inglês tem a pronúncia semalhante à do 2: two) é a dos *Mule, que tiveram origem com o consagrado eMule. A seguir há uma breve descrição dos principais membros desta família e sua evolução até o aMule, um dos melhores softwares do tipo para Linux.

eMule
Era uma vez um software chamado eDonkey2000 (ed2k). Este software foi criado por Jed McCaleb e teve sua primeira versão lançada em 6 de setembro de 2000 com licença de código fechado. Este software trouxe muitas inovações em comparação com seus antecessores do gênero, como a possibilidade dos servidores principais formarem uma rede de pesquisa e o uso de hashes [1] no resultado da busca [2].

Insatisfeito com o eDonkey2000, Hendrik Breitkreuz (também conhecido como Merkur) começou o projeto eMule em 13 de maio de 2002, o qual teve sua primeira versão publicada no SourceForge [3] em 6 de julho do mesmo ano, sob a licença GPL (software livre). Em 4 de agosto de 2002 a primeira versão binária do eMule foi lançada e este era o início de um dos softwares mais populares da atualidade. Até mesmo no nome o eMule é relacionado com o eDonkey2000. O e do início tem o mesmo significado, sendo algo como electronic (assim como e-Mail), já o Mule significa mula em português e a idéia foi de manter o nome de um animal (Donkey significa jumento – daí a mula, mulher do jumento? rs).

O eMule trouxe muitos conceitos novos e melhorias no sistema de compartilhamento de arquivos via rede P2P. Uma característica notável deste software é a capacidade de trabalhar com a rede ed2k do eDonkey2000 e com a rede sem servidores Kad (considerada por muitos como a evolução das redes ed2k e o futuro das redes P2P). No eMule ainda estão presentes os sistemas de ID (alto e baixo) e de créditos, que ditam a prioridade que os usuários terão nas filas de downloads (como várias pessoas podem desejar baixar um arquivo de uma determinada pessoa e esta pode configurar quantas pessoas podem fazer upload ao mesmo tempo dos seus arquivos compartilhados, são criadas filas de espera com prioridades) [5].

O sistema de IDs está intimamente ligado à conexão do usuário (firewall e NAT) e o sistema de créditos associa-se à quantidade de dados baixados (download) e subidos (upload). Basicamente, quanto mais upload um usuário fizer, mais créditos ele terá, obtendo mais prioridade nas filas que enfrentar. Isto resume bem o intuito das redes P2P: não basta simplesmente obter o compartilhamento dos outros. É preciso compartilhar também. Isso garante que sempre haverão arquivos a serem compartilhados.

Dadas as suas grandes vantagens e inovações, o eMule adquiriu uma grande base de usuários, a qual se tornou outra grande vantagem para si próprio. Pode-se entender o eMule como uma evolução da espécie (mula é melhor que jumento – evolução natural? na dúvida, fique com a mula) e isto, associado com o crescente número de usuários de banda larga com intenções de compartilhar arquivos, garante o sucesso do software.

Recentemente o eDonkey2000 foi descontinuado devido a problemas com tribunais estadunidenses sobre infrigimento de leis de copyright (pirataria). Em 12 de setembro de 2006 foi colocado no site oficial do programa um comunicado sobre pirataria, onde o endereço IP do computador do visitante é exibido junto de uma frase dando conta de que o mesmo não está anônimo na Internet e de que pirataria é crime [2].

O sucesso do eMule foi tão grande, que assim como é comum no "universo" do software livre, foram criados vários forks dele (bifurcações – softwares que se baseiam no código de um anterior, mas que tomam rumos diferentes). Normalmente um fork é feito por causa da discordância de parte da comunidade desenvolvedora do software base (digamos assim) do rumo que o projeto está tomando, então eles criam um projeto paralelo com base no original (que se torna seu competidor ou complemento). Outros são criados apenas para dar vida a um projeto similar mas com base em outro sistema operacional ou linguagem de programação. A maioria dos forks do eMule são conhecidos como *Mule (já que eles mantém a palavra Mule, alterando somente a letra inicial).

Figura 01. Tela de listagem dos servidores ed2k do eMule.

lMule
O eMule mostrou-se um excelente software, mas tinha o problema de ser acessível somente via Windows. Com o crescimento da base de usuários do Linux, houve uma demanda crescente por um software semelhante para este sistema operacional. Dessa forma, em janeiro de 2003, Timo Kujala portou sozinho o código de eMule para o Linux, criando o Linux Mule ou simplesmente lMule [6].

Em pouco tempo o time de desenvolvimento cresceu bastante, mas devido a diferença de idéias dos desenvolvedores e pelo roubo do site do projeto por um contribuinte do mesmo, em junho do mesmo ano foi criado um fork do lMule chamado xMule (próxima seção). Depois destes eventos, Kujala e os outros desenvolvedores que não entraram no time do xMule, abandonaram o projeto e como é comum no "mundo" do software livre, muitos desses desenvolvedores entraram em um novo projeto: aMule (última seção) [6]. Esta é a história da mula mais velha do Linux. Uma curiosidade é que nos seus "últimos dias de vida", o projeto lMule estava para mudar de nome (xMule), mas terminou antes que pudesse ser amplamente conhecido assim, ficando este nome para o seu primeiro fork. Por isso é comum encontrar algumas citações sobre o lMule referindo-se a ele como xMule.

xMule
O X11 Mule ou xMule, assim como apresentado, foi um dos forks do lMule. Contudo, em vez de se basear somente no Linux, o xMule pretendia cobrir todos os sistemas Unix-like (e.g., Linux, BSD, HURD, Solaris), mais precisamente todos os sistemas operacionais que usavam o gerenciador de janelas X11 [7].

Nos últimos anos o xMule tem sofrido com publicidade negativa, devido ao fato de que comentários anônimos em sites de revisão de software têm dado conta de que o desenvolvimento deste software estaria parado. Além disso, as relações entre o desenvolvedores do xMule e do aMule não são das melhores. No site do aMule, sugundo [7], ainda consta a seguinte citação sobre as relações com o xMule:
"As relações entre os dois projetos estão, infelizmente, num estado bastante triste."

aMule
O outro fork do lMule é o aMule. Inicialmente, aMule era a sigla para another Mule (uma outra mula), mas o projeto mudou o nome para All-platform Mule (Mula para todas as plataformas), sendo que este último nome exemplifica bem o propósito do projeto em ser um software portável entre diversas plataformas, através do uso da biblioteca wxWidgets [8].

O aMule compartilha código com o projeto eMule, além de possuir um link no site oficial da mula-mãe (eMule), o que mostra a importância do projeto. Um detalhe interessante deste software é que o mesmo pode ser compilado como um conjunto de módulos, o que significa que o núcleo fica separado da interface, ajudando projetos que tenham a pretensão de criar interfaces alternativas para o mesmo. Existem três possíveis interfaces para o aMule: aMuleCMD (cliente em modo texto), aMuleGUI (cliente em modo gráfico, ainda com algumas funcionalidades faltando) e aMuleWEB (interface Web provida por um dos times de desenvolvimento do aMule) [8].

O aMule costuma ser a principal escolha de um software *Mule para o Linux. Ainda apresenta alguns bugs e faltam algumas opções presentes no eMule, mas apesar disso é um software poderoso o bastante para justificar a sua posição.

Figura 02. Tela de listagem dos servidores ed2k no aMule.

Esta é a história básica sobre a evolução dos softwares *Mule no Linux.

Para quem se interessar, em [10] segue o link da página da Wikipedia (em inglês) que possui uma tabela comparativa entre os vários softwares que usam a rede ed2k.



[1] http://en.wikipedia.org/wiki/Hash_function : hash, em computação, é o processo de transformar um tipo de dado – um texto, por exemplo – em um número relativamente pequeno, que serve como uma "impressão digital" deste tipo de dado.
[2] http://en.wikipedia.org/wiki/EDonkey2000
[3] http://en.wikipedia.org/wiki/SourceForge : um sistema de gerenciamento colaborativo de controle de revisão e desenvolvimento de software.
[4] http://en.wikipedia.org/wiki/Peer-to-peer
[5] http://en.wikipedia.org/wiki/EMule
[6] http://en.wikipedia.org/wiki/LMule
[7] http://en.wikipedia.org/wiki/XMule
[8] http://en.wikipedia.org/wiki/WxWidgets : um kit de ferramentas que tenciona criar interfaces gráficas para o usuário (GUIs) para aplicações de plataformas cruzadas (várias plataformas).
[9] http://en.wikipedia.org/wiki/AMule
[10] http://en.wikipedia.org/wiki/Comparison_of_eDonkey_software

Nenhum comentário:

Postar um comentário