GSoC 2020 Ideas - nteract/nteract GitHub Wiki

1. Add support for sessions and sharing to nteract play app.

Task

nteract play is a web application that provides an interactive playground for users to run code samples against a Binder instance. We would like to add support for sessions and sharing to nteract play. When a user visits nteract play, a unique URL will be generated for their session. They can bookmark this URL, share it with colleagues, or use it in blog posts to return to a session with the same state.

You can explore the source code for nteract play at this repo.

Motivation

Adding support for sessions and sharing will increase the "sticky" factor of the nteract play app, encouraging users to keep coming back to play and sharing it with their friends.

Skills Needed

You should be experience with JavaScript and CSS. Familiarity with React, Redux, and RxJS is a plus, but not required.

Mentors Available

Safia Abdalla (@captainsafia)

2. Add support for automatic kernel discovery and installation.

Screenshot of no kernel error

Task

The nteract desktop app is an Electorn-based application for Jupyter notebooks. Jupyter notebooks can execute code when they are connected to a kernel, an interactive process that understands how to execute user code. A Python Jupyter notebook will connect to a Python kernel. An R Jupyter notebook will connect to an R kernel. And so on.

When a user opens a notebook but does not have the corresponding kernel installed on their machine, nteract will throw an error (see above). We would like to implement a feature that will automatically install the kernel on the user's machine and connect to it.

You can learn more about this project at this issue.

Motivation

This feature will make it easier for first-time users to leverage the most of the nteract application and reduce the friction when using nteract with new notebooks.

Skills Needed

You should be familiar with JavaScript and Python.

Mentors Available

Safia Abdalla (@captainsafia)

3. Improve Data Explorer UI

Task

Data Explorer has robust capabilities but its entire UI is pretty ugly and made from very basic components. This includes not just the core charting elements but the controls to switch between modes and the controls to switch between metrics and dimensions. The redesign could simply be cleaning it up and skinning it or be more ambitious and introduce drag-and-drop dimensions and metrics similar to Tableau.

Motivation

A cleaner UI will make the Data Explorer much more attractive and intuitive for users.

Skills Needed

Design systems (even just sketching UI elements and interactions would be helpful) and js/React if you want to actually write the UI.

Mentors Available

Elijah Meeks (@emeeks)

4. Build a python nteract-io package for handling the registered remote IO access patterns across nteract libraries.

Task

The papermill project has an iorw file which manages registering custom schemes and domains to specific read / write functions. This same functionality is desired in the scrapbook and bookstore projects. Ideally we've have a place to register such endpoints and have it available to all python packages that consume such a register.

A stretch goal would be to add async version of the io methods for use in bookstore and other future projects that want async designs.

Motivation

A shared library will make code reuse higher across the nteract python projects as they mature.

Skills Needed

Familiarity with Python and basic understanding of Python packaging.

Mentors Available

Matthew Seal (@mseal)

5. Build a python unittest framework extension for testing code in notebooks.

Task

Using nbclient build a pytest fixture library for setting up and executing unit-tests against notebooks. This would include a base capability for choosing cells to execute ahead of time, and for injecting code between cells to setup dummy test patterns. A wide range of extensions to the core concept could be designed to test other functionality once basics were built. This leaves a lot of opportunity for a motivated coder to explore and choose how they want to design the library.

Motivation

A unittest framework for notebooks would be a huge help for the notebook community to make lasting code. Prior attempts at unittesting notebooks approached the problem in a very narrow fashion, or usually relied upon writing the tests inside the notebook. This approach would treat ipynb files as py files for testing purposes and fit more naturally into real world projects.

Skills Needed

Familiarity with Python and Python's unittest / pytest libraries. Basic knowledge of how jupyter kernels work is a plus, but certainly not a requirement.

Mentors Available

Matthew Seal (@mseal)

6. Build an ecosystem of content providers for nteract-based applications.

Task

Content providers are abstractions that implement a standardized interface and can be used to interface with a variety of content providers. Currently, nteract supports content providers for fetching and saving data from and to a Jupyter server API and the local file system. We would like to expand these ecosystem with providers for other backends, such as Dropbox, Amazon S3, Azure Storage, Google Storage, and more.

Motivation

Expanding the ecosystem of content providers will make it easy for developers building nteract-based applications to allow their users to store their notebooks in a variety of locations. This will increase adoption for the nteract core SDK and user satisfaction.

Skills Needed

Familiarity with JavaScript is required.

Mentors Available

Safia Abdalla (@captainsafia)