bmelo

Sempre quis contribuir para um projeto de sistema operacional Unix open source, mas nunca soube como. E quando digo Unix me refiro a um SO derivado do Unix do Bell Labs criado por Ken Thompson e Denis Ritchie. Por que essa minha vontade? Porque o Unix é o software mais importante da história da computação. Foi no Unix que surgiu o 1o jogo de xadrez pra computadores; foi no Unix que surgiu a linguagem C e C++; foi no Unix que surgiu o protocolo TCP/IP e posteriormente a internet (www); foi no Unix que surgiu o padrão UTF-8, foi no Unix que surgiu sockets; foi no Unix que surgiu os sistemas de arquivos mas robustos do mercado (UFS, XFS e ZFS); foi por causa do Unix que surgiu a arquitetura RISC; foi no Unix que surgiu o Java e o editor de textos vi; foi no Unix que surgiu o primeiro recurso de virtualização a nível de sistema operacional; foi também no Unix que surgiu o sistema de banco de dados open source mais poderoso, o PostgreSQL. Foi também no Unix que surgiu um modelo de desenvolvimento que seria os primórdios do que hoje é conhecido como open source. Além do mais, os desenvolvedores do Unix no Bell Labs seguiam uma filosofia que ficou conhecida como Filosofia Unix que foi definida por um dos principais desenvolvedores do Unix, Doug McIlroy: -Escreva programas que façam apenas uma coisa, mas que a façam bem feita. -Escreva programas que trabalhem juntos. -Escreva programas que manipulem streams de texto, pois esta é uma interface universal.

Embora Denis Ritchie e Ken Thompson tenham criado o Unix juntos, e por isso receberam o prêmio Alan Turing juntos, Ritchie era ajudante de Thompson. Ritchie se definiu como um entusiasta do projeto do Thompson que colaborava com ideias e melhorias, mas que o Unix em sí era um projeto do Thompson. A linguagem C foi criada por Ritchie como um aprimoramento da linguagem B de Ken Thompson.

Existem sistemas operacionais diretamente derivados do código do Unix do Bell Labs, como o BSD e o Unix System V; e existem sistemas operacionais que reimplementam o Unix do zero, como o Linux.

O BSD (Berkeley Software Distribution) foi criado por Bill Joy na Universidade da Califórnia em Berkeley. O mesmo Bill Joy é o criador do editor de textos vi, do C Shell e co-fundador da antiga Sun Microsystems (comprada pela Oracle em 2011). O Computer Science Research Group (CSRG) da Universidade da Califórnia recebia investimento para desenvolver pesquisas da Defense Advanced Research Projects Agency (DARPA) e foi aí que surgiu o protocolo TCP/IP. Ken Thompson era ex-aluno da UCB e ao criar o Unix foi até lá oferecer para fins de pesquisa e colaboração, Bill Joy então cria um conjunto de programas para o Unix que ele chama de BSD. Posteriormente o CSRG começa a focar em portabilidade do Unix para computadores diferentes do minicomputador PDP-11 e então o código original do Unix começa a ser modificado para implementar as novidades. O Unix do Bell Labs manteve sendo desenvolvido até a versão 7, já a versão 8 do Bell Labs foi derivada do próprio BSD. Sim, o pai virou filho.

A versão 7 deu origem ao Unix System III, tentativa da AT&T (que era dona do Bell Labs) de comercializar o Unix, e ao Xenix da Microsoft. O System III era mais diferente que o Unix V7 do que o BSD, a AT&T continuou desenvolvendo-o e adicionando alguns componentes do BSD nele. Foi aí que surgiu o System V que se tornou referência de mercado de sistemas operacionais. Quando falamos que GNU/Linux é um sistema do tipo Unix, é porque ele reimplementa do zero e open source toda a interface e recursos disponíveis no System V, porém ele não pertence à linhagem Unix. E por não pertencer à linhagem, ele não se preocupa em seguir a filosofia Unix (nem o System V se preocupa tanto assim...).

