Instalação de extensão e as consequências
A ideia de ter um sistema extensível é ótima, mas, como sabemos os desenvolvedores, não é tão simples assim. Muitas coisas podem (e infelizmente fazem) dar errado.
visão global
Começarei com uma lista de problemas potencialmente causados pela instalação de extensões. Em seguida, apresentarei meu ponto principal e declararei as conclusões que tirei pessoalmente de tudo isso e, finalmente, sugerirei uma solução. (Isso provavelmente vai demorar muito, desculpe-me com antecedência. Vou tentar escrever o mínimo possível e ainda cobrir o tópico.)
Então, para começar, aqui está uma lista de problemas comuns encontrados devido à instalação da extensão.
Segurança
Nenhuma revisão de código é feita antes que uma extensão seja aceita no Magento Connect. Como conseqüência, muitas extensões contêm vulnerabilidades. Há muitos motivos, como desenvolvedores inexperientes ou preguiçosos, uso de código de terceiros vulnerável e algumas extensões ainda contêm código malicioso. Execução remota de código, injeções de SQL e tempo de inatividade são uma realidade. As consequências são dados perdidos de clientes, credenciais de pagamento perdidas, perda de receita, perda de tempo e confiança perdida.
atuação
Uma extensão pode funcionar bem em um site ou em uma instância de desenvolvedor, mas com um catálogo ou base de clientes diferente, pode causar sérios problemas de desempenho. Pode haver muitas razões concretas que variam de carregamento ineficiente de entidades, junções SQL não otimizadas, um alto número de solicitações de ajax, um alto número de opções ou atributos de atributos e muito mais. Como toda chamada de comerciante nos diz aos desenvolvedores, o desempenho é importante. Isso custa uma receita do comerciante.
Conflitos
Mesmo apenas duas extensões, mesmo quando desenvolvidas usando as melhores práticas, podem entrar em conflito. Isso se deve principalmente à maneira como o framework Magento mescla o XML de configuração. Na melhor das hipóteses, esses conflitos são visíveis por meio de um rastreamento de pilha ou uma tela em branco; na pior das hipóteses, o site inibe um comportamento estranho e difícil de depurar. Um comerciante não poderá corrigir os problemas e fazer com que extensões conflitantes coexistam sem a ajuda de um desenvolvedor. Isso custa tempo e dinheiro.
Capacidade de atualização
Não atualizar não é uma opção, apenas por razões de segurança. As extensões precisam ser mantidas, como bases de código individuais e como parte da estrutura do Magento. Se uma extensão estiver sendo usada e o desenvolvedor original não continuar mantendo a extensão, algum outro desenvolvedor precisará assumir o controle. A falta de um desenvolvedor geralmente impossibilita a atualização de um comerciante, o que leva os sites a serem mais lentos do que o necessário, os problemas de segurança sendo explorados e, assim, a perda de receita.
Extensibilidade
Adicionar novos recursos a um site existente fica cada vez mais complexo e, portanto, caro, porque cada extensão do sistema adiciona sua dívida técnica. A dívida geral é muito maior do que cada extensão individual, uma vez que a complexidade combinada também é maior do que cada uma por conta própria. Não poder experimentar facilmente novos recursos e alterações causa uma perda de receita de um comerciante.
Desinstalação
Os seguintes itens causam falhas no Magento ao desinstalar uma extensão:
- Registros de banco de dados referentes a uma classe na extensão desinstalada (por exemplo, indexadores ou modelos de back-end de atributos). Mesmo extensões que seguem as melhores práticas são propensas a isso.
- Desinstalar extensões que sobrescrevem o código principal deixa o Magento sem o arquivo original. Obviamente, isso só acontece se uma extensão não seguir as práticas recomendadas, mas é fato que muitas extensões são ruins.
A quebra do site, obviamente, custa dinheiro.
Magento Connect
Dada a lista de problemas acima, como diabos alguém pode esperar que um não desenvolvedor instale uma extensão e avalie se ela funciona em um determinado site?
Não há desinstalação limpa garantida; muitas vezes, uma instalação quebrada nem pode ser reparada. A única opção é fazer um backup completo antecipadamente e, em seguida, fazer uma reversão manual se algo der errado. Uma pessoa não técnica pode fazer isso? Na minha experiência, não.
Vamos assumir que tudo parece bem. O comerciante sabe que está tudo bem?
E a segurança? E quanto a problemas de desempenho? E os problemas de atualização?
Não há como um não desenvolvedor avaliar essas coisas.
A mensagem que o Magento Connect comunica é que é fácil estender sua loja Magento instalando o Magento sem um desenvolvedor. Em um discurso de vendas, pode ser útil dizer a alguém que é esse o caso, mas simplesmente não é verdade.
O que eu experimento principalmente é que na comunicação a necessidade de um desenvolvedor é simplesmente implícita e não comunicada. Como consequência, muitos proprietários de lojas quebram suas lojas instalando extensões. Isso custa dinheiro, tempo, nervos e reputação de desenvolvedor e Magento.
Eu gosto que minhas classes tenham uma interface explícita e acredito que seria bom se o requisito de desenvolvedor do Magento também fosse explicitamente comunicado.
Conclusões
Isso não é bom para o ecossistema, mesmo que a correção de sites danificados forneça receita para alguns desenvolvedores do Magento. O mesmo dinheiro poderia ser usado para criar valor real para os clientes dos comerciantes.
No Twitter, alguém disse que os comerciantes são adultos, que podem decidir por si próprios se instalam uma extensão ou não. Discordo. Se um comerciante não é um desenvolvedor ao mesmo tempo, ele não pode decidir por conta própria.
O Magento Connect não deve facilitar para pessoas não técnicas darem um tiro no próprio pé.
Pessoalmente, estou cansado de ver instalações do Magento danificadas devido a extensões. Eu prefiro criar coisas que apenas arrumam uma bagunça.
Estou pensando em remover minhas extensões do Magento Connect porque não quero mais dar suporte à ideia defeituosa.
Solução
Na minha opinião, a solução é fácil e barata. Não se trata de criar mais um novo Extension Marketplace , comercial ou gratuito. Esta não é uma questão técnica, é uma questão de comunicação.
Se o Magento Connect declarar que é um recurso de desenvolvedor, e que as extensões devem ser revisadas antes da instalação, e que apenas os desenvolvedores devem instalar extensões, isso não é problema. Os comerciantes que ainda instalam extensões o fazem sabendo os riscos.
Então, aqui estão três etapas simples que tornariam o Magento mais amigável ao comerciante:
- Remova a opção para instalar extensões através da interface do Magento Admin (por exemplo, o downloader).
- Declare de forma clara e visível no Magento Connect que o trabalho de um desenvolvedor é baixar, revisar e instalar qualquer extensão.
- Instrua os desenvolvedores a fazer uma revisão completa de qualquer extensão a ser instalada em um site.
Palavras finais
Adoro compartilhar extensões. Eu amo código aberto. Eu acho que a comunidade de desenvolvedores do Magento é incrível!
A revisão de extensões é uma ótima maneira de aprender. O Magento Connect não é ruim, apenas a mensagem projetada para pessoas não técnicas.
Cada site Magento é uma aplicação. É único e precisa ser tratado como um esforço de desenvolvimento exclusivo.
Deveria ser o consenso geral no ecossistema que as extensões podem ser úteis, mas instalá-las com mais frequência não exigirá que o código seja escrito ou modificado e, portanto, requer um desenvolvedor.
EDIT : Postei algumas informações básicas menos técnicas no meu blog .