Dans le cadre d'un projet de réservation en ligne de chambre d’hôtes pour les colonies de vacances et des séjours au ski, nous avions étudié les différentes possibilités que propose Drupal. Nous nous sommes rapidement tournés vers la distribution Roomify qui semblait au premier abord être une solution pertinente pour éviter de réinventer... Au moins la roue, au mieux le fil à couper le beurre. On entend souvent des voix s'élever, dans la communauté, pour louer l'utilisation des distributions... Mais la plupart du temps, en mettant en garde contre les personnalisations avancées... Qui s'avèrent souvent être "casse-gueule"... Nous n'avions jamais utilisé Roomify... Nous souhaitons partager notre retour d'expérience... Qui peut être utile pour vos futurs projets ou vos prises de décisions...
La distribution Drupal Roomify
Roomify est une distribution Drupal qui permet de gérer la disponibilité, la tarification et la réservation d’hébergement en ligne.
La solution est basée sur le module BAT (Booking and Availability Management Tools for Drupal), qui réunit une suite de modules Drupal de gestion des réservations. La solution permet également une intégration avec Drupal Commerce. Ainsi, Roomify propose les principales fonctionnalités suivantes :
- La création d’offres d’hébergement avec une configuration des prix pour des périodes données et la création de landing pages pour promouvoir certaines offres ;
- La création de pages de listes et détails pour la présentation des hébergements ;
- La gestion des disponibilités et des tarifs d’hébergement ;
- Un moteur de recherche par tris configurables (avec notamment la possibilité d’ajouter les hébergements les mieux notés, les propriétés « vedettes », etc.) ;
- La fonctionnalité Conversations qui permet d’échanger des messages avec les utilisateurs sur votre site et de concevoir rapidement des offres personnalisées pour que le client réserve instantanément ;
- Une vue du calendrier global proposant de visualiser l’ensemble des disponibilités des hébergements ;
- L’ajout de services supplémentaires comme la location de vélo, les visites guidées, réservables directement depuis l’annonce d’un hébergement ;
- La définition des méthodes de paiement ainsi que le processus de paiement avec le support de Stripe, Paypal, Authorize.net et d’autres ;
- Un tableau de bord simple à utiliser et intuitif permettant de consulter toutes les informations concernant l’activité (informations sur les propriétés, les réservations, les demandes de renseignement, etc.) ;
- Une fonctionnalité de partage d’avis et de notation permettant aux utilisateurs de noter et de commenter la prestation d’hébergement.
Notre projet, orienté « métier », exigeait des fonctionnalités similaires à celles fournies par Roomify. Nous nous sommes naturellement tournés vers cette distribution afin d’optimiser le temps de développement du projet.
Notre retour d’expérience
Dans le cadre de ce projet, nous avons utilisé :
- BAT pour charger les informations des disponibilités des chambres ;
- Drupal commerce pour charger les infos des commandes ;
- Le module roomify_reservation pour les informations de réservations (qui contiennent entre autre les commandes).
Nicolas, lead-développeur en charge du projet, témoigne sur les avantages de la distribution :
« Le point fort de la distribution est son super back-office qui est très bien fait et agréable à utiliser. L’ergonomie est également bien pensée, je pense que les propriétaires et les webmasters d’un site utilisant Roomiy peuvent facilement gérer leurs chambres/ maisons d’hôtes. La distribution offre une multitude de fonctionnalités dont les plus intéressantes sont la gestion des réservations et l’intégration avec la solution Drupal Commerce pour bénéficier des fonctionnalités de vente en ligne. Ainsi, la distribution nous a simplifié la vie pour mettre rapidement en place les fonctionnalités de gestion d’hébergement ainsi que le paiement en ligne ».
Tableau de bord pour le(s) propriétaire(s) :
Rapidement, certaines demandes du projet ont évolué, laissant comprendre que Roomify ne favorise pas vraiment les projets en agilité. En effet, Nicolas relate les principaux problèmes suivants :
- "La forte interdépendance des modules : j’ai constaté une difficulté à supprimer les fonctionnalités superflues et inutiles au projet. Dès que je supprimais une fonctionnalité, un bug apparaissait. Je pense que cela est dû à une forte dépendance des modules les uns des autres, ce qui rend particulièrement coriace la sélection des fonctionnalités que l’on souhaite conserver. Par exemple, Roomify propose la gestion de chambres et de maisons. Etant donné que le projet ne demandait de gérer que des chambres, dès la désactivation de la fonctionnalité dédiée aux maisons, plusieurs bugs ont fait surface. Nous avions dû ajouter du code dans les modules customs et dans le thème custom, voire hacker certains modules de Roomify pour corriger des bugs persistants et modifier le comportement des fonctionnalités pour répondre aux besoins. Dans un souci des respects des bonnes pratiques Drupal, nous avons laissé une grande majorité des fonctionnalités telles quelles pour éviter de hacker la distribution et se retrouver avec un site difficilement maintenable."
- "Des modules avec des bugs : en plus d’avoir des bugs qui découlent de la modification du comportement de modules, certains modules présentaient des bugs dès la première utilisation. Par exemple, la distribution utilise un module permettant de rédiger des templates d’e-mails dans plusieurs langues. Cependant, ce dernier présentait des bugs à répétition, les traductions ne fonctionnaient pas, ce qui nous a contraints d’installer un patch sur le module et de reprendre tous les endroits où il y avait des envois d’e-mails dans Roomify."
- "Des fonctionnalités au comportement particulier : nous avions eu beaucoup de problème au début du projet à cause de pages du back-office qui ne s’ouvraient pas ou s’ouvraient très lentement (environ 20 secondes). Nous avons fini par trouver que cela venait d’une fonctionnalité du thème du front-end de Roomify, alors que cela n’avait aucun sens dans le back-office à priori."
- "Une documentation quasi-inexistante : c’est l’un des plus grands inconvénients de cette solution. La distribution Roomify n’est pas documentée. En effet, suite aux différents bugs rencontrés, nous nous sommes naturellement tournés vers la communauté pour chercher des solutions à nos bugs, mais en vain. Il existe des hooks dans la distribution qui permettent d'altérer quelques comportements mais ils ne sont documentés nulle part, conférant de ce fait un temps d'apprentissage considérable (ce qui n’est pas vraiment le but d’une distribution). La distribution n’est pas soutenue par une communauté rendant finalement cette solution peu accessible, même si cette dernière est Open Source."
- "Autre point négatif : le fonctionnement des acomptes. Roomify permet de ne payer qu’un acompte à la réservation. Lorsque vous choisissez cette option, il n'est plus possible de demander le paiement en ligne du solde, en général x jours avant l'entrée dans les lieux, comme pour n'importe quelle location saisonnière. De plus, Roomify ne permet pas de savoir comment le client a réglé et ne dit pas à quoi correspond le montant. Ces fonctionnalités manquent fortement pour une distribution spécialisée dans la gestion de réservations d’hébergement en ligne, mais cela n’engage que celui qui a choisi d’utiliser cette distribution. »
Conclusion
Le but d’une distribution est de disposer d’une boîte « out-of-box » avec les briques de fonctionnalités prêtes à l’emploi pour développer un projet orienté métier et éviter ainsi de réinventer la roue. Ici dans ce projet en particulier, nous n’avons pas profité du but premier de la distribution puisque nous avons passé un certain temps à débuguer ou à modifier le comportement de la distribution pour coller parfaitement aux attentes du projet (notamment une personnalisation poussée de la tarification, de la gestion des disponibilités et des réservations). En effet, Roomify ne laisse pas de grandes opportunités pour personnaliser ou faire évoluer la solution.
Il faut prendre la distribution comme elle vient en prenant bien le temps de tester toutes les fonctionnalités et vérifier si la distribution répond à tous les besoins. Soit il manque des fonctionnalités, alors il suffit d’implémenter des modules additionnels, soit la distribution ne se comporte pas de manière à répondre aux besoins. Alors dans ce cas, il est conseillé de se tourner directement vers une autre solution pour éviter tout hack du code qui entraînerait des conséquences irréversibles en termes de maintenance du site (notamment pour la mise à jour de sécurité). Drupal propose en général un code assez modulable et qui permet tout de même de modifier les comportements grâce à l’intégration de modules supplémentaires. Cependant, avec la distribution Roomify, nous ne pouvons prétendre à une telle affirmation : altérer le comportement de Roomify est une très mauvaise idée et engendre du développement supplémentaire colossale pour débuguer et modifier les fonctionnalités.
Par ailleurs, nous nous posons des questions concernant la caractéristique Open Source de cette solution. Si le code est bien Open Source, le manque de documentation de l’API (autant pour le Framework BAT que pour Roomify) et l’absence de communauté soutenant cette distribution laisse à penser que Roomify ne permet pas de bénéficier de tous les avantages de l’Open Source comme le soutien et l’aide de la communauté, la contribution, l’aide au débugs, la documentation pour la prise en main de la solution technique, la maintenance de la solution, etc.
Concernant BAT, les auteurs le disent eux-mêmes sur la page du module Drupal: "Ce n'est pas un outil pour construire un site". Vous êtes donc prévenus sur le potentiel du Framework BAT sur lequel est basé Roomify !
Et si vous le souhaitez, nous pouvons publier le code modifié de notre utilisation de la distribution !
Pour consulter le projet : clubalpes-particulier.fr