# GNUstep

O GNUstep é uma implementação do software livre das bibliotecas Objective-C OpenStep da NeXT (chamada "frameworks"), widget toolkit, e ferramentas de desenvolvimento de aplicativos não só para sistemas operacionais Unix-like, mas também para o Microsoft Windows. Ele é parte do Projeto GNU.
GNUstep exibe um ambiente de desenvolvimento orientado a objeto multi-plataforma, baseado e compatível com a especificação OpenStep desenvolvida pela NeXT (que foi comprada pela Apple Inc. Como a Apple, o GNUstep também tem uma interface Java para a OpenStep, assim como Ruby e Scheme bindings. Os desenvolvedores do GNUstep seguiram algumas adições ao Cocoa da Apple para manter a compatibilidade. As raízes da interface de aplicação GNUstep são as mesmas raízes da Cocoa: A NeXT e o OpenStep. O GNUstep é anterior a Cocoa.

## História

O GNUstep começou quando Paul Kunz e outros no SLAC quiseram portar o HippoDraw do NeXTSTEP para outra plataforma. Ao invés de reescrever o HippoDraw do inicio e reusar somente o design da aplicação, eles decidiram reescrever a camada orientada a objeto do NeXTSTEP de que a aplicação dependia. Essa foi a primeira versão da libobjcX. Ela permitiu a eles portar o HippoDraw para sistemas Unix rodando o X Window System sem modificar uma única linha do código-fonte da aplicação deles. Depois da especificação OpenStep ser distribuída ao público em 1994, eles decidiram escrever um novo objcX ao qual seriam adicionadas novas APIs. O software ficou conhecido como "GNUstep".

## Paradigmas

GNUstep foi modelado de forma similar ao OPENSTEP, a implementação da NeXT da OpenStep API, portando, herdou alguns princípios do design propostos pelo OPENSTEP, assim como a linguagem Objective-C.
* paradigma Model-view-controller
* Target-Action
* Drag and drop
* Delegation
* Message forwarding (através do NSInvocation)

## Compatibilidade de classes
### Foundation Kit

* strings
* coleções (arrays, sets, dicionários) e enumeradores
* arquivo de administração
* objeto de arquivamento
* manipulação de data avançada
* distributed objects e comunicação inter-processo
* manuseio de URL
* notificações (e distribuição de notificações)
* fácil multi-threading
* timers
* locks
* exception handling

### Application Kit

* Elementos da interface do usuário (exibições em tabela, navegadores, matrizes, exibições de rolagem)
* gráficos (WYSIWYG, postscript como gráficos, bezier paths, manipulação de imagem com várias representações e contextos gráficos)
* gerenciamento de cores (calibração X dispositivo de cores; CMYK, RGB, HSB, cinza e representações da cor com o nome; transparência alfa)
* texto características do sistema: formato de texto rico, anexos de texto, gerenciador de layout, tipógrafo, regras, estilos de parágrafo, gerenciamento de fontes, ortografia
* gestão de documentos
* recursos de impressão: as operações de impressão, o painel de impressão e layout de página
* Gerenciador de Ajuda
* serviços de pasteboard (aka clip board)
* verificador ortográfico
* área de trabalho ligada com os aplicativos
* operações de arrastar e soltar
* serviços de compartilhamento entre os aplicativos

## GNUSTEP live CD

O GNUSTEP live CD é baseado no Debian e roda em IA-32, x86-64, PowerPC, e UltraSPARC. Hoje é criado usando a ferramenta debian-live. Instalando o sistema para um disco rígido é possível, acessar à Internet com a ferramenta debootstrap.