# Haiku (sistema operacional)

Haiku, conhecido anteriormente como OpenBeOS, é um sistema operacional de código aberto para plataforma x86 que tenta manter retrocompatibilidade com o agora descontinuado, BeOS. Seu desenvolvimento começou em 2001 e tornou-se self-hosting em 2008. A primeira versão alfa foi feita em Setembro de 2009, e a primeira versão beta mais recente em Setembro de 2018; o desenvolvimento continua ativo em 2018, com "nightly images".
Haiku é apoiado pelo Haiku, Inc., uma organização sem fins lucrativos sitiada em Rochester, Nova York, EUA, fundado em 2003 pelo ex-líder do projeto, Michel Phipps.
Como reportado em Junho de 2018, pelo relatório de atividades mensais, os desenvolvedores do Haiku portaram o LibreOffice para o sistema operacional.

## História

O projeto começou como "OpenBeOS" em 2001, ano em que ocorreu a compra da Be Incorporated pela Palm, Inc., que descontinuou o desenvolvimento do BeOS; o foco do projeto era dar suporte à comunidade do BeOS, criando um substituto de código aberto e retrocompatível.
Um entre diversos projetos apresentados com o objetivo de continuar o sistema operacional, o OpenBeOS se distinguia do Cosmoe e do BlueEyedOS por não utilizar um núcleo Linux ou BSD existente que reimplementava a API do BeOS. O projeto planejou uma quase completa reconstrução do sistema, mantendo compatibilidade de programas e códigos fonte, permitindo assim que os programas existentes para BeOS pudessem ser executados no novo sistema sem a necessidade de uma recompilação.

### Origem do nome

Em 2004 um novo nome foi escolhido para o projeto com o intuito de evitar o uso indevido de uma marca registrada agora em posse da Palm. O novo nome, decidido entre os líderes do projeto e influenciado por uma enquete realizada entre a comunidade, foi revelado na conferência WalterCon daquele ano. O nome "Haiku" pretende refletir a elegância e simplicidade que atraíram vários usuários para o BeOS, além de ser uma referência direta às mensagens de erro exibidas na forma poética japonesa haiku pelo navegador NetPositive e outros programas da Be.

## Desenvolvimento

Haiku é escrito em C++ e fornece uma API orientada a objetos.
Devido ao design modular do BeOS, o projeto não tem um ritmo de desenvolvimento fixo. Iniciado em 2001, já contava em 2004 com vários módulos em estágio alpha.
A construção modular do BeOS permite que equipes de programadores voluntários trabalhem independentemente nos substitutos dos servidores e APIs (conhecidos no Haiku como "kits"). As equipes incluem:
* App/Interface - no qual se encaixam os kits da interface, aplicativos e suporte;
* BFS - que visa a recriar o sistema de arquivos Be (Be File System), tarefa quase completa, com o sistema OpenBFS utilizado não apenas pelo Haiku como também pelo SkyOS;
* Game - que desenvolve o kit para jogos e suas APIs;
* Input Server - o servidor que gerencia os dispositivos de entrada como teclados, mouses/ratos e como se comunicam com outras partes do sistema;
* Kernel - o núcleo do sistema operacional/operativo;
* Media - desenvolvendo o servidor de áudio e APIs relacionadas;
* MIDI - implementando o protocolo MIDI;
* Network - responsável por escrever drivers para dispositivos de rede e APIs para os diferentes protocolos;
* OpenGL - desenvolve o suporte a OpenGL;
* Preferences - recriando a tela de opções do BeOS;
* Printing - responsável pelos servidores de impressão e drivers para impressoras;
* Screen Saver - implementando as funcionalidades dos protetores de tela;
* Storage - desenvolvendo o servidor de armazenamento e drivers para sistemas de arquivos;
* Translation - recriando os módulos de leitura e conversão de formatos de arquivo.
Alguns kits foram considerados completos e os demais estão em diferentes estágios de desenvolvimento.
O núcleo do Haiku é um núcleo híbrido e um fork do NewOS, um núcleo modular escrito pelo ex-engenheiro da Be Inc., Travis Geiselbrecht. E como o resto do sistema, ele ainda continua em constante desenvolvimento. Muitos recursos foram implementados, incluindo uma camada (layer) VFS e suporte rudimentar a multiprocessamento simétrico.

### Marcos

