Back-End

28 jul, 2017

Silex está morto… ou não

Publicidade

Na última semana ocorreu a conferência deSymfony em Castellón (Espanha). IMHO deSymfony é a melhor conferência da qual eu já participei. As palestras são boas, mas as vezes eu gosto de ir a esses eventos não por causa delas. Eu gosto de ir aos eventos por causa das pessoas, as pausas para o café e a comunidade (e a deSymfony é brilhante nesse ponto). Esse ano eu não pude comparecer à conferência. Foi uma pena. Muitos bons amigos lá. Então eu somente pude acompanhar pelo Twitter, ler as apresentações publicadas (obrigado Raul) e aguardar os vídeos das palestras no youtube.

Na minha timeline do Twitter duas postagens atraíram especialmente minha atenção. Um foi da Julieta Cuadrado e outro do Asier Marqués.

Os posts estão em espanhol, mas a tradução é simples: Javier Eguiluz (Membro da equipe principal do Symfony e co-organizador da conferência) disse em sua palestra: “Silex está morto”. Na hora que eu li os posts a apresentação ainda não estava disponível, mas alguns dias depois eles estavam online. O slide 175 é claro “Silex está morto”.

 

 

O Javier recomenda que não utilizemos o Silex em nossos projetos futuros e que devemos marcar os existentes como “legados”. É difícil para mim. Se você já leu meu blog você notou que sou um grande fã do Silex. Cada vez que eu precise de algo para backend, ou um servidor de API/ REST ou alguma coisa parecida, a primeira coisa que eu faço é: “composer require: silex/ silex”. Sei que o Silex tem limitações. Ele é construído em cima do contêiner de injeção de dependências Pimple e o Pimple é realmente horrível, mas seu micro framework me proporciona exatamente o que eu preciso. É pequeno, simples, suficientemente rápido e realmente fácil de adaptar às minhas necessidades.

 

Eu me lembro de um jantar no deSymfony alguns anos atrás em que conversei com o Javier em Barcelona. Ele estava tentando me “convencer” a utilizar o framework completo do Symfony ao invés do Silex. Ele quase conseguiu, mas eu não gostava do Symfony completo. Complicado demais para mim. Muitas coisas interessantes, mas eu não precisava de muitas delas. Eu não gosto do framework completo do Symfony, mas eu adoro o Symfony. Para mim, ele é ótimo devido aos seus componentes. Eles são peças independentes de código que eu posso utilizar para que se adequem exatamente às minhas necessidades ao invés de utilizar o framework completo. Eu aprendi muito com uma leitura pesada e analisando os componentes do Symfony. Não estou dizendo que os frameworks completos são ruins. Só estou dizendo que não são para mim. Se eu for forçado a utilizá-los, vou utilizar, mas se eu puder escolher, definitivamente escolherei um micro framework, mesmo para projetos médios ou grandes.

A nova versão do Symfony (Symfony 4) sairá em novembro e lendo os slides do Javier no slideshare eu pude ter uma ideia do seu plano de ação. Meu resumo é simples: “brilhante”. Parece que as pessoas no Symfony ouviram minhas necessidades e mudaram todo o framework para se adaptar a mim. Após entender o plano de ação, eu achei que precisava mudar o título desse post (inicialmente era apenas “Silex está morto”). O Silex não está morto. Para mim o Symfony (o framework completo) é a morte. O Silex será melhorado e renomeado como Symfony (Sei que isso é uma afirmação e tanto, mas esse é meu ponto de vista). Então, o sentimento ruim que eu tive quando eu li os posts da Julieta e do Asier se tornou um sentimento bom. Boa jogada SensioLabs!

