Publish interactive Pluto notebooks with glassnotebook.io

Sign up for Glass Notebook


https://glassnotebook.io/

Previous Post

A couple of months ago, we put out this post to gauge the interest in a service like Glass Notebook. Today, after dedicated efforts, particularly from @ctrekker, we’re thrilled to formally introduce Glass Notebook, enabling you to publish interactive Pluto notebooks with just a single click. We have enrolled our first few beta users, and we are eager to onboard more.

See Glass Notebook in Action

Current Progress and Future

  • We’re rolling out access incrementally, so make sure to sign up! We’re closely monitoring performance and bugs, and we’ll remove the waitlist as we gain confidence in our system’s stability.
  • Our offerings include static notebook exports, pre-computed interactive notebook exports, and live interactive notebooks.
  • Our roadmap prioritizes publishing capabilities and feature additions based on user needs.

Pricing Plans

  • Pricing options could change as we are just getting started. Below is a simple breakdown of what we are currently planning with regard to pricing:
    • Free
      • 10 static notebooks
      • 1 pre-computed interactive notebooks
    • Paid ($10-$200 per month)
      • 1,000-30,000 static notebooks
      • 15-200 pre-computed interactive notebooks
      • 4-80 live interactive notebooks
    • Enterprise (custom)
      • Unlimited

We Want to Hear from You

  • If you have specific interests or feature requests for this product, please share them in this thread and like posts that resonate with your desires. Your feedback will guide what we focus on.

Engaging with the Community

We hope that Glass Notebook can reach a real need within the community. This is the main reason Connor and I built this. Below are a few posts where I expect Glass Notebook to meet a need for at least some users:

  • Fixing Package Fragmentation

    • Pluto.jl and Glass Notebook already make for a powerful interactive documentation system. We are working to build out features that make it easy to build documentation in a modular yet connected manner, like MultiDocumenter.jl - while providing interactivity. VSCode support for Pluto is also a long-term goal. If we can nail just a few of these goals, the documentation across the Julia ecosystem has the potential to go from one of the common complaints to one of the strong points of Julia. The SciML docs are a great example of what’s already possible, and we hope to take it a step further.
    • Initiatives like Modern Julia Workflows are also a great approach to fixing fragmentation. As we expand the feature set of Glass Notebook, we hope that these types of tutorials, teaching tools, blog posts, etc, can become even more commonplace because of the ease of use that Pluto + Glass provides. Rivaling something like the Rust Book is a goal of ours.
  • Help Julia Gain Popularity

    • Pluto.jl is the most starred Julia package for a reason, and I think it’s underutilized for things like dashboarding and docs. With Glass Notebook, Julia users can now easily share interactive dashboards with co-workers or students. It even looks like Julia to Powerpoint PPTX.jl conversion is being utilized at ASML, which shows how much room for improvement Pluto/Glass Notebook might be able to provide
    • I recently discovered the beautiful combination of Pluto, Glass Notebook, PythonCall, and Python, which I posted about here. Demonstrating the power of Julia through posts like this could potentially get interested students and Python users to take a look at Julia because of the rich capabilities when combining Glass Notebook, Pluto.jl, and PythonCall.jl
24 Likes

I just announced my first Julia package, which uses Glass Notebooks for the docs :tada:

Perhaps I’m a bit biased, but I believe these results look quite impressive!

1 Like

Official Public Beta Launch of Glass Notebook

Introduction

We (@ctrekker and I) are thrilled to announce the public beta launch of Glass Notebook - a powerful new platform that makes it incredibly easy to publish your Pluto.jl notebooks as beautiful interactive websites or static documentation.

Built with Pluto.jl and Julia, Glass Notebook provides an intuitive all-in-one interface to turn your Pluto notebooks into polished, interactive sites in just a few clicks. We aim to empower the Julia community to create and share engaging, interactive technical content with the world.

Key Features

  • Simplicity: Link your GitHub repository and publish with one click
  • Interactivity: Notebooks can be fully interactive, allowing viewers to edit code and see results live in the browser
  • Comprehensive Documentation: Automatically link multiple nested repositories into one unified documentation site
    • Automatic Sidebar: Glass Notebook generates a sidebar based on your Pluto notebook structure
    • Nested Project Layout: Customize the sidebar to include notebooks from multiple packages or projects
    • Hyper-Nested Layout (Coming Soon): Combine multiple nested projects with a top-level navigation bar
  • Static and Interactive Notebook Export: Choose the right balance of interactivity and static notebooks for whatever you need
  • Multiple Pricing Tiers: Generous free tier (unlimited static exports), paid tiers for interactivity needs

The nested documentation features in Glass Notebook make it simple to create comprehensive, well-organized documentation sites that combine content from multiple repositories. Whether you have a single package or a complex multi-package project, Glass Notebook’s automatic sidebar generation and customizable nested project layouts make it easy to present your notebooks in a user-friendly way.

We’re particularly excited about the upcoming Hyper-Nested Layout feature, which will allow you to combine multiple nested projects into a single, unified site with a top-level navigation bar. This will be a game-changer for large-scale documentation projects.

