Joomla! 5 - Panta Rhei (a continuação)

O Departamento de Produção do Joomla compartilha o resultado das discussões geradas pelo último artigo do Joomla 5.

Resumo
Ouvimos o feedback da comunidade e tomamos algumas decisões em relação ao lançamento do Joomla 5 e ao ciclo de lançamento em geral.

Se você não leu mais nada, aqui está o que você precisa saber:

Joomla 5 não incluirá alterações significativas para modelos e extensões de terceiros.
Não removerá nenhum código marcado como obsoleto no Joomla 4.
Joomla 5 terá uma versão PHP mínima de PHP 8.1.
Os componentes que funcionam no Joomla 4 também devem funcionar no Joomla 5, desde que suportem PHP 8.1.
Joomla 5 será lançado em outubro de 2023. Devido aos pontos acima, não será uma atualização grande e dolorosa como as versões anteriores.
Os lançamentos secundários permanecerão em uma programação de 6 meses, mas todos os lançamentos serão transferidos para os meses de abril e outubro, começando com o lançamento 4.3 em (abril de 2023).
Se você quiser saber mais sobre o raciocínio e os detalhes dessas decisões, continue lendo.

Prelúdio
Tem havido muita discussão nas últimas semanas após o anúncio do Joomla 5. Joomla! 5.0 Ousado em um ano - Mas será que NÓS conseguimos?

perguntando se é possível lançar o Joomla 5 em um ano. O artigo foi elaborado para estimular o interesse e o feedback e o Departamento de Produção agradece essa troca viva de ideias, solicitações e feedbacks. Membros do Departamento de Produção participaram da discussão através de vários canais para obter opiniões pessoais e entender melhor como as pessoas veem o Joomla 5 afetando seu mundo.

Com base neste feedback, recebemos diversas propostas e tomamos muitas decisões nos últimos dias em relação ao futuro do Joomla 5.

Identificamos as duas maiores preocupações a serem superadas, ambas custando tempo e dinheiro:

Uma atualização para o Joomla 5 será uma migração dolorosa novamente (e depois para o 6 novamente, etc.)
As extensões executadas no Joomla 4 novamente não são compatíveis com o Joomla 5
Houve também outras preocupações, tais como:

O código marcado como obsoleto não tinha documentação mostrando aos desenvolvedores o que fazer.
O atual cronograma de lançamentos é perturbador para nossos voluntários e comunidade, especialmente durante o verão em ambos os hemisférios.
Um lançamento importante precisa ter algo para fazer a atualização “valer a pena”
O uso do núcleo (por exemplo, substituições de modelos) não deve punir os desenvolvedores ao migrar para novas versões, forçando-os a reconstruir.
Os prazos são muito apertados
Como resultado dessas discussões, o Departamento de Produção tomou diversas decisões.

Ciclos de lançamento
Permaneceremos em um ciclo de lançamento de 6 meses para lançamentos menores. O motivo é proteger os Release Managers do esgotamento, pois um lançamento dá muito trabalho, eles começam 6 meses antes do lançamento e depois trabalham mais 6 meses quando o lançamento termina. Ter meses fixos e confiáveis ajuda todos a planejar.
Também permaneceremos com lançamentos de dois anos para versões principais. Portanto, o Joomla 5 será lançado em 2023, o Joomla 6 em 2025 e assim por diante. A razão é manter as etapas tão pequenas quanto possível, a fim de evitar atualizações importantes e dolorosas como no passado.
As novas versões principais se concentrarão na limpeza de depreciações, na manutenção de dependências e em tornar as etapas de atualização o mais tranquilas possível.

A quarta versão secundária de cada ciclo de vida (por exemplo, 4.4, 5.4, 6.4) é uma “versão zeladora”, onde o foco está em refinar o Update Checker, eliminar bugs restantes e produzir um produto estável como base para a próxima versão principal.

Estamos trabalhando para um caminho de atualização tranquilo e contínuo. Muitos envolvidos na tomada de decisões são os próprios desenvolvedores de sites, então entenda a dor que isso envolve. Prazos mais longos significam etapas maiores, e prazos mais curtos levam a etapas mais suaves. O objetivo do Departamento de Produção é criar um processo tranquilo e fornecer aos desenvolvedores e agências da web mais controle sobre quando fazem as alterações.

Novos meses de lançamento
As versões principais serão lançadas em um ciclo de dois anos - Joomla 5 em 2023, Joomla 6 em 2025, etc.
Versões secundárias continuarão a ser lançadas em um ciclo de seis meses. Isso evita o “esgotamento” do gerenciador de lançamento e fornece uma data de lançamento confiável.
Os meses de lançamento serão transferidos para abril e outubro para evitar as férias de verão em ambos os hemisférios. (um resultado direto do feedback recebido)
Depreciações
Para resumir:

Não removeremos o “framework MVC legado”, o “framework de plugin legado”, o “framework de módulo legado” e a classe “Factory”. Isso significa que os componentes executados no Joomla 4 também devem funcionar com o Joomla 5 (com o requisito de que suportem PHP 8.1).

A longa história é:

A produção aprovou uma moção para que todas as descontinuações possam ser removidas, no mínimo, +2 versões principais após serem declaradas obsoletas. Isso significa que se o código for declarado como obsoleto na versão 4.x, o primeiro que poderá ser removido será o Joomla 6. Este movimento abrange (além de outros):

