Powering Jupyter’s nbviewer.org: Yuvi Panda on the values, and value, of the open internet
Tags: jupyter, opensource, community, fastforward
Published: 2023-01-11 13:41:04

We were thrilled when our friend Yuvi Panda reached out to us to learn more about [Fast Forward](https://www.fastly.com/fast-forward) (how Fastly works with the open-source community to build the good internet).

Yuvi wanted to find out how we could better support the CDN needs of the Jupyter project's [nbviewer.org](https://nbviewer.org/?_fsi=SZVLDgHr). If you’re unfamiliar, Project Jupyter is a community that works on interactive computing technologies, such as the Jupyter Notebook, Jupyter Lab, JupyterHub, etc. Notebooks enable you to collate text, live code, equations, and more into a single view, making it simple and effective to share information or research in a narrative and digestible format. They’ve been massively impactful for researchers, scientists, educators, and developers. The nbviewer project makes Jupyter Notebooks more useful by enabling anyone to easily share and view .ipynb files in a web browser without the need to install any software.

But perhaps even more so, we were excited when Yuvi, MinRK, and others in the Jupyter community reached out to us due to our shared values. Just like Fastly, Jupyter believes in openness and inclusivity. They’re committed to fostering a productive, harassment-free environment for everyone, and they also hold their community responsible for stewarding their values in community spaces. To put it simply — they’re [good internet](https://www.fastly.com/fast-forward#let-s-build-a-more-trustworthy-internet).

We wanted to learn more about Project Jupyter, nbviewer, and Yuvi, so we sat down for a chat:

**Hannah**: Yuvi, we’re so excited to partner with the Jupyter community to help run nbviewer.org! Can you tell us a bit about the project? What are some cool features people might not be aware of right away?

**Yuvi**: nbviewer was the original, and in many cases still the most complete, way to share a rendering of a Jupyter Notebook with someone! You can give it any URL to a Jupyter Notebook, and it will render it fully, including all the Javascript that you might need to be present for interactive features. So not only can you give it a link from, say GitHub, but also from your own website or even something like a public link from a file sharing service. If the file can be fetched, it can be rendered. And it is run as an unauthenticated service, so we can render more interactive components than something like GitHub can - they have to strip away a lot of interactivity for security reasons. GitHub eventually added rendering of Jupyter Notebooks, and a lot of people like it - however, nbviewer will always be more complete due to its support for rendering from anywhere as well as the interactivity it can provide.

The coolest feature, however, is that it is [an open source project](https://github.com/jupyter/nbviewer) maintained by a group of pretty cool people - and you can also be one of them :) 

**Hannah**: Wow, that’s an impressive feature set! It makes me wonder what it takes to power it all — what challenges have you faced, and what are your first considerations in approaching a project like this?

**Yuvi**: Just like the rest of the Jupyter ecosystem, nbviewer is an open-source [package](https://github.com/jupyter/nbviewer) you can contribute to or even run your own internal version of! The public instance at nbviewer.org is generously hosted by the European cloud provider [OVH](https://us.ovhcloud.com/) and deployed on Kubernetes via [this helm chart](https://github.com/jupyter/nbviewer/tree/main/helm-chart).

The primary challenge is one facing all of open source now: end users expect services, not packages. There is no entity paying $$$ for maintenance and upkeep of nbviewer.org, so it is a labor of love from mostly volunteer maintainers -- who are all absolutely amazing. So the first consideration for open source infrastructure (not just packages) is, how do we operate it? Can we design this in a way that requires the least amount of ongoing handholding? What technology and feature choices can we make so it can provide value to users without requiring sacrifices from maintainers?

**Hannah**: Exactly. We hear those same concerns from so many projects. That’s a concern we’re looking to address with Fast Forward, and we’re always looking to make it easier for maintainers to use Fastly, too. So as you set about answering those questions for nbviewer, how has Fastly helped you? Why did you choose Fastly?

**Yuvi**: nbviewer is special because it is a pure transformer: static notebook files (as JSON) in, pretty HTML out. Perfect case for a caching CDN to reduce load significantly on our origin servers and thus reduce possible problems & outages there. Nobody can currently carry a pager to be alerted when nbviewer.org goes down, and this mostly means nobody does. According to MinRK, one of the core contributors to nbviewer Fastly is the primary reason we don’t hit the GitHub API limit when fetching notebooks from there to render anymore!  Keeping with our open-source, vendor-neutral ethos, there’s no Fastly specific code in the nbviewer codebase! The fact that we can do that and get our benefits via general HTTP caching directives makes me happy. From a past life, I’m also a big fan of Varnish, and fastly running OSS tech makes me very happy to choose them.

And speaking only for myself - the world can be a pretty cruel place, and it is very important that we do whatever we can to make it kinder. Every small bit helps! From what I know, Fastly seems to align with this more than other providers, which is the biggest reason I pushed for our current configuration with Fastly at the edge. And all the interactions I’ve had with them through this process have been just as kind, and I’m grateful they are supporting communities that are important to me.

**Hannah**: Yuvi! Thank you so much for those kind words. We’re proud of the [customer community](https://www.fastly.com/fast-forward#customer-community-policy) we’ve built, and it’s validating to see projects and developers choosing us for making those tough decisions. On another note, I want to ask you about your background, too. You’ve been involved with open internet and educational infrastructure since you started programming. Beyond contributing to nbviewer, you also founded [2i2c](https://2i2c.org/), worked at Wikimedia Foundation on [Wikimedia Labs](https://www.mediawiki.org/wiki/Wikimedia_Labs), and are currently working at [UC Berkeley’s Division of Computing, Data Science, and Society](https://data.berkeley.edu/) as an infrastructure architect. What are some of the most challenging issues the open internet faces today, and how can we solve them? What tips do you have for others who want to get involved with nbviewer, Project Jupyter, or open internet infrastructure?

**Yuvi**: Growing up in a somewhat lower-middle class, non-upper caste way in southern India, I could never quite see myself as anything other than a ‘user’ of proprietary software. But thanks to my specific circumstances and set of privileges, I could see myself as more than ‘just a user’ of Open Source Software. It was extremely empowering to see that the people building open-source software are no different than me. I felt that I could be a builder, too!

In terms of the issues we face today — open internet infrastructure is at a crossroads. Our actions and choices are very important right now, more than ever. Users don’t want to download and install software anymore. They want to use services. The open source movement must move with it, or risk ceding ground to proprietary alternatives!

So how do we keep this empowerment going as the world turns to services? It is a question we’re all struggling with and trying to make sense of in our ways. I believe it will not only define the next ten years of software development but also change how we define “open,” too. 

**Hannah**: Thanks so much for taking the time, Yuvi! 

---

If you want to learn more, get involved with nbviewer, or just say hi, you can post to the [Jupyter Discourse Forum](https://discourse.jupyter.org/). To say hi to Yuvi, you can head to his [personal site](https://words.yuvi.in/) or [mastodon](https://hachyderm.io/@yuvipanda/). And to learn more about or apply to Fast Forward, come visit our website!

Now let’s go build the good internet — together. ⏩