# GNOME

GNOME é um projeto de software livre abrangendo o Ambiente de Trabalho GNOME, para os usuários, e a Plataforma de Desenvolvimento GNOME, para os desenvolvedores. O projeto dá ênfase especial a usabilidade, acessibilidade e internacionalização.
O desenvolvimento do GNOME é supervisionado pela Fundação GNOME, que representa oficialmente o projeto junto a empresas, organizações e a sociedade como um todo. O projeto conta ainda com uma série de equipes com missões específicas, inclusive com uma equipe de engenharia de lançamentos, responsável pelo característico calendário de lançamentos semestrais.
A comunidade de desenvolvimento do GNOME conta tanto com voluntários quanto com empregados de várias empresas, inclusive grandes empresas como Hewlett-Packard, IBM, Novell, Red Hat, Oracle, entre outras. Historicamente "GNOME" era um acrônimo para GNU Network Object Model Environment; apesar disso, o GNOME nunca fez parte do projeto GNU. O projeto GNU, por sua vez, usa indevidamente a marca registrada.

## História

O projeto GNOME foi criado em 15 de agosto de 1997 pelos mexicanos Miguel de Icaza e Federico Mena Quintero, como uma resposta ao Windows 95. O projeto KDE já estava em andamento, mas para ser usado ou desenvolvido era necessário instalar o Qt, um conjunto de ferramentas que na época não tinha uma licença livre. Miguel de Icaza descartou a ideia de reimplementar a API do Qt usando software livre porque projetos análogos, como o GNUstep, Wine and LessTif, mostravam um progresso muito lento. Antes da criação do GNOME, Miguel e Federico tinham tentado colaborar com o GNUstep, mas desistiram por considerar sua comunidade desorganizada, e seu código cheio de erros.
A plataforma de desenvolvimento aproveitou e aprimorou o GTK, um conjunto de ferramentas usado pelo editor de imagens GIMP, em cujo desenvolvimento Federico Quintero estava também envolvido. Miguel de Icaza ficou muito impressionado com a arquitetura COM quanto passou por uma entrevista na Microsoft, e o reflexo foi o desenvolvimento da biblioteca Bonobo, incorporada ao GNOME 1.4. Além de permitir o reaproveitamento de componentes de software, o Bonobo colaborou para que o desenvolvimento de aplicativos para o GNOME pudesse ser feito com qualquer linguagem de programação. Outra característica da plataforma de desenvolvimento do GNOME é ser completamente escrita em C, o que também facilita a criação de bindings para outras linguagens de programação. A plataforma de desenvolvimento do GNOME é escrita principalmente nas linguagens de programação C, C++, Javascript, Python e Vala. Toda a plataforma de desenvolvimento do GNOME usa a licença GNU Lesser General Public License, uma licença livre que permite a utilização da plataforma GNOME por software proprietário.

### GNOME 2

O lançamento do GNOME 2.0 marcou uma guinada nos rumos do projeto, que passou a enfatizar a usabilidade em vez da configurabilidade. A plataforma foi quase inteiramente reescrita, trazendo várias melhorias como melhoria de desempenho, melhor internacionalização (usando Unicode internamente), suavização da renderização de fontes, e principalmente a estreia de sua plataforma de acessibilidade.

### GNOME 3

Anteriormente, o GNOME usava a metáfora tradicional da área de trabalho, mas no GNOME 3 isso foi substituído pelo GNOME Shell, uma metáfora mais abstrata em que a alternância entre diferentes tarefas e áreas de trabalho virtuais ocorre em uma área separada chamada Visão Geral (Overview). Além disso, como o Mutter substituiu o Metacity como gerenciador de janelas padrão, os botões minimizar e maximizar não aparecem mais por padrão, e a barra de título, a barra de menus e a barra de ferramentas são substituídas pela barra de cabeçalho por meio da "Decoração do lado do cliente" (Client-Side Decoration - CSD). Adwaita substituiu o Clearlooks como o tema padrão. Muitos aplicativos principais do GNOME também passaram por reformulações para fornecer uma experiência de usuário mais consistente.
Em setembro de 2017, o Projeto GNOME lançou o GNOME 3.26, fornecendo correções de bugs e novos recursos principais.
O GNOME Shell é a interface padrão do Ubuntu desde a versão 17.10, substituindo o Unity.

