Chama-se mGIRA e é uma aplicação alternativa para a GIRA, que funciona através do browser do telemóvel e que permite utilizar o serviço de forma muito mais confiável que a app oficial. Foi desenvolvida por Afonso, um jovem programador de 19 anos, que disponibilizou todo o código de forma aberta para outros poderem sugerir melhorias.
Nas últimas semanas, o uso da GIRA, o sistema público de bicicletas compartilhadas de Lisboa, tem sido bastante desafiador devido a diversos bugs extraordinários na application. Essa é a única forma de aceder o serviço, que, de maneira geral, já costuma apresentar alguns problemas operacionais. Afonso Hermenegildo – como muitos outros jovens que recorrem à GIRA para se moverem na cidade – sabe que a aplicação da GIRA não é das mais fiáveis, mas a situação destas semanas levou-o a acelerar uma ideia que já tinha na cabeça.
Il s'agit de mGIRA e é uma aplicação alternativa para a GIRA, que funciona através do browser do telemóvel e que permite utilizar o serviço de forma muito mais confiável que a application oficial. “Uso a GIRA desde Maio e fui-me apercebendo que a aplicação tinha problemas constantes. Comecei, então, a tentar perceber se era possível criar algo“, conta ao LPP. Para utilizar a mGIRA, basta escrever o endereço app.mgira.pt no browser do telemóvel (iOS ou Android) e continuar por aí. Se quiseres, e se souberes como fazê-lo, podes adicionar o site ao homescreen, ficando a mGIRA a funcionar como uma web app.
Afonso tem 19 anos e programa desde os 12. Uma licenciatura em Sistemas e Tecnologias de Informação na NOVA IMS trouxe-o, no ano passado, para Lisboa e, a certo ponto, começou a utilizar a GIRA para ir de casa para a faculdade, e noutras deslocações. E em vez de lamentar as falhas da aplicação, Afonso desafiou-se a produzir uma melhor versão.
O primeiro passo foi tentar perceber como a application funcionava e que API era utilizada para as diferentes acções da mesma, como consultar a disponibilidade em cada estação, desbloquear uma bicicleta ou terminar uma viagem. “Descobri os endpoints dessa API e passei a conseguir fazer pedidos à API e a ter acesso a essas acções”, explica. Basicamente, Afonso descobriu a “chave” que lhe dá acesso às várias funcionalidades da aplicação oficial da GIRA e conseguiu trazê-las para o seu código. “Foi como se tivesse com um microfone na aplicação a ver o que ela fazia, a perceber como ela funciona. A parte mais importante são os pedidos ao servidor, que é isso que desbloqueia as viagens, dá os tempos, etc.”
A API com que Afonso trabalhou não é a API pública da GIRA, que é mais limitada e que dá acesso apenas a algumas informações, como as estações e bicicletas disponíveis em cada uma. Mas, conhecendo os endpoints da API que é usada na application oficial, o jovem programador consegue trazer essa API para a sua aplicação. “Acredito que eles [EMEL, que é responsável pela GIRA] não se chateiem comigo, mas é possível”, diz Afonso, com a boa disposição de quem apenas quer melhorar um serviço que usa. “Acho que as empresas deviam abrir-se mais à inovação vinda de fora e colocar as suas aplicações em código aberto. As coisas podem ser abertas que isso não implica que vão roubá-las. Permite que alguém como eu possa pegar no código e resolver um problema, oferecer algo melhor, etc.”
A mGIRA, desenvolvida por Afonso, está disponível na íntegra em código aberto no GitHub, sendo possível a qualquer pessoa apontar sugestões ou mesmo pegar nesse código e fazer uma aplicação inteiramente nova e, talvez, melhor que a de Afonso. “Nada impede as pessoas de darem ‘fork’ deste código e fazerem a sua aplicação. Só não podem vender uma aplicação com este código”, esclarece. Diz Afonso que o desenvolvimento da mGIRA lhe demorou um mês e meio. E lhe custou vários fins-de-semanas. “Tornou-se um vício.”
Depois de resolvida a questão do backend, foi preciso olhar para o frontend, e “criar uma interface que fosse fácil se usar”. “Acho que consegui”dit-il. “Depois, como também comecei a usar a mGIRA no dia-a-dia, antes de a disponibilizar publicamente, consegui ir vendo o que funcionava bem e o que não funcionava, e isso acelerou bastante o processo de maturação.”
A mGIRA não só é uma aplicação mais estável que a application oficial – sem os bugs do costume –, como tem funcionalidades exclusivas, que fazem sentido existir na perspectiva de Afonso. Uma delas é um perfil de utilizador mais simples e com algumas estatísticas de uso da GIRA, como o número total de viagens, a distância total percorrida e uma estimativa do CO2 poupado. “É giro as pessoas terem estas estatísticas. Podemos ver como usamos a GIRA.”
Outra diferenciação do mGIRA é ter um navegador integrado: as pessoas podem indicar um destino na aplicação de Afonso e esta vai sugerir um percurso pedonal e ciclável, que inclui duas estações GIRA. “Eu insiro aquilo para onde quero ir. A aplicação dá-me o caminho a pé até à estação mais próxima do sítio onde estou, depois o percurso de bicicleta até à estação GIRA mais próxima do meu destino e, por fim, diz-me como posso caminhar até ao destino”, explica Afonso. “Colocar a navegação deu-me umas dores de cabeça, mas lá consegui.” A navegação pode ser particularmente útil para quem não conhece tão bem a cidade ou para quem não quer estar a pensar qual é a estação mais próxima de determinado ponto. “Para mim faz sentido estar tudo na mesma aplicação e tirar esse pensamento do utilizador.”
De resto, a mGIRA – designação que significa simplesmente “melhor GIRA” – tem pequenas vantagens, como a possibilidade de retirar aquelas bicicletas que aparecem a verde na estação mas não surgem listadas na aplicação oficial da GIRA. Afonso criou um mecanismo em que o utilizador insere o número de uma bicicleta que vê na estação, a aplicação envia o pedido ao servidor da GIRA para desbloquear esse veículo e, se o servidor autorizar, a bicicleta é disponibilizada. “Isto só funciona se, através da API, o servidor permitir retirar a bicicleta. Se o servidor não deixar, é porque essa bicicleta está mesmo indisponível por estar avariada ou por outro motivo, ou seja, não é erro da aplicação ela não aparecer na lista.”
Afonso divulgou a mGIRA primeiro no subrreddit da cidade de Lisboa. A sua publicação captou o interesse de várias pessoas, que elogiaram o trabalho, ofereceram ajuda e também apontaram algumas dúvidas e críticas. Uma das principais foi sobre estar a utilizar um proxy, isto é, um servidor intermediário entre o telemóvel da pessoa que usa o mGIRA e o servidor da EMEL. Trocando por miúdos, Afonso poderia estar a usar esse proxy para ficar com as palavras-passe de todos que usassem a mGIRA. O jovem programador esclareceu de imediato, no Reddit e ao LPP, que esse nunca foi o intuito, nem é o que está a acontecer – e que o proxy é necessário para “enganar” a API da EMEL. “Temos de usar um proxy porque a API da GIRA só permite que os pedidos sejam feitos com o domínio deles. Então, uso um proxy para gerar um pedido ao servidor a fingir que veio do domínio certo e depois ele manda-nos a resposta de volta”explique-t-il. “Pode haver outra forma de fazer isto sem passar pelo meu serviços. Se alguém souber que mande. O código está todo publicado no GitHub.”
De qualquer das formas, no último fim-de-semana, já depois da nossa entrevista com Afonso, o jovem fez algumas melhorias no sentido de melhorar a segurança da aplicação. A mGIRA passou a permitir que o utilizador utilize um proxy próprio, da sua confiança; e com a ajuda de um outro programador foi disponibilizada uma aplicação nativa para Android que não usa qualquer proxy (pode ser descarregada aqui). Caso não percebas nada de proxys nem tenhas Android, podes simplesmente alterar a tua palavra-passe da GIRA para uma senha única, que não uses em mais lado nenhum, antes de usares o serviço na mGIRA.
A mGIRA irá funcionar enquanto a EMEL permitir. A empresa municipal, que é responsável pela GIRA, pode fazer como a Carris fez com o GeoBUS, ou seja, alterar os acessos de Afonso e da comunidade ao servidor da GIRA de modo a tornar a mGIRA inutilizável. Ou pode abraçar a inovação e o código aberto, e tentar trazer para a aplicação oficial o melhor da mGIRA.