Glass Notebook also offers flexibility in choosing between static and interactive notebook exports, so you can find the right balance between interactivity and performance for your specific use case. Our generous free tier includes unlimited static exports, while paid tiers provide additional interactivity options to meet the needs of commercial users.

Getting Started

  1. Sign in with your GitHub account at glassnotebook.io
  2. Link the GitHub repository containing your Pluto notebooks
  3. Toggle notebooks to be interactive or static
  4. Share the generated Glass Notebook link!

User Documentation

We initially built this product for our own needs, so naturally, we are excited to dogfood our product. In fact, the comprehensive documentation site for Glass Notebook itself is built and published using Glass Notebook! Check out the live docs at:
https://glassnotebook.io/r/docs/

The GlassDocs site showcases the power of Glass Notebook for creating rich, interactive documentation. It provides good tutorials to help users get started and showcases the beauty of nested documentation automatically handled via Glass Notebook. The GitHub repository itself is a valuable resource for those looking to dive deep into the power of Glass Notebook.

Invitation for Commercial Users

During this public beta phase, we are offering a unique opportunity for a limited number of commercial users to partner with us. If you are interested in using Glass Notebook for your commercial projects and would like to take advantage of free interactivity and commercial tier features in exchange for your valuable feedback and close collaboration, please reach out to us.

You can contact Dale Black or Connor Burns on the Julia Zulip or email us directly at support@glassnotebook.io. We look forward to working closely with a select group of commercial users to further enhance Glass Notebook and meet your specific needs.

Feedback

Your experience and opinions are important to us. If you have any thoughts or suggestions about Glass Notebook, we’d love to hear from you. Share your feedback easily through the #glassnotebook Zulip channel here. Whether it’s something you liked, something you think could be better, or ideas for new features, your input is valuable in shaping the future of Glass Notebook.

Conclusion

We can’t wait to see the incredible notebooks and documentation sites the Julia community will create and share with Glass Notebook. Your feedback during this beta period is extremely valuable as we work to make Glass Notebook the go-to publishing solution for Pluto notebooks.

Head over to https://glassnotebook.io to get started for free!

20 Likes

On the site, there is reference to Interactive and Live Interactive notebooks. What is the difference exactly?

1 Like

Another term for this would be “pre-computed slider servers”, see here

For every notebook that is self-contained, we automatically resort to pre-computed interactivity. But for notebooks that allow for user uploads, this is not possible, and the notebook is then just hosted as a live server.

Essentially, if a notebook contains something like

using PlutoUI: Slider, FilePicker
using CairoMakie: heatmap

@bind uploaded_file FilePicker()
arr = uploaded_file["data"]

@bind z_axes Slider(axes(arr, 3))
heatmap(arr[:, :, z_axes])

Then it can no longer be pre-computed and requires a full-time running server.

For a notebook like so:

using PlutoUI: Slider
using CairoMakie: heatmap

arr = rand(10, 10, 10)

@bind z_axes Slider(axes(arr, 3))
heatmap(arr[:, :, z_axes])

where the data is fully contained within the notebook, then it can be pre-computed.

@ctrekker is the one doing all of the heavy lifting on this!

1 Like

Thanks, very clear, and explains the difference of support. May be you could add that (or a pointer to this thread) to the documentation of the site ?

Thanks again and bravo!

2 Likes

Is it mandatory that the notebooks are Pluto notebooks or Jupyter notebooks will do as well?

We are a small team so right now we only support Pluto notebooks. But if Jupyter support is a feature that many users want then we will happily consider it

1 Like

OK, thanks. Just to know.

This is sick! Well done, y’all.

2 Likes

Thank you!

This looks amazing. Will you develop academic pricing? My classes (3 of them) use about 15 notebooks each, so the paid tiers aren’t really affordable if we account for the fact that classes only last for a few months.

2 Likes

That is one of our eventual goals. We need to figure out what exactly paying customers want first, in order to be sustainable, but our hope is to give back to the open source community and academia. With that, I hope people find the free tier, with unlimited static exports, very useful nonetheless if the paid tiers aren’t an option

1 Like

Static is nice but has far less value as a teaching tool. I think I’ll explore lightly how it works, but I won’t use it until it’s more affordable for academic use.

This looks great! Any noteworthy difference between the static export and what can be achieved with a GitHub action?

1 Like

This looks great @Dale_James_Black ! Congratulations! :clap: Is it already possible to deploy private repositories, and hide code from end-users? We would love to be one of your first enterprise customers.

At its core, static exports via GH actions are similar. As it stands currently there are two differences:

  1. Statically exported repositories can be private (but still hosted online for your own viewing) at no cost with Glass Notebook. As I understand it, GH actions are not free for private repositories, and GH pages doesn’t do authentication (for non-enterprise users)
  2. Repository-level navigation features (like a sidebar for navigating between notebooks)

Regarding (2), this is in principle possible to do with GH actions but isn’t super well-supported and takes some extra work beyond what is supported by default in the static-export-template.

3 Likes

Thank you! We are a fully integrated GitHub application so your private GitHub repositories can be linked to glassnotebook.io and you can export the repositories on glassnotebook.io to a private URL. So if we don’t already have exactly what you need, we should be very close!

Connor and I will message you on Zulip!