Google Summer of Code 2021 with GNU Octave

Hello there. In this blog post, I will describe my work with GNU Octave during Google summer of code 2021. I will also add links to the commits I have made and repositories I have worked on. Let’s get started.

About my project

The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, MathJax-rendered equations, visualizations, and narrative text. To interactively work with Octave code within Jupyter Notebooks, there already exists an Octave kernel for Jupyter.

This project aims to support the opposite direction: running (and filling) Jupyter Notebook within GNU Octave. This would enable Jupyter Notebook users to evaluate long-running Octave Notebooks on a computing server without a permanent browser connection, which is still a pending issue.

Specifically, My project provides GNU Octave with a class JupyterNotebook that enables users to:

  • Instantiate an object from an existing notebook.
  • Run a specific cell in the notebook and embed the results in the object that represents the notebook.
  • Run all the cells in the notebook and embed the results in the object that represents the notebook.
  • Generate a Jupyter notebook from the contents of an object.
  • Generate an Octave script from the contents of an object.

My contribution to GNU Octave during GSoC

My work during GSoC 2021 resulted in a new package for GNU Octave called jupyter-notebook. The repository of the package can be found here. This repository contains the code of the package, documentation, and unit tests.

Also, my package required adding new functionality to an existing function in Octave. I added, documented, and tested this functionality in this commit.

How to use my project

My project exists as an external package that can be installed easily. The installation guide can be found here.

The package is integrated with core Octave in this commit and it will be a built-in feature in Octave 7 when it is released.

What to do after GSoC

As I mentioned, the project now exists as an external package. What I plan to do after GSoC is to merge the project with core Octave.

Finally, I would like to say that I really had a wonderful experience during Google Summer of Code 2021 with GNU Octave and I am looking forward to contributing more in the future. Also, I would like to thank:

  • The team of the Google Summer of Code program for supporting such an amazing experience.
  • The community of GNU Octave for helping me during this wonderful journey.
  • My co-mentors and my mentor for providing me with continuous support and help that facilitated my work a lot. It has been my pleasure to get to work with you for the second year in a row.
Written on August 20, 2021