Começando o Projeto Ágora (PrAgora) ou: Escolhendo um framework PHP para um projeto novo

Esse post marca o anúncio público do Projeto Ágora (apelidado de PrAgora por questões de Google Fu). A idéia desse projeto nasceu da minha desilusão com a política. Minha curta experiência em política partidária me indicou que não existe democracia interna em organizações brasileiras, especialmente partidos políticos.

Será que as organizações não implementam esses processos por falta de vontade ou de condições tecnológicas? Se for por ausência de condições tecnológicas talvez seja algo em que eu possa dar alguma contribuição, ainda que modesta. Pensei então que poderia haver um sistema que servisse de base tecnológica para organizações que quisessem democratizar seus processos internos.

De maneira objetiva quero implementar principalmente dois módulos:

  • Um de proposições, em que seja possível “positivar” as proposições de maneira que, ao atingir certa quantidade de upvotes a proposição seja discutida/debatida nas lideranças da organização – evitando que as lideranças deixem certas propostas “debaixo do tapete”;
  • Outro de votações, em que seja possível votar em propostas, e que, mediante configuração, seja possível visualizar quem votou no que, proporcionando transparência ao sistema;

Propositalmente não irei implementar funcionalidades que já existem em outros espaços tais como:

  • Sistema de comunicação por tópicos (já existente em sistemas de fóruns ou grupos de e-mail);
  • Comunicação rápida (já existente em sistemas como Whatsapp ou Telegram);

Fiz questão que o primeiro commit fosse em um simbólico 7 de setembro. Mas desde lá não havia escrito uma linha de código pois estava maturando a idéia.

Decidi então que hoje pode ser um momento propício para mais alguns passos.

O primeiro passo foi escolher a tecnologia. (In)felizmente hoje existe uma infinidade de possibilidades tecnológicas então existe o risco da paralisia por indecisão diante desses múltiplos caminhos.

Para me ajudar defini alguns princípios para o projeto. Como eu quero que o projeto seja usado por organizações de muitos tipos ele tem que ser:

  • Fácil de instalar e de usar
  • Baseado em tecnologias baratas, se possível gratuitas e livres

Inicialmente escolhi a linguagem PHP pois um ambiente PHP é algo relativamente simples de configurar e amplamente disponível em hospedagens compartilhadas por aí. Além disso, como eu estou atualmente trabalhando como professor de Programação Web achei que seria interessante me inteirar um pouco melhor do ecossistema PHP.

Bom, até mesmo por esse ser um side project, achei que não seria pertinente fazer um projeto totalmente do zero então o próximo passo foi escolher um framework PHP.

Após algumas leituras: “10 Best PHP Frameworks To Use in 2021” e especialmente “Os Frameworks PHP mais Populares para Usar em 2022” separei principalmente Codeigniter, Cakephp, Slim e Fuelphp esses por terem menos dependências segundo o segundo link citado.

Também considerei em alguns momentos anteriores usar o Laravel mas olhei o site do Laravel e achei a documentação básica muito ruim: ela primeiro explica, em detalhes, cada conceito do framework ao invés de ser mais direto ao ponto. Não acho essa uma boa abordagem para frameworks web. Ou seja, antes de mostrar as vantagens ele tenta entrar nos meandros do mesmo. Também procurei fontes alternativas ao site oficial mas aparentemente a documentação introdutória do Laravel, se existe, é principalmente em vídeos, o que eu não considero o ideal.

Fiz uma busca no Google Trends para ter uma idéia de popularidade também, afinal se o objetivo é que o projeto seja popular acho que esse aspecto não pode ser desprezado.

O resultado foi o da imagem abaixo:

Quem quiser refazer essa pesquisa com outros parâmetros pode fazê-la no seguinte link: https://trends.google.com.br/trends/explore?q=%2Fm%2F02qgdkj,%2Fm%2F09t3sp,Slim%20php,Fuel%20PHP,Laravel%20php

Adicionei o Laravel na pesquisa acima mais para ter um parâmetro. Confesso que eu achava que o Laravel tivesse um destaque bem maior nessa pesquisa. Segundo essa fonte o CodeIgniter está com uma popularidade semelhante ao Laravel.

Também consultei essa página do Slant: https://www.slant.co/topics/1183/~best-php-frameworks que mostra o Slim PHP como o preferido dessa comunidade.

Embora o primeiro lugar do Slant esteja diferente do Google Trends, o Fuel está mal posicionado em ambos e acabei descartando o Fuel por esses critérios.

Restou então nesse ponto CodeIgniter, Cakephp e Slim. Dei uma olhada na documentação dos três e embora as três parecem bem melhores do que a do Laravel me chamou atenção positivamente no Slim uma informação bem destacada de como fazer o deploy de uma aplicação.

Porém, consultando a própria documentação vi que tanto CodeIgniter quanto Slim não possuem um módulo de autenticação integrado ao framework. Esse funcionalidade é provida através de plugins de terceiros. Talvez isso faça sentido para algumas aplicações porém não é o meu caso então considerei um parâmetro importante.

Nesse ponto, pelos motivos expostos acima, eu já estava mais inclinado a escolher o Cakephp. Também preciso ser intelectualmente honesto e dizer que eu já tive uma experiência prévia com Cakephp e que a experiência na ocasião foi relativamente positiva. Digo relativamente pois na época eu vinha do mundo Rails e usar Cakephp, na época, me pareceu um downgrade pessoal. Em minha defesa, foi um projeto em equipe e não uma EUquipe como é o caso, nesse momento, do PrAgora.

Pretendo fazer outras postagens sobre o PrAgora mas quem quiser acompanhar com mais detalhes pode seguir o projeto pelo Github: https://github.com/viniciusalveshax/PrAgora

Deixo a pergunta pra você que chegou até aqui: o que você achou do processo descrito acima? O que faria diferente? O que achou interessante?

PS: No commit sobrecitado o nome do repositório consta como democracyOS. Optei por renomear o projeto por vários motivos: primeiro que democracyOS, por si, é um pouco clichê. Sem mencionar que eu não estou desenvolvendo um Sistema Operacional. Além disso nesse período refleti um pouco e acho que o que eu queria tentar reproduzir é uma espécie de Ágora grega (pelo menos na versão romantizada que a palavra remete – não sou especialista em história da Grécia, desculpem). Por último, mas não menos importante, achei divertido que Ágora tem uma grafia semelhante com a palavra Agora do português. E esse urgência de algo que precisa ser feito hoje, e não amanhã também condiz com a minha visão para o projeto.