#### Críticas ao GNOME 3.x

Devido a mudança "agressiva" de visual e de usabilidade do GNOME 2 para o GNOME 3, vários usuários criticaram a nova versão, dentre eles Linus Torvalds, fazendo surgir o ambiente MATE como uma alternativa ao GNOME 3.
As grandes mudanças na versão 3 inicialmente provocaram críticas generalizadas. O ambiente de desktop MATE foi bifurcado a partir da base de código do GNOME 2 com a intenção de manter a interface tradicional do GNOME 2, mantendo-o compatível com a moderna tecnologia Linux, como o GTK + 3. A equipe do Linux Mint abordou a questão de outra maneira ao desenvolver o Mint GNOME Shell Extensions que funcionava em cima do GNOME 3 e permitia que ele fosse usado pela metáfora tradicional da área de trabalho. Isso eventualmente levou à criação da interface de usuário do Cinnamon, que foi bifurcada a partir da base de código do GNOME 3.
Em 2005, nas listas oficiais de desenvolvimento do GNOME, Linus Torvalds encorajou os usuários a mudar para o KDE 3 ao invés de usar o GNOME. Em 2009, ele tentou novamente o GNOME, mas, insatisfeito com sua percepção de perda de produtividade, ele mudou para o Xfce, fazendo outra publicação dura contra o GNOME. Em 2013, ele voltou ao GNOME 3 afirmando que "está ficando menos doloroso" e "as coisas estão melhores do que há um ano".
A partir de 2015, a recepção crítica foi muito mais positiva. Por exemplo, o Debian, uma distribuição do Linux que tinha usado historicamente o GNOME 2, mudou para o Xfce quando o GNOME 3 foi lançado mas readotou o GNOME 3 a tempo para o lançamento do Debian 8 "Jessie".

### GNOME 40

O GNOME 40 foi lançado em 24 de março de 2021. Ele segue imediatamente a versão 3, mas adota um novo esquema de versão e um cronograma de futuros lançamentos principais em um ciclo fixo de seis meses.
O GNOME 40 organiza os espaços de trabalho e o painel de forma horizontal, em vez de usar um design vertical em sua visão geral de atividades, como seus antecessores. O lançamento também traz novos gestos do touchpad.

## Design
### Human Interface Guidelines (HIG)

Desde o GNOME 2, a produtividade tem sido o foco principal do GNOME. Para este fim, as Diretrizes de Interface Humana do GNOME (Human Interface Guidelines - HIG) foram criadas. Todos os programas do GNOME compartilham um estilo coerente de interface gráfica do usuário (GUI), mas não estão limitados ao emprego dos mesmos widgets da GUI. Em vez disso, o design da GUI do GNOME é guiado por conceitos descritos no GNOME HIG, ele próprio baseado em insights da ergonomia cognitiva. Seguindo o HIG, os desenvolvedores podem criar programas GUI de alta qualidade, consistentes e utilizáveis, já que ele trata de tudo, desde o design da GUI até o layout recomendado de widgets baseados em pixels.
Durante a reescrita do GNOME 2, muitas configurações consideradas de pouco valor para a maioria dos usuários foram removidas. Havoc Pennington resumiu o trabalho de usabilidade em seu ensaio de 2002 "Free Software UI", enfatizando a ideia de que todas as preferências têm um custo, e é melhor fazer o software se comportar corretamente por padrão do que adicionar uma preferência de interface para obter o comportamento desejado:

### GNOME Shell

