Esse post é uma reprodução do Apêndice A do livro “Módulos para Magento”. Se você quiser saber mais sobre o livro, visite a página aqui no blog.

Magento 2 - imagem: Imagine 2014/reprodução

Pouco a pouco o Magento 2 deixa de ser uma incógnita e finalmente dá os primeiros passos para ser lançado oficialmente. Quando a plataforma estará estável para ser utilizada em larga escala, ainda não podemos dizer. O cronograma oficial da Magento Inc. diz que a versão estável sai no último trimestre de 2015. Se eles cumprirão esse prazo, é impossível saber mas você já pode começar a se preparar para a transição.

O Magento 2 terá algumas modificações estruturais em relação a seu antecessor, o que significa que diversas coisas devem ser feitas de modo diferente. Os módulos desenvolvidos para o Magento 1 não funcionarão no Magento 2, já que a própria estrutura de pastas foi substancialmente alterada.

1) O que mudará no Magento 2

A documentação do Magento 2 traz uma seção informando o que mudou na plataforma. Se nos basearmos apenas nessa documentação, acrediaríamos que as mudanças não são muito extensas, sendo constituídas apenas por novidades já conhecidas desde o início do desenvolvimento, em 2010:

  • O PHP 5.4.11 passa a ser a versão mínima para sua utilização, com suporte ao PHP 5.3.
  • O Magento passa a requerer a versão 6 do MySQL.
  • Suporte a HTML5, com tema nativo já responsivo, e adoção do CSS3, com suporte a Sass e Compass.
  • Adoção do jQuery como biblioteca nativa de comportamentos Javascript, além do RequireJS.
  • PSR Compliance.
  • Inclusão de framework de testes.

Mas a realidade é um pouco mais complicada. É possível afirmar que tudo mudou, da organização dos arquivos à construção dos códigos. Quem está acostumado a trabalhar com o Magento 1 e começa a navegar pelas pastas da nova versão, tem uma sensação já conhecida, a mesma de quando começou a trabalhar com a plataforma: onde estão as coisas e como me oriento nessas pastas?

Você só conseguirá pegar o jeito se navegar pelos arquivos da plataforma e literalmente caçar onde as coisas foram colocadas. Em linhas gerais, as principais mudanças no que se refere aos módulos para Magento 2 são:

  • Não existem mais os codePools, ou seja, core, community e local. Agora, os módulos são colocados em pastas organizadas por desenvolvedores, isto é, por seus Namespaces, ainda que sigam a mesma precedência.
  • A pasta /app/etc/modules foi descontinuada. As configurações dos módulos ficam dentro da pasta /etc do próprio módulo, em um arquivo module.xml. Da mesma forma, os arquivos XML de configurações diversas tiveram seus nomes e estruturas alterados.
  • Os arquivos do tema passam a fazer parte da pasta do módulo. Ali, você cria um diretório com o nome view/[area], como por exemplo view/adminhtml ou view/frontend e dentro dele coloca as pastas layout, template e web, onde ficarão seus arquivos.
  • A estrutura das classes também mudou. Ela fica muito mais simples em um padrão como class Payment extends \Magento\Payment\Model\Method\Cc. Dentro das classes nativas do Magento, há diversas alterações e você deve verificar sempre que for trabalhar com uma nova classe.

2) Como portar seus módulos para o Magento 2

Essa é uma pergunta difícil de ser respondida e infelizmente, as perspectivas não são boas. Creio que seja realmente complicado escrever um conversor automático de módulos escritos para a primeira versão do Magento que os reconstrua diretamente na nova versão sem erros.

As mudanças de estrutura são grandes e os itens a serem alterados estão por todo o código. Mesmo presumindo que a parte estrutural siga um padrão que pode ser reescrito automaticamente, as funções sofreram modificações e pequenas mudanças já fariam com que o código perdesse sua funcionalidade e você ficasse preso em uma ciranda de erros.

A melhor abordagem nesse caso é reescrever seu código especialmente para o Magento 2. Seria o mais prático e seguro a fazer, ainda que o mais trabalhoso. Você já tem a estrutura de seu módulo e sabe o que ele faz, como se comporta, quais as saídas esperadas. Basta pegar cada uma das funções e configurações e reescrevê-las no padrão do Magento 2. Pela forma como a situação se desenha, é a única maneira segura de garantir que seu módulo continuará funcionando bem.

3) Transição entre as versões 1 e 2 do Magento

Durante esse livro, falamos algumas vezes do Magento 2 e das dificuldades para o seu lançamento em caráter oficial. Quando se diz caráter oficial, quer se dizer que a plataforma está pronta e com os requisitos mínimos de estabilidade para ser utilizada em um ambiente em produção. Se admitirmos que durante o ano de 2015, o Magento 2 atinja a estabilidade e possa ser finalmente utilizado em lojas ao redor do mundo, como você deve se comportar em relação à transição do Magento 1 para o Magento 2?

A primeira coisa a se ter em mente é: você não deve adotar o Magento 2 em projetos de responsabilidade logo de saída. Por mais tentador que seja e por mais que o cliente acredite que ele jogará dinheiro fora se adotar uma plataforma mais antiga, os riscos de se utilizar o Magento 2 nos primeiros meses de lançamento é grande, ao menos para projetos de responsabilidade.

Por mais que a plataforma tenha sido testada e avaliada, os três primeiros meses são cruciais e muitas atualizações devem ser lançadas. É possível até mesmo que nesse período descubram algo que precise ser reconstruído, por não ter funcionado como o esperado.

Adicionalmente a essa questão da estabilidade, a oferta de módulos e temas ainda será pequena – lembre-se que o Magento 1 levou quase 3 anos para chegar a um volume interessante de módulos e os temas comerciais só viraram realidade de dois anos para cá. Tudo o que você precisar de recursos extras nos primeiros meses deverá ser desenvolvido do zero, já que a maioria dos desenvolvedores está aguardando o lançamento oficial para portar seus módulos.

Reconheço que há a possibilidade de que, agora que o Magento 2 começa a virar realidade, os desenvolvedores de módulos foquem na conversão de seus módulos e os lancem em um prazo mais curto. Ainda assim, teremos a questão dos testes em ambientes reais, não nos ambientes controlados dos desenvolvedores.

Você pode passar a adotar o Magento 2 para novas lojas de pequeno porte, em que pequenos erros não serão tão graves como em lojas novas de maior porte ou lojas já existentes de qualquer porte. Um detalhe não pode ser esquecido: é preciso que o cliente tenha total consciência de que o Magento 2 é um produto novo e que ainda está em testes, que ele provavelmente terá a mesma estabilidade que seu antecessor e que em poucos meses a oferta de módulos será similar.

Quanto ao Magento 1, ele ainda será encontrado no mercado por muitos anos, até que esse passivo seja totalmente migrado para o novo Magento 2. Essas mesmas lojas que ainda forem feitas em Magento 1 poderão receber suporte por muitos anos, já que isso depende muito mais do desenvolvedor do que da Magento Inc. propriamente dita.


André Gugliotti

André Gugliotti é uma das referências em Magento no Brasil, autor dos livros "Lojas Virtuais com Magento", "Temas em Magento" e "Módulos para Magento". Nesse blog, ele fala sobre e-commerce e marketing digital, ensinando como montar e gerenciar sua loja virtual.

Deixe uma resposta