Login Sign up

Wednesday Oct. 14, 2020, 4:15 p.m.–Oct. 14, 2020, 4:30 p.m. in Jupyter Community: Tools

Creating JupyterLab extensions faster

Davis Ford

Audience level:

Brief Summary

JupyerLab extension development is the most exciting programming we've done in years. Free from the constraints of server administration, developers can turn their attention to solving tough problems in a sleek, attractive UI.

What's standing between JupyerLab and total world domination? A lack of accessible starting points.

Can we build the next great Create React App - for JupyterLab?


"If you build it, they will come"

True - as long as you make it easier for them to build as well.

When we look back at the successes of web frameworks, we always notice projects that are capable on onboarding newbies in a fun, educational way.

React has benefitted enormously from the thousands of developers who start their next great idea by using Create React App to quickly create a React repository that is packed with best practices, features, and low amounts of maintenance. The Angular CLI creates perfect Angular codebases from the command line, taking the startup hassle out of the equation for anyone pursuing their dreams of building Tinder for dogs.

JupyterLab is an incredible platform - but it's hard for people to get started.

Of course, there are amazing resources and documentation out there. There are cookiecutter codebases to get you started. And the community is always helpful and expanding.

But starting a JupyterLab extension from scratch (or even gasp including a server extension) can quickly bog down even the most optimistic developers.

At the Center for Machine Learning in Capital One, we've created a new tool to bridge the gap between new recruits and seasoned veterans.

We call it - jlab-scaffold. After answering a few quick questions on the command line, users are given a brand new, clean, futuristic JupyterLab extension that just works.

It's packed with features - React, TypeScript, Redux. State persistence between reloads. Sample server extension endpoints. SVG support. Pre-installed conda envs. Mamba support. Useful dev scripts. Deployment documentation. All of the hard-won battles that our team has undergone while creating extensions - packed into a simple, digestible codebase that's well documented and ready for expansion.

Everything you need to get started. Nothing you don't.

Along the way, we'll discuss what we've learned from working with extensions - when should a tool be written for JupyterLab? When is a website better than an extension, and vice versa? Will people ever distinguish between Notebook and Lab in casual conversation? (No)