“Uma maneira irônica de falhar” – Retrospectiva do GNU HURD
O GNU HURD (e não GNU/HURD, que é outra coisa) é o projeto iniciado em 1984 (aproximadamente 7 anos antes do Linux) com o objetivo de ser o kernel do sistema GNU.
Sua promessa era tida como revolucionária na época: um conjunto de daemons rodando sobre um microkernel que pretendia superar o desempenho dos kernels monolíticos dos sistemas Unix tradicionais, com mais segurança, liberdade e flexibilidade para seus usuários.
O longo artigo em 3 páginas do The H apresenta as várias reviravoltas pelas quais o projeto passou desde então, os diferentes grupos que hoje procuram oferecer distribuições de software livre adotando o Hurd como seu kernel (e o estado em que se encontram), comentários de desenvolvedores do Hurd e de outros kernels, e muito mais.
Vários detalhes interessantes constam no texto, como a existência de outros sistemas operacionais que fizeram a mesma opção do projeto Hurd por se basear no microkernel Mach, mas já chegaram a lançar um produto destinado a usuários finais (como kernel do OpenSTEP e o XNU, kernel do Mac OS X), ou o ceticismo inicial da FSF sobre as capacidades do kernel Linux, que hoje baseia uma série de sistemas que ela prefere chamar de GNU/Linux.
Várias das passagens cronológicas também são pontuadas com citações do criador do projeto (o bom doutor Richard Stallman), seja indiretamente – como na narração da razão pela qual ele desejava inicialmente que o nome do kernel fosse Alix – ou mesmo diretamente, com a reprodução do seu comentário sobre o que vê como uma possível “maneira irônica de falhar” caso o sistema alcançasse a popularidade mas não a conscientização sobre seus motivos, base comum que tenho visto ser usada quando alguém busca por alguma razão oferecer explicações sobre a base instalada do HURD e sua popularidade enquanto o sistema se aproxima dos seus 30 anos.
Leitura recomendada!(via h-online.com)
Excelente artigo.
Gostei especialmente do histórico inicial, dos passos tomados.
Pena que um artigo desses geralmente vai ser usado isolando uma ou outra frase para “provar como software livre é um fracasso” .
Faz admirar mais ainda o Stallman, como a “teimosia” que ele mesmo cita o fez persistir.
E interessante ver como o que era para ser auxiliar na criação do Kernel, Emacs, GCC e o resto do toolchain, se tornaram tão importantes. Principalmente o GCC hoje em dia, claro.
Os micro kernels que deram certo: QNX (esse “voa” baixo), e claro, o do Mac OS X, que foi construído com código fonte aberto, e depois fechado.
Mas claro, quem liga pra Apple ter feito isso?
Tirei 30 minutos para ler a matéria toda. Excelente artigo.
>>> Pena que um artigo desses geralmente vai ser usado isolando uma
>>> ou outra frase para “provar como software livre é um fracasso” .
Eu vejo que ele PODE ser usado para esta justificativa, mas só vem a afirmar a frase do Ken Thompson(um dos Unix-Masters), quando ele justifica que todo dia sai tecnologia nova, e tudo fica obsoleto, no momento em que o Tanembaum se refere a construção do Linux como obsoleta, por ser monolítica.
Kernel monolítico era obsoleto na época que o Linux foi feito, mas e dai se funciona muito bem em servidores? É tudo uma questão de prática também. Agora, que o Linux se beneficiaria num esquema mais isolado e plugável que (teoricamente) um microkernel traria talvez sim. Bom, é tudo hipótese também.
O Mach que o Mac OS X usa não é puro, o processo do BSD não é algo separado que fica rodando como um daemon (que um microkernel possibilitaria), a parte BSD é colada diretamente no mesmo espaço que o Mach.
@Ironmaniaco
Note que coloquei a frase entre aspas.
O kernel Linux usa vários conceitos da arquitetura micro-kernel, então chamar de obsoleto alegando que ele é monolítico, é no mínimo falta de noção.
O grande problema do kernel Linux hoje não tem nada com arquitetura, tem a ver com a variedade de hardware.
Também gostei do artigo. :-)
Achei que na parte
houve uma confusão. Aqui Linux está sendo usado muito mais como sinônimo de software livre do que de Linux. Essa questão de todos participarem não era novidade no Linux. Desde o começo o Stallman recrutou pessoas interessadas em ajudar na construção de um sistema completamente livre. Dá impressão que o HURD “não deu certo” e o Linux deu porque o Linus inventou o desenvolvimento colaborativo. Não acho que esteja correto.
Quanto ao sistema operacional da Apple, não sei dos detalhes, mas tenho a impressão de que é um daemon monolítico rodando em cima do Mach.
Quanto ao sucesso ou não do HURD ou do Linux, o que eu acho mesmo é que tendo ou não Linux, tendo ou não Mach, tendo ou não Hurd, um sistema livre iria acabar existindo. Poderia ser um sistema melhor ou pior. Tudo isso graças ao movimento do software livre desencadeado por, meu ídolo ;-), Richard Stallman.
Melhor que o QNX é o OKL4 e o seL4. O OKL4 roda em milhões de telefones celulares hoje em dia.
O hurd é tão bom, ocm ideologias tão boas que nem existe!
@Paul
Você deve estar falando do Darwin, a Apple ainda mantém o código disponível, somente a api cocoa que é fechada.
A frase “não deu certo” não deve ser utilizada em bom português. Talvez um sinônimo correto seria “não foi bem-sucedido”.
Esta frase também não se aplica ao Hurd. A situação correta do Hurd é “não foi concluído”.
Logo exigir que o Hurd tivesse participação no mercado é inadmissível.
Então a questão muda para “Porquê o Hurd não foi concluído?”
E a resposta é “Porquê o Linux foi concluído antes e assumiu o seu papel.”
E a última pergunta é “Porquê o Linux foi concluído antes do Hurd?”
A resposta é “Porquê Linus colocou toda sua energia para criar o seu Kernel, e a equipe do Hurd não tinha esse mesmo nível de comprometimento.”
Que o Hurd tenha seu lugar na história, como o primeiro esforço de atingir o objetivo de um Kernel livre, e que o Linux tenha seu lugar na história, como o primeiro Kernel livre que efetivamente atingiu o mercado.
E um dia virá o sucessor do Linux, mas isso só acontecerá quando surgir alguém mais comprometido que o Linus, e isso não será fácil.
@ Rodrigo Robles
Balela…
1) O HURD estava sendo desenvolvido há anos quando o Linux foi lançado, e não oferecia nada de concreto.
2) O Linus fez o Linux funcional sozinho, o que o HURD não tinha conseguido fazer e com uma comunidade inteira disponível. Quando esses colaboradores chegaram, melhor ainda. Mas o Linux já era funcional.
3) O Linux também não foi o primeiro kernel livre. Talvez o primeiro kernel funcional licenciado sobre a GPL, mas a tal da liberdade não se reduz apenas à essa licença.
A evolução do linux seria um micro-kernel com implementações modulares assim como OKL4, mas acho meio difícil não há interesse por enquanto em tal empreitada, seria interessante se as universidades colaborassem em um desenvolvimento conjunto usando a ideia do hurd como base, que aliás é muito boa em sua essência.
Contudo o que vejo só haverá outra evolução semelhante quando um jovem programador customizar um kernel modular porque o linux não roda em seu smartphone. Será que um raio é capaz de cair no mesmo lugar duas vezes?
Espero que sim.
O mais divertido de tudo é que a “maneira irônica de falhar” também tem uma equivalente na vitória.
Cada vez que um chatinho vem dizer que acha o Hurd ridículo e que vai usar outro kernel, ou criar um fork para um projeto qualquer, não relacionado ao kernel, é uma vitória da filosofia do Stallman.
Uma vitória do que o software livre propõe :D .
Eu achava legal que quem fosse “defender” o Hurd o fizesse utilizando fatos. Não acho bacana ficar inventando desculpas. :-)
A verdade é que o Hurd não ficou pronto até hoje e o Linux ficou. Agora que já existe um kernel funcional, o Linux, é compreensível que o interesse no Hurd seja muito pequeno.
Eu acho, no entanto, uma pena — além de um grande atestado de incompetência — que as universidades não participem mais ativamente do desenvolvimento de software livre em geral. Um curso de ciência da computação onde se estudam microkernels, por exemplo, por que não estudar o Hurd e publicar trabalhos sobre o Hurd? Da mesma forma, em um curso de sistemas operacionais o cara — ou a cara :-) — tem que no mínimo dar uma olhadela no código do Linux!! Se @ car@ tá estudando escalonamento de processos, gerenciamento de memória e etc., tem que se perguntar: como é feito no Linux?
A Apple também criou em um época o Projeto MkLInux, que permitia rodar o Linux dentro do Mach; deve ter código ainda disponível, mas a Apple não levou pra frente, como todos sabem.
http://www.mklinux.org/info/aboutfr.html
@Andre Caldas, o Linux o Hurd não são os únicos kernels existentes no mundo. E talvez não seja a melhor forma, já que são complexos. O Minix é mínimo e mais fácil de entender didaticamente o código.
Agora, como funciona e quais os algoritmos de escalonamento e gerenciamento, praticamente toda a literatura academica aborda o Linux, Windows, Mac, BSD e algum Unix
@marcosalex,
Não estou falando disso. Estou falando de o cara já ter baixado e estudado e modificado parte do código. Estou falando de colocar a mão na massa. Se for Linux, Hurd ou BSD, é só baixar e botar a mão na massa.
Dizem que um professor universitário estava demonstrando um teorema que envolvia alguma coisa sobre corpos. Foi quando um aluno perguntou:
- Professor, como seria o caso específico em que o corpo fosse o dos os números complexos?
A resposta:
- Ora, basta tomar para K o corpo C dos números complexos!
Será que você não fez parecido? ;-)
É diferente ver como é feito de ouvir. Então, pessoal, dizem que o windows faz assim…
A teoria é essa, no Linux é feito dessa forma como está na teoria… isso é muito parecido com substituir K por C. Acho que também tem valor acadêmico o cara ir lá e ver! Se o cara tá estudando microkernel, deveria olhar o código do Hurd/Mach. :-)
Mas deixa pra lá… devo confessar que eu tô falando sem saber dos fatos. É só a impressão que eu tenho quando converso com alguém da computação.
Eu tava relendo os posts e dei de cara com essa pérola:
Bixo, você não tinha nenhuma afirmação mais óbvia pra fazer? Por que tá dizendo isso? Em algum momento eu falei que o Linux e o Hurd eram os únicos?