A questão da retrocompatibilidade no CodeIgniter e outras considerações

9 de dezembro de 2013, em Diversos, por

Não é difícil encontrar frases como “CodeIgniter é para iniciantes”, “CodeIgniter parou no tempo”, “CodeIgniter não é para sistemas modernos” e outras do mesmo naipe, em diversos lugares pela web à fora, seja em redes sociais, fóruns, mailing lists, enfim. Mas será que estas frases são verdade? Ou melhor: será que estas alegações são totalmente verdade? Continue lendo…

Primeiras considerações

Antes de mais nada, é importante levar em conta já alguns argumentos e explicações mostrados no artigo EllisLab procura um novo dono para o CodeIgniter, que, de alguma maneira, já colocou em xeque algumas das alegações equivocadas a respeito do CI. Por exemplo

  • É usado por milhares de desenvolvedores no mundo inteiro que produzem dezenas de projetos todos os dias;
  • O projeto PHP com mais forks no GitHub de todos os tempos;
  • É um dos projetos mais observados no GitHub, superando Slim, Yii, CakePHP, Zend e Laravel tanto em seguidores, quanto em contribuidores (na data de publicação deste artigo).

Depois, ao continuar lendo texto deste artigo, tenha em mente a seguinte realidade: o CodeIgniter (quase) sempre foi um framework da EllisLab, então, todo seu amadurecimento e design foram feitos em cima do modelo de negócios da empresa. É importante lembrar que todo projeto de software é feito a partir de uma “filosofia”, uma maneira particular de encarar e propor soluções para os problemas; então, apesar de ser um framework gratuito e de código-aberto, a filosofia da ElliLab sempre esteve imbuída no CI. E qual é um dos principais pilares dessa filosofia? Retrocompatibilidade!

Nunca foi segredo da EllisLab o fato de que o CodeIgniter era a base de um de seus principais produtos, o ExpressionEngine. Então, como se trata de uma empresa, ela deve garantir determinado nível de retrocompatibilidade de seus produtos para tentar atingir a maior gama de clientes possível. Em se tratando de “negócios”, isso não é nenhuma surpresa.

Em função disso, a EllisLab decidiu não pisar muito fundo no pedal e fazer do CI retrocompatível, não incorporando ao framework as últimas novidades do mundo do PHP, tanto em relação a versões mais atuais, quanto a não fazer uso mais intenso de “ferramentas externas”, atualmente algumas (quase que) obrigatoriamente presentes no mundo PHP, como o Composer.

Código-fonte do CodeIgniter

Não há como discutir tecnicamente quanto a qualidade do código do CodeIgniter em relação a alguns outros frameworks PHP. Um pouco por causa dessa retrocompatibilidade, mas também por motivos um tanto que desconhecidos, o código-fonte do core do CI sofre críticas severas por aqueles mais experimentados na profissão de programador. E essas críticas são fundamentadas.

Realmente, ao abrir códigos-fonte do CI e começar a analisar como a mágica acontece nos bastidores, muitos podem ficar decepcionados e/ou não levar o framework muito a sério. Essa é a realidade e, mesmo aqueles com profunda admiração por tudo o que o CodeIgniter fez e faz em suas vidas, não há como negar (talvez venha daí o equívoco de que “CodeIgniter é para iniciantes”).

Isso não significa que o código construído para os projetos baseados em CI não possam ser de maior qualidade, respeitando os bons padrões de design de software, SOLID, dentre outros – e tendo em mente, como “amenizador”, que o CodeIgniter é um framework pré-PSR. A partir deste ponto, a responsabilidade é do programador (ou programadores) mexendo com o framework – e este é outro ponto irrefutável.

Portanto, infelizmente, os códigos que fazem o CodeIgniter ser o que ele é são, não seguem tantas boas práticas quanto poderiam (mesmo levando em consideração a retrocompatibilidade) e, se você ler por aí que o código do CI é um pouco “zuado”, não há muito como argumentar…

“CodeIgniter não é para sistemas modernos”

Quando se lê “CodeIgniter não é para sistemas modernos”, essa alegação está equivocada. Primeiramente, o que são “sistemas modernos”? A definição vai variar de pessoa para pessoa. Depois: por ser um framework PHP, tudo o que se consegue com PHP nativo, é possível alcançar com o CI (levando em conta a versão do PHP rodando, evidentemente). Ponto.

Na verdade, é possível fazer qualquer tipo de site com o CodeIgniter (eu, mesmo, já participei de um projeto de uma rede social que continha milhões de registros e já rodei queries com o CI que afetavam bilhões de combinações, literalmente). Talvez por essa ênfase na retrocompatibilidade (e no conhecimento não muito aprofundado do framework), esse equívoco seja tão presente.

Agora, se se disser que há mais dificuldade em providenciar um ambiente e workflow modernos com o CI, aí já é outra história; uma alegação completamente diferente que, como já se viu, até que se notícias sobre quem será o novo “dono” do CodeIgniter, também não há como refutar de maneira satisfatória.

Conclusão

Juntando algumas informações do artigo EllisLab procura um novo dono para o CodeIgniter e o que foi explicado neste artigo, é possível entender que o CodeIgniter, por contar uma filosofia empresarial inerente, tem, sim, suas limitações e seus pontos negativos (assim como qualquer outro framework).