123456 :
| 1 | Botão Atividades |
| 2 | Painel |
| 3 | Área de notificações |
| 4 | Barra de pesquisa |
| 5 | Menu do status |
| 6 | Lista de espaços de trabalho |
O GNOME Shell é a interface oficial de usuários do ambiente de desktop GNOME. Possui uma barra superior contendo (da esquerda para a direita): um botão de Atividades, um menu de aplicativos, um relógio e um menu de status do sistema integrado. O menu do aplicativo exibe o nome do aplicativo em foco e fornece acesso a funções como acessar as preferências do aplicativo, fechar o aplicativo ou criar uma nova janela do aplicativo. O menu de status contém vários indicadores de status do sistema, atalhos para as configurações do sistema e ações de sessão, incluindo o logout, alternar usuários, bloquear a tela e suspender o computador.
Clicar no botão Atividades, mover o mouse para o canto superior esquerdo ou pressionar a tecla Super exibe o Overview (Visão Geral). A Visão Geral oferece aos usuários uma visão geral das atividades atuais e fornece uma maneira de alternar entre janelas e espaços de trabalho e iniciar aplicativos. O Dash (Painel) à esquerda abriga atalhos para aplicativos favoritos e janelas abertas e um botão de seleção de aplicativo para mostrar uma lista de todos os aplicativos instalados. Uma barra de pesquisa é exibida na parte superior e uma lista de espaços de trabalho para alternar entre espaços de trabalho está à direita. As notificações aparecem na parte inferior da tela.
Começando com o GNOME 3.8, o GNOME fornece um Modo Clássico para aqueles que preferem uma experiência de área de trabalho tradicional (semelhante ao GNOME 2).

### Compatibilidade

O GNOME é executado no Wayland e no X Window System. O suporte a Wayland foi introduzido no GNOME 3.10 e considerado “para a maioria dos usuários […] uma experiência utilizável no dia-a-dia” na versão 3.20 e priorizados em relação às sessões X. O GNOME 3.24 irá estender a compatibilidade do Wayland para os drivers da NVidia.
Versões do GNOME estão disponíveis na maioria das distribuições do Linux como o ambiente de desktop padrão ou como uma opção instalável e também nas coleções de portas da maioria dos BSDs.
Em maio de 2011, Lennart Poettering propôs o systemd como uma dependência do GNOME. Como o systemd está disponível apenas no Linux, a proposta levou a uma discussão sobre a possível queda do suporte para outras plataformas em futuras versões do GNOME. Já que o suporte multi-terminal do GNOME 3.2 só está disponível em sistemas que usam o systemd. Em novembro de 2012, a equipe de lançamento do GNOME concluiu que o systemd pode ser usado para funcionalidades não básicas.

## Desenvolvimento

O GNOME é desenvolvido pelo Projeto GNOME e fornece o GNOME Desktop Environment, uma interface gráfica com o usuário e um conjunto de aplicativos principais, e a Plataforma de Desenvolvimento GNOME (GNOME Development Platform), uma estrutura para criar aplicativos que se integram à área de trabalho.
Tal como acontece com a maioria dos projetos de software livre, o desenvolvimento do GNOME é gerenciado de forma livre. A discussão ocorre principalmente em várias listas de discussão públicas. Os desenvolvedores e usuários do GNOME se reúnem em uma reunião anual do GUADEC para discutir o estado atual e a direção futura do GNOME.
O GNOME incorpora padrões e programas do Freedesktop.org para melhor interoperar com outros desktops e é escrito principalmente em C, C ++, Vala, Python e JavaScript. Várias vinculações de nomes estão disponíveis.

### GUADEC

GUADEC (GNOME Users And Developers European Conference) é a Conferência Anual de Usuários e Desenvolvedores do GNOME, reunião anual de desenvolvedores, entusiastas e usuários individuais, profissionais, institucionais e educacionais do GNOME. É um fórum onde os membros do projeto GNOME apresentam seus trabalhos e discutem futuros desenvolvimentos do GNOME. Sediado anualmente em um país europeu diferente, o GUADEC é um catalisador para o futuro desenvolvimento e direção do GNOME.

