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.
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)