# SkyOS

SkyOS ("sky o-ess") é um sistema operacional criado por Robert Szeleney e desenvolvido desde 1996. O sistema é de conteúdo pago e precisa ser adquirido junto ao autor. Obedece ao padrão POSIX e possui bibliotecas GTK e ferramentas GCC facilitando o porte de aplicações Linux/UNIX. Muitos programas já foram portados para o SkyOS, entre eles o Mozilla Firefox e o OpenOffice. A partir de 30 de janeiro de 2009 o desenvolvimento foi interrompido e não há planos para retomar seu desenvolvimento ter sido anunciado.
Entre os seus recursos, estão o suporte ao sistema de arquivos de 64 bits (herdado do OpenBeOS/Haiku).

## História

SkyOS é o culminou mais de dez anos de pesquisa e desenvolvimento por Robert Szeleney e voluntários.
Um jovem na universidade, Szeleney e vários amigos começaram a "Sky Operating System" como uma experiência em design OS. Enquanto os anos de progresso e os outros membros fundadores da SkyOS distanciaram do projeto, Szeleney continuou a trabalhar no sistema operacional em seu tempo livre.
Szeleney trabalho em tempo integral foi na programação de automação, e ele já tinha uma justa compreensão do projeto do sistema operacional. Mas ele continuou a usar SkyOS como um dispositivo de aprendizagem, liberando quatro versões sob uma licença open source.
O projeto atingiu o auge de sua popularidade em 2004, quando Szeleney decidiu fechar a fonte de SkyOS e começar a trabalhar na quinta versão. No início do ano, Szeleney iniciou um programa beta pagos para financiar o desenvolvimento e distribuição do sistema operacional, esperando ter muito poucos (se houver) assinantes interessados. Ao mesmo tempo, membros da comunidade organizou um concurso para determinar a aparência da GUI, que chamou a atenção significativa para o projeto. Então, muita atenção, de fato, que até o final do mesmo ano, a comunidade SkyOS triplicou de tamanho, e Szeleney tinha centenas de beta testers ativos para baixar e testar seus releases duas vezes por mês.
SkyOS sofreu muitas mudanças depois dessa onda de popularidade. Por causa de diferenças significativas no nível de origem, Szeleney parou de pensar o que estava em desenvolvimento como a quinta versão de seu sistema operacional, e o nome "SkyOS 5.0" foi renomeada para simplesmente "SkyOS". A atitude mais profissional foi tomada durante todo o projeto, e Szeleney mesmo considerado incorporando sob o nome "Djinnworks". A comunidade SkyOS, desde então, reduziram-se significativamente desde o seu pico em 2004.
A partir de 2009/01/30, o desenvolvimento de SkyOS está atualmente suspenso. O desenvolvedor decidir sobre qual curso de ação a ser tomada em relação ao desenvolvimento futuro:
* Abra fonte do SkyOS
* Faça SkyOS disponível gratuitamente
* Especializar em um nicho ainda a ser definido
* Parar desenvolvimento SkyOS
Há também uma tentativa experimental de usar NetBSD ou Linux para resolver os problemas de driver.

## Tecnologia

SkyOS espaço do usuário está em cima de um costumes, modularizado, kernel multitarefa-preemptiva com suporte para recursos comuns, como o processo de thread isolado, gerenciamento de memória/paginação, a depuração do kernel, as primitivas de baixo nível de bloqueio, e em tempo real PIC/APIC timers. É um kernel monolítico, com os drivers que são carregados dinamicamente no kernel através de uma API de extensão.
Existem algumas características notáveis ​​que distinguem o kernel SkyOS dos outros. Estas incluem:
* Kernel-mode suporte VESA, permitindo a visualização gráfica imediatamente após ligar o computador
* Camada de abstração de Arquitetura, permitindo SkyOS para ser facilmente portado para outras arquiteturas
* Suporte CPU avançadas, incluindo Multi-Core/SMP/Hyper-threading e todos os grandes extensões x86
* Completa DMA, ATAPI, e suporte ATA/SATA (com os drivers SATA para maior váriedade de chipsets)
* Suporte para barramentos populares
Ao contrário de uma crença popular, o kernel não é derivado do Linux ou qualquer um dos vários BSDs. Ele foi escrito inteiramente por Szeleney ao longo de vários anos, e não usa nenhum código externo.