### Ferramentas de desenvolvimento

Programadores criaram softwares para fornecer ferramentas de desenvolvimento consistentes com a área de trabalho do GNOME e para facilitar o desenvolvimento do software GNOME.
O GNOME Builder é o novo ambiente de desenvolvimento integrado, o Anjuta é o mais antigo. O software Glade Interface Designer constrói interfaces gráficas usando os elementos gráficos de controle no GTK. Devhelp é um navegador de APIs, Accerciser um explorador de acessibilidade.
Existem várias ferramentas de depuração, incluindo Nemiver, GtkInspector e Alleyoop, que também foram fornecidas para facilitar o desenvolvimento do software GNOME.
Opções de integração para ferramentas de desenvolvimento de terceiros (por exemplo, NoFlo) também existem.
A biblioteca libsoup permite acessar servidores HTTP a partir de aplicativos GNOME.
BuildStream é uma estrutura flexível e extensível para a modelagem de build e CI pipelines em um formato YAML declarativo, escrito em Python. Seu mascote é um castor, porque os castores constroem coisas em um fluxo de água.

### Plataforma de desenvolvimento

A biblioteca de estruturas e utilitários de dados GLib, o sistema de objeto e tipo GObject e o kit de ferramentas de widget GTK + compõem a parte central da plataforma de desenvolvimento do GNOME. Essa base é ampliada ainda mais com a estrutura D-Bus IPC, biblioteca Cairo de desenho baseada em vetores 2D, biblioteca gráfica acelerada Clutter, biblioteca internacional de renderização de texto Pango, API de áudio de baixo nível PulseAudio, estrutura multimídia GStreamer e várias bibliotecas especializadas, incluindo NetworkManager, PackageKit, Telepathy (mensagens instantâneas) e WebKit.
* GNOME Display Manager (GDM), que gerencia sessões de usuários, X e Wayland.
* Tracker pesquisa automaticamente os diretórios especificados por arquivos e mantém um índice deles para fornecer pesquisa rápida; fortemente integrado ao GNOME Shell e ao GNOME Files
* GVfs, uma estrutura de camada de abstração para sistemas de arquivos que aumentam o GIO; bem integrado aos arquivos GNOME e discos GNOME
* dconf um front-end para GSettings
* Mutter, o compositor de Wayland e X Windows System
* Gerenciamento de cores do Linux (Linux color management), udev, etc.
* Evolution Data Server, responsável pelo gerenciamento de e-mail, calendário, catálogo de endereços, tarefas e informações de notas
* Meson está substituindo o GNU Build System (autotools) como ferramentas de automação de construção
* BuildStream, uma ferramenta de construção (build) e integração que é distribuição-agnóstica
O ambiente de área de trabalho GNOME não consiste apenas da biblioteca gráfica de elementos de controle GTK + e dos principais aplicativos que fazem uso dela. Existem alguns pacotes de software adicionais que compõem o ambiente de área de trabalho do GNOME, como os acima.

## Aplicativos

Há um grande número de programas baseados em GTK e Clutter escritos por vários autores. Desde o lançamento do GNOME 3.0, o Projeto GNOME se concentra no desenvolvimento de um conjunto de programas que considera os Aplicativos Principais do GNOME (GNOME Core Applications). As semelhanças dos Aplicativos Principais do GNOME são a aderência às diretrizes atuais do GNOME HUD, bem como a integração firme com as camadas subjacentes do GNOME, como, por exemplo, GVfs e também uns com os outros, como GOA (gnome-online-accounts) e GNOME Files com o Google Drive e GNOME Photos com o Google Photos. Alguns programas são programas existentes renomeados com uma interface de usuário renovada, enquanto outros foram escritos do zero.