* Março e abril de 2005 - Execução gráfica dos primeiros aplicativos BeOS em Haiku, incluindo o navegador Links, sem utilização de códigos pertencentes à Be Inc.
* Julho de 2005 - Tracker, o gerenciador de arquivos do BeOS, roda com sucesso.
* Outubro de 2005 - Durante três meses, Axel Dörfler se tornou o primeiro desenvolvedor pago do sistema, possibilitado por donativos. Trabalhou no boot via CD, multiprocessamento e outras funções como o núcleo e o app_server.
* Março de 2006 - Execução do jogo Quake III Arena em modo software.
* Maio de 2006 - Execução bem sucedida do navegador Opera e dos clientes de e-mail e IRC; Beam e Vision.
* Julho de 2006 - Implementação inicial de novo código de rede.
* Agosto de 2006 - Utilização básica de dispositivos USB 1.1 como mouse e teclado, implementação USB 1.1 prevista em 75% completa.
* Setembro de 2006 - Suporte a leitura e escrita de partições NTFS.
* Outubro de 2007 - Suporte a controladores Serial ATA.
* Janeiro de 2008 - Um time "Java for Haiku" foi criado e aprovado com unanimidade pelo OpenJDK Porters Group para converter o OpenJDK para Haiku, versão livre do JDK.
* Abril de 2008 - Haiku se torna auto hopedeiro (self-hosting), isto é, é capaz de compilar seu próprio código fonte.
* Janeiro de 2009 - Suporte nativo ao GCC 4.3.3, abrindo novas possibilidades já que muitos programas requerem GCC 4, como o Firefox 3, WebKit, VLC 0.9, Gnash, entre outros.
* Julho de 2009 - Uma primeira versão do protótipo do FreeBSD WLAN-Stack foi portado para o Haiku, que permite ligações sem fios sem criptografia como primeiro passo.
* 14 de setembro de 2009 - É lançada a versão R1/Alpha 1, o primeiro lançamento de desenvolvimento do sistema.
* 10 de maio de 2010 - É lançada a versão R1/Alpha 2.
* 28 de setembro de 2018 - É lançada a versão R1/Beta 1, o primeiro lançamento beta de desenvolvimento do sistema.

## Compatibilidade com BeOS

Haiku visa a ser compatível com o BeOS tanto nos níveis do código-fonte quanto dos programas compilados, permitindo que programas escritos e compilados para BeOS possam ser compilados e rodar sem modificações no Haiku. Isto proporcionaria aos usuários do sistema uma vasta coleção de aplicativos disponíveis (mesmo programas cujos desenvolvedores já saíram do mercado ou deixaram de atualizar seus programas), além de permitir que o desenvolvimento de programas interrompidos desde o "fim" da Be Incorporated seja retomado.
Essa decisão no entanto possui seus pontos negativos, deixando o sistema preso à versão 2.95 de seu compilador GCC que, em 2009, já tem mais de 8 anos (apesar de pequenas atualizações terem sido lançadas desde então, e o fato que o Haiku pode ser compilado na versão mais nova do GCC, opção que quebra a compatibilidade com os programas existentes). Usando a versão mais recente do GCC 4 quebras de compatibilidade com BeOS, no entanto, Haiku está sendo construído com suporte aos ambientes GCC4/GCC2 híbrido. Isto permite a utilização de ambos GCC versão 2 e versão 4 binários, ao mesmo tempo.
Apesar dos esforços, a compatibilidade com uma série de acessórios que usam APIs próprias não será implementada. Nesta situação encontram-se drivers para sistemas de arquivos e codecs para formatos de mídia alternativos, entre os codecs afetados com pouca chance de reimplementação estão os decodificadores de mídia Indeo, para os quais não existem especificações disponíveis.
Entre os aplicativos para BeOS 5 que rodam com sucesso no Haiku (em abril de 2006) estão; VLC, Quake II, Quake III Arena, NetPositive, Mozilla Firefox e o editor de imagens Wonderbrush.
A compatibilidade com drivers é incompleta e não deve cobrir toda a gama de drivers para BeOS. Drivers para placas de vídeo 2D de modo geral funcionam como na versão R5, assim como os drivers de rede. Além disso, Haiku oferece uma fonte de nível de rede do FreeBSD uma camada de compatibilidade de driver, o que significa que ela pode suportar qualquer hardware de rede que vai funcionar no FreeBSD. Drivers de áudio que usam versões de API anteriores ao R5 não são suportados, e dificilmente serão, as versões mais atuais, por outro lado, funcionam.
Drivers para categorias como dispositivos de armazenamento e adaptadores SCSI não serão compatíveis. Já os drivers USB para as versões R5 e posteriores do BeOS serão.

## Além do R1

Apesar da primeira versão (R1) do Haiku não ter sido completada, o planejamento inicial para a segunda versão (R2) já começou através do projeto "Glass Elevator" (referência ao livro infantil Charlie and the Great Glass Elevator - Charlie e o Grande Elevador de Vidro - sequência de A Fantástica Fábrica de Chocolates / Charlie e a fábrica de chocolate).
O único detalhe confirmado até o momento (janeiro de 2009) é a mudança para a versão mais nova da coleção de compiladores GNU (especificamente a versão 4.4.5). Uma camada de compatibilidade está planejada para permitir que aplicações desenvolvidas para o Haiku R1 funcionem no Haiku R2 e outras versões futuras. Isto foi mencionado em uma discussão na lista de email do Haiku, por um dos principais desenvolvedores, Axel Dörfler. Entre as sugestões encontram-se: indexação de arquivos a altura do Beagle (utilizado no Unix), Google Desktop e Spotlight (do Mac OS X) maior integração do formato SVG na área de trabalho; suporte a múltiplos usuários e kits adicionais.