### SkyGI

O projeto da SkyGI API é baseado em torno dos conceitos da Qt e Swing toolkits de janelas. Um princípio fundamental da SkyGI é a "visão". Cada objeto GUI é derivado do objeto "visão" de base, e, é como tal, todos têm propriedades semelhantes e se comportam de maneiras semelhantes.
SkyGI tem suporte embutido para internacionalização e localização, permitindo que os desenvolvedores de terceiros possam criar facilmente aplicações multilíngües que são base fácil em torno da escrita "tradução" de arquivos. A estrutura também facilita a acessibilidade através da construção de suporte para navegação por teclado avançado.
Controles nativos podem ser temáticos pela colocação de um 'tema' arquivo, sintaticamente semelhante ao formato MSStyles, num diretório correspondente à localização do executável.

### Componentes

A GUI SkyOS segue de perto o WIMP e metáfora de escritório utilizado em todas as GUIs modernas. No entanto, existem vários componentes principais do GUI SkyOS que são distintos dos outros sistemas operativos:
O Painel é o equivalente funcional para a barra de tarefas em Windows ou o Dock no Mac OS X. Ele é usado para lançar programas e alternar entre janelas de aplicativos, bem como para apresentar informações ao usuário. Plug-ins permitem aos desenvolvedores estender a funcionalidade do painel. Plug-ins existentes, por exemplo, foram adicionados com base em consulta rápida aplicação de lançamento, e modificou o indicador dia/noite, em vez disso, mostrar a informação meteorológica localizada.
O Notifier é um built-in elemento de interface de usuário para alertar o usuário para qualquer número de coisas, incluindo falhas de aplicação e adições de hardware/remoções. Os programadores de aplicativos podem usar o notificador para seus próprios fins, através do Desktop Communication Service.
O Viewer é o navegador de arquivos nativo do SkyOS. Possui vários tipos de visão, miniaturas, e baseada em metadados exibindo as informações, bem como "busca enquanto você digita" consultas de navegação e avançado. O Viewer é um dos navegadores de arquivos do sistema primeiros e suporta a visualização por abas.

### SkyFS

SkyFS é um fork do sistema de arquivos OpenBFS. Ele suporta as seguintes características:
* Estruturas de dados em 64 bits
* Journaling
* Suporte a Metadados, permitindo, entre outras coisas, ACLs
* Indexação e consulta de metadados
* Permissões de arquivos POSIX
Poucas mudanças foram feitas para o sistema de arquivos desde o fork. A ID Mágica foi alterada para diferenciar entre as partições SkyFS e divisões BFS, e o espaço é agora reservado no início de cada partição para um bootloader. Caso contrário, o layout em disco dos sistemas de arquivos são idênticos.
SkyOS também pode ser executado a partir dos seguintes sistemas de arquivos:
* FAT32/FAT16/FAT12
* ISO 9660

### Pesquisa rápida

Com a ajuda do SQL Index Feeder em SkyFS suporta metadados rápido e pesquisa de texto completo semelhante ao conceito de WinFS e Spotlight. Isto permite pesquisas instantânea de todo o sistema, bem como "busca enquanto você digita" navegação de arquivo.
O conceito de pastas virtuais, que normalmente é implementado juntamente com um quadro de pesquisa com base em consulta, existe em SkyOS como a capacidade de salvar as consultas no Visualizador para posterior execução.
Aqui está um exemplo de Visualizador consulta exibe todos os documentos txt que foram modificadas hoje:
name = *.txt && last_modified >= %today%
Para realizar uma pesquisa, não é necessário compreender o sintaxe da consulta acima. As consultas podem ser construídas usando uma GUI, ou simples busca por palavra-chave base pode ser (e é, por padrão) utilizado.

