No GNOME, por meio de extensões, conseguimos personalizar aspectos mais profundos da interface gráfica, como permitir o uso da área de trabalho, adicionar uma bandeja à barra do sistema, um painel para escolha rápida entre dispositivos de áudio e muito mais. Entretanto, a partir do iminente GNOME 45, tudo o que foi feito não funcionará mais.
Isso acontece porque até o momento, o GNOME usou um padrão JavaScript próprio, denominado GJS, mas para se adequar à prática comum da indústria, decidiu mover ao padrão ECMAScript 6, permitindo maior compatibilidade ao ecossistema JavaScript.
Apesar de, agora em diante, as possibilidades serem expandidas aos desenvolvedores, a partir do GNOME 45, nenhuma extensão feita para versões anteriores funcionará. Isso obriga os desenvolvedores que desejam manter suporte às suas extensões em novas versões do GNOME, a subir ao repositório uma edição compatível.
Sendo assim, as extensões que permanecerem atualizadas terão uma versão “antes do GNOME 45” e “a partir do GNOME 45”, tornando essa edição um importante ponto de ruptura para a DE. Desenvolvedores podem contar com a comunidade do GNOME no Matrix e Discorse para ajudar a portar seu código-fonte ao novo padrão.
por isso que já desisti do gnome clássico, usando apenas interfaces baseadas nela, como o cinnamon. por isso migrei para o kde e n m arrependo: adicionam novidades mas tudo é feito internamente.
É por isso que eu acho que distros como o Fedora (pensando agora, tô com saudade de mexer no Fedora) estão certas em não assumir o BO de mudar o Gnome. É uma grande gambiarra esse negócio de lotar com extensões que mudam completamente a interface.
Vai melhorar bastante essa padronizaçao pra EcmaScript e permitir uso de transpiladores e linguagens como Typescript.
O que poderiam fazer pra facilitar portar as extensoes com GJs seria um transpilador ou linter pra ES6.
Agora tem extensoes que muita gente usa mas o repo ta meio abandonado que vao dar trabalho como o dash to dock.
Nessas horas que vejo q tenho uma grande de vantajem em poder transitar entre todas as interfaces populares e consigo trabalhar em todas em sua forma padrão sem sentir necessidade de ajustar algo, seja no modelo Windows Like (Barra de tarefas) ou MacOS/Gnome (Dock). Acho que cheguei naquele level de: O que realmente uso são os apps e não o sistema em sí.
Acho que as extensões que são de interesse do ubuntu estão safe. Nem que a canonical tenha de refazê-la do zero ela deixa o sistema sem dock a esquerda.
Certa vez um dos desenvolvedores do KDE Plasma disse: “nunca fique apegado a uma experiência GNOME customizada. Basta uma atualização em algum momento para o castelo de extensões cair”.
Em resumo: ao usar o GNOME, é importante compreender a filosofia do projeto. A palavra “extensões” resume bem o que elas significam: extensões. O GNOME não tem como objetivo fornecer apoio incondicional e garantir que continuem funcionando. O projeto caminha conforme for necessário e as extensões devem se adaptar a ele se quiserem continuar existindo.
Eu aqui uso duas extensões: Dash to Dock e AppIndicators. Estou usando o Debian 12, que tem o GNOME 43.6. A extensão AppIndicators se tornará desnecessária no GNOME 44, já que essa função será incluída no mesmo menu que controla o volume, no canto superior direito (finalmente perceberam que se tratava de algo essencial). Quanto à Dash to Dock, trata-se de uma extensão bastante ativa, com muitos colaboradores e que, como mencionado pelo colega acima, é usada pelo Ubuntu e outras distribuições (acaba sendo um elemento essencial, e que por isso continuará recebendo suporte).
Outra recomendação para quem usa extensões como Dash to Dock é ficar em distros LTS. Com o Debian Stable, até a próxima atualização, certamente o Dash to Dock já terá sido também atualizado, e usando Flatpaks a base antiga do sistema não se torna um problema tão grave.
Usar muitas extensões em sistemas que atualizam continuamente é o cenário mais preocupante. Nessa situação, o usuário sempre deve esperar que algumas ou todas as extensões vão parar de funcionar após alguma atualização, como ocorreu diversas vezes no passado. Quem quer customizar e não quer passar por isso deveria considerar o KDE Plasma como opção.
Uma observação é que a extensão AppIndicators ainda é necessária, pois no menu do Gnome só aparece a informação de app em segundo plano. Não fornece nenhuma interação e ainda necessita que os devs integrem com a função, infelizmente =/
Enquanto estiver no Debian 12, com o GNOME 43.2, isso não me afetará por enquanto, mas em 2025 quando o Debian Trixie for lançado, espero que a extensão Searchlight tenha versão para novo formato.
Não é a primeira vez que houve uma ruptura de extensões em versões novas do Gnome, os desenvolvedores já sabiam disso logo nas versões Alphas da versão 45 e é bem provável já estão trabalhando na migração. Essa mudança do GJS para ESM já vinha sedo discutida a algum tempo.
Essa mudança do GNOME é boa para os desenvolvedores, os quais não terão mais que aprender um padrão de JavaScript diferente do ECMAScript, mas não tem efeito sobre a quebra de compatibilidade das extensões, porque as extensões continuarão alterando o código do GNOME Shell durante o tempo de execução. Basta uma nova versão do GNOME Shell alterar alguma parte do código do qual a extensão dependa para a quebra de compatibilidade acontecer.
Na verdade, pode ter este efeito, ECMAScript é uma linguagem mais madura e mais solidamente padronizada, menos bugs para corrigir e padrões mais rígidos para seguir significa menos motivos inevitáveis para quebrar a interface. Existem mais fatores indiretos que podem contribuir com isso, mas estes são os mais relevantes acho
Eu digo isso, pois, alguns dos casos de quebra de extensão envolviam exatamente corrigir problemas gerados por bugs no GJS que levavam a estouro de memória e problemas de desempenho. Desempenho e estabilidade, depois de segurança, são motivos onde é inevitável, ou você convive com eles, ou quebra a API, o resto é capricho.
O dia que eles decidirem “proibir”, “bloquear”, “desativar” ou “quebrar de vez” a possibilidade de usar extensões, provavelmente o GNOME deixará de ser a DE preferida de muitos. Podem estar cavando sua própria cova. Por hora, nada sério.
Linguagem é puramente texto não faz tanta diferença, o ponto é que força o desenvolvedor a organizar melhor o código, não é algo que não dava pra fazer antes, só que era opcional e agora obrigatório, o problema é que o GNOME Shell não possui uma API as extensões não funcionam no significado estrito de extensões, elas são remendos aplicados “on-the-fly”, qualquer mudança feita no código do GNOME Shell vai quebrar algo, a questão é que nem toda extensão usa esse algo, a mudança de layout por exemplo quebrou Dash to Dock e Dash to Panel se tiver outra mudança de layout vai quebrar do mesmo jeito