Think About Your Audience

Think About Your Audience

Improving Accessibility in JupyterHub

Introduction

In the past 5 weeks, I have had the opportunity to work with a diverse, welcoming community comprised of people with really great minds which I have learned from. Thanks to them, concepts that I struggled to understand are now clear, tasks I thought couldn't be done in 12 weeks have been broken down into bits we have been able to achieve. And, I have improved my skills and learned a lot while at it.

My goal for this week's article is to explain my project and give you an idea of what I have been working on in the past weeks.

JupyterHub

Before explaining what JupyterHub does, I think it is only right to talk briefly about Project Jupyter.

Project Jupyter is a project that develops open-source software, open standards, and services for interactive computing across multiple programming languages. It was spun off from IPython in 2014 by Fernandez Perez and Brian Granger. Project Jupyter's name is a reference to the three core programming languages supported by Jupyter, which are Julia, Python and R. Its name and logo are a homage to Galileo's discovery of the moons of Jupyter, as documented in notebooks attributed to Galileo.

It has developed and supports sub-products like:

  • IPykernel

  • Jupyter client

  • nbviewer

  • Qtconsole

  • Jupyter notebook

  • Jupyter Lab

  • JupyterHub etc

with the last three sub-projects(Jupyter notebook, JupyterHub and Jupyter Lab) being its user-facing software.

  1. Jupyter notebook : is an open-source web application which you can use to create and share documents containing live/executable code, equations, visualizations and text.

  2. JupyterLab : is the next generation of the Jupyter notebook which aims at fixing its usability issues and expanding its scope. It has an improved user interface and features like a file browser, console, markdown/JSON editors, interactive maps, widgets etc.

  3. JupyterHub : is a multi-user hub that spawns, manages and proxies multiple instances of the single-user Jupyter notebook server. It serves Jupyter notebook for multiple users and provides an opportunity for collaboration.


When I am trying to understand a new concept, I try to create analogies so I do not struggle to understand or remember said concepts later.

A perfect illustration of what JupyterHub does can be related to Gandalf's famous scene from The Lord of the Rings: The Fellowship of the Ring where he says "You shall not pass!" while battling a Balrog in the Mines of Moria.

JupyterHub is a web-based multi-user application that brings the power of notebooks to groups of users(students, researchers, and data scientists). It provides session and authentication services.


Accessibility

According to MDN, "Accessibility is the practice of making your websites usable by as many people as possible". Though traditionally thought of as being about people with disabilities, the practice of making sites accessible also benefits other groups such as those using mobile devices, or those with slow network connections.

Digital products should be as inclusive as possible to provide equal access and equal opportunity to people with diverse abilities. How a person with visual impairment for instance will access a web product will be different so their needs should be thought of from the inception of ideas and the development of a project so they can use products easily.

Improving Accessibility in JupyterHub

On starting my project, the first thing my mentor suggested which helped me feel less overwhelmed was breaking the goal into tasks I could easily handle. Instead of looking at the entire project as a whole I had four tasks which were to:

  • Evaluate JupyterHub's pages to see what accessibility issues were present

I evaluated JupyterHub's pages using WAVE DevTools. A picture of what the accessment result looks like can be seen below. It highlights accessibility issues a page has(left), points to the part of the code where the problem is(bottom) and suggests possible solutions(`i` icon) which further research can be made on before implementation.

  • Discuss how best this issues can be solved

I created issues on GitHub that show how each accessibility issue pointed out by WAVE can affect different users and proffered possible solutions to them.

  • Implement changes discussed

  • Automate accessibility evaluation so issues can be spotted and corrected during development

Progress

So far, I have been able to achieve 1-3 with the guidance of my mentors. We are currently discussing how best we can achieve the last goal. I have learned a lot while working on this project.

  • I understand accessibility better

  • My coding skills are getting more refined

  • Even my interpersonal skills are improving as I can express myself more easily and I am learning how to work seamlessly in a diverse community.