## Desenvolvimento

Embora existam diversas APIs bem desenvolvido bem como a compatibilidade excepcional com POSIX, escrita e liberação de aplicações para SkyOS pode ser difícil devido a incompatibilidades com binários menores, entre os betas. Os desenvolvedores que desejam oferecer um pedido que SkyOS deve acompanhar as mudanças que estão sendo feitas para as APIs, e geralmente são obrigados a modificar e recompilar suas aplicações após o lançamento de cada novo beta. Não há planos para finalizar qualquer uma das APIs do SkyOS antes de ser lançado publicamente, como Szeleney deseja reservar a capacidade de melhorar ainda mais o desenvolvimento para progredir.
Executáveis ​​SkyOS são compilados no formato ELF usando o GNU Compiler Collection. Comumente, os desenvolvedores usam compilador cruzado em suas aplicações para uso no SkyOS. No entanto, como GCC foi portado e está a ser activamente mantido, é também possível desenvolver aplicações dentro de uma instalação SkyOS em funcionamento. Mais notavelmente, Scribis, um multi-protocolo de mensagens instantâneas, foi desenvolvido por um voluntário exclusivamente sob um ambiente SkyOS corrente.
Os desenvolvedores que desejam distribuir seus aplicativos via um canal oficial pode configurar Software Store um repositório on-line. A SkyOS Software Store é uma interface gráfica baseada no sistema de distribuição de software que implementa um formato de pacote personalizado e protocolo de repositório simples.
A evolução da própria SkyOS acontece esporadicamente, planejamento de longo prazo com pouca documentação. Isto sempre tem causado preocupação na comunidade, mas tem permitido um ritmo de desenvolvimento muito mais rápido do que os projetos democraticamente direcionais.

### APIs nativas

C++ é a única linguagem de programação suportado oficialmente para o desenvolvimento nativo em SkyOS. Perl e Python, foram portados, mas as máquinas virtuais não têm ligações para qualquer uma das APIs SkyOS nativas. Aplicações .NET que são baseadas em linha de comando pode ser executado através do Mono, mas novamente, como não existem ligações para SkyGI, aplicações baseadas Windows Forms em GUI não pode ser executado.
O Desktop Communication Service é um objeto orientado a comunicação entre processos framework em todo SkyOS. Ele permite a linha de comando e de comunicação baseada em API, entre o kernel e processos do espaço do usuário no SkyOS.
Neste modelo, mensagens legíveis mensagens são enviadas para 'interfaces' que são representados por uma seqüência de identificadores.
Por exemplo, o envio desta mensagem para o "Notify.Media.Player.Control" faria com que o SkyOS media player para avançar para a próxima música:
   MessageType STRING "Next Song"
SkyOS emite mensagens em resposta a centenas de eventos, incluindo os anexos do dispositivo, instalação de software bem-sucedida, mudanças de nível de bateria, e dados meteorológicos novos, todos disponíveis para qualquer aplicativo ou driver que se subescrito para a interface apropriada.
O Integrated Streaming System (ISS) é um conjunto de APIs C++ concebido para facilitar a interação com media, semelhante ao conceito de um servidor de som no Linux. A API é capta de forma que a reprodução de mídia é completamente independente do codec.
Funcionalidade básica pode ser alcançada em menos de dez linhas de código, em situações onde o comportamento padrão é aceitável para o programador. No entanto, através de uma API muito extensa, todas as partes relevantes do pipeline de processamento de áudio-visual pode ser controlada.
   "Por exemplo, você pode criar dois stream de áudio, uma estéreo, um 5.1 Dolby Digital, conectando um filtro de eco para o segundo, associando o stream de 5.1 com um SB Audigy live e o stream estéreo com uma placa de som estéreo básico, e aplicar vários filtros software digital para stream individuais."
— Robert Szeleney

### Segurança e estabilidade