Estrutura MVC legada
Estrutura de plug-in herdada
Estrutura de Módulo Legado
Fábrica
e permitea primeira remoção de código obsoleto no ano de 2025.

Em vez de estender o ciclo de lançamento para 3 anos para o Joomla 5, damos aos desenvolvedores terceirizados pelo menos um total de 4 anos para atualizar sua extensão. Isto também atenua a necessidade de suportar três versões da extensão.

Lembre-se, “mais cedo” não significa que o código obsoleto será removido naquele momento, apenas abre a possibilidade.

Começamos a comentar e esclarecer as descontinuações com esta solicitação pull, que será atualizada nos próximos dias.

Versão PHP
Joomla 5 exigirá uma versão mínima do PHP 8.1.

Quando o Joomla 5 for lançado, o PHP 7.4 estará em fim de vida (EOL) sem atualizações de segurança ou correções de bugs (consulte as versões do PHP).

Joomla 5 exigirá PHP 8.1. Se o seu host não suporta 8.1 na época do Joomla 5, você pode mudar de host ou continuar com o Joomla 4 por mais dois anos.

O PHP 8.1 traz, entre outras novidades, a possibilidade de execução “paralela” de partes do código, o que pode resultar em um imenso aumento de performance. Mudar para o PHP 8.1 para Joomla 5 nos permite escrever código que faça uso desse recurso e mesmo que não tenhamos tempo para usá-lo no 5.0, esse requisito deixa a porta aberta para que possamos usá-lo em uma versão secundária. no futuro, acelerando o CMS e permitindo que os desenvolvedores de extensões também colham os benefícios.

Versões SQL
Joomla 5 suportará MySQL 8.0.11+, MariaDB 10.4+ e PostgreSQL 12+.

Separaremos os drivers de banco de dados para MySQL e MariaDB, pois os dois sistemas estão cada vez mais distantes um do outro. Drivers separados nos permitem oferecer suporte aos respectivos sistemas de gerenciamento de banco de dados (SGBD) da melhor maneira possível.

Como desenvolvedores, vocês podem continuar enviando um arquivo MySQL desde que usem apenas funções suportadas por ambos os drivers. Se precisar de funções específicas do MariaDB, você pode fornecer um arquivo MariaDB.

Otimizações
O PHP 8.1 nos permite tornar as operações de E/S (leitura e gravação) assíncronas, ou seja, executadas em segundo plano. Esta possibilidade será disponibilizada para extensões do Joomla 5.

Os sistemas de banco de dados modernos fornecem consultas recursivas. Isso tornará possível substituir conjuntos aninhados. Conjuntos aninhados são usados para controle de acesso, categorias, etc., mas, embora sejam muito rápidos na leitura, consomem muito tempo para escrever. Para sites com milhares de artigos em categorias ou usuários e grupos de usuários, isso às vezes leva a problemas de desempenho. Portanto, no Joomla 5, os conjuntos aninhados serão substituídos por consultas recursivas.

Plug-in de compatibilidade (pioneiros)
O código obsoleto está obsoleto por um motivo; na maioria das vezes, há um código melhor, mais rápido e mais utilizável, o que dá um impulso ao seu site. Oferecer suporte a código obsoleto por um longo período é negativo para proprietários de sites que desejam usar apenas código de última geração (ou apenas código principal). Para eles, o código obsoleto é um fardo. Como podemos ajudá-los?

O objetivo é mover o máximo possível do código obsoleto para um plugin de sistema que é habilitado por padrão na atualização. Essa ideia foi usada pela primeira vez no Joomla 1.0 e funcionou. Com avanços como o namespace, a ideia pode se tornar ainda mais poderosa para ajudar a devolver o poder ao proprietário de um site. Os proprietários de sites que sabem que não dependem desse código podem desligar o plug-in e se beneficiar de um desempenho aprimorado e um código mais limpo. Por exemplo, moveremos os aliases de classe como JDatabase (que só existe virtualmente) para este plugin de sistema.

Este plugin tem algumas regras sobre quando pode ser alterado:

O plugin contém apenas o código obsoleto da versão principal anterior
Ele só pode ser atualizado quando uma nova versão principal for lançada
Assim, com o Joomla 5, o plugin conteria todas as (possíveis) descontinuações do Joomla 4, mas nenhuma descontinuação do Joomla 5.

Quando lançarmos o Joomla 6, removeremos todas as descontinuações provenientes do Joomla 4 do plugin (e se sobrarem) do núcleo. Poderíamos também mover todas as descontinuações possíveis do núcleo do Joomla 5 para o plugin. Ao atualizar para o Joomla 6, o plugin será ativado novamente, para garantir uma atualização tranquila.

Novas instalações serão enviadas com o plugin desabilitado e os desenvolvedores de extensões poderão, se necessário, ativar o plugin na instalação de sua extensão. Quando o plugin for ativado, uma mensagem no painel de backend será exibida ao usuário para informá-lo.

Ouvimos os temores de muitos de que as atualizações afetassem a adoção do Joomla e dificultassem a vida das agências e desenvolvedores da web, e ouvimos outros dizendo que precisávamos nos manter na curva de velocidade e segurança. Esperamos que esta solução forneça um caminho de atualização mais tranquilo, mais tempo quando for necessário e nos permita oferecer também o pacote de compilação mais recente, mais rápido e mais seguro para aqueles que precisam dele.