Open source onboarding libraries

I wanted to give my quick evaluation on onboarding libraries and how we might use them in OpenRefine to address the need for better user guiding of features, in app help, and onboarding such as mentioned in another comment :

Some type of in-app guide would be absolutely amazing, a real time saver. It would basically take away a lot of the need for the repetitive "how does OpenRefine work, what does everything mean, are all the buttons and menus" dance that each trainer now does. It would also make users feel much more confident that they're doing the right thing when trying the application themselves.

So, I did a quick evaluation of 3 of the most used/recommended open source onboarding JavaScript libraries (didn't bother with others because there were many more issues/complaints and some used old no longer maintained UI libraries). I have to say that in the commercial space that is very well regarded (Codepen uses it) and what I had some previous experience with.

Open source onboarding JavaScript libraries:

  1. Driver.js
  2. Shepherd.js
  3. Intro.js

Intro.js has an incompatible GNU AGPL license now.
So that leaves Driver.js and Shepherd.js

From my toying with both, I'd have to say that Driver.js is a bit easier to understand and use. It also offers some of the features that we would actually need support for. Two of them that I found I wanted/needed were lacking in Shepherd.js but found in Driver.js like Async Tour (load an example project and example data from server to populate datagrid and walk user through features), and easier config of individual steps which is useful for doing things like cut/paste customization when showcasing Facet features that are similar, but different.

Hope this helps somewhat.


Shepherd.js got support for things like Driver.js's Async Tour too, through promises and native event-listeners, I have used it for years. It seems slightly more low-level than Driver.js it seems, which I think contributes to the configuration of each step being a little bit more complex.

1 Like