Bill Joy fundou a Sun Microsystems que fabricava workstations com um Unix próprio diretamente derivado do BSD: o SunOS. Foi o primeiro BSD a ser comercializado. Em geral os recursos mais inovadores do BSD eram escolhidos a dedo e adicionados em derivados do System V que eram sempre comerciais e com o SunOS tínhamos um BSD inteiro comercial.

O Steve Jobs ao ser demitido da Apple fundou a NeXT, que fabricava workstations rodando um BSD chamado de NeXTstep. Nele Tim Berners-Lee criou o protocolo http e o primeiro navegador da web: o WWW. E o resto é história...

Quando a Intel criou a arquitetura x86 no Intel 8086, que se mantém até hoje nos Core i7, alguns tiveram a ideia de portar o BSD para o 386 surgindo assim o 386BSD de autoria do casal Jolitz. Como o 386BSD tinha muitos problemas e nunca chegou a um estado de sistema operacional utilizável, uma comunidade de desenvolvedores começaram a criar patches de melhoria para ele. Percebendo que o casal Jolitz negligenciava os patches e que o desenvolvimento do 386BSD estava fadado a acabar, essa comunidade se dividiu em duas (provavelmente duas partes que não tinham muito contato entre sí).

Os fundos do CSRG acabaram, o processo que a AT&T meteu na UCB porque empresas estavam comercializando o BSD contendo código do Unix do Bell Labs, ajudou a sepultar o CSRG de uma vez. O 386BSD era o único BSD que continuava sendo desenvolvido, mas negligenciado. Então as duas comunidades que faziam patches para o 386BSD fundaram respectivamente e no mesmo ano os projetos NetBSD e FreeBSD. O NetBSD decidiu focar em portabilidade entre arquiteturas diferentes, porque acreditavam que essa era a melhor forma de levar o Unix literalmente pra todo mundo. E o FreeBSD decidiu levar o Unix para onde os usuários estavam: nos PCs. Hoje o NetBSD é o SO mais portável do mundo, em que se você criar um novo processador hoje, você não terá grandes problemas em compilar o NetBSD para ele. E o FreeBSD é o mais fácil de usar e o padrão do mercado.

O OpenBSD é um fork do NetBSD após uma briga entre os fundadores do NetBSD em que um deles queria focar em segurança. Hoje o OpenBSD é o SO mais seguro do mundo e herda também a portabilidade do NetBSD. É o maior BSD depois do FreeBSD em termos de investimento financeiro. Enquanto o Free arrecada mais de 1 milhão de dólares por ano, o Open arrecada cerca de 500 mil. O NetBSD sofre uma negligência embora seja um sistema operacional muito bem feito, estável e de alta portabilidade. O NetBSD tem menos desenvolvedores que o FreeBSD e o OpenBSD, porém ainda assim consegue inovar as vezes até mais que os outros. Por exemplo, o NetBSD é o único SO que tem um recurso onde os drivers podem ser portados sem modificação para qualquer SO (Write once, run everywhere).

Embora a documentação para desenvolver o kernel Linux seja farta na web, meu interesse não era ser mais 1 desenvolvedor do Linux no meio de mais de 24 mil desenvolvedores, e sim participar da história da computação criada pelo Unix contribuindo com um SO Unix que precisasse de ajuda por ter poucos desenvolvedores e pouco investimento, mas que ainda assim seja inovador. O Open e o NetBSD são os BSDs que mais seguem a filosofia Unix, por isso o código deles é simples, minimalista e fácil de entender. No entanto a comunidade do OpenBSD é mais hostil, por isso o NetBSD se torna o mais adequado para iniciar. Por isso a partir do próximo post vou compartilhar o passo a passo para começar no desenvolvimento do NetBSD.

Neste blog irei escrever sobre meus estudos em computação e minhas tentativas de ter uma vida mais privada na internet. Talvez me aventure em falar outros temas também, mas talvez seja melhor um blog dedicado exclusivamente aos meus hobbies.

Sou formado em Análise e Desenvolvimento de Sistemas pelo IFSP, antes disso comecei em um curso de Ciências da Computação na UNESP que por motivos diversos não pude continuar. E agora querendo um diploma de bacharelado de novo, estou em Sistemas de Informação no ICMC-USP.