GSoC 2020 Ideas
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.
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.
You should be experience with JavaScript and CSS. Familiarity with React, Redux, and RxJS is a plus, but not required.
Safia Abdalla (@captainsafia)
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.
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.
You should be familiar with JavaScript and Python.
Safia Abdalla (@captainsafia)
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.
A cleaner UI will make the Data Explorer much more attractive and intuitive for users.
Design systems (even just sketching UI elements and interactions would be helpful) and js/React if you want to actually write the UI.
Elijah Meeks (@emeeks)
4. Build a python nteract-io package for handling the registered remote IO access patterns across nteract libraries.
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.
A shared library will make code reuse higher across the nteract python projects as they mature.
Familiarity with Python and basic understanding of Python packaging.
Matthew Seal (@mseal)
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.
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.
Familiarity with Python and Python's unittest / pytest libraries. Basic knowledge of how jupyter kernels work is a plus, but certainly not a requirement.
Matthew Seal (@mseal)
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.
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.
Familiarity with JavaScript is required.
Safia Abdalla (@captainsafia)