Logo de l'application Transport Montréal

Fin du service Transport Montréal

Transport Montréal a été retiré du Google Play store en mai 2021 après 11 ans sur le marché. Cette page fait un post-mortem du projet et a surtout pour vocation de me servir d'aide-mémoire.


Présentation

L'application a été initialement publiée sous Android 1.5 en mai 2010. Il s'agissait alors de la première application sous Android permettant d'obtenir les horaires du transport en commun dans la grande région de Montréal. Celle-ci a été développée par moi (Jean-Philippe Jodoin), Alexandre L'Heureux et Hocine Zebbar. Le logo et les cartes ont été conçus par David Cérat. À l'époque, il y avait très peu de téléphones Android sur le marché, mais voyant le potentiel immense de ceux-ci, j'ai décidé de tenter de moderniser les horaires en papier distribués aux stations de métro. L'idée m'est venue après avoir attendu un peu trop souvent l'autobus en hiver lors d'un stage en 2009. Après avoir convaincu Alexandre et Hocine d'embarquer avec moi, nous avons acheté un HTC dream (G1) sur eBay et nous avons développé l'application sur une période d'environ 9 mois. Les forfaits de données étant très dispendieux, nous avons décidé que l'application devait être 100% fonctionnelle sans connexion internet afin de permettre aux gens de récupérer les horaires sur leur Wifi de maison. Lorsque nous avons publié l'application, elle a été téléchargée 15 fois la première nuit et a tranquillement monté à plus de 100 000 téléchargements. L'idée initiale était de vendre l'application 2.99$, mais à l'époque, il n'était pas encore possible d'acheter des applications sur le Android Market canadien. Plutôt que de la garder pour nous, nous avons décidé de la rendre disponible gratuitement ce qui a contribué à sa popularité. Pour un certain temps, c'était l'application de transport en commun la plus téléchargé à Montréal sous Android. Celle-ci a d'ailleurs été finaliste au gala Forces Avenir en 2011 dans la catégorie environnement et a obtenu une bourse de l'AQTR en 2011. Après la première version, j'ai continué le projet seul afin d'ajouter davantage de sociétés de transport (CIT, AMT, etc.) et j'ai fait la maintenance (mise à jour des horaires, etc.), support (plus de 500 courriels) et la mise à jour de celle-ci pour les 11 années d'opération.

L'équipe de transport Montréal en 2011.
L'équipe de transport Montréal en 2011, de gauche à droite, Hocine, Alexandre et Jean-Philippe

Aspect technique

L'application était constitué de 3 composantes, une application client Android (Transport Montréal), une application C++(!) qui effectuait le parsing des différents sites de transport en commun (STM, STL, RTL, AMT) et créait un fichier d'horaire dans un format commun et un site de mise à jour en PHP. Lorsqu'un site de transport en commun changeait de format, il fallait mettre à jour le parser ce qui était assez rapide vu les nombreux utilitaires de parsing créé pour l'occasion. Initialement, à chaque mise à jour, le parser devait être exécuté manuellement et la mise à jour chargé sur le serveur manuellement. Entre 2011-2013, les sociétés de transport en commun de la grande région métropolitaine ont adopté le format ouvert GTFS. Ceci a radicalement réduit la barrière à l'entrée et de nombreuses nouvelles applications ont vu le jour ainsi que des applications officielles promues par les services de transport en commun eux-mêmes. Notre parser C++ a donc été adapté pour supporter ce nouveau format afin de le transformer dans le format que nous avions développé initialement. Ce format était somme tout assez similaire à celui des GTFS, un peu moins flexible, mais aussi beaucoup plus léger. Par exemple, le GTFS de la STM de 50 Mo compressé faisait moins de 3 Mo dans notre format. Notre format était de style CSV (comme les GTFS), mais avec des index en octets pour faciliter l'accès aléatoire dans les plus gros fichiers. Par exemple, le fichier qui contenait la liste des arrêts contenait l'offset exact pour récupérer les horaires de l'arrêt du fichier d'horaire. Ceci était très performant, mais peu flexible et avait été développé à une période où les performances de sqlite sur Android étaient reconnues pour être très mauvaises. Ce format de fichier a d'ailleurs été partiellement plagié dans les premières versions de l'application officielle de la STM en 2012 (incluant les champs null de notre format qui n'était pas nécessaire pour la STM). Afin de faciliter la mise à jour des horaires, la procédure de parsing/mise à jour c'est simplifié et au fils des années, un script python a été développé afin que les mises à jour s'effectuent automatiquement. Voici un schéma haut niveau qui montre l'architecture:

Schéma d'architecture
Schéma d'architecture haut-niveau du système

Ce schéma est tiré d'une présentation faite en septembre 2012 pour "En ville sans ma voiture". Celle-ci est disponible ici.

Vidéo montrant les diverses fonctionnalités de l'application

Conclusion

Transport Montréal a été superbe occasion d'apprentissage qui m'a permis d'apprendre à développer une application mobile d’A-Z incluant le backend, la mise à production, le support et la déprécation de celle-ci. À ce jour, ça reste probablement le projet non commercial le plus utile que j'ai fait. Bien que le projet n'a jamais fait d'argent directement (au contraire, j'ai assumé les différents coûts de domaines, etc.), il m'a certainement aidé dans ma recherche d'emplois après l'université, en plus des très nombreux apprentissages techniques que j'ai faits. Se faire recommander sa propre application par un inconnu dans le métro reste probablement parmi les moments les plus valorisants.

Retour à jpjodoin.com