Embora as APIs para trabalhar com usuário e permissões de arquivo são bem desenvolvidas, nenhuma das permissões aplicadas são realmente obedecidas pelo sistema. Enquanto SkyOS está em desenvolvimento, este continuará a ser o comportamento desejado.
A pilha de rede usada no SkyOS é um projeto personalizado que é largamente testado em um ambiente de produção. Nenhuma tentativa conhecidos têm sido feitas para entrar em um sistema live para internet, o que significa que a vulnerabilidade das SkyOS é desconhecida.
O "passworded folders" recurso é implementado ao nível do sistema de arquivos, de modo que nenhum aplicativo SkyOS pode usar as APIs nativas para acessar os arquivos sem a senha correta ter sido indicado pelo usuário. No entanto, os arquivos em uma pasta com senha são armazenados no disco de uma forma idêntica arquivos un-passworded, então um programador inteligente poderia escrever um driver SkyFS que simplesmente ignora a senha e lê o diretório.
A estabilidade do SkyOS varia de utilizador para utilizador, embora, como um todo, é melhor. Com o hardware certo, um usuário pode quase nunca experimentam uma falha, mas com o hardware errado, o sistema não pode mesmo arrancar. Nenhuma lista de compatibilidade completa de hardware podem ser mantidas devido ao estado em constante mudança do sistema.

## Aplicativos

A maioria dos aplicativos de linha de comando que foram escritos para ser compilado com o GNU Toolchain pode ser portado para SkyOS com pouca ou nenhuma modificação. Várias grandes aplicações, incluindo Apache, GCC, Samba, CUPS, e Bash, foram portados usando as ferramentas provisórias.
As seguintes aplicações foram portadas usando APIs nativas e estão sendo mantidas no SkyOS:
* Mozilla Firefox
* Mozilla Thunderbird
* Blender
* Pixel
* Nvu
* SDL
Os portes de GTK e diversos aplicativos baseados em GTK se tornaram inutilizáveis ​​com mudanças recentes na API. Ainda não se sabe se no futuro elas serão trazidas de volta rapidamente.

## Suporte de terceiros

Devido à popularidade limitada do sistema operativo, SkyOS tem muito poucos programadores de terceiros. Isto significa que muitos dispositivos de hardware comuns não são suportados pelo SkyOS, e não são suscetíveis de ficar sem dinheiro e esforço significativo por parte do Szeleney.
Menos importante, isto significa que uma variedade de aplicações limitadas estão disponíveis para SkyOS. Embora algumas das necessidades básicas, como navegação na web e e-mail são cobertas, outros não. Estas necessidades incluem:
* A suíte de escritório completa
* Um gerenciador de mídia avançada
* Jogos comerciais populares de vídeo
Para ajudar a estimular o desenvolvimento de terceiros, SkyOS emprega um "código de resgate" do sistema onde as pessoas podem doar dinheiro para projetos que desejam ver concluído. Os desenvolvedores que completam estes projetos irá receber todo o dinheiro que foi doado para o projeto. Se possível, Szeleney espera concluir todos os projetos não reclamados pelo resgate código antes SkyOS deixa estado beta.

## Software livre

Como um projeto de fonte aberta anterior, SkyOS tem sido objeto de muitos debates, envolvendo software livre.
Muitas vezes, SkyOS é acusado de violar a GPL. Ou seja, desde o desenvolvimento de um sistema operacional é pensado para ser uma tarefa extremamente complexa, a conclusão é desenhada por alguns que Szeleney deve ter roubado o código de software livre para que ele ter feito o progresso que ele tem. Na verdade, o oposto é implicado por relações públicas do Szeleney com desenvolvedores de código aberto. Mesmo quando não é exigido sob licença, Szeleney tem sistematicamente publicado alterações feitas ao código aberto, utilizados no SkyOS.
Alguns beta testers temem que seus investimentos serão perdidos se Szeleney torna-se incapaz ou sem vontade de continuar o desenvolvimento do SkyOS. Este medo é comumente usado como um dos argumentos mais bem fundamentados SkyOS de código aberto. Na sequência da cessação de desenvolvimento ativo, Szeleney mencionou isso como uma possibilidade.