Last year we decided to change WalkHub from a feature rich, but difficult to maintain Drupal distribution to a microservice written in Go. This was a hard decision: at Pronovix we’ve been a Drupal shop for over 9 years now and we were also slashing quite a few features in the porting process, but we felt it was the right thing to do. In this blogpost I want to explain why we took this step and what the result is.
Ever since we launched WalkHub, one of the key feedbacks we received from our customers was that it was too difficult to start recording Walkthroughs. Installing your own WalkHub instance was a complex process. Many people also complained that they would never be able to justify maintaining a Drupal site for Walkthrough management alone.
On top of that we were running into a lot of technical debt with Drupal: while Drupal was a great choice for the initial prototype for WalkHub, we were seeing significant technical debt using Drupal 7 as the API provider. It is important to note that serving Walkthroughs is not a typical Drupal use case, and we were required to write a lot of custom code to make WalkHub work. As a result our development was being held back because of our technology stack.
Third, we were getting feedback from the market that Walkthroughs are just one type of embedded help. Customers came to us because they wanted to try WalkHub to solve a documentation issue often caused by a bad user experience, but Walkthroughs alone cannot solve that problem. Walkthroughs are great for task-oriented help topics, with a sequence of steps that need to be taken. Walkthroughs are not the right tool for conceptual and reference topics. People kept asking us how they could embed videos and text into Walkthroughs. The job people needed WalkHub to do was to offer help inside of an application, whatever format that help took.
For these 3 reasons we concluded we needed to refactor WalkHub. We decided that this time around we wanted WalkHub to be super lightweight, something that anybody would be able to add into an existing help/documentation system. That is why we chose Go and React.js with a PostgreSQL database. Go allowed us to make a single executable for the back-end that could easily be deployed. And we wanted to be able to run our own WalkHub on the same software as the open source package: this is why we prioritised support for a scalable PostgreSQL database over SQLite which might have been even easier to deploy.
In our first Go release, the help center was a WalkHub only thing, but we are about to change this to allow you to make any type of web resource available from an in-app help center. You can see a mock-up of the new help center on the bottom right on this page. In the near future we want to make it available as a free service that makes it really easy to add a help center to your site. Keep an eye open for a post with more information about the help center (you sign up here for the WalkHub mailing list). Spoiler: we are planning to build a Drupal 8 application to run it...