Mas eu tenho um problema agora. O que eu posso fazer se eu precisar começar um projeto hoje? O Symfony 4 ainda não está pronto. O Javier disse que posso utilizar o Symfony Flex e criar novos projetos utilizando o Symfony 3 com a aparência e a sensação do Symfony 4, mas o Flex ainda está na versão alpha e não quero utilizar ferramentas em versão alpha em produção. Especialmente no backend. Estou ficando mais velho, eu sei. Para mim o backend é uma commodity agora. Eu preciso do backend principalmente para atender ao JSON.

Eu normalmente utilizo o PHP e o Silex aqui somente porque eu estou muito confortável com isso. Nos projetos, as pessoas de negócios não se importam sobre as tecnologias e frameworks. É nosso trabalho (e nosso problema, dependendo de como lermos isso). E não se esqueça de uma coisa: os desenvolvedores são parte do negócio, então, em uma parte da minha mente, eu também não me importo com frameworks. Eu me importo em ter as coisas feitas, maximizando o potencial da tecnologia e utilizando a inovação para o benefício dos clientes (boa frase para a lápide, não é?)

Então, eu comecei a buscar alternativas. Meu objetivo aqui é claro: quero encontrar um framework com o qual eu possa fazer as mesmas coisas que faço com o Silex. Nada mais. E tem algo importante aqui: a ferramenta deve ser fácil de ser aprendida. Eu quero dominar a ferramenta (ou ao menos me tornar produtivo) em alguns dias no máximo.

Eu comecei com o primeiro: Lumen e eu acho que vou parar de procurar. O Lumen é o micro framework da Laravel. Provavelmente no mundo do PHP agora existem duas comunidades mais importantes: Symfony e Laravel. Talvez se formos rigorosos, Laravel e Symfony não sejam comunidades diferentes. Na verdade, o Laravel e o Symfony compartilham muitos componentes. Então talvez as duas comunidades sejam a mesma.

Eu quase nunca utilizei o Laravel e é hora de estudar um pouco. Há um tempo atrás eu utilizei o ORM Eloquent mas como eu odeio ORMs eu sempre retornei para o PDO/ DBAL. Como eu disse antes eu não gostava do framework completo do Symfony. É muito complexo para mim, e o Laravel é igual. Quando eu comecei com o PHP (no início dos anos 2000) não existiam frameworks. Eu lembro de ler livros sobre Java e J2EE. Tentando entender alguma coisa nesse emaranhado de acrônimos, configurações de XML, e tentando escrever meu próprio framework em PHP. Agora, em 2017, escrever nossos próprios frameworks em PHP é um bom aprendizado, mas utilizar ele em projetos reais é ridículo. Como alguém disse antes (não lembro quem) “Todos devem escrever seu próprio framework, e nunca o utilizar”

 

A mudança do Silex para o Lumen é simples. Na verdade, com uma aplicação mínima é exatamente a mesma coisa:

 

use Silex\Application;
 
$app = new Application();
 
$app->get("/", function() {
    return "Hello from Silex";
});
 
$app->run();

use Laravel\Lumen\Application;
 
$app = new Application();
 
$app->get("/", function() {
    return "Hello from Lumen";
});
 
$app->run();

 

Se você é um usuário do Silex, você vai precisar de algumas horas lendo a documentação do Lumen e já poderá configurar um novo projeto sem problema. Os conceitos são os mesmos, com pequenas diferenças e até coisas legais como grupos e middlewares. Na verdade, nada impossível de ser realizado com o Silex, mas com uma interface muito simples. Se eu precisasse criar um projeto novo agora, eu utilizaria o Lumen, sem dúvida.

 

No próximo novembro, quando o Synfony 4 chegar, eu provavelmente vou enfrentar o problema da escolha. Mas, nos últimos anos eu estive envolvido no mundo louco do JavaScript: Angular, Angular2, React, npm, yarn, webpack,… Se eu sobrevivi a isso (no final, eu escolhi o JQuery, mas essa é uma outra história), estou pronto para tudo agora.

 

***

Gonzalo Ayuso faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://gonzalo123.com/2017/07/10/silex-is-dead-or-not/