Entretanto, algumas das frases de efeito que podem ser lidas e ouvidas por “fãs” de outros frameworks devem ser simplesmente desconsideradas, já que a maioria dos que dizem, o fazem sem muito conhecimento de causa.

Apesar dos pesares, o CodeIgniter é, sim, um dos melhores frameworks PHP existentes na atualidade e, os mais conscientes na comunidade CI, que estão vendo com bons olhos o fato de que a EllisLab vai passar a bola para quem se candidate a continuar com o framework estamos esperançosos que sua qualidade só aumente.

Entretanto, tenha em ente uma coisa: não existe e jamais existirá algum framework que seja, absolutamente, o melhor dentre todos os existentes. Como explicado, cada um possui sua própria filosofia e é desenvolvido para resolver determinados problemas de domínio. Se estiver pensando/precisando de um framework full-stack que contemple os problemas mais comumente encontrados em sistemas para web e, além disso, precisa que ele seja retrocompatível a versões/features não tão “de ponta”, escolha sem medo: CodeIgniter!

13 comentários em "A questão da retrocompatibilidade no CodeIgniter e outras considerações"

gravatar

Alan Nogueira  em 9 de dezembro de 2013

Excelente texto, e eu ao longo do meu uso em codeigniter encontrei uma definição do que seria correto pensar com relação à frameworks no livro do Cristiano Gabardo ("PHP e MVC com CodeIgniter"):

O Melhor Framework do Mundo é aquele que você usa e atende suas necessidades.

Até hoje, o CodeIgniter sempre me atendeu, e nunca precisei utilizar outro, talvez um dia, mas não agora. Sempre ouço de outros programadores, é que você nunca trabalhou em projetos grandes, ai eu pergunto:

O que é um projeto grande pra você?
Pra mim um projeto grande são compostos por inúmeras funcionalidades pequenas. Ou seja, não existe exatamente essa definição, e sim concordo plenamente que pode existir frameworks com facilidades em processos diários melhores que o codeigniter, porém isso não entraria exatamente em uma comparação de qualidade ou qualquer coisa do tipo.

gravatar

Victor Magalhães  em 9 de dezembro de 2013

Muito bom o Artigo Tárcio.
Vou trabalhar em um projeto que vou utilizar o codeigniter, estava um pouco com medo devido especulações de um novo dono para o codeigniter, mas com vários dos seus artigos, fiquei mais confiável e vou investir no mesmo.

vlw abraço.

gravatar

Cezar Cruz  em 9 de dezembro de 2013

Eu tenho esse pé atraz com o CodeIgniter estar um pouquinho desatualizado, mas também não sou otimo conhecedor do assunto, porém, dos Frameworks que já estudei, o CI foi o mais "ready to go", muito tranquilo de usar e sem duvidas atende muito bem a qualquer nescecidade. Muito bom artigos! Abraços!

gravatar

Luciano  em 9 de dezembro de 2013

Muito bom seu texto, concordo com tudo. Parabéns!

gravatar

Mário  em 29 de janeiro de 2014

Trabalho com CI a mais ou menos 1 ano e meio , realmente ele está um pouco defasado. Peguei o Laravel estes dias e fiquei espantado com algumas modernidades que ele já trás como padrão. ( ele já usa o composer )

Mas é como falado, você consegue fazer tudo com CI, porem as vezes vai ser mais trabalhoso. Realmente CI é um framework ótimo para se trabalhar, gostoso e tranquilo… não tenho muito o que reclamar nele.

Meus projetos até hoje são feito usando ele, apesar que agora estou estudando rails e vendo como é este framework, se é isto tudo mesmo que andam falando.

Abraços e muito bacana o artigo!

gravatar

Flavio  em 5 de março de 2014

Estou estudando qual framework usar,para agiliza o processo de criação de sistema web onde trabalho.
Vi que o codeiginiter atende oque preciso… Más surgiu uma duvida.
Codeiginiter esta sendo continuado, vai sair novas versões?

Grato!

gravatar

Alberto  em 15 de março de 2014

Só uma idéia: http://phpframeworks.com.br/seja-um-colaborador/

gravatar

Augusto  em 25 de março de 2014

Como eu integro o sdk-microsoft-azure no codeigniter?

gravatar

Gilberto  em 22 de maio de 2014

Estou começando agora, espero gostar.

gravatar

Gilberto  em 22 de maio de 2014

Gostaria de saber onde encontro um post sobre a segurança no codeigniter. Se alguém puder por favor sugerir aqui mesmo algo mais direcionado.

gravatar

Tárcio Zemel  em 10 de junho de 2014

Está sim! Vai sim! :-)

gravatar

Tárcio Zemel  em 10 de junho de 2014

Aqui mesmo no blog.

gravatar

Marcos Vieira  em 7 de dezembro de 2016

Eu trabalho com esse framework há dois anos aqui nos Correios e, apesar de não ser da área de desenvolvimento, ( Se fosse não estaria com codeigniter.. :( ) já emplacamos dois sistemas que rodam no Brasil todo!
Esse Framework é uma excelente opção para sistemas WEB.

    Comente!