<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>2i2c</title><link>https://2i2c.org/</link><atom:link href="https://2i2c.org/index.xml" rel="self" type="application/rss+xml"/><description>2i2c</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 09 Feb 2026 00:00:00 +0000</lastBuildDate><image><url>https://2i2c.org/media/sharing.png</url><title>2i2c</title><link>https://2i2c.org/</link></image><item><title>Jenny Wong joins the JupyterHub team</title><link>https://2i2c.org/blog/jenny-jupyterhub-team/</link><pubDate>Mon, 09 Feb 2026 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jenny-jupyterhub-team/</guid><description>&lt;p>We&amp;rsquo;re excited to share that
&lt;a href="https://2i2c.org/author/jenny-wong" >Jenny Wong&lt;/a> has been
&lt;a href="https://github.com/jupyterhub/team-compass/pull/876" target="_blank" rel="noopener" >invited to join the JupyterHub team&lt;/a> as a contributor and maintainer.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/blog/jenny-jupyterhub-team/featured_hud4aa732603690fdbf1310c8591f72bcc_150634_ddabf68fc6b2a28d89787f12bbfc15bf.webp 400w,
/blog/jenny-jupyterhub-team/featured_hud4aa732603690fdbf1310c8591f72bcc_150634_09171b0e8ae76f6336bbe904eb791b1e.webp 760w,
/blog/jenny-jupyterhub-team/featured_hud4aa732603690fdbf1310c8591f72bcc_150634_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/jenny-jupyterhub-team/featured_hud4aa732603690fdbf1310c8591f72bcc_150634_ddabf68fc6b2a28d89787f12bbfc15bf.webp"
width="760"
height="398"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Jenny&amp;rsquo;s contributions to
&lt;a href="https://github.com/jupyterhub/nbgitpuller" target="_blank" rel="noopener" >nbgitpuller&lt;/a> and
&lt;a href="https://github.com/jupyterhub/grafana-dashboards" target="_blank" rel="noopener" >grafana-dashboards&lt;/a>, along with her active participation in project meetings and community planning, earned her this recognition from the JupyterHub community. Being invited to a project team means that existing team members have recognized a pattern of high-quality contributions and trust in a person&amp;rsquo;s ability to steward the project.&lt;/p>
&lt;p>We&amp;rsquo;re particularly excited about this because our mission isn&amp;rsquo;t just about deploying infrastructure - it&amp;rsquo;s about being
&lt;a href="https://2i2c.org/blog/good-citizen/" >good citizens&lt;/a> in the open source communities we depend on. We invest in upstream contributions, participate in community governance, and aim to build the kind of relationships that strengthen the whole ecosystem. When our team members are welcomed into upstream project teams, it&amp;rsquo;s a signal that we&amp;rsquo;re doing this well.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://compass.hub.jupyter.org/en/latest/team/structure.html" target="_blank" rel="noopener" >JupyterHub team compass&lt;/a> - how the team is structured and how new members are added&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyterhub/team-compass/pull/876" target="_blank" rel="noopener" >JupyterHub proposal to add Jenny to the team&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyterhub/nbgitpuller" target="_blank" rel="noopener" >nbgitpuller&lt;/a> and
&lt;a href="https://github.com/jupyterhub/grafana-dashboards" target="_blank" rel="noopener" >grafana-dashboards&lt;/a> - projects Jenny contributes to&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>The
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub&lt;/a> community for fostering an open and welcoming project culture&lt;/li>
&lt;li>Support from our
&lt;a href="https://2i2c.org/members/" >member communities&lt;/a> gives us the capacity to invest in upstream open source engagement and build relationships like this&lt;/li>
&lt;/ul></description></item><item><title>Announcing our public roadmap for open development</title><link>https://2i2c.org/blog/public-roadmap/</link><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/public-roadmap/</guid><description>&lt;p>At the core of 2i2c&amp;rsquo;s service is a commitment to doing our work in a way that follows open principles and practices.
We commit to
&lt;a href="https://2i2c.org/open-practices/" >doing all of our work in the open&lt;/a> and
&lt;a href="https://2i2c.org/open-technology/" >only managing and developing open infrastructure&lt;/a>.
As part of this effort, we&amp;rsquo;re shifting our strategy to
&lt;a href="https://2i2c.org/blog/public-roadmap/../strategy-update-2026/" >lean more heavily into co-creation&lt;/a> with member communities and open source communities.&lt;/p>
&lt;p>Today we&amp;rsquo;re excited to share a first step towards making our development process more participatory, transparent, and useful: &lt;strong>we&amp;rsquo;re opening up our initiatives roadmap&lt;/strong>.
You can find it here:&lt;/p>
&lt;p>👉
&lt;a href="https://2i2c.org/roadmap" target="_blank" rel="noopener" >2i2c.org/roadmap&lt;/a>&lt;/p>
&lt;p>You can find all of our roadmap initiatives in this GitHub repository (please comment and engage with us there!):&lt;/p>
&lt;p>👉
&lt;a href="https://github.com/2i2c-org/initiatives" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> github.com/2i2c-org/initiatives&lt;/a>&lt;/p>
&lt;p>Moving forward, the roadmap will be a key part of our
&lt;a href="https://2i2c.org/membership/" >service to member organizations&lt;/a>.&lt;/p>
&lt;h2 id="why-were-opening-up-our-roadmap">
Why we&amp;rsquo;re opening up our roadmap
&lt;a class="header-anchor" href="#why-were-opening-up-our-roadmap">#&lt;/a>
&lt;/h2>&lt;p>At 2i2c,
&lt;a href="https://github.com/2i2c-org/initiatives" target="_blank" rel="noopener" >initiatives drive most of our work&lt;/a>.
They represent major chunks of value with multiple steps needed to implement and unlock it.
They range from making core infrastructure improvements to our member network, to making upstream contributions that enable new functionality on behalf of our member communities.
While initiatives are generally public, they are spread across many places, and we&amp;rsquo;ve managed their prioritization, sequencing, and refinement in internal team spaces.
This made it difficult for others to follow along, signal-boost, and potentially support initiatives they wanted to see done.&lt;/p>
&lt;p>For this reason, we decided to build a
&lt;a href="https://2i2c.org/roadmap" target="_blank" rel="noopener" >public view of our initiatives roadmap&lt;/a>. This reflects our current team priorities and what is coming down the pipeline.&lt;/p>
&lt;p>We&amp;rsquo;ve also put our platform initiatives in a
&lt;a href="https://github.com/2i2c-org/initiatives" target="_blank" rel="noopener" >public repository&lt;/a>. This gives us a public space for member communities (or anybody else) to discuss, collaborate, and support ideas in the open.&lt;/p>
&lt;p>By opening this up, we hope to accomplish these goals:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Make it easier for everyone to see and influence our priorities&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Make it easier for member organizations to fund or collaborate on work&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Make it easier for open source communities to see what&amp;rsquo;s driving our contributions&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Make it easier to give credit to member communities that fund work&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;p>In short, we want to &lt;strong>model what sustainable open development can look like&lt;/strong>.
Our hope is that this will both create more transparency and trust with our stakeholder communities, and invite them to tell us how we can best use our team capacity.&lt;/p>
&lt;h2 id="we-hope-to-use-a-shared-roadmap-to-funnel-more-resources-into-open-source">
We hope to use a shared roadmap to funnel more resources into open source
&lt;a class="header-anchor" href="#we-hope-to-use-a-shared-roadmap-to-funnel-more-resources-into-open-source">#&lt;/a>
&lt;/h2>&lt;p>We also hope we can leverage this as a &lt;strong>shared roadmap across our member communities&lt;/strong> that helps focus our attention and drive fundraising for our work.
To begin, we&amp;rsquo;re inviting any
&lt;a href="https://2i2c.org/members/" >member community&lt;/a> to provide financial support for these items as a way to influence our timelines and priorities, and we&amp;rsquo;re exploring ways to facilitate fractional co-funding across our member communities to help share the cost of development across many organizations.&lt;/p>
&lt;p>This is an early experiment in collaborative and radically transparent development, and we will iterate and learn as we get feedback from member communities.
We&amp;rsquo;re excited to see where this goes!&lt;/p>
&lt;p>Please
&lt;a href="https://2i2c.org/blog/public-roadmap/mailto:hello@2i2c.org" >give feedback on this idea&lt;/a>. If you&amp;rsquo;re interested in being a member organization of 2i2c,
&lt;a href="https://2i2c.org/join" target="_blank" rel="noopener" >reach out to us about membership&lt;/a>.&lt;/p></description></item><item><title>Introducing Jupyter Book 2 at FOSDEM 2026</title><link>https://2i2c.org/blog/fosdem-jupyter-book-2/</link><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/fosdem-jupyter-book-2/</guid><description>&lt;p>Our teammate
&lt;a href="https://2i2c.org/author/angus-hollands/" >Angus Hollands&lt;/a> gave a talk at FOSDEM 2026:
&lt;a href="https://fosdem.org/2026/schedule/event/ZY9WYD-introducing-jb-2/" target="_blank" rel="noopener" >Introducing Jupyter Book 2&lt;/a>.&lt;/p>
&lt;p>The talk shares why the Jupyter Book 2 and MyST stack was rebuilt, and how it supports open, reusable computational publishing workflows.&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://video.fosdem.org/2026/aw1120/ZY9WYD-introducing-jb-2.mp4" target="_blank" rel="noopener" >Watch the recording&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://fosdem.org/2026/schedule/event/ZY9WYD-introducing-jb-2/" target="_blank" rel="noopener" >FOSDEM event page&lt;/a>&lt;/li>
&lt;/ul>
&lt;figure id="figure-slide-from-the-fosdem-2026-session-introducing-jupyter-book-2">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Slide from the FOSDEM 2026 session introducing Jupyter Book 2." srcset="
/blog/fosdem-jupyter-book-2/featured_huebc44838a5457ae22511d566a17f4261_473619_db1e1bd0968e53a1ce9247cfc095769c.webp 400w,
/blog/fosdem-jupyter-book-2/featured_huebc44838a5457ae22511d566a17f4261_473619_a782d8f5908a69ccd5d58fcf30c78105.webp 760w,
/blog/fosdem-jupyter-book-2/featured_huebc44838a5457ae22511d566a17f4261_473619_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/fosdem-jupyter-book-2/featured_huebc44838a5457ae22511d566a17f4261_473619_db1e1bd0968e53a1ce9247cfc095769c.webp"
width="760"
height="383"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Slide from the FOSDEM 2026 session introducing Jupyter Book 2.
&lt;/figcaption>&lt;/figure>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://proceedings.scipy.org/articles/hwcj9957" target="_blank" rel="noopener" >Jupyter Book 2 and the MyST Document Stack (SciPy 2025 paper)&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://jupyterbook.org/" target="_blank" rel="noopener" >Jupyter Book documentation&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/jupyter-book" target="_blank" rel="noopener" >Jupyter Book on GitHub&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> and to
&lt;a href="https://2i2c.org/collaborators/bids/" >BIDS&lt;/a> for supporting deeper
&lt;a href="https://2i2c.org/blog/fosdem-jupyter-book-2/../../2025/foundational-contributions/" >foundational contributions&lt;/a> like this in Jupyter Book.&lt;/li>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book&lt;/a> team for helping out with slide creation and doing all the work Angus spoke about here!&lt;/li>
&lt;/ul></description></item><item><title>Better sharing UX with nbgitpuller and contextual error handling</title><link>https://2i2c.org/blog/nbgitpuller-better-ux/</link><pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/nbgitpuller-better-ux/</guid><description>
&lt;h2 id="tldr">
TL;DR
&lt;a class="header-anchor" href="#tldr">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://github.com/jupyterhub/nbgitpuller" target="_blank" rel="noopener" >nbgitpuller&lt;/a> now has improved UX context-aware error handling. Try out the pre-release
&lt;a href="https://pypi.org/project/nbgitpuller/1.3.0b1/" target="_blank" rel="noopener" >version 1.3.0b1&lt;/a> and let us know what you think by opening an
&lt;a href="https://github.com/jupyterhub/nbgitpuller/issues" target="_blank" rel="noopener" >issue&lt;/a> or via the feedback form below 🚀&lt;/p>
&lt;h2 id="what-is-nbgitpuller">
What is nbgitpuller?
&lt;a class="header-anchor" href="#what-is-nbgitpuller">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://github.com/jupyterhub/nbgitpuller" target="_blank" rel="noopener" >nbgitpuller&lt;/a> is a way to sync &lt;em>content&lt;/em> with &lt;em>compute&lt;/em> through the click of a link. Example use cases include:&lt;/p>
&lt;ul>
&lt;li>Interactive research demos, such as
&lt;a href="https://elifesciences.org/reviewed-preprints/108089" target="_blank" rel="noopener" >Spyglass&lt;/a> (HHMI)&lt;/li>
&lt;li>Workshops and training scenarios&lt;/li>
&lt;li>University exams&lt;/li>
&lt;/ul>
&lt;p>In the case of
&lt;a href="https://elifesciences.org/reviewed-preprints/108089" target="_blank" rel="noopener" >Spyglass&lt;/a>, the &lt;em>content&lt;/em> is
&lt;a href="https://github.com/LorenFrankLab/spyglass-demo" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> LorenFrankLab/spyglass-demo&lt;/a> hosted on GitHub, the &lt;em>compute&lt;/em> is a 2i2c cloud hub hosted at
&lt;a href="https://spyglass.hhmi.2i2c.cloud/" target="_blank" rel="noopener" >spyglass.hhmi.2i2c.cloud&lt;/a>, and by using the handy
&lt;a href="https://nbgitpuller.readthedocs.io/en/latest/link.html" target="_blank" rel="noopener" >nbgitpuller link generator&lt;/a>, you can generate
&lt;a href="https://spyglass.hhmi.2i2c.cloud/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2FLorenFrankLab%2Fspyglass-demo&amp;amp;urlpath=lab%2Ftree%2Fspyglass-demo%2Fnotebooks%2F00_HubQuickStart.ipynb&amp;amp;branch=main" target="_blank" rel="noopener" >this nbgitpuller link&lt;/a> to share with others to seamlessly explore content on the desired compute platform with the relevant data and toolchains installed.&lt;/p>
&lt;h2 id="how-does-nbgitpuller-work">
How does nbgitpuller work?
&lt;a class="header-anchor" href="#how-does-nbgitpuller-work">#&lt;/a>
&lt;/h2>&lt;p>&lt;code>nbgitpuller&lt;/code> is installed in the compute environment. The compute environment now has an &lt;code>/git-pull&lt;/code> endpoint URL that can understand where to pull content from using URL parameters. Syncing content critically depends on &lt;code>git&lt;/code> operations to &lt;code>fetch&lt;/code>, &lt;code>checkout&lt;/code>, &lt;code>clone&lt;/code>, &lt;code>merge&lt;/code>, &lt;code>commit&lt;/code>, etc.&lt;/p>
&lt;h2 id="when-it-goes-wrong">
When it goes wrong
&lt;a class="header-anchor" href="#when-it-goes-wrong">#&lt;/a>
&lt;/h2>&lt;p>Based on the data sent through by the kind folks running the Berkeley DataHub, there were 2163 logs available, of which:&lt;/p>
&lt;ul>
&lt;li>983 (45%) were ‘merge’ conflicts&lt;/li>
&lt;li>493 (23%) were ‘fetch’ errors&lt;/li>
&lt;li>467 (22%) were ‘ls-remote’ errors&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./errors_common.png" alt="Bar chart showing the most common errors users faced." loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The remaining errors (10%) were mostly ‘checkout’ errors. This represents most &lt;strong>frequent&lt;/strong> errors as seen by students.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./errors_unique.png" alt="Bar chart showing the most unique errors link authors made." loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>In the same set of logs, there were 172 &lt;strong>unique&lt;/strong> errors: most ‘ls-remote’ errors come from mistakes in the content repo URL. This represents most uniquely common errors made by instructors.&lt;/p>
&lt;h2 id="merge-conflicts">
Merge conflicts
&lt;a class="header-anchor" href="#merge-conflicts">#&lt;/a>
&lt;/h2>&lt;p>If the link author changes content after the link consumer clicked a link, then &lt;code>nbgitpuller&lt;/code> needs to sync updates for the consumer on subsequent link clicks. The &lt;code>nbgitpuller&lt;/code> merging strategy makes opinionated choices so that the link consumer &lt;em>never&lt;/em> has to interact with git, and will always preserve the consumer’s working changes.&lt;/p>
&lt;p>Things can go wrong when&lt;/p>
&lt;ul>
&lt;li>Consumers can diverge the git history if they perform a git commit&lt;/li>
&lt;li>Authors can diverge the git history if they perform force push commits&lt;/li>
&lt;/ul>
&lt;h2 id="error-ux-old">
Error UX (old)
&lt;a class="header-anchor" href="#error-ux-old">#&lt;/a>
&lt;/h2>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./ux_old.png" alt="Old UX for merge errors" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Problems with the old UX include:&lt;/p>
&lt;ul>
&lt;li>a scary terminal&lt;/li>
&lt;li>difficulty for the user to figure out what went wrong&lt;/li>
&lt;li>no suggestion for the user to fix the problem or signpost to continue to the compute platform&lt;/li>
&lt;/ul>
&lt;h2 id="error-ux-new">
Error UX (new)
&lt;a class="header-anchor" href="#error-ux-new">#&lt;/a>
&lt;/h2>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./ux_new.png" alt="New UX for merge errors" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>New improvements to the UX include:&lt;/p>
&lt;ul>
&lt;li>terminal closed by default, but you can optionally toggle this open&lt;/li>
&lt;li>there is a copy to clipboard button to easily share the error log from the terminal&lt;/li>
&lt;li>more user-friendly and context aware helper message is displayed&lt;/li>
&lt;li>a link to the general documentation for reference&lt;/li>
&lt;li>a &amp;lsquo;Proceed without syncing&amp;rsquo; button take the user to the compute platform without making any changes&lt;/li>
&lt;li>in the case of merge errors an extra Backup and resync button option is presented&lt;/li>
&lt;/ul>
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSff-u-sWFuwO1-VTgk2Ir7f1nfUUlLevQk_Vkk_jnmcI1nJnw/viewform?usp=pp_url&amp;amp;entry.648332035=https://2i2c.org/blog/nbgitpuller-better-ux/" target="_blank" rel="noopener" class="text-decoration-none">
&lt;div class="alert alert-info d-flex align-items-start p-3" role="button" style="transition: all 0.2s ease; box-shadow: 0 2px 4px rgba(0,0,0,0.1);" onmouseover="this.style.backgroundColor='#b3e5fc'; this.style.boxShadow='0 4px 8px rgba(0,0,0,0.15)'; this.style.transform='translateY(-1px)'" onmouseout="this.style.backgroundColor=''; this.style.boxShadow='0 2px 4px rgba(0,0,0,0.1)'; this.style.transform='translateY(0)'" onfocus="this.style.backgroundColor='#b3e5fc'; this.style.boxShadow='0 4px 8px rgba(0,0,0,0.15)'; this.style.transform='translateY(-1px)'" onblur="this.style.backgroundColor=''; this.style.boxShadow='0 2px 4px rgba(0,0,0,0.1)'; this.style.transform='translateY(0)'">
&lt;div class="fw-bold mb-1">&lt;span style="font-weight:bold">Give us feedback!&lt;/span> Click here to provide feedback that will help us make this more impactful.&lt;/div>
&lt;/div>
&lt;/a>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://nbgitpuller.readthedocs.io/en/latest/" target="_blank" rel="noopener" >nbgitpuller documentation&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/2i2c-org/initiatives/issues/22" target="_blank" rel="noopener" >Roadmap initiative&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://www.berkeley.edu/" target="_blank" rel="noopener" >UC Berkeley&lt;/a> and the
&lt;a href="https://2i2c.org/collaborators/cloudbank/" >CloudBank Classroom&lt;/a> project&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/cal-icor/" >CAL ICOR&lt;/a> for co-funding&lt;/li>
&lt;li>
&lt;a href="https://github.com/ericvd-ucb" target="_blank" rel="noopener" >Eric Van Dusen&lt;/a> and
&lt;a href="https://github.com/sean-morris" target="_blank" rel="noopener" >Sean Morris&lt;/a> for championing this work&lt;/li>
&lt;li>
&lt;a href="https://github.com/balajialg" target="_blank" rel="noopener" >Balaji Alwar&lt;/a> for providing the data and sharing feedback&lt;/li>
&lt;li>
&lt;a href="https://github.com/nthiery" target="_blank" rel="noopener" >Nicolas M. Thiéry&lt;/a> for feedback on the UX design&lt;/li>
&lt;/ul></description></item><item><title>New Jupyter Book / MyST stack release (Jan 2026)</title><link>https://2i2c.org/blog/jupyter-book-release-jan-2026/</link><pubDate>Thu, 29 Jan 2026 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jupyter-book-release-jan-2026/</guid><description>&lt;p>The MyST/Jupyter Book stack shipped new releases this week. Release pages:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://github.com/jupyter-book/mystmd/releases/tag/mystmd%401.8.0" target="_blank" rel="noopener" >mystmd 1.8.0&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/myst-theme/releases/tag/myst-to-react%401.1.0" target="_blank" rel="noopener" >myst-theme 1.1.0&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/jupyter-book/releases/tag/v2.1.1" target="_blank" rel="noopener" >Jupyter Book 2.1.1&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="where-we-contributed">
Where we contributed
&lt;a class="header-anchor" href="#where-we-contributed">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;ve spent extra time lately trying to fix bugs and generally improve stability, reliability, and UX papercuts.
Here are some of the things we focused on:&lt;/p>
&lt;ul>
&lt;li>Extra review time to get in
&lt;a href="https://github.com/jupyter-book/mystmd/pull/2428" target="_blank" rel="noopener" >concurrent executions in mystmd&lt;/a>&lt;/li>
&lt;li>Fixing broken edit URL logic so our community
&lt;a href="https://github.com/jupyter-book/mystmd/pull/2642" target="_blank" rel="noopener" >&amp;ldquo;edit buttons&amp;rdquo; worked again&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/myst-theme/pull/757" target="_blank" rel="noopener" >Standardized link styles&lt;/a> so users know what to expect from links&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/myst-theme/pull/747" target="_blank" rel="noopener" >Added extra hover metadata for github issues and PRs&lt;/a> for communities that often link to their GitHub issues&lt;/li>
&lt;li>Made all of these releases and wrote up the release notes!&lt;/li>
&lt;/ul>
&lt;p>Most of our contributions were foundational in nature - we fixed a bunch of bugs, did review on the PRs of others, and managed the release process itself. Check out the changelogs for more details!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>Thanks to our
&lt;a href="https://2i2c.org/members/" >member communities&lt;/a> - their memberships cover the cost of
&lt;a href="https://2i2c.org/blog/jupyter-book-release-jan-2026/../../2025/foundational-contributions/" >foundational upstream contributions&lt;/a> to projects like these.&lt;/p>
&lt;p>Particular thanks to
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> which currently supports much of our upstream contributions in Jupyter Book.&lt;/p></description></item><item><title>STRUDEL enables rapid scientific GUI prototyping in partnership with 2i2c</title><link>https://2i2c.org/blog/strudel-gui-prototyping/</link><pubDate>Tue, 27 Jan 2026 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/strudel-gui-prototyping/</guid><description>
&lt;h2 id="what-happened">
What happened
&lt;a class="header-anchor" href="#what-happened">#&lt;/a>
&lt;/h2>&lt;p>The STRUDEL team hosted an all-day workshop with over thirty participants prototyping web applications using the
&lt;a href="https://strudel.science/strudel-kit/docs/" target="_blank" rel="noopener" >STRUDEL Design System&lt;/a> and AI assistants in a custom hub environment designed and managed by 2i2c. By the end of the day, all of the participants had a working prototype that incorporated their own data (or dummy data) into complex flows facilitated by the STRUDEL Design System.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Workshop participants collaborating" srcset="
/blog/strudel-gui-prototyping/featured_huf7e1e9dfd2ee4f5cb694679523c404fe_1392808_d79e01eeb4de68e376491e8331f0661d.webp 400w,
/blog/strudel-gui-prototyping/featured_huf7e1e9dfd2ee4f5cb694679523c404fe_1392808_9dc864e86bb854f3f73993bb02c698f7.webp 760w,
/blog/strudel-gui-prototyping/featured_huf7e1e9dfd2ee4f5cb694679523c404fe_1392808_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/strudel-gui-prototyping/featured_huf7e1e9dfd2ee4f5cb694679523c404fe_1392808_d79e01eeb4de68e376491e8331f0661d.webp"
width="760"
height="505"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>After a brief introduction to STRUDEL, participants were guided on setting up their personal coding environments using the STRUDEL Hub that 2i2c managed. The hub was configured to launch a unique code repository for each participant that was set up pre-workshop on the
&lt;a href="https://github.com/strudel-workshops" target="_blank" rel="noopener" >strudel-workshops&lt;/a> GitHub organization.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Having a startup environment was very nice, as often getting a good development environment set up is half the battle for smaller projects.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>The hub used
&lt;a href="https://code.visualstudio.com/docs/editor/vscode-web" target="_blank" rel="noopener" >VS Code for the Web&lt;/a>, pre-configured with the
&lt;a href="https://cline.bot/" target="_blank" rel="noopener" >Cline AI assistant extension&lt;/a>. Participants configured Cline with a shared API key generated by the STRUDEL team via
&lt;a href="https://openrouter.ai/" target="_blank" rel="noopener" >OpenRouter&lt;/a>. OpenRouter enabled the team to load credits into a shared account and API key that, in turn, enabled participants to use premium models inside of Cline.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Super easy to set up Cline in the VM, I appreciated that&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>The day was split up into four sprints during which participants worked on different parts of their user interface application, with the majority of the participants working entirely in the 2i2c environment.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Workshop activities and prototyping" srcset="
/blog/strudel-gui-prototyping/group_hud46985bb8ec1b4e2211a99b454dbc197_2234570_27616d80785bb9a9ecaa0041aec2b1cf.webp 400w,
/blog/strudel-gui-prototyping/group_hud46985bb8ec1b4e2211a99b454dbc197_2234570_d36ffd6cbf156fbeff3015eec70461d9.webp 760w,
/blog/strudel-gui-prototyping/group_hud46985bb8ec1b4e2211a99b454dbc197_2234570_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/strudel-gui-prototyping/group_hud46985bb8ec1b4e2211a99b454dbc197_2234570_27616d80785bb9a9ecaa0041aec2b1cf.webp"
width="760"
height="570"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;I just want to express my gratitude for such an awesome day today. The workshop was really well structured and facilitated, and I learned a lot. Thank you so much for letting me come!&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;h2 id="why-were-excited-about-this">
Why we&amp;rsquo;re excited about this
&lt;a class="header-anchor" href="#why-were-excited-about-this">#&lt;/a>
&lt;/h2>&lt;p>We think it&amp;rsquo;s a great example of setting up a complex environment once, and then providing rapid access to these environments via a centralized hub.&lt;/p>
&lt;p>This setup accelerated prototyping by removing the burden of setting up a development environment. The setup enabled participants, many of whom had never coded a web application or used an AI coding assistant before, to work seamlessly towards the goals of their design and development projects. The work they produced may continue beyond the workshop and have an impact on scientific discovery and operations.&lt;/p>
&lt;p>This setup is a valuable mechanism for encouraging people to build within a pre-existing design system. Being able to launch repositories that are preconfigured with design system tools and templates is a powerful way to promote the adoption of a design system and its embedded patterns and best practices.&lt;/p>
&lt;p>It&amp;rsquo;s also an interesting example of &lt;strong>non-Jupyter interfaces&lt;/strong> orchestrated on a JupyterHub.
The combination of VS Code for the Web, Cline, and OpenRouter represent a stack that can be easily transferable to other similar workshops.
OpenRouter enabled the workshop team to manage the costs of AI usage entirely themselves.&lt;/p>
&lt;p>In all, the participants and instructors were allowed to focus on their work instead of managing and setting up their infrastructure.&lt;/p>
&lt;h2 id="links-to-learn-more">
Links to learn more
&lt;a class="header-anchor" href="#links-to-learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Learn more about the workshop on the STRUDEL website:
&lt;a href="https://strudel.science/engage/news/10-23-2025-building-scientific-uis-with-strudel-and-ai-assistants/" target="_blank" rel="noopener" >strudel.science/engage/news/10-23-2025-building-scientific-uis-with-strudel-and-ai-assistants/&lt;/a>&lt;/li>
&lt;li>Explore STRUDEL + AI assistant tips and tricks:
&lt;a href="https://github.com/strudel-science/strudel-kit/blob/main/docs/docs/usage-with-ai.md" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> strudel-science/strudel-kit/blob/main/docs/docs/usage-with-ai.md&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>We would like to thank all workshop participants.
&lt;a href="https://2i2c.org/collaborators/strudel/" >STRUDEL&lt;/a> is an open source project housed at the Berkeley Institute for Data Science (BIDS) at the University of California, Berkeley. The STRUDEL team includes members of the Lawrence Berkeley National Lab Scientific Data (SciData) Division UX team, Superbloom Design, The Carpentries, and 2i2c. The project is generously funded by the Alfred P. Sloan Foundation, Liz Vu &amp;amp; Josh Greenberg Program Officers, grants G-2022-19360, G-2023-21098, and G-2024-22557.&lt;/p></description></item><item><title>April joins the Jupyter Community Building Working Group</title><link>https://2i2c.org/blog/april-jupyter-community-building/</link><pubDate>Fri, 23 Jan 2026 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/april-jupyter-community-building/</guid><description>&lt;p>We&amp;rsquo;re pleased to share that our People Operations Lead,
&lt;a href="https://2i2c.org/author/april-johnson/" >April Johnson&lt;/a>, has joined the
&lt;a href="https://jupyter.org/governance/communitybuildingworkinggroup.html" target="_blank" rel="noopener" >Jupyter Community Building Working Group&lt;/a>!&lt;/p>
&lt;p>This kind of work reflects how we think about
&lt;a href="https://2i2c.org/blog/april-jupyter-community-building/../../2025/foundational-contributions/" >foundational contributions&lt;/a> and upstream support: strengthening the social infrastructure that helps open source communities grow and thrive, not just contributing code and running infrastructure. April brings deep experience building teams and communities, and we’re proud to support her upstream efforts in this way.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/jupyter/" >Jupyter&lt;/a> Community Building Working Group for their leadership in building a stronger Jupyter community, and for welcoming April&lt;/li>
&lt;/ul></description></item><item><title>Enabling CloudBank to safely manage their own cluster infrastructure</title><link>https://2i2c.org/blog/cloudbank-self-service/</link><pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/cloudbank-self-service/</guid><description>&lt;p>We recently enabled
&lt;a href="https://2i2c.org/collaborators/cloudbank/" >CloudBank&lt;/a> to run Terraform changes for their cluster without needing to wait on 2i2c engineers for each request. They run 50+ hubs for various community colleges, and we want to enable them to self serve as much of that as possible. When we introduced home directory quotas, they were no longer able to set up hubs by themselves without help from 2i2c engineers. Our goal was to empower them to be able to set up new hubs in a safe way while still benefiting from the home directory limits work.&lt;/p>
&lt;figure id="figure-cloudbank-simplifies-cloud-access-for-computer-science-research-and-education">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="CloudBank simplifies cloud access for computer science research and education." srcset="
/blog/cloudbank-self-service/featured_hu47b0024f802a2569dc8459bb45285f77_14544_505142d1d03b49aba40a39c3543786fb.webp 400w,
/blog/cloudbank-self-service/featured_hu47b0024f802a2569dc8459bb45285f77_14544_19848883e58d82235033f5dce74db4d8.webp 760w,
/blog/cloudbank-self-service/featured_hu47b0024f802a2569dc8459bb45285f77_14544_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/cloudbank-self-service/featured_hu47b0024f802a2569dc8459bb45285f77_14544_505142d1d03b49aba40a39c3543786fb.webp"
width="411"
height="88"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
CloudBank simplifies cloud access for computer science research and education.
&lt;/figcaption>&lt;/figure>
&lt;p>To do this safely, we needed to avoid granting access to shared Terraform state that could impact other communities. Following
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/6797#pullrequestreview-3246004031" target="_blank" rel="noopener" >Yuvi&amp;rsquo;s suggestion&lt;/a>, we migrated CloudBank&amp;rsquo;s Terraform state to CloudBank’s own GCP project so that infrastructure changes from the CloudBank team are isolated to their cluster only, making this safe to try. This unblocks CloudBank to run changes like &lt;code>terraform plan&lt;/code> and &lt;code>terraform apply&lt;/code> themselves, meaning that CloudBank can deploy and update a hub without 2i2c engineers in the loop.&lt;/p>
&lt;p>This is a good example of how we aim to balance &lt;strong>community autonomy&lt;/strong> with &lt;strong>infrastructure safety&lt;/strong>. CloudBank can now self-serve routine operations while our broader infrastructure remains protected.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/6795" target="_blank" rel="noopener" >The infrastructure issue describing this work&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/7339" target="_blank" rel="noopener" >A hub deployed by CloudBank using this workflow&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to Sean Morris and the
&lt;a href="https://2i2c.org/collaborators/cloudbank/" >CloudBank&lt;/a> team at
&lt;a href="https://2i2c.org/collaborators/bids/" >UC Berkeley&lt;/a> for collaborating on this workflow.&lt;/li>
&lt;/ul></description></item><item><title>2026 Strategy Update: An increased focus on co-creation</title><link>https://2i2c.org/blog/strategy-update-after-2025/</link><pubDate>Mon, 12 Jan 2026 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/strategy-update-after-2025/</guid><description>&lt;p>As we wrapped up 2025, we felt compelled to incorporate what we learned over the year into our strategic direction, and to update our organizational documentation accordingly. Here&amp;rsquo;s a quick rundown of what we learned and how we&amp;rsquo;re adjusting.&lt;/p>
&lt;p>&lt;em>You can check out all of
&lt;a href="https://compass.2i2c.org/organization/#core-strategy" target="_blank" rel="noopener" >our core strategy documentation&lt;/a> in our Team Compass.&lt;/em>&lt;/p>
&lt;h2 id="the-macro-view-from-2025">
The macro view from 2025
&lt;a class="header-anchor" href="#the-macro-view-from-2025">#&lt;/a>
&lt;/h2>&lt;p>2025 was a disruptive year. The shifting political and economic climate creates a lot of uncertainty around how the research and education space will be resourced and structured moving forward. Federal funding seems less likely in general, and private philanthropy has become more competitive as many organizations turn to these funding sources to make up the gap that the government has left.&lt;/p>
&lt;p>At its core, this makes us more confident in our sustainability strategy, which is rooted in a self-sustaining service that delivers value to &lt;em>many different&lt;/em> member organizations in exchange for funds to support our operations. In 2024 we
&lt;a href="https://2i2c.org/blog/strategy-update-after-2025/../../2024/funding-navigation/" >received funding from The Navigation Fund&lt;/a> to build this model, and it&amp;rsquo;s the path we&amp;rsquo;ve been exploring over the last year. We like the fact that this spreads the financial risk across many different organizations, rather than depending strategically on a single donor or government agency. That said, there may still be sector-wide changes that cause the entire ecosystem of research organizations to change behavior at once.&lt;/p>
&lt;p>Frankly, it is hard to predict what the future is going to look like. 2i2c is a &amp;ldquo;second order&amp;rdquo; recipient of research funding, as our
&lt;a href="https://2i2c.org/members/" target="_blank" rel="noopener" >member organizations&lt;/a> provide us support to manage infrastructure and facilitate open source contributions. How these institutions respond to funding cuts will have big implications for our sustainability. For example, these two outcomes both seem reasonable:&lt;/p>
&lt;ul>
&lt;li>Scenario 1: Institutions cut all of their &amp;ldquo;nice-to-have&amp;rdquo; funding choices. That means 2i2c struggles to cover its costs under its current membership model.&lt;/li>
&lt;li>Scenario 2: Funding cuts create an increased need for shared infrastructure and services, and 2i2c is seen as a more cost-effective provider compared with bespoke self-managed infrastructure.&lt;/li>
&lt;/ul>
&lt;p>Our goal is to learn which of these two realities will come to pass as quickly as possible, so that we can make the necessary organizational changes and get ahead of the outcomes.&lt;/p>
&lt;p>We&amp;rsquo;re being conservative about our hiring and team structure - we don&amp;rsquo;t plan on making new hires until there&amp;rsquo;s more financial certainty. With our current membership and contract structure, we have somewhere around &lt;strong>10-11 months of runway&lt;/strong>. We consider ourselves lucky in the grand scheme of things, but this is still a shorter runway than we&amp;rsquo;re comfortable with in the long-term.&lt;/p>
&lt;h2 id="how-member-communities-see-value-in-our-service">
How member communities see value in our service
&lt;a class="header-anchor" href="#how-member-communities-see-value-in-our-service">#&lt;/a>
&lt;/h2>&lt;p>We had a chance to test out several organizational hypotheses about the core value of our organization and service. We originally framed &amp;ldquo;premier&amp;rdquo; membership as a means of accessing &amp;ldquo;more&amp;rdquo; community hubs for larger communities. However, we learned that for many organizations &amp;ldquo;more hubs&amp;rdquo; is not what they want, even if they have a large community. It certainly isn&amp;rsquo;t the core driver of value for their service.&lt;/p>
&lt;p>Instead, our most successful
&lt;a href="https://2i2c.org/members/" target="_blank" rel="noopener" >member organizations&lt;/a> seemed to view their membership as a combination of a few things:&lt;/p>
&lt;ul>
&lt;li>Collaboration with our team, and the ability to work with us in shaping and delivering open source work.&lt;/li>
&lt;li>Proximity to others to learn from in open science and open source, and an ability to participate in open source spaces more effectively.&lt;/li>
&lt;li>Managed infrastructure that acted as a technical scaffold to make iterations of development more efficient, and made new enhancements immediately accessible.&lt;/li>
&lt;/ul>
&lt;p>Managed infrastructure was a necessary, but not sufficient, part of our value proposition. This makes sense - managed open source infrastructure is a commodity, and our organization is simply not competitive on price when it comes to commodity-level infrastructure (even with constraints like the
&lt;a href="https://2i2c.org/right-to-replicate" target="_blank" rel="noopener" >Right to Replicate&lt;/a>).&lt;/p>
&lt;p>At the same time, some of the biggest successes of last year came out of deeper partnerships and development efforts that were &lt;em>made more likely by membership&lt;/em>. For example, we deepened our collaboration with
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA&lt;/a> and
&lt;a href="https://2i2c.org/collaborators/devseed/" >Development Seed&lt;/a> and created several interesting new pieces of technology, like
&lt;a href="https://2i2c.org/jupyterhub-fancy-profiles/" target="_blank" rel="noopener" >&lt;code>jupyterhub-fancy-profiles&lt;/code>&lt;/a>. We also felt this strongly at
&lt;a href="https://2i2c.org/blog/strategy-update-after-2025/../../2025/jupytercon-talks/" >JupyterCon 2025&lt;/a> - here&amp;rsquo;s a quote by
&lt;a href="https://2i2c.org/author/yuvaraj-yuvi/" >Yuvi&lt;/a> from our team&amp;rsquo;s JupyterCon retrospective:&lt;/p>
&lt;blockquote>
&lt;p>The unique value we add is that we help communities navigate the fairly complex and fast moving ecosystem of interactive computing, by helping them make choices that work for them. We do this by understanding their needs, understanding the ecosystem, and both making connections when they exist, and creating new ones (in ways that integrate with the existing ecosystem) when necessary.&lt;/p>
&lt;/blockquote>
&lt;p>Historically, we&amp;rsquo;ve treated these kinds of deeper partnerships as &amp;ldquo;one-off&amp;rdquo; opportunities that we take on a case-by-case basis. Given the impact that we&amp;rsquo;ve seen out of these kinds of engagements, we&amp;rsquo;ve decided to incorporate them into our service and sustainability strategy directly.&lt;/p>
&lt;h2 id="how-were-adjusting-the-value-proposition-and-operations-of-membership">
How we&amp;rsquo;re adjusting the value proposition and operations of membership
&lt;a class="header-anchor" href="#how-were-adjusting-the-value-proposition-and-operations-of-membership">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;re updating our strategy to center the value of &lt;strong>human connection, collaboration, and development&lt;/strong> as part of our service, and incorporating it in our business objectives as well. This is a way to dedicate more organizational resources to this kind of impactful work, and helps us hedge our bets against a slower potential growth from standardized memberships.&lt;/p>
&lt;p>Here are a few highlights from these changes (taken from our
&lt;a href="https://compass.2i2c.org/organization/#core-strategy" target="_blank" rel="noopener" >core strategy&lt;/a>):&lt;/p>
&lt;ul>
&lt;li>Our
&lt;a href="https://compass.2i2c.org/organization/theory-of-impact/" target="_blank" rel="noopener" >theory of impact&lt;/a> now includes an explicit callout to the need for 2i2c to facilitate an exchange of ideas and resources between research communities and open source communities.&lt;/li>
&lt;li>We&amp;rsquo;ve adjusted the language of
&lt;a href="https://compass.2i2c.org/organization/strategy/" target="_blank" rel="noopener" >our strategy&lt;/a> such that managed infrastructure is a &amp;ldquo;necessary but not sufficient&amp;rdquo; aspect of member value. Members must be able to trust their infrastructure, but the real value comes from cycles of development and collaboration that is made &lt;em>easier&lt;/em> by managed infrastructure.&lt;/li>
&lt;li>Our
&lt;a href="https://compass.2i2c.org/organization/strategy/#our-big-challenge" target="_blank" rel="noopener" >key challenge&lt;/a> is thus building a shared &amp;ldquo;development and operations&amp;rdquo; service in a way that serves multiple communities without the cost structure of a bespoke consultancy.&lt;/li>
&lt;li>We have a few ideas for how to do this, and a key starting point is to define a
&lt;a href="https://compass.2i2c.org/organization/strategy/#operating-principles" target="_blank" rel="noopener" >shared roadmap&lt;/a> and a selective group of member organizations that we can engage collectively.&lt;/li>
&lt;/ul>
&lt;p>Or, if you&amp;rsquo;d like to just get a quick summary, here is the strategic approach that we&amp;rsquo;ve defined for the team:&lt;/p>
&lt;blockquote>
&lt;p>We serve independent communities with a single roadmap and service team.&lt;/p>
&lt;p>Operations must use the same 80% infrastructure stack across all communities. Say no to communities that need infrastructure that deviates from this rule.&lt;/p>
&lt;p>Development work must be attached to roadmap items. Roadmap items must deliver value to many communities instead of just one. Say no to project opportunities that deviate from this rule.&lt;/p>
&lt;/blockquote>
&lt;p>Our assumption is that by constraining ourselves to serve multiple member communities, we&amp;rsquo;ll force ourselves to make the technology useful for the broader open source user ecosystem as well. By choosing communities that are aligned in their workflows and values, we&amp;rsquo;ll be able to do this with a single team and roadmap in a cost-effective way.&lt;/p>
&lt;h2 id="hypotheses-wed-like-to-test-next">
Hypotheses we&amp;rsquo;d like to test next
&lt;a class="header-anchor" href="#hypotheses-wed-like-to-test-next">#&lt;/a>
&lt;/h2>&lt;p>You can find more information about how we&amp;rsquo;re operationalizing this in
&lt;a href="https://compass.2i2c.org/organization/service-model/" target="_blank" rel="noopener" >our service model&lt;/a> and
&lt;a href="https://compass.2i2c.org/organization/plan/" target="_blank" rel="noopener" >annual plan&lt;/a> pages - we&amp;rsquo;ll adjust these as we learn. Our next step is to test these hypotheses as quickly as we can:&lt;/p>
&lt;ul>
&lt;li>&lt;em>By choosing the right communities for membership and building an accessible process around our team&amp;rsquo;s priorities, we can define a shared roadmapping and development system that is scalable to all of our members, and that they all view as valuable.&lt;/em>&lt;/li>
&lt;li>&lt;em>By engaging member communities in this way, we will have a significant new stream of revenue to sustain the organization while making open source improvements that are broadly useful.&lt;/em>&lt;/li>
&lt;li>&lt;em>By engaging member communities in this way, we&amp;rsquo;ll be able to advertise the value of this service as collectively improving a public good. This will increase our hit-rate for new member growth and participation.&lt;/em>&lt;/li>
&lt;/ul>
&lt;h2 id="what-were-watching-for-in-2026">
What we&amp;rsquo;re watching for in 2026
&lt;a class="header-anchor" href="#what-were-watching-for-in-2026">#&lt;/a>
&lt;/h2>&lt;p>2026 is going to be a pivotal year for the organization - I suspect it&amp;rsquo;ll force us to either double down on our current sustainability model, or to pivot towards something that is lighter given the new funding realities that the sector is facing. We are watching for whether research institutions begin cancelling or scaling back their contract work &lt;em>en-masse&lt;/em>, and we&amp;rsquo;re also being mindful for whether our assumptions about a &amp;ldquo;shared roadmap&amp;rdquo; across our communities are actually delivering the value to them that we&amp;rsquo;d expect.&lt;/p>
&lt;p>We&amp;rsquo;re excited to lean into this more active and collaborative aspect of our service. We&amp;rsquo;re confident this will be more impactful for our member organizations, and for the broader ecosystem. We&amp;rsquo;ll keep folks updated with our progress via
&lt;a href="https://2i2c.org/blog" target="_blank" rel="noopener" >our blog&lt;/a> and
&lt;a href="https://2i2c.org/mailing-list" target="_blank" rel="noopener" >our mailing list&lt;/a> as always.&lt;/p></description></item><item><title>Improving our community hub reliability and stability in Q4 2025</title><link>https://2i2c.org/blog/infrastructure-reliability-q4-2025/</link><pubDate>Tue, 16 Dec 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/infrastructure-reliability-q4-2025/</guid><description>&lt;p>This year we&amp;rsquo;ve prioritized &lt;strong>making the cloud safe to try&lt;/strong> for our member communities. This has driven work in monitoring, alerting, and automating infrastructure so that we resolve small problems before they become big problems. In the last quarter of 2025, we wrapped up this effort by testing the following hypothesis:&lt;/p>
&lt;blockquote>
&lt;p>We can reduce P1 incidents if we shorten the time to act on current alerts and learnings from prior incidents.&lt;/p>
&lt;/blockquote>
&lt;p>Here&amp;rsquo;s what we accomplished and what we learned.&lt;/p>
&lt;h2 id="what-we-accomplished">
What we accomplished
&lt;a class="header-anchor" href="#what-we-accomplished">#&lt;/a>
&lt;/h2>&lt;p>In short: we&amp;rsquo;re now much more confident in the stability of community infrastructure.
Here&amp;rsquo;s a snapshot of our new incident dashboard, which shows high-level trends for the stability of our infrastructure:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Dashboard of pagerduty status page for 2i2c" srcset="
/blog/infrastructure-reliability-q4-2025/featured_hu04df3383ec51b90b248012f6472de1e6_185237_74b9b73aaa4181449c130e6842c7c5c1.webp 400w,
/blog/infrastructure-reliability-q4-2025/featured_hu04df3383ec51b90b248012f6472de1e6_185237_ecd16460171bcb533e6a99e18171cbd6.webp 760w,
/blog/infrastructure-reliability-q4-2025/featured_hu04df3383ec51b90b248012f6472de1e6_185237_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/infrastructure-reliability-q4-2025/featured_hu04df3383ec51b90b248012f6472de1e6_185237_74b9b73aaa4181449c130e6842c7c5c1.webp"
width="760"
height="394"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>See the real-time status of our community hubs at
&lt;a href="http://status.2i2c.org" target="_blank" rel="noopener" >status.2i2c.org&lt;/a>&lt;/em>&lt;/p>
&lt;h3 id="we-improved-infrastructure-reliability-for-our-communities">
We improved infrastructure reliability for our communities
&lt;a class="header-anchor" href="#we-improved-infrastructure-reliability-for-our-communities">#&lt;/a>
&lt;/h3>&lt;p>We made several technology and team process improvements that led to these benefits for our communities:&lt;/p>
&lt;ol>
&lt;li>We are now more likely to catch outages before a community reports them to us.&lt;/li>
&lt;li>We are now less likely to have an outage happen more than once, or affect more than one community, because we consistently fix the issues that cause outages.&lt;/li>
&lt;/ol>
&lt;p>We saw a consistent drop in critical alerts that required immediate response:&lt;/p>
&lt;ul>
&lt;li>For August and September we had an average of 7 outages/month (6 from alerts, 1 from community)&lt;/li>
&lt;li>In October, November, and December we had an average of 3 outages/month (9 in October, 0 in November, 1 in December, with only one of these being reported by a community)&lt;/li>
&lt;/ul>
&lt;h3 id="we-became-more-efficient-responsive-and-focused">
We became more efficient, responsive, and focused
&lt;a class="header-anchor" href="#we-became-more-efficient-responsive-and-focused">#&lt;/a>
&lt;/h3>&lt;p>We also got several team benefits from this work:&lt;/p>
&lt;ol>
&lt;li>We get fewer interruptions and distractions from deeper work.&lt;/li>
&lt;li>We have clear assignment policies to make it clear who is responsible for acting in response to alerts.&lt;/li>
&lt;li>We avoid invisible work from falling down rabbit-holes when responding to outages.&lt;/li>
&lt;li>We decreased the stress and pressure of doing upgrades, making them easier to split into sprint items and more likely to get done consistently.&lt;/li>
&lt;/ol>
&lt;h2 id="the-improvements-we-made">
The improvements we made
&lt;a class="header-anchor" href="#the-improvements-we-made">#&lt;/a>
&lt;/h2>
&lt;h3 id="infrastructure-improvements">
Infrastructure improvements
&lt;a class="header-anchor" href="#infrastructure-improvements">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>Created a
&lt;a href="http://status.2i2c.org" target="_blank" rel="noopener" >status page for all 2i2c community hubs&lt;/a>, giving our team and communities visibility into the status of our infrastructure.&lt;/li>
&lt;li>Created an alert that triggers when two servers fail to start consecutively in a 30-minute time window.&lt;/li>
&lt;li>Improved deployment infrastructure so that we can roll out sub-chart upgrades to individual clusters, allowing us to roll out major changes in batches.&lt;/li>
&lt;li>Removed our &amp;ldquo;configurator&amp;rdquo; application from community hubs, because it was causing more confusion than it was resolving.&lt;/li>
&lt;li>Allowed servers to start even when users hit their storage quotas.&lt;/li>
&lt;li>Provided a number of upgrades to Kubernetes and the support services that we run alongside each community hub.&lt;/li>
&lt;/ul>
&lt;h3 id="process-improvements">
Process improvements
&lt;a class="header-anchor" href="#process-improvements">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>Made a team commitment to prioritize issues from
&lt;a href="https://2i2c.org/incident-reports" target="_blank" rel="noopener" >incident reports&lt;/a> and other stability-related problems.&lt;/li>
&lt;li>Defined incident
&lt;a href="https://infrastructure.2i2c.org/topic/monitoring-alerting/escalation-policies/" target="_blank" rel="noopener" >escalation policies&lt;/a> using the
&lt;a href="http://status.2i2c.org" target="_blank" rel="noopener" >status page&lt;/a> to calibrate the urgency of our response to the severity of incidents.&lt;/li>
&lt;li>Defined &amp;ldquo;on-call&amp;rdquo; procedures so our team knows when and how to be more responsive to outages.&lt;/li>
&lt;li>Time-boxed our alert response process to avoid accidentally falling down rabbit holes for non-urgent problems.&lt;/li>
&lt;li>Created a more reliable process for
&lt;a href="https://infrastructure.2i2c.org/topic/monitoring-alerting/escalation-policies/" target="_blank" rel="noopener" >responding to incidents&lt;/a> and writing
&lt;a href="https://2i2c.org/incident-reports" target="_blank" rel="noopener" >incident reports&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="looking-forward">
Looking forward
&lt;a class="header-anchor" href="#looking-forward">#&lt;/a>
&lt;/h2>&lt;p>After this push around infrastructure reliability, we&amp;rsquo;re significantly more confident in the stability and transparency of our community hub infrastructure. This will deliver better service for our member communities and free up more of our time to engage with them instead of fighting infrastructure fires.&lt;/p>
&lt;p>We will continue to improve our infrastructure, and have a better foundation to do so incrementally in the coming quarters. Here are a few things we&amp;rsquo;d still like to improve:&lt;/p>
&lt;ol>
&lt;li>We still need to improve how reliably we complete follow-up actions from incidents (e.g., writing incident reports). When a process doesn&amp;rsquo;t fit into planning &amp;amp; scoping ceremonies, we struggle to follow it consistently.&lt;/li>
&lt;li>We&amp;rsquo;d like to improve our testing framework for major upgrades across all hubs (e.g., Kubernetes version upgrades) to catch bugs before communities do.&lt;/li>
&lt;/ol>
&lt;h2 id="learn-more">
Learn More
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="http://status.2i2c.org/" target="_blank" rel="noopener" >2i2c Status Page&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://infrastructure.2i2c.org/hub-deployment-guide/runbooks/on-call/" target="_blank" rel="noopener" >On-call procedures documentation&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/2i2c-org/infrastructure" target="_blank" rel="noopener" >Infrastructure repository&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Faster reporting of user home directory sizes</title><link>https://2i2c.org/blog/faster-home-directory-reporting/</link><pubDate>Tue, 09 Dec 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/faster-home-directory-reporting/</guid><description>&lt;p>Storage quotas help users avoid running out of space unexpectedly and give administrators visibility into capacity planning. However, storage usage can change rapidly, and it&amp;rsquo;s important to have quick information so that administrators know whether they are close to hitting limits.&lt;/p>
&lt;p>We&amp;rsquo;ve improved how quickly hub administrators can see user home directory sizes across our JupyterHubs. This makes monitoring more responsive and adds quota limit visibility that wasn&amp;rsquo;t possible before.&lt;/p>
&lt;h2 id="using-jupyterhub-home-nfs-for-near-instant-disk-usage-metrics">
Using &lt;code>jupyterhub-home-nfs&lt;/code> for near-instant disk usage metrics
&lt;a class="header-anchor" href="#using-jupyterhub-home-nfs-for-near-instant-disk-usage-metrics">#&lt;/a>
&lt;/h2>&lt;p>Our existing storage monitoring tool,
&lt;a href="https://github.com/2i2c-org/prometheus-dirsize-exporter" target="_blank" rel="noopener" >&lt;code>prometheus-dirsize-exporter&lt;/code>&lt;/a>, deliberately runs slowly to avoid excessive disk I/O. This meant home directory metrics could be &lt;strong>hours out of date&lt;/strong> on systems with many users or large directories. Plus, there was no way to report user quota limits at all.&lt;/p>
&lt;p>Our home directory storage is managed by
&lt;a href="https://github.com/2i2c-org/jupyterhub-home-nfs/" target="_blank" rel="noopener" >&lt;code>jupyterhub-home-nfs&lt;/code>&lt;/a>, which enforces per-user quotas. It could also expose usage and limit information as Prometheus metrics using data from the underlying filesystem quota system. Because this information is already tracked by the filesystem, it&amp;rsquo;s available immediately without scanning individual files.&lt;/p>
&lt;p>We made two key improvements:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Make disk usage reporting almost instantaneous&lt;/strong>. We made &lt;code>jupyterhub-home-nfs&lt;/code> export &lt;code>total_size_bytes&lt;/code> and &lt;code>hard_limit_bytes&lt;/code> metrics to Prometheus for near-instant reporting. We used the same metric names and namespace as &lt;code>prometheus-dirsize-exporter&lt;/code> for compatibility. See
&lt;a href="https://github.com/2i2c-org/jupyterhub-home-nfs/pull/76" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> 2i2c-org/jupyterhub-home-nfs#76&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Allow this to be used upstream in JupyterHub Grafana Dashboards&lt;/strong> so that it can support both types of disk usage reporting. This means users of the upstream
&lt;a href="https://github.com/jupyterhub/grafana-dashboards" target="_blank" rel="noopener" >JupyterHub Grafana dashboards&lt;/a> get the same useful view about home directory usage, regardless of whether the metric comes from &lt;code>prometheus-dirsize-exporter&lt;/code> or &lt;code>jupyterhub-home-nfs&lt;/code>. See
&lt;a href="https://github.com/2i2c-org/prometheus-dirsize-exporter/pull/29" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> 2i2c-org/prometheus-dirsize-exporter#29&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>These changes were
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/7261" target="_blank" rel="noopener" >deployed across all our communities&lt;/a>, so administrators can now access current home directory information &lt;strong>within minutes&lt;/strong> regardless of directory size.&lt;/p>
&lt;figure id="figure-home-directory-usage-dashboard-showing-total-size-metrics-from-jupyterhub-home-nfs-and-other-data-from-prometheus-dirsize-exporter">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Home Directory Usage dashboard showing total size metrics from jupyterhub-home-nfs and other data from prometheus-dirsize-exporter" srcset="
/blog/faster-home-directory-reporting/featured_hu5e6047328de0a056370b6f6f7ca4f2f4_42503_97fe54b3a33726efa072da8ba23eb738.webp 400w,
/blog/faster-home-directory-reporting/featured_hu5e6047328de0a056370b6f6f7ca4f2f4_42503_5a3f7bc3c57012dccdd59f106db1cfee.webp 760w,
/blog/faster-home-directory-reporting/featured_hu5e6047328de0a056370b6f6f7ca4f2f4_42503_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/faster-home-directory-reporting/featured_hu5e6047328de0a056370b6f6f7ca4f2f4_42503_97fe54b3a33726efa072da8ba23eb738.webp"
width="760"
height="152"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Home Directory Usage dashboard showing total size metrics from jupyterhub-home-nfs and other data from prometheus-dirsize-exporter
&lt;/figcaption>&lt;/figure>
&lt;h2 id="try-it-out">
Try it out
&lt;a class="header-anchor" href="#try-it-out">#&lt;/a>
&lt;/h2>&lt;p>2i2c member organizations can try this out now. If you have access to your hub&amp;rsquo;s Grafana instance, you can see these new metrics in the &lt;em>Home Directory Usage&lt;/em> dashboard:&lt;/p>
&lt;ol>
&lt;li>Open your hub&amp;rsquo;s
&lt;a href="https://docs.2i2c.org/admin/monitoring/grafana-dashboards/" target="_blank" rel="noopener" >Grafana dashboard&lt;/a>.&lt;/li>
&lt;li>Go to &lt;code>Dashboards&lt;/code> -&amp;gt; &lt;code>JupyterHub Default Dashboards&lt;/code> -&amp;gt; &lt;code>Home Directory Usage&lt;/code>.&lt;/li>
&lt;li>Check the table for up-to-date &lt;em>total size&lt;/em> and &lt;em>quota limit&lt;/em> values.&lt;/li>
&lt;/ol>
&lt;p>For more details, see our
&lt;a href="https://docs.2i2c.org/admin/monitoring/disk-usage/" target="_blank" rel="noopener" >docs on filesystem and disk dashboards&lt;/a>.&lt;/p>
&lt;h2 id="coming-next">
Coming next
&lt;a class="header-anchor" href="#coming-next">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;d like to build on this work to enable &lt;strong>alerting when individual users near their disk quotas&lt;/strong>. This will make it easier to more reliably track user disk usage across a community. See this issue for tracking:
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/7166" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> 2i2c-org/infrastructure#7166&lt;/a>&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>This was a directed contribution supported by
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA&lt;/a> to enable more proactive monitoring and alerting for hub administrators.&lt;/li>
&lt;/ul></description></item><item><title>Supporting NASA Openscapes Champions with Cloud Infrastructure</title><link>https://2i2c.org/blog/nasa-openscapes-champions-2025/</link><pubDate>Sun, 30 Nov 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/nasa-openscapes-champions-2025/</guid><description>&lt;p>
&lt;a href="https://2i2c.org/collaborators/openscapes/" >Openscapes&lt;/a> ran a NASA Champions program in November, bringing 30 participants together to learn about NASA Earthdata and the earthaccess Python library. We provided JupyterHub infrastructure for hands-on breakout sessions - a good example of using shared infrastructure to facilitate learning and collaboration in remote events.&lt;/p>
&lt;p>They used their JupyterHub for co-working, where participants practiced streaming techniques for accessing cloud data without downloading. Multiple NASA Data Centers (NSIDC, ORNL, ASDC, PO.DAAC) collaborated to co-teach using the shared environment, succeeding despite the event happening the day after a government shutdown.&lt;/p>
&lt;p>They also used this to grow the OpenScapes community by getting attendees to join their slack and sign up for
&lt;a href="https://openscapes.org/events/2025-12-15-earthaccess-hackday/" target="_blank" rel="noopener" >their December Earth Access hack day&lt;/a>. It&amp;rsquo;s a great example of leveraging shared community infrastructure to help newcomers learn quickly and join a science community.&lt;/p>
&lt;p>Read their
&lt;a href="https://openscapes.org/blog/2025-11-27-nasa-champions-2025-summary/" target="_blank" rel="noopener" >full event summary&lt;/a> to learn how they structured the program and engaged their community.&lt;/p></description></item><item><title>Adding User Group Insights to Cloud Cost Dashboards with Grafana</title><link>https://2i2c.org/blog/cloud-cost-groups/</link><pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/cloud-cost-groups/</guid><description>&lt;p>We are excited to announce that we have extended our cloud cost dashboards to support display costs filtered by user groups using Grafana! This new feature allows administrators to monitor and manage cloud expenses based on user group memberships in JupyterHub.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Group cloud cost dashboard showing cost breakdowns by user groups" srcset="
/blog/cloud-cost-groups/featured_hu34fd6e3a049030056ef3072c1a0427ac_131153_3e9e0130f0df351c1ba68cf8ac8772c0.webp 400w,
/blog/cloud-cost-groups/featured_hu34fd6e3a049030056ef3072c1a0427ac_131153_ea495cf6613eae40c2db0a49fdb91b83.webp 760w,
/blog/cloud-cost-groups/featured_hu34fd6e3a049030056ef3072c1a0427ac_131153_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/cloud-cost-groups/featured_hu34fd6e3a049030056ef3072c1a0427ac_131153_3e9e0130f0df351c1ba68cf8ac8772c0.webp"
width="760"
height="388"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;div class="alert alert-">
&lt;div>
Available for dedicated AWS clusters only (and excluding CloudBank managed accounts). Other deployments on GCP will be supported in the future.
&lt;/div>
&lt;/div>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Take a look at the
&lt;a href="https://docs.2i2c.org/admin/monitoring/cost-users-groups/#group-cloud-costs" target="_blank" rel="noopener" >Community Hub Guide&lt;/a> to see what&amp;rsquo;s new&lt;/li>
&lt;li>Check out the documentation of the
&lt;a href="https://jupyterhub-cost-monitoring.readthedocs.io/en/latest/" target="_blank" rel="noopener" >2i2c-org/jupyterhub-cost-monitoring&lt;/a> project to see how it all works&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/author/jenny-wong/" >Jenny&lt;/a> recently presented her work on the cost monitoring system at
&lt;a href="https://events.linuxfoundation.org/jupytercon/" target="_blank" rel="noopener" >JupyterCon 2025&lt;/a> earlier this month. Watch a
&lt;a href="https://youtu.be/M5x3bTgRzVs?si=P2c3Ngb8v7f4ks0I" target="_blank" rel="noopener" >video&lt;/a> or look at the
&lt;a href="https://docs.google.com/presentation/d/1N8V7dna1atpRmcbpgZ0-VL5cbOQfwYfXTstudT2ierY/edit?usp=sharing" target="_blank" rel="noopener" >slides&lt;/a>.&lt;/li>
&lt;/ul>
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSff-u-sWFuwO1-VTgk2Ir7f1nfUUlLevQk_Vkk_jnmcI1nJnw/viewform?usp=pp_url&amp;amp;entry.648332035=https://2i2c.org/blog/cloud-cost-groups/" target="_blank" rel="noopener" class="text-decoration-none">
&lt;div class="alert alert-info d-flex align-items-start p-3" role="button" style="transition: all 0.2s ease; box-shadow: 0 2px 4px rgba(0,0,0,0.1);" onmouseover="this.style.backgroundColor='#b3e5fc'; this.style.boxShadow='0 4px 8px rgba(0,0,0,0.15)'; this.style.transform='translateY(-1px)'" onmouseout="this.style.backgroundColor=''; this.style.boxShadow='0 2px 4px rgba(0,0,0,0.1)'; this.style.transform='translateY(0)'" onfocus="this.style.backgroundColor='#b3e5fc'; this.style.boxShadow='0 4px 8px rgba(0,0,0,0.15)'; this.style.transform='translateY(-1px)'" onblur="this.style.backgroundColor=''; this.style.boxShadow='0 2px 4px rgba(0,0,0,0.1)'; this.style.transform='translateY(0)'">
&lt;div class="fw-bold mb-1">&lt;span style="font-weight:bold">Give us feedback!&lt;/span> Click here to provide feedback that will help us make this more impactful.&lt;/div>
&lt;/div>
&lt;/a>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/sunu" target="_blank" rel="noopener" >Tarashish&lt;/a> @
&lt;a href="https://2i2c.org/collaborators/devseed/" >Development Seed&lt;/a> for collaborating on this project with us.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA&lt;/a> and the DSE Team at NASA MSFC ODSI for funding much of this work.&lt;/li>
&lt;li>
&lt;a href="https://github.com/kyle-lesinger" target="_blank" rel="noopener" >Kyle Lesinger&lt;/a> from the NASA MSFC Office of Data Science and Informatics for providing valuable feedback and bug reports during development.&lt;/li>
&lt;/ul></description></item><item><title>2i2c at JupyterCon 2025: Helping communities navigate the Interactive Computing ecosystem</title><link>https://2i2c.org/blog/jupytercon-2025-talks/</link><pubDate>Thu, 20 Nov 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jupytercon-2025-talks/</guid><description>&lt;p>This year several team members attended
&lt;a href="https://jupytercon.com" target="_blank" rel="noopener" >JupyterCon 2025&lt;/a> to show off our own work and the upstream work that we&amp;rsquo;ve been doing in open source.
JupyterCon recently shared the videos of all talks, so here&amp;rsquo;s a quick run-down of 2i2c&amp;rsquo;s contributions and where you can watch more.&lt;/p>
&lt;h2 id="building-computational-narratives-with-jupyter-book">
Building computational narratives with Jupyter Book
&lt;a class="header-anchor" href="#building-computational-narratives-with-jupyter-book">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://www.youtube.com/watch?v=3MUSteQFGq8&amp;amp;t=850s" target="_blank" rel="noopener" >Introducing Jupyter Book 2: Next-generation Tools for Creating Computational Narratives&lt;/a> - Chris Holdgraf and Rowan Cockett (
&lt;a href="https://curvenote.com" target="_blank" rel="noopener" >Curvenote&lt;/a>) introduce the next generation of
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book&lt;/a>, built on modern tooling and designed for creating rich computational narratives.&lt;/p>
&lt;p>
&lt;a href="https://jupytercon2025.sched.com/event/1jNKI" target="_blank" rel="noopener" >Tutorial: Build-a-Jupyter Book With the Turing Way&lt;/a> - Angus Hollands co-led this hands-on tutorial teaching participants how to create their own Jupyter Books using examples from the Turing Way.&lt;/p>
&lt;h2 id="jupyterhubs-evolution-and-sustainable-operations">
JupyterHub&amp;rsquo;s evolution and sustainable operations
&lt;a class="header-anchor" href="#jupyterhubs-evolution-and-sustainable-operations">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://www.youtube.com/watch?v=-wwia9YzHO" target="_blank" rel="noopener" >Not Just for Notebooks: JupyterHub in 2025&lt;/a> - Yuvi Panda explores how
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub&lt;/a> is evolving beyond just notebooks to support a wider range of interactive computing workflows.&lt;/p>
&lt;p>
&lt;a href="https://www.youtube.com/watch?v=M5x3bTgRzVs" target="_blank" rel="noopener" >Cloudy With a Chance of Savings: Per-User Usage and Cost Monitoring for JupyterHubs in the Cloud&lt;/a> - Jenny Wong presents our recent work improving tools and approaches for monitoring per-user cloud costs in JupyterHub deployments, helping communities operate more sustainably.&lt;/p>
&lt;p>
&lt;a href="https://jupytercon2025.sched.com/event/1jNQC" target="_blank" rel="noopener" >Lightning Talk: Controlling Home Directory Costs (with User Empathy) on the Cloud&lt;/a> - Yuvi Panda shares practical strategies for managing home directory storage costs while keeping user experience in mind, using &lt;code>jupyterhub-home-nfs&lt;/code>.&lt;/p>
&lt;hr>
&lt;p>Finally, there were also several talks that weren&amp;rsquo;t &lt;em>by&lt;/em> 2i2c team members, but were partially &lt;em>enabled&lt;/em> by 2i2c&amp;rsquo;s collaboration. We&amp;rsquo;re particularly proud of these, because it&amp;rsquo;s an example of us bringing others into the ecosystem and empowering them to contribute.&lt;/p>
&lt;h2 id="understanding-the-jupyterhub-community">
Understanding the JupyterHub community
&lt;a class="header-anchor" href="#understanding-the-jupyterhub-community">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://www.youtube.com/watch?v=NnsD_Ly49Z0" target="_blank" rel="noopener" >Findings from the Voices of JupyterHub report&lt;/a> - This community strategy talk shares insights from conversations with JupyterHub users and operators about their needs and challenges. It&amp;rsquo;s not given by a 2i2c team member, but many of us have been involved in guiding (and being participants in!) this project.&lt;/p>
&lt;h2 id="pythia-sharing-their-myst-journey">
Pythia sharing their MyST journey
&lt;a class="header-anchor" href="#pythia-sharing-their-myst-journey">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://www.youtube.com/watch?v=SqmMoyqSU8o" target="_blank" rel="noopener" >MyST-ifying Project Pythia&lt;/a> - Julia Kent of NSF NCAR discusses
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a>, an open-source platform dedicated to educating geoscientists on Python for complex Earth data analysis. Learn how Project Pythia manages its expansive repository of &amp;ldquo;cookbooks&amp;rdquo; and educational content, detailing their strategic shift to MyST Markdown and
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book&lt;/a> 2 to drastically improve project sustainability and reduce maintenance overhead.&lt;/p>
&lt;h2 id="how-cryocloud-built-a-healthy-open-science-community">
How CryoCloud built a healthy open science community
&lt;a class="header-anchor" href="#how-cryocloud-built-a-healthy-open-science-community">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://www.youtube.com/watch?v=XD72H0Dkhq8" target="_blank" rel="noopener" >Building a successful open science community in the cloud&lt;/a> - Tasha Snow shares key insights from running the
&lt;a href="https://2i2c.org/collaborators/cryocloud/" >CryoCloud&lt;/a>
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub&lt;/a>, emphasizing that a successful scientific community relies on both technology and social innovation. She shares data-driven results on how shared JupyterHubs can significantly reduce research computing costs and accelerate scientific iteration. She also explores the critical balance between platform capabilities and the need for &lt;em>social infrastructure&lt;/em> to overcome technical barriers and foster true collaboration.&lt;/p></description></item><item><title>Yuvi on scaling maintainer intuition to facilitate PR review with PR triage boards</title><link>https://2i2c.org/blog/pr-triage-boards/</link><pubDate>Wed, 19 Nov 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/pr-triage-boards/</guid><description>&lt;p>Yuvi has a recent post on the
&lt;a href="https://jupyter.org" target="_blank" rel="noopener" >Jupyter blog&lt;/a> on how his &amp;ldquo;maintainer intuition&amp;rdquo; about reviewable pull requests grew into the open-source
&lt;a href="https://github.com/jupyter/pr-triage-board-bot" target="_blank" rel="noopener" >&lt;code>pr-triage-board-bot&lt;/code>&lt;/a>, a reusable workflow that keeps GitHub Project boards curated for the JupyterHub, JupyterLab, and GeoJupyter communities.
&lt;a href="https://2i2c.org/blog/pr-triage-boards/../foundational-contributions/" >Foundational contributions&lt;/a> are rellay important to 2i2c. This is a great example of building clever technical systems that help maintainers prioritize the social work of facilitating contributions to keep ecosystems healthy.&lt;/p>
&lt;figure id="figure-the-jupyterhub-pr-triage-boardhttpsgithubcomorgsjupyterhubprojects4views9">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="The [JupyterHub PR Triage board](https://github.com/orgs/jupyterhub/projects/4/views/9)." srcset="
/blog/pr-triage-boards/featured_hu42e3292f220b90b3776c7d0485ebe6f6_578487_0f0a6e755f2ce0c16c487d7c7d936d24.webp 400w,
/blog/pr-triage-boards/featured_hu42e3292f220b90b3776c7d0485ebe6f6_578487_db6b5eae52bd3533a354139bfb522b31.webp 760w,
/blog/pr-triage-boards/featured_hu42e3292f220b90b3776c7d0485ebe6f6_578487_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/pr-triage-boards/featured_hu42e3292f220b90b3776c7d0485ebe6f6_578487_0f0a6e755f2ce0c16c487d7c7d936d24.webp"
width="760"
height="367"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The
&lt;a href="https://github.com/orgs/jupyterhub/projects/4/views/9" target="_blank" rel="noopener" >JupyterHub PR Triage board&lt;/a>.
&lt;/figcaption>&lt;/figure>
&lt;p>Our favorite quote shares the vibe and cultural principles that drive this effort:&lt;/p>
&lt;blockquote class="pull-quote">
&lt;p>If the author of the PR is a newish contributor, I want to encourage them to stick around by being responsive to their gift. All PRs are gifts that we may or may not choose to accept, but should do so with grace.&lt;/p>
&lt;cite>&lt;a href="https://2i2c.org/author/yuvaraj-yuvi/" >Yuvi&lt;/a>&lt;/cite>
&lt;/blockquote>
&lt;p>Yuvi frames the problem here:&lt;/p>
&lt;blockquote>
&lt;p>Reviewing PRs is a critical way that maintainers keep an open source project moving forward, but identifying PRs that can productively be merged is hard.&lt;/p>
&lt;/blockquote>
&lt;p>And notes that &lt;em>human scalability&lt;/em> is often a big bottleneck:&lt;/p>
&lt;blockquote>
&lt;p>One key bottleneck we identified in the process was Step 2. In particular, I was relying on my maintainer intuition to pick a single PR that I believe can be merged, so others in the team can do review work. I started exploring what this intuition is, and if it can be scaled.&lt;/p>
&lt;/blockquote>
&lt;p>Here&amp;rsquo;s his list of &amp;ldquo;intuitions&amp;rdquo; that he uses to choose PRs to work on:&lt;/p>
&lt;blockquote>
&lt;ol>
&lt;li>PRs that aren’t too big, and are a reasonable size that can be merged within a 2 week window&lt;/li>
&lt;li>CI tests passing, so at least our automated checks haven’t caught any issues with it
Features or bug fixes that I believe add value to the project and move us in the right direction towards being able to support our users as they need (this is the hardest!)&lt;/li>
&lt;li>If the author of the PR is a newish contributor, as I want to encourage them to stick around by being responsive to their gift. All PRs are gifts that we may or may not choose to accept, but should do so with grace.&lt;/li>
&lt;li>How long ago the PR was opened. There is such a big difference between a response to your PR 2 days after you make it vs 2 months vs 2 years. I prioritized newer PRs.&lt;/li>
&lt;li>What kind of contribution is it primarily? Different engineers on our team have different skillsets (JS, Python, etc) and I wanted to match the PR to what the engineer preferred code reviewing.&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>And the board essentially tries to capture many of these intuitions by signal-boosting them in one place:&lt;/p>
&lt;blockquote>
&lt;p>we can roughly say ‘Pick a PR that looks good to you from the top of the “First Time Contributor” or “Seasoned Contributor” list’, and that relieves me from being the bottleneck quite a bit.&lt;/p>
&lt;/blockquote>
&lt;p>Read more in the original article:
&lt;a href="https://blog.jupyter.org/scaling-maintainer-intuition-with-pull-request-triage-boards-779f2387498b" target="_blank" rel="noopener" >Scaling &amp;ldquo;Maintainer Intuition&amp;rdquo; with Pull Request Triage Boards&lt;/a>.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/jupyter/" >Project Jupyter&lt;/a> for trusting us to incubate and now donate the bot code to the broader ecosystem.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub&lt;/a> and
&lt;a href="https://2i2c.org/collaborators/geojupyter/" >GeoJupyter&lt;/a> contributors who tested the triage views and fed real maintainer workflows back into the design.&lt;/li>
&lt;li>
&lt;a href="https://github.com/jasongrout" target="_blank" rel="noopener" >Jason Grout&lt;/a>,
&lt;a href="https://github.com/rgaiacs" target="_blank" rel="noopener" >Raniere Silva&lt;/a>, and
&lt;a href="https://github.com/mfisher87" target="_blank" rel="noopener" >Matt Fisher&lt;/a> for spotting the experiment early and helping it land across multiple orgs.&lt;/li>
&lt;/ul></description></item><item><title>Debisree Ray on her positive JupyterCon 2025 experience</title><link>https://2i2c.org/blog/jupytercon-debisree-reflection/</link><pubDate>Mon, 17 Nov 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jupytercon-debisree-reflection/</guid><description>&lt;p>We spotted
&lt;a href="https://medium.com/womenintechnology/reflections-from-jupytercon-2025-8ace9e6b27ab" target="_blank" rel="noopener" >a great post by Debisree Ray about JupyterCon 2025&lt;/a> on the
&lt;a href="https://medium.com/womenintechnology" target="_blank" rel="noopener" >Women in Technology blog&lt;/a>. It&amp;rsquo;s full of thoughtful reflections about the community and the conference, and we wanted to share a few highlights.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="JupyterCon 2025" srcset="
/blog/jupytercon-debisree-reflection/featured_hu865d2930f4b65d179d73163d852ab744_1354951_6a575203ccc98a1b6c06caf4565af529.webp 400w,
/blog/jupytercon-debisree-reflection/featured_hu865d2930f4b65d179d73163d852ab744_1354951_a8a151a972996d6d5db6bb69ad1a32b9.webp 760w,
/blog/jupytercon-debisree-reflection/featured_hu865d2930f4b65d179d73163d852ab744_1354951_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/jupytercon-debisree-reflection/featured_hu865d2930f4b65d179d73163d852ab744_1354951_6a575203ccc98a1b6c06caf4565af529.webp"
width="760"
height="468"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Image from
&lt;a href="https://medium.com/womenintechnology/reflections-from-jupytercon-2025-8ace9e6b27ab" target="_blank" rel="noopener" >Debisree Ray&amp;rsquo;s post&lt;/a>&lt;/em>&lt;/p>
&lt;p>On the JupyterLab Extensions workshop:&lt;/p>
&lt;blockquote>
&lt;p>I chose to attend Developing JupyterLab Extensions, led by the Jupyter core contributors. It was one of the most practical, empowering workshops I&amp;rsquo;ve attended.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Once you understand the architecture, building a JupyterLab extension feels less intimidating and more like unlocking a creative superpower.&lt;/p>
&lt;/blockquote>
&lt;p>On the community spirit:&lt;/p>
&lt;blockquote>
&lt;p>On the first day, while setting up my extension environment, I got stuck during execution — and before I knew it, several attendees (not just instructors!) jumped in to troubleshoot with me. That moment captured the true spirit of JupyterCon: a room full of brilliant people who genuinely want to help one another succeed.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The openness, kindness, and inclusiveness of this community are unmatched. Everyone — from first-time contributors to long-time maintainers — collaborates with respect and a sense of curiosity.&lt;/p>
&lt;/blockquote>
&lt;p>On the Jupyter ecosystem&amp;rsquo;s growth:&lt;/p>
&lt;blockquote>
&lt;p>Jupyter is no longer just about notebooks — it&amp;rsquo;s powering AI workflows, enterprise analytics, and reproducible research pipelines at scale.&lt;/p>
&lt;/blockquote>
&lt;p>
&lt;a href="https://medium.com/womenintechnology/reflections-from-jupytercon-2025-8ace9e6b27ab" target="_blank" rel="noopener" >Read the full post&lt;/a> for more about Debisree&amp;rsquo;s week in San Diego, the community sprint, and other key takeaways.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>We didn&amp;rsquo;t do any of the work in this post but do have some context from the Jupyter community that led to it being written and discovered, so here&amp;rsquo;s a brief &amp;ldquo;thank you&amp;rdquo; nonetheless&amp;hellip;&lt;/p>
&lt;p>Thanks to
&lt;a href="https://www.linkedin.com/in/debisree-ray-ph-d-82241355/" target="_blank" rel="noopener" >Debisree Ray&lt;/a> for writing such a thoughtful reflection and sharing it publicly. And thanks to
&lt;a href="https://2i2c.org/collaborators/geojupyter/" >Matt Fisher from GeoJupyter&lt;/a> for spotting the post and bringing it to our attention. Thanks also to
&lt;a href="https://www.linkedin.com/in/rpwagner/" target="_blank" rel="noopener" >Rick Wagner&lt;/a> and
&lt;a href="https://www.linkedin.com/in/jason-grout/" target="_blank" rel="noopener" >Jason Grout&lt;/a> for creating the slide as part of the executive council update.&lt;/p></description></item><item><title>Creating a re-usable redirect generator for Jupyter Book 1 migrations</title><link>https://2i2c.org/blog/jb1-redirect-generator/</link><pubDate>Wed, 12 Nov 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jb1-redirect-generator/</guid><description>&lt;p>When migrating documentation from
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book&lt;/a> 1 to Jupyter Book 2, URL structures change dramatically and break external links. We spent some time createing a re-usable tool to solve this problem across multiple projects.&lt;/p>
&lt;p>You can check out the tool below:&lt;/p>
&lt;p>
&lt;a href="https://github.com/jupyter-book/jb1-redirect-generator" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> jupyter-book/jb1-redirect-generator&lt;/a>&lt;/p>
&lt;p>It&amp;rsquo;s designed to be run in a self-contained way by putting the dependencies in &lt;code>script&lt;/code> metadata at the top.
This means you can run it like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">uv run https://raw.githubusercontent.com/jupyter-book/jb1-redirect-generator/main/generate_redirects.py
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This let&amp;rsquo;s you generate redirects from JB1 -&amp;gt; JB2 URL structures and dump them in a &lt;code>_build/html&lt;/code> folder with your JB2 built pages.&lt;/p>
&lt;p>We tested this out by converting the
&lt;a href="https://jupyter.org/governance" target="_blank" rel="noopener" >Jupyter Governance docs&lt;/a> to Jupyter Book 2 and running it there.
You can find a noxfile that runs these commands here:&lt;/p>
&lt;p>
&lt;a href="https://github.com/jupyter/governance/blob/bcdae30efdecbe75bc4751ef1fe1e602fe82ee10/noxfile.py#L25-L37" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> jupyter/governance/blob/bcdae30efdecbe75bc4751ef1fe1e602fe82ee10/noxfile.py#L25-L37&lt;/a>&lt;/p>
&lt;p>And its use in a GitHub Workflow here:&lt;/p>
&lt;p>
&lt;a href="https://github.com/jupyter/governance/blob/bcdae30efdecbe75bc4751ef1fe1e602fe82ee10/.github/workflows/deploy.yml#L39-L44" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> jupyter/governance/blob/bcdae30efdecbe75bc4751ef1fe1e602fe82ee10/.github/workflows/deploy.yml#L39-L44&lt;/a>&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/jupyter-book/jb1-redirect-generator" target="_blank" rel="noopener" >jb1-redirect-generator repository&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter/governance/pull/307" target="_blank" rel="noopener" >Jupyter governance PR using the new script&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Community learning: Hub config to pass oauth tokens into user environments</title><link>https://2i2c.org/blog/communities-learning-from-one-another/</link><pubDate>Thu, 06 Nov 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/communities-learning-from-one-another/</guid><description>&lt;p>One of our favorite things to see: communities learning from and building on each other&amp;rsquo;s work!&lt;/p>
&lt;p>
&lt;a href="https://ops.maap-project.org/" target="_blank" rel="noopener" >MAAP&lt;/a> recently
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/7068" target="_blank" rel="noopener" >contributed infrastructure configuration&lt;/a> inspired by
&lt;a href="https://github.com/2i2c-org/infrastructure/blob/0046e14a68d7af9e353c494ee6ad39beb0ce970a/config/clusters/earthscope/common.values.yaml#L29" target="_blank" rel="noopener" >EarthScope&amp;rsquo;s approach&lt;/a> to handling authentication tokens. Both communities need to pass OAuth tokens into user environments so their SDKs can access protected data - and MAAP adapted EarthScope&amp;rsquo;s pattern to fit their needs.&lt;/p>
&lt;p>This is the kind of peer-to-peer knowledge sharing we hope to foster with our
&lt;a href="https://github.com/2i2c-org/infrastructure" target="_blank" rel="noopener" >open infrastructure model&lt;/a>. When infrastructure is open and communities can see each other&amp;rsquo;s solutions, they can adapt and build on proven approaches rather than starting from scratch.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/7068" target="_blank" rel="noopener" >MAAP&amp;rsquo;s PR&lt;/a> adapting the configuration&lt;/li>
&lt;li>
&lt;a href="https://github.com/2i2c-org/infrastructure/blob/0046e14a68d7af9e353c494ee6ad39beb0ce970a/config/clusters/earthscope/common.values.yaml#L29" target="_blank" rel="noopener" >EarthScope&amp;rsquo;s original config&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/2i2c-org/infrastructure" target="_blank" rel="noopener" >Our infrastructure repository&lt;/a> where all community configurations live&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://ops.maap-project.org/" target="_blank" rel="noopener" >MAAP team&lt;/a> for adapting and contributing this configuration&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope Consortium&lt;/a> for the original implementation&lt;/li>
&lt;/ul></description></item><item><title>Refactoring Jupyter Book 2 documentation ahead of a major release</title><link>https://2i2c.org/blog/jupyter-book-docs-refactor/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jupyter-book-docs-refactor/</guid><description>&lt;p>Documentation is what turns open source code into products that people actually want to use. We recently spent a few days refactoring the
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book&lt;/a> documentation to prepare for the upcoming Jupyter Book 2 release, and we&amp;rsquo;re excited about how much clearer the docs have become!&lt;/p>
&lt;h2 id="what-we-did">
What we did
&lt;a class="header-anchor" href="#what-we-did">#&lt;/a>
&lt;/h2>&lt;p>We restructured the docs using the
&lt;a href="https://diataxis.fr/" target="_blank" rel="noopener" >Diataxis framework&lt;/a> to better organize content by user type and task:&lt;/p>
&lt;ul>
&lt;li>Reorganized into clear topic areas with landing pages for easier navigation&lt;/li>
&lt;li>Added missing content like the feature voting table and contributing guides&lt;/li>
&lt;li>Created upgrade guidance to help users understand the relationship between Jupyter Book 2 and MyST&lt;/li>
&lt;/ul>
&lt;p>This work helps users find what they need faster and gives the project a stronger foundation to build on going forward.&lt;/p>
&lt;h2 id="why-were-excited-about-it">
Why we&amp;rsquo;re excited about it
&lt;a class="header-anchor" href="#why-were-excited-about-it">#&lt;/a>
&lt;/h2>&lt;p>Better documentation reduces maintainer burden by helping users answer their own questions, and it makes the project more welcoming and useful to new contributors. We hope this makes Jupyter Book more accessible to everyone and lays a good foundation for the new release!&lt;/p>
&lt;p>We&amp;rsquo;re also excited because so many others helped provide edits and comments!&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/jupyter-book/jupyter-book/pull/2422" target="_blank" rel="noopener" >PR implementing the refactor&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/jupyter-book/blob/next/docs/contribute/docs.md" target="_blank" rel="noopener" >Documentation principles we developed&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://next.jupyterbook.org" target="_blank" rel="noopener" >Jupyter Book 2 documentation&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://github.com/rlanzafame" target="_blank" rel="noopener" >@rlanzafame&lt;/a>,
&lt;a href="https://github.com/FreekPols" target="_blank" rel="noopener" >@FreekPols&lt;/a>, and
&lt;a href="https://github.com/bsipocz" target="_blank" rel="noopener" >@bsipocz&lt;/a> for their helpful reviews, edits, and feedback on the PR!&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a>,
&lt;a href="https://2i2c.org/collaborators/cryocloud/" >CryoCloud&lt;/a>, and the Berkeley educational projects are our primary member communities using MyST and
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book&lt;/a>. Their support covers the cost of these kinds of foundational contributions.&lt;/li>
&lt;/ul></description></item><item><title>2i2c Supports the Science Platforms Coordination IHDEA Working Group</title><link>https://2i2c.org/blog/ihdea-working-group/</link><pubDate>Thu, 30 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/ihdea-working-group/</guid><description>&lt;p>The Science Platforms Coordination IHDEA working group (which includes our own
&lt;a href="https://2i2c.org/author/jim-colliander/" >Jim Colliander&lt;/a>) is developing international standard software computing environments for Heliophysics. The working group recently presented their work at two major conferences:
&lt;a href="https://ml-helio.github.io/" target="_blank" rel="noopener" >ML-Helio&lt;/a> in Madrid and
&lt;a href="https://dash2025.space.swri.edu/" target="_blank" rel="noopener" >DASH/IHDEA&lt;/a> in San Antonio.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="DASH conference logo featuring stylized text and heliophysics imagery" srcset="
/blog/ihdea-working-group/featured_hu27c4fd91eab23a43f3d74f7a504ce6e6_9358_4ca8832585b372f3e42bd994a2a0d3ec.webp 400w,
/blog/ihdea-working-group/featured_hu27c4fd91eab23a43f3d74f7a504ce6e6_9358_a335e79d6f0f759380fc39545fdf2d25.webp 760w,
/blog/ihdea-working-group/featured_hu27c4fd91eab23a43f3d74f7a504ce6e6_9358_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/ihdea-working-group/featured_hu27c4fd91eab23a43f3d74f7a504ce6e6_9358_4ca8832585b372f3e42bd994a2a0d3ec.webp"
width="400"
height="123"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>The DASH/IHDEA 2025 conference brings together the heliophysics community to advance data, analysis, and software standards&lt;/em>&lt;/p>
&lt;p>When the working group received $2k from NASA SMCE for cloud infrastructure, they were already member organizations of 2i2c. This meant we could quickly stand up a
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub&lt;/a> with their Heliophysics-tailored environments for the conferences:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Easy access&lt;/strong> - Shared password authentication for conference attendees&lt;/li>
&lt;li>&lt;strong>Persistent storage&lt;/strong> - Work saved across sessions&lt;/li>
&lt;li>&lt;strong>Serious compute&lt;/strong> - Up to 119 GB RAM and 15 CPUs (much more than a typical laptop!)&lt;/li>
&lt;/ul>
&lt;p>The team successfully demonstrated how cloud resources can enable computational work that laptops simply can&amp;rsquo;t handle, and conference attendees responded positively to the presentations.&lt;/p>
&lt;h2 id="why-were-excited-about-this">
Why we&amp;rsquo;re excited about this
&lt;a class="header-anchor" href="#why-were-excited-about-this">#&lt;/a>
&lt;/h2>&lt;p>This showcases a key benefit we want to create with 2i2c membership: &lt;strong>reducing the accidental complexity of leveraging the cloud&lt;/strong>. Because the working group was already a member organization, deploying and managing infrastructure for the conferences was straightforward once they secured cloud funding. No lengthy setup, no new contracts - just quick deployment of the tools they needed.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://ml-helio.github.io/" target="_blank" rel="noopener" >ML-Helio Conference&lt;/a> - Machine learning in heliophysics&lt;/li>
&lt;li>
&lt;a href="https://dash2025.space.swri.edu/" target="_blank" rel="noopener" >DASH/IHDEA Conference&lt;/a> - Data, analysis, and software in heliophysics&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>NASA SMCE for providing $2k funding and AWS infrastructure&lt;/li>
&lt;li>Shawn Polson for being the community champion leading this effort&lt;/li>
&lt;li>The IHDEA working group for their collaborative partnership in advancing Heliophysics research infrastructure&lt;/li>
&lt;/ul></description></item><item><title>BIDS joins as 2i2c's first premier member organization</title><link>https://2i2c.org/blog/bids-premier-member/</link><pubDate>Wed, 29 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/bids-premier-member/</guid><description>&lt;p>We&amp;rsquo;re thrilled to announce that the
&lt;a href="https://2i2c.org/collaborators/bids/" >Berkeley Institute for Data Science (BIDS)&lt;/a> has joined as 2i2c&amp;rsquo;s first premier member organization! This partnership marks a significant milestone in our sustainability strategy and recognizes a relationship that&amp;rsquo;s been central to 2i2c&amp;rsquo;s story from the very beginning.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Kirstie Whitaker and Chris Holdgraf discussing the partnership at Berkeley on October 16, 2025" srcset="
/blog/bids-premier-member/featured_hu9acfdf60efa1473443bb55ddfe64b6ad_408900_cd9a01efc81bb025c5f95a9746e5d840.webp 400w,
/blog/bids-premier-member/featured_hu9acfdf60efa1473443bb55ddfe64b6ad_408900_1c66ccf9b43ba2fb66e459f500f1f35d.webp 760w,
/blog/bids-premier-member/featured_hu9acfdf60efa1473443bb55ddfe64b6ad_408900_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://2i2c.org/blog/bids-premier-member/featured_hu9acfdf60efa1473443bb55ddfe64b6ad_408900_cd9a01efc81bb025c5f95a9746e5d840.webp"
width="760"
height="428"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>BIDS Executive Director Kirstie Whitaker and 2i2c Executive Director Chris Holdgraf discuss the partnership at the
&lt;a href="https://2i2c.org/blog/bids-premier-member/../bids-premier-membership-event/" >membership launch event&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="what-this-partnership-means">
What this partnership means
&lt;a class="header-anchor" href="#what-this-partnership-means">#&lt;/a>
&lt;/h2>&lt;p>As our &lt;strong>founding premier member&lt;/strong>, BIDS is financially supporting 2i2c while helping us design our member network services and relationships. Together, we&amp;rsquo;ll work on:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Co-designing member services&lt;/strong> - BIDS will provide feedback and guidance as we develop how our member network operates&lt;/li>
&lt;li>&lt;strong>Technical collaboration&lt;/strong> - Partnering on JupyterHub development, cloud infrastructure improvements, and other open source projects&lt;/li>
&lt;li>&lt;strong>Strategic input&lt;/strong> - Advising on 2i2c&amp;rsquo;s direction and approach to strengthening open source communities&lt;/li>
&lt;/ul>
&lt;p>This gives us a foundation for both technical and social collaboration, and we hope it opens doors to deeper partnerships across the Berkeley community.&lt;/p>
&lt;blockquote class="pull-quote">
&lt;p>Berkeley has long been a leader in open source software development. This partnership lets us share our knowledge and support community development of open source infrastructure across institutions.&lt;/p>
&lt;p>&lt;cite>&lt;a href="https://www.linkedin.com/in/kirstiewhitaker" target="_blank" rel="noopener" >Kirstie Whitaker&lt;/a>, BIDS Executive Director&lt;/cite>&lt;/p>
&lt;/blockquote>
&lt;h2 id="why-were-excited-about-this">
Why we&amp;rsquo;re excited about this
&lt;a class="header-anchor" href="#why-were-excited-about-this">#&lt;/a>
&lt;/h2>&lt;p>&lt;strong>For open source:&lt;/strong>
&lt;a href="https://2i2c.org/collaborators/bids/" >BIDS&lt;/a> has been a leader in supporting open source and cross-disciplinary open science for many years - helping to shape projects like NumPy, scikit-image, NetworkX, and
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub&lt;/a>. Their feedback and partnership will help us improve our impact across the entire ecosystem.&lt;/p>
&lt;p>&lt;strong>For sustainability:&lt;/strong> This is the first paying member of our new
&lt;a href="https://2i2c.org/join/" >membership model&lt;/a>, which is a key part of our long-term sustainability strategy. It demonstrates that organizations value what we&amp;rsquo;re building and want to invest in shared open source infrastructure.&lt;/p>
&lt;p>&lt;strong>For 2i2c:&lt;/strong>
&lt;a href="https://2i2c.org/collaborators/bids/" >BIDS&lt;/a> has been part of our story from the beginning, and this partnership recognizes the continuing influence and support we&amp;rsquo;ve received from the organization.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;p>Read the full announcements from our partners:&lt;/p>
&lt;ul>
&lt;li>👉
&lt;a href="https://cdss.berkeley.edu/news/berkeley-institute-data-science-partners-2i2c-open-source-infrastructure" target="_blank" rel="noopener" >CDSS press release: Berkeley Institute for Data Science Partners with 2i2c&lt;/a>&lt;/li>
&lt;li>👉
&lt;a href="https://bids.berkeley.edu/news/shaping-future-open-source-2i2c-and-bids" target="_blank" rel="noopener" >BIDS press release: Shaping the Future of Open Source: 2i2c and BIDS&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>The
&lt;a href="https://2i2c.org/collaborators/bids/" >Berkeley Institute for Data Science&lt;/a> and the entire BIDS team&lt;/li>
&lt;li>
&lt;a href="https://cdss.berkeley.edu/" target="_blank" rel="noopener" >UC Berkeley&amp;rsquo;s College of Computing, Data Science, and Society&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>NASA Openscapes mentors run airborne data machine learning workshop with 401 participants from 68 countries</title><link>https://2i2c.org/blog/openscapes-workshop/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/openscapes-workshop/</guid><description>&lt;p>NASA Openscapes mentors recently hosted a workshop attended by 401 participants from 68 countries to learn how to use airborne data and machine learning for environmental research!&lt;/p>
&lt;p>They gave participants computational environments on a community hub managed by 2i2c to teach skills in data science like image classification with airborne spectroscopy and accessing data from NASA JPL
&lt;a href="https://www.earthdata.nasa.gov/data/projects/aviris" target="_blank" rel="noopener" >AVIRIS-NG data&lt;/a> from Earthdata cloud.&lt;/p>
&lt;p>We&amp;rsquo;re proud to enable participants from all over the world to easily access standardized compute and NASA Earthdata data in the cloud for a seamless learning experience.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;p>👉 Read more at
&lt;a href="https://openscapes.org/blog/2025-09-30-ornl-arset-workshop/" target="_blank" rel="noopener" >openscapes.org/blog/2025-09-30-ornl-arset-workshop/&lt;/a>&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;p>Thank you to the
&lt;a href="https://2i2c.org/collaborators/openscapes/" >Openscapes&lt;/a> team for sharing this post with us, and&lt;/p>
&lt;ul>
&lt;li>Michele Thornton&lt;/li>
&lt;li>Rupesh Shrestha&lt;/li>
&lt;/ul>
&lt;p>for authoring the blog post.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>NASA Openscapes mentors for running a great workshop&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>A thank you to CZI for its impact on 2i2c and Jupyter</title><link>https://2i2c.org/blog/czi-retrospective/</link><pubDate>Wed, 22 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/czi-retrospective/</guid><description>&lt;p>As I attend the
&lt;a href="https://chanzuckerberg.com/science/programs-resources/open-science/" target="_blank" rel="noopener" >CZI Open Science&lt;/a> 2025 meeting, it’s a good moment to reflect on the many ways CZI has positively impacted both 2i2c and the Jupyter Project.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/blog/czi-retrospective/featured_hu4b15a9956c47a7ddfe5d0ed882b19b9a_35602_88d7f2172655d1104b8412a7a835b4e8.webp 400w,
/blog/czi-retrospective/featured_hu4b15a9956c47a7ddfe5d0ed882b19b9a_35602_a3c28a81bc5b1955a51321ea2f296345.webp 760w,
/blog/czi-retrospective/featured_hu4b15a9956c47a7ddfe5d0ed882b19b9a_35602_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/czi-retrospective/featured_hu4b15a9956c47a7ddfe5d0ed882b19b9a_35602_88d7f2172655d1104b8412a7a835b4e8.webp"
width="760"
height="421"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The funders who support organizations like 2i2c and Jupyter have a difficult task. In the day-to-day work of building open infrastructure, it’s easy to focus on the next challenge or grant, and lose sight of the cumulative, long-term impact of strategic support. This post is an attempt to pause and celebrate that impact.&lt;/p>
&lt;p>CZI has played a unique role in the open source and open science ecosystem since its creation. It has taken an approach to funding and coalition-building that has genuinely changed how many think about supporting open source. Their model has driven an incredible amount of impact, and I&amp;rsquo;m very grateful for our collaboration.&lt;/p>
&lt;p>Here are a few ways their support has stood out.&lt;/p>
&lt;p>&lt;em>This was collected quickly, so please let us know of other ways we may have missed! And most importantly, we&amp;rsquo;re only trying to gather a high level view here, so we&amp;rsquo;re including many efforts where all the work was led by teams and organizations &lt;em>other&lt;/em> than 2i2c/Jupyter. The
&lt;a href="https://jupyter.org" target="_blank" rel="noopener" >Jupyter Community&lt;/a> has many leaders that are part of this effort as well.&lt;/em>&lt;/p>
&lt;h2 id="strengthening-the-foundations-of-jupyter">
Strengthening the foundations of Jupyter
&lt;a class="header-anchor" href="#strengthening-the-foundations-of-jupyter">#&lt;/a>
&lt;/h2>&lt;p>Through its Essential Open Source Software for Science (EOSS) program, CZI has funded several initiatives in the
&lt;a href="https://jupyter.org" target="_blank" rel="noopener" >Jupyter ecosystem&lt;/a> that have strengthened the project in foundational ways. Here are a few that stand out:&lt;/p>
&lt;p>&lt;strong>JupyterHub&amp;rsquo;s Contributor in Residence:&lt;/strong> Allowed JupyterHub to
&lt;a href="https://blog.jupyter.org/lessons-learned-from-jupyters-contributor-in-residence-pilot-427e2b361a7b" target="_blank" rel="noopener" >explore a new maintenance and community support model&lt;/a> and support maintainer growth. Georgiana&amp;rsquo;s journey from this program to becoming 2i2c&amp;rsquo;s first engineer shows how CZI&amp;rsquo;s investment in people creates lasting impact.&lt;/p>
&lt;p>&lt;strong>Community Strategic Lead:&lt;/strong> Focused on
&lt;a href="https://chanzuckerberg.com/eoss/proposals/jupyterhub-community-strategic-lead/" target="_blank" rel="noopener" >diversity, equity, and inclusion at a strategic level&lt;/a>. This created space for us to rethink &lt;em>how&lt;/em> we build our teams to be more accessible and equitable. It helped us create pathways for underrepresented groups to become community leaders and led to a key partnership with
&lt;a href="https://book.the-turing-way.org/" target="_blank" rel="noopener" >The Turing Way&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Real-Time Collaboration:&lt;/strong> Built the foundation for
&lt;a href="https://chanzuckerberg.com/eoss/proposals/real-time-collaboration-in-jupyter/" target="_blank" rel="noopener" >collaborative notebook editing&lt;/a>, which is very useful for remote scientific collaboration. This was complex technical work that involved collaboration with many stakeholders. It laid a foundation that Jupyter continues to build upon, and may facilitate AI-based workflows in unexpected ways.&lt;/p>
&lt;p>&lt;strong>Jupyter Accessibility:&lt;/strong> Funded key improvements in
&lt;a href="https://jupyter-accessibility.readthedocs.io/en/latest/funding/czi-grant-roadmap.html" target="_blank" rel="noopener" >accessibility for JupyterLab and the broader Jupyter stack&lt;/a>, including WCAG compliance, automated testing, and documentation. This was one of the first times an open source community received significant support for accessibility and internationalization, highlighting CZI&amp;rsquo;s leadership.&lt;/p>
&lt;p>They also enabled a wide variety of contributions throughout the Jupyter ecosystem that can be traced back to the capacity that CZI&amp;rsquo;s funding provided for core support alongside broader initiatives.&lt;/p>
&lt;h2 id="enabling-2i2c-to-grow-from-an-idea-to-an-organization">
Enabling 2i2c to grow from an idea to an organization
&lt;a class="header-anchor" href="#enabling-2i2c-to-grow-from-an-idea-to-an-organization">#&lt;/a>
&lt;/h2>&lt;p>CZI also played a key role in 2i2c&amp;rsquo;s birth, growth, direction, and impact. When 2i2c was only an idea, the possibily of initial support from CZI was pivotal in helping us turn it into a reality. Then as the organization took shape and started to grow, this support gave us the strategic capacity to develop key frameworks for
&lt;a href="https://2i2c.org/blog/czi-retrospective/../../2025/good-citizen/" >healthy open source contribution practices&lt;/a>,
&lt;a href="https://2i2c.org/blog/czi-retrospective/../../2024/value-proposition/" >our value propositions&lt;/a>, and ideas around
&lt;a href="https://2i2c.org/blog/czi-retrospective/../../2024/funding-community-networks/" >community network funding&lt;/a>. It was a stepping stone towards building out our own
&lt;a href="https://2i2c.org/join" target="_blank" rel="noopener" >sustainability model via membership&lt;/a>.&lt;/p>
&lt;p>Here are a few milestone moments:&lt;/p>
&lt;p>&lt;strong>Our Seed funding (2020)&lt;/strong> CZI provided core support to bootstrap 2i2c from its inception, funding organizational capacity rather than just technical deliverables. This was critical, enabling strategic partnerships, community coordination, and 2i2c&amp;rsquo;s first hires (Georgiana Dolocan, formerly the CZI-funded
&lt;a href="https://blog.jupyter.org/the-jupyterhub-and-binder-contributor-in-residence-56708d1e3069" target="_blank" rel="noopener" >JupyterHub Contributor in Residence&lt;/a>, and Chris Holdgraf, 2i2c&amp;rsquo;s Executive Director). This was the primary funding that drove our creation and operations for the first three years. We
&lt;a href="https://2i2c.org/report-czi-2021" target="_blank" rel="noopener" >published a comprehensive report and retrospective&lt;/a> documenting the impact of this seed funding.&lt;/p>
&lt;p>&lt;strong>Catalyzing Global Communities (2022)&lt;/strong> This collaborative grant brought together six organizations (2i2c, The Carpentries, CSCCE, IOI, MetaDocencia, Open Life Science) to
&lt;a href="https://2i2c.org/blog/czi-retrospective/../../2022/czi-global-communities-proposal/" >provide cloud infrastructure and training for communities in Latin America and Africa&lt;/a>. The project emphasized &amp;ldquo;train the trainers&amp;rdquo; approaches and community co-leadership. It was a much bigger challenge than we all realized, and the relationships between our organizations grew stronger as a result.&lt;/p>
&lt;p>&lt;strong>Strategic Support for Sustainability (2024)&lt;/strong> CZI provided a
&lt;a href="https://2i2c.org/blog/czi-retrospective/../../2024/funding-czi/" >bridge funding gift to sustain 2i2c&amp;rsquo;s mission&lt;/a> during a critical growth phase. This gave us the runway to refine our service model and explore paths to financial sustainability. Combined with funding from
&lt;a href="https://2i2c.org/blog/czi-retrospective/../../2024/funding-navigation/" >The Navigation Fund&lt;/a>, this gave 2i2c approximately two years for strategic planning.&lt;/p>
&lt;h3 id="what-makes-czis-approach-different">
What Makes CZI&amp;rsquo;s Approach Different?
&lt;a class="header-anchor" href="#what-makes-czis-approach-different">#&lt;/a>
&lt;/h3>&lt;p>Here are a few things that have stood out to me about CZI&amp;rsquo;s unique approach to funding:&lt;/p>
&lt;p>&lt;strong>Funding the foundation of open infrastructure:&lt;/strong> Through its EOSS program, CZI recognized that science was building on open source infrastructure that was often under-supported. Explicitly targeting that foundation demonstrated the need to fund core technology, not just new innovation.&lt;/p>
&lt;p>&lt;strong>Funding communities, not just code:&lt;/strong> CZI made efforts to support projects that invested in social infrastructure, recognizing that building open source is a deeply social process that needs social skills and capacity to succeed.&lt;/p>
&lt;p>&lt;strong>Funding connections in a network:&lt;/strong> CZI took a network approach, actively building connections &lt;em>between&lt;/em> its grantees. It flew us together annually for its open science meeting, made targeted efforts for collaborative grants, and connected grantees to work together.&lt;/p>
&lt;p>&lt;strong>Actively growing that network:&lt;/strong> CZI made clear efforts to bring in new participants, particularly from communities in Latin America and Africa, and was thoughtful about respecting the agency and leadership of these communities.&lt;/p>
&lt;p>&lt;strong>Developing its own expertise and understanding:&lt;/strong> CZI also &lt;em>builds its own tooling&lt;/em>, often in partnership with open source projects. This gives its team empathy for our challenges and a deeper institutional understanding of the open source world, leading to more impactful contributions.&lt;/p>
&lt;h2 id="thank-you-czi">
Thank You, CZI
&lt;a class="header-anchor" href="#thank-you-czi">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;re profoundly grateful to CZI for their support for 2i2c, Jupyter, and the broader open source ecosystem. Their investments have enabled Jupyter to serve millions of scientists more effectively, allowed 2i2c to grow from an idea to the organization it is today, and enabled contributions that benefit the entire open science ecosystem.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/blog/czi-retrospective/chris-fernando_huf9bfa379e9f41692b17413d59fb58130_29702_d6b358b9298eeb7676c7d53cb2805bc5.webp 400w,
/blog/czi-retrospective/chris-fernando_huf9bfa379e9f41692b17413d59fb58130_29702_cf7a3d6665a08ac37896e2cbc2690212.webp 760w,
/blog/czi-retrospective/chris-fernando_huf9bfa379e9f41692b17413d59fb58130_29702_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://2i2c.org/blog/czi-retrospective/chris-fernando_huf9bfa379e9f41692b17413d59fb58130_29702_d6b358b9298eeb7676c7d53cb2805bc5.webp"
width="293"
height="220"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Thanks, CZI, for all the work you&amp;rsquo;ve done!&lt;/p></description></item><item><title>A helpful contribution to our JupyterHub SSH README from OpenScapes</title><link>https://2i2c.org/blog/openscapes-readme-contribution/</link><pubDate>Tue, 21 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/openscapes-readme-contribution/</guid><description>&lt;p>We love when collaborators contribute back to the tools we maintain! Andy Teucher from
&lt;a href="https://2i2c.org/collaborators/openscapes/" >OpenScapes&lt;/a> recently
&lt;a href="https://github.com/yuvipanda/jupyter-sshd-proxy/pull/11" target="_blank" rel="noopener" >fixed a documentation issue&lt;/a> in &lt;code>jupyter-sshd-proxy&lt;/code> that benefits everyone using the tool.&lt;/p>
&lt;p>
&lt;a href="https://github.com/yuvipanda/jupyter-sshd-proxy" target="_blank" rel="noopener" >&lt;code>jupyter-sshd-proxy&lt;/code>&lt;/a> is a tool originally created by Yuvi to help 2i2c communities connect to their JupyterHub instances via SSH. Andy ran into an issue when using it with the VS Code fork that uses the
&lt;a href="https://github.com/jeanp413/open-remote-ssh" target="_blank" rel="noopener" >&lt;code>open-remote-ssh&lt;/code>&lt;/a> extension - it failed unless double quotes were used around the authorization token in the &lt;code>ProxyCommand&lt;/code>.&lt;/p>
&lt;p>Through experimentation, Andy figured out the fix and
&lt;a href="https://github.com/yuvipanda/jupyter-sshd-proxy/pull/11" target="_blank" rel="noopener" >contributed it back to the README&lt;/a>. Now everyone using this tool will have clearer documentation.&lt;/p>
&lt;p>While small, we think this is a nice example of a
&lt;a href="https://2i2c.org/blog/foundational-contributions/" >&amp;ldquo;Foundational contributions&amp;rdquo;&lt;/a> from a community:&lt;/p>
&lt;ul>
&lt;li>2i2c creates and maintains open source tools to help our communities&lt;/li>
&lt;li>Our communities use those tools and run into issues&lt;/li>
&lt;li>They debug, figure out solutions, and contribute improvements back&lt;/li>
&lt;li>Everyone benefits from the improvements&lt;/li>
&lt;/ul>
&lt;p>This is exactly how we want 2i2c to help our communities - by making it easy for them to contribute back to the ecosystem and strengthen the tools everyone relies on.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://github.com/ateucher" target="_blank" rel="noopener" >Andy Teucher&lt;/a> for the contribution and debugging!&lt;/li>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/openscapes/" >OpenScapes&lt;/a> for being great collaborators places where can work with people like Andy&lt;/li>
&lt;/ul></description></item><item><title>Communities learning from one another - Project Pythia and ICESat-2 Hackweeks</title><link>https://2i2c.org/blog/pythia-icesat2-synergy/</link><pubDate>Tue, 21 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/pythia-icesat2-synergy/</guid><description>&lt;p>We wanted to share a short vignette about two of our communities learning from one another.&lt;/p>
&lt;p>At the latest
&lt;a href="https://docs.google.com/document/d/e/2PACX-1vQWQrgHs_G5XyNH5GTFYydH_woUZcyZibdxPUWLpqFUYs20WM93kdx5onwOaizC_3-tfnbreMNQbYAp/pub" target="_blank" rel="noopener" >Project Pythia community meeting&lt;/a>,
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> met with representatives from
&lt;a href="https://2i2c.org/collaborators/cryocloud/" >ICESat-2&lt;/a> to share learning about notebooks and cookbooks in educational settings.&lt;/p>
&lt;p>Anthony Arendt from UW&amp;rsquo;s eScience Institute shared how they&amp;rsquo;ve used educational notebooks in their hackweek programs. The discussion explored ways to improve cookbooks, especially for large collections that require different computational environments, sparking ideas about higher-level abstractions for organizing educational content. There is a lot of overlap in the needs and workflows of these communities, and we&amp;rsquo;re hopeful they can find ways to re-use one another&amp;rsquo;s ideas, content, and infrastructure.&lt;/p>
&lt;p>One of our service goals is to make it easier for our member communities to &lt;em>learn from one another&lt;/em> - using standardized tools and infrastructure means we can learn what works, what doesn&amp;rsquo;t, and collectively improve our workflows more quickly. We&amp;rsquo;re working on ways to encourage this kind of interaction in our member networks, so we wanted to celebrate this little win.&lt;/p>
&lt;h2 id="learn-more-about-these-communities">
Learn more about these communities
&lt;a class="header-anchor" href="#learn-more-about-these-communities">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> - An educational resource for geoscience computing with open-source Python&lt;/li>
&lt;li>
&lt;a href="https://cookbooks.projectpythia.org/" target="_blank" rel="noopener" >Project Pythia Cookbooks&lt;/a> - Domain-specific example workflows for geoscience&lt;/li>
&lt;li>
&lt;a href="https://icesat-2.hackweek.io/" target="_blank" rel="noopener" >ICESat-2 Hackweeks&lt;/a> - Collaborative learning events combining tutorials, peer learning, and team projects&lt;/li>
&lt;/ul></description></item><item><title>TIL: A few ways to track web traffic for open source projects</title><link>https://2i2c.org/blog/web-traffic-tracking-open-source/</link><pubDate>Sun, 19 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/web-traffic-tracking-open-source/</guid><description>&lt;p>Understanding how people discover and navigate your project&amp;rsquo;s web presence is valuable for open source communities, but there are a lot of options out there and many maintainers may not know about them. Recently Chris did some research to improve the web analytics for
&lt;a href="https://jupyter.org" target="_blank" rel="noopener" >Jupyter&lt;/a>, and learned about several options for tracking web traffic&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. Here&amp;rsquo;s a quick report of what stood out.&lt;/p>
&lt;h2 id="three-analytics-tools-we-found-helpful">
Three analytics tools we found helpful
&lt;a class="header-anchor" href="#three-analytics-tools-we-found-helpful">#&lt;/a>
&lt;/h2>&lt;p>&lt;strong>
&lt;a href="https://plausible.io/" target="_blank" rel="noopener" >Plausible.io&lt;/a>&lt;/strong> - A privacy-friendly, GDPR-compliant analytics service&lt;/p>
&lt;ul>
&lt;li>Clean interface with public dashboards (see
&lt;a href="https://plausible.io/jupyter.org" target="_blank" rel="noopener" >Jupyter&amp;rsquo;s dashboard&lt;/a>)&lt;/li>
&lt;li>Paid service but offers 15% discount for open source projects&lt;/li>
&lt;li>Cost scales with traffic volume. It can get expensive for a project as big as Jupyter!&lt;/li>
&lt;li>This is the service we ultimately ended up using&amp;hellip;&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>
&lt;a href="https://docs.readthedocs.com/platform/stable/traffic-analytics.html" target="_blank" rel="noopener" >ReadTheDocs Analytics&lt;/a>&lt;/strong> - Built-in traffic tracking for documentation sites&lt;/p>
&lt;ul>
&lt;li>Available as a free add-on for ReadTheDocs projects, it provides traffic data specific to documentation pages.&lt;/li>
&lt;li>There&amp;rsquo;s no additional cost if already using ReadTheDocs, though if you&amp;rsquo;re on a business plan you may need to pay for it.&lt;/li>
&lt;li>The analytics are a bit barebones, but quite useful for learning where your readers are navigating.&lt;/li>
&lt;li>Enable in &lt;code>Settings&lt;/code> &amp;gt; &lt;code>Addons&lt;/code> &amp;gt; &lt;code>Analytics&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>
&lt;a href="https://docs.github.com/en/repositories/viewing-activity-and-data-for-your-repository/viewing-traffic-to-a-repository" target="_blank" rel="noopener" >GitHub Repository Analytics&lt;/a>&lt;/strong> - Native analytics in GitHub.&lt;/p>
&lt;ul>
&lt;li>Shows clones, views, and referring sites. This is also fairly barebones, but it&amp;rsquo;s really useful to see who is actually looking at your repository.&lt;/li>
&lt;li>Free for all GitHub repositories.&lt;/li>
&lt;li>Access via &lt;code>Insights&lt;/code> &amp;gt; &lt;code>Traffic&lt;/code> on any repository.&lt;/li>
&lt;/ul>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/jupyter/jupyter.github.io/issues/815" target="_blank" rel="noopener" >GitHub issue coordinating Jupyter&amp;rsquo;s analytics work&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://plausible.io/jupyter.org" target="_blank" rel="noopener" >Plausible.io public dashboard for jupyter.org&lt;/a> (this might be down for now, but we&amp;rsquo;re working to bring it back up)&lt;/li>
&lt;li>
&lt;a href="https://docs.readthedocs.com/platform/stable/traffic-analytics.html" target="_blank" rel="noopener" >ReadTheDocs Analytics documentation&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://docs.github.com/en/rest/metrics/traffic?apiVersion=2022-11-28" target="_blank" rel="noopener" >GitHub Traffic Analytics API&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>Thanks in particular to
&lt;a href="https://github.com/jasongrout" target="_blank" rel="noopener" >Jason Grout&lt;/a> from the
&lt;a href="https://2i2c.org/collaborators/jupyter/" >Jupyter Executive Council&lt;/a> for collaborating on this investigation and helping test these tools.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Chris has been
&lt;a href="https://2i2c.org/blog/web-traffic-tracking-open-source/../executive-council-updates/" >serving on the Jupyter Executive Council&lt;/a> as a
&lt;a href="https://2i2c.org/blog/web-traffic-tracking-open-source/../foundational-contributions/" >Foundational contribution&lt;/a>. This was related to that effort!&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Celebrating BIDS as 2i2c's first premier member at UC Berkeley</title><link>https://2i2c.org/blog/bids-premier-membership-event/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/bids-premier-membership-event/</guid><description>&lt;p>We&amp;rsquo;re celebrating
&lt;a href="https://2i2c.org/collaborators/bids/" >BIDS (the Berkeley Institute for Data Science)&lt;/a> as 2i2c&amp;rsquo;s first premier member at an event at UC Berkeley on &lt;strong>Thursday, October 15th&lt;/strong>. If you&amp;rsquo;re in the Berkeley area, we&amp;rsquo;d love for you to join us!
&lt;a href="https://events.berkeley.edu/BIDS/event/306419-ospo-monthly-meetup-launching-the-bids-membership-of-" target="_blank" rel="noopener" >Event page here&lt;/a>.&lt;/p>
&lt;p>This is a milestone for 2i2c and demonstrates BIDS&amp;rsquo;s commitment to open infrastructure and partnership. As our first premier member under our
&lt;a href="https://2i2c.org/join/" >new membership model&lt;/a>, BIDS is helping us build a more sustainable path forward while strengthening our collaboration for shared impact in open science.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./featured.png" alt="" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://events.berkeley.edu/BIDS/event/306419-ospo-monthly-meetup-launching-the-bids-membership-of-" target="_blank" rel="noopener" >Event page and registration&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7381377448354988032" target="_blank" rel="noopener" >LinkedIn announcement&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://bsky.app/profile/ucbids.bsky.social/post/3m2mnocu2wc2m" target="_blank" rel="noopener" >Bluesky announcement&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/join/" >Our membership tiers and information page&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/" >Other collaborators in our network&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> for funding the strategic roles that have led to this new membership model.&lt;/li>
&lt;/ul></description></item><item><title>Fixing the mybinder.org usage analytics archive</title><link>https://2i2c.org/blog/mybinder-analytics-fix/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/mybinder-analytics-fix/</guid><description>&lt;p>The analytics archive at &lt;code>archive.analytics.mybinder.org&lt;/code> powers the
&lt;a href="https://hub.jupyter.org/binder-data/" target="_blank" rel="noopener" >mybinder.org usage dashboards&lt;/a> and provides a
&lt;a href="https://github.com/jupyterhub/binder-data" target="_blank" rel="noopener" >daily-published dataset&lt;/a> that researchers and communities use to understand how Binder is being used across different domains and scientific communities.&lt;/p>
&lt;p>While updating our
&lt;a href="https://2i2c.org/blog/mybinder-analytics-fix/../binder-report-q3/" >quarterly Binder impact report&lt;/a>, we discovered the archive index page had stopped updating. The analytics publisher was writing index files to temporary storage before uploading to Google Cloud Storage, but for some reason the upload step stopped working. We
&lt;a href="https://github.com/jupyterhub/mybinder.org-deploy/pull/3462" target="_blank" rel="noopener" >deployed a fix&lt;/a> that eliminates the temporary files entirely - the code now generates the HTML index as a string in memory and uploads directly.&lt;/p>
&lt;figure id="figure-the-mybinderorg-analytics-archivehttpsarchiveanalyticsmybinderorg-shows-a-list-of-daily-usage-reports-that-anybody-can-download">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./featured.png" alt="The [mybinder.org analytics archive](https://archive.analytics.mybinder.org) shows a list of daily usage reports that anybody can download." loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The
&lt;a href="https://archive.analytics.mybinder.org" target="_blank" rel="noopener" >mybinder.org analytics archive&lt;/a> shows a list of daily usage reports that anybody can download.
&lt;/figcaption>&lt;/figure>
&lt;p>Fortunately, we didn&amp;rsquo;t lose any data! Thanks to some smart design decisions, the daily analytics files were being collected properly the entire time, only the index page listing them was broken. You can find
&lt;a href="https://archive.analytics.mybinder.org" target="_blank" rel="noopener" >the full archive here&lt;/a>.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/jupyterhub/mybinder.org-deploy/pull/3462" target="_blank" rel="noopener" >Pull request with the fix&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://hub.jupyter.org/binder-data/" target="_blank" rel="noopener" >mybinder.org usage dashboards&lt;/a>&lt;/li>
&lt;li>The
&lt;a href="https://github.com/jupyterhub/binder-data" target="_blank" rel="noopener" >&lt;code>binder-data/&lt;/code> repository&lt;/a> is where we aggregate and publish archive data to be more accessible.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/blog/mybinder-analytics-fix/../binder-report-q3/" >Our quarterly impact report from mybinder.org&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub community&lt;/a> for their collaboration on mybinder.org infrastructure&lt;/li>
&lt;/ul></description></item><item><title>Impact report from 2i2c's Binder federation instance</title><link>https://2i2c.org/blog/binder-report/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/binder-report/</guid><description>&lt;p>The
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >mybinder.org&lt;/a> service provides reproducible and interactive computational environments for the open science community. It is financially supported by a
&lt;a href="https://mybinder.readthedocs.io/en/latest/about/federation.html" target="_blank" rel="noopener" >federation of BinderHubs&lt;/a>.
2i2c is part of the team that manages mybinder.org, and we&amp;rsquo;re committed to supporting this critical infrastructure for open science and reproducibility.&lt;/p>
&lt;p>We developed a more
&lt;a href="https://2i2c.org/blog/binder-report/../binder-singlenode/" >cost-efficient process for deploying BinderHub on a single VM&lt;/a> and are now running a BinderHub at
&lt;a href="https://2i2c.mybinder.org" target="_blank" rel="noopener" >2i2c.mybinder.org&lt;/a>.
This post highlights the impact we&amp;rsquo;ve had through our support of the mybinder.org federation, we&amp;rsquo;ll update it periodically.&lt;/p>
&lt;h2 id="usage-over-time">
Usage over time
&lt;a class="header-anchor" href="#usage-over-time">#&lt;/a>
&lt;/h2>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Binder launches" srcset="
/blog/binder-report/featured_hu0f9f1ae8d80fa109b602b80004fe12f0_156400_bd3dc558251d8d2f9ceb45632df1537f.webp 400w,
/blog/binder-report/featured_hu0f9f1ae8d80fa109b602b80004fe12f0_156400_43138623992843945bb647029e00a3e0.webp 760w,
/blog/binder-report/featured_hu0f9f1ae8d80fa109b602b80004fe12f0_156400_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/binder-report/featured_hu0f9f1ae8d80fa109b602b80004fe12f0_156400_bd3dc558251d8d2f9ceb45632df1537f.webp"
width="760"
height="673"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>&lt;em>Here are weekly launches on mybinder.org. Launches from &lt;code>2i2c.mybinder.org&lt;/code> are in red. Source:
&lt;a href="https://hub.jupyter.org/binder-data/" target="_blank" rel="noopener" >mybinder analytics dashboard&lt;/a>.&lt;/em>&lt;/p>
&lt;p>&lt;strong>In Q1 of 2025&lt;/strong>, &lt;code>2i2c.mybinder.org&lt;/code> launched &lt;strong>417,048 reproducible sessions&lt;/strong>. In this time, mybinder.org was primarily driven by our
&lt;a href="https://2i2c.org/blog/binder-report/../binder-singlenode/" >new Hetzner node&lt;/a> as we worked with GESIS to stabilize their own BinderHub instance.&lt;/p>
&lt;p>&lt;strong>In Q2 of 2025&lt;/strong>, &lt;code>2i2c.mybinder.org&lt;/code> launched &lt;strong>249,750 reproducible sessions&lt;/strong>. In this time, we worked with
&lt;a href="https://2i2c.org/collaborators/gesis/" >GESIS&lt;/a> to deploy their BinderHub instance on the same Hetzner node setup, which let us distribute more of Binder&amp;rsquo;s load onto them.&lt;/p>
&lt;p>&lt;strong>In Q3 of 2025&lt;/strong>, &lt;code>2i2c.mybinder.org&lt;/code> launched &lt;strong>118,083 reproducible sessions&lt;/strong>. We experienced a typical summer dip in sessions, had to
&lt;a href="https://2i2c.org/blog/binder-report/../mybinder-analytics-fix/" >fix the analytics dashboard&lt;/a> as well as
&lt;a href="https://2i2c.org/blog/binder-report/../mybinder-antiabuse-scanning/" >fix a TCP scanning abuse case&lt;/a> that briefly brought down the 2i2c node.&lt;/p>
&lt;h2 id="where-weve-made-improvements">
Where we&amp;rsquo;ve made improvements
&lt;a class="header-anchor" href="#where-weve-made-improvements">#&lt;/a>
&lt;/h2>&lt;p>As part of this effort, we&amp;rsquo;ve made several improvements to the Binder and JupyterHub ecosystem. Here are a few links where you can read more:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/blog/binder-report/../binder-singlenode/" >Deploying BinderHub on a single VM with k3s&lt;/a> - Our approach to making BinderHub deployment cheaper and simpler&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/blog/binder-report/../jetstream-binderhub/" >Hetzner cloud infrastructure experience&lt;/a> - Cost-effective cloud hosting for mybinder.org&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/blog/binder-report/../mybinder-antiabuse-scanning/" >Combating TCP scanning abuse on mybinder.org&lt;/a> - Developing anti-abuse tools to prevent an abuse use-case.&lt;/li>
&lt;li>
&lt;a href="https://hub.jupyter.org/binder-data/" target="_blank" rel="noopener" >Improving Binder&amp;rsquo;s usage dashboard&lt;/a> - This helps us create posts like these and is useful to others as well.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/blog/binder-report/../../2024/jupyterhub-binderhub-gesis/" >Integrating BinderHub with JupyterHub&lt;/a> - Working with
&lt;a href="https://2i2c.org/collaborators/gesis/" >GESIS&lt;/a> to bring Binder&amp;rsquo;s dynamic image building capabilities to persistent JupyterHubs, empowering users to manage their own environments&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>This work is made possible by:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/gesis/" >GESIS&lt;/a> for their continued support as mybinder.org federation members&lt;/li>
&lt;li>The
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub community&lt;/a> for collaboration and support&lt;/li>
&lt;li>Our
&lt;a href="https://2i2c.org/members/" >member communities&lt;/a> whose fees support this work&lt;/li>
&lt;/ul></description></item><item><title>Combating tcp scanning on mybinder.org with the tcpflowkiller</title><link>https://2i2c.org/blog/mybinder-antiabuse-scanning/</link><pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/mybinder-antiabuse-scanning/</guid><description>&lt;p>We&amp;rsquo;ve deployed a new tool to &lt;code>mybinder.org&lt;/code> that automatically detects and stops port scanning activity, helping us maintain service reliability while being responsible citizens of the internet.&lt;/p>
&lt;p>Port scanning is a common part of network-based exploits, and many server hosts prohibit this activity (including Hetzner, where the 2i2c &lt;code>mybinder.org&lt;/code> infrastructure lives). We developed a little tool called
&lt;a href="https://github.com/cryptnono/cryptnono/pull/46" target="_blank" rel="noopener" >tcpflowkiller&lt;/a> as part of the
&lt;a href="https://github.com/cryptnono/cryptnono" target="_blank" rel="noopener" >cryptnono&lt;/a> project (our anti-abuse set of tools for hosted JupyterHub and Binder infrastructure) to automatically kill processes that exhibit port scanning behavior. This reduces the likelihood of triggering our server host&amp;rsquo;s abuse policies and helps keep &lt;code>mybinder.org&lt;/code> running reliably.&lt;/p>
&lt;h2 id="why-this-matters">
Why this matters
&lt;a class="header-anchor" href="#why-this-matters">#&lt;/a>
&lt;/h2>&lt;p>As providers of public compute, it&amp;rsquo;s our responsibility to make sure people can&amp;rsquo;t use our infrastructure to abuse others. This is part of being responsible citizens of the internet. It also saves us time in dealing with outages because cloud providers (understandably) block access when they suspect there is abuse.&lt;/p>
&lt;p>Hetzner and similar hosts have many benefits (including
&lt;a href="https://2i2c.org/blog/mybinder-antiabuse-scanning/../binder-singlenode/" >significant cost savings&lt;/a>), and tools like tcpflowkiller help keep hubs and binders running smoothly on such hosts, which have different abuse policies than the big commercial cloud providers.&lt;/p>
&lt;p>AWS and other cloud providers have proprietary ways to combat abuse (like
&lt;a href="https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html" target="_blank" rel="noopener" >AWS GuardDuty&lt;/a>). We could have spent our time investing in developing rules there. Instead, contributing to cryptnono helps provide the same set of features in a cloud-agnostic way, in line with
&lt;a href="https://2i2c.org/open-practices/" target="_blank" rel="noopener" >our principles&lt;/a> of supporting open infrastructure that gives communities control over their infrastructure.&lt;/p>
&lt;p>This tool
&lt;a href="https://github.com/jupyterhub/mybinder.org-deploy/pull/3436" target="_blank" rel="noopener" >has now been deployed to mybinder.org&lt;/a>, and we&amp;rsquo;ll monitor its effectiveness over time. We may roll this out to 2i2c public BinderHubs in the future based on patterns we observe.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/cryptnono/cryptnono/pull/46" target="_blank" rel="noopener" >tcpflowkiller pull request&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyterhub/mybinder.org-deploy/pull/3436" target="_blank" rel="noopener" >mybinder.org deployment&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://en.wikipedia.org/wiki/Port_scanner" target="_blank" rel="noopener" >Port scanning on Wikipedia&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/gesis/" >GESIS&lt;/a> for their continued support of &lt;code>mybinder.org&lt;/code> and to
&lt;a href="https://github.com/rgaiacs" target="_blank" rel="noopener" >Raniere Silva&lt;/a> for collaborating on this deployment with us.&lt;/li>
&lt;/ul></description></item><item><title>TIL: GitHub Action secrets are only available from non-forked repositories</title><link>https://2i2c.org/blog/github-action-secrets-forked-repositories/</link><pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/github-action-secrets-forked-repositories/</guid><description>&lt;p>If you&amp;rsquo;ve worked with GitHub Actions in open source projects, you might encounter a hard-to-debug error where repository secrets are simply &lt;em>empty&lt;/em>. That&amp;rsquo;s probably because the PR is from a forked repository! Here&amp;rsquo;s a little learning we had after losing a bunch of time figuring this out:&lt;/p>
&lt;h2 id="our-pr-from-a-fork-was-using-empty-strings-for-repository-secrets">
Our PR from a fork was using empty strings for repository secrets
&lt;a class="header-anchor" href="#our-pr-from-a-fork-was-using-empty-strings-for-repository-secrets">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://github.com/executablebooks/github-activity" target="_blank" rel="noopener" >&lt;code>github-activity&lt;/code>&lt;/a> is a tool we help maintain for
&lt;a href="https://github-activity.readthedocs.io/en/latest/#how-we-define-contributors-in-the-reports" target="_blank" rel="noopener" >generating changelogs from a wider variety of contributions&lt;/a> than GitHub&amp;rsquo;s defaults. We needed to set a secret to raise the API rate limits for the tool&amp;rsquo;s tests. These tests pull data from repositories outside of the &lt;code>github-activity&lt;/code> repository itself, which quickly hit GitHub&amp;rsquo;s rate limits without authentication.&lt;/p>
&lt;p>The problem seemed straightforward at first: we added the secret, but the workflow was acting as if the secret didn&amp;rsquo;t exist at all. After updating the code to explicitly check for empty strings, we discovered the authentication token was actually &lt;em>an empty string&lt;/em>, even though it had been set.&lt;/p>
&lt;p>After some debugging, we uncovered the root cause: &lt;strong>the PR was opened from a fork of &lt;code>github-activity&lt;/code>&lt;/strong>. GitHub intentionally
&lt;a href="https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets" target="_blank" rel="noopener" >makes secrets appear as empty strings when a PR originates from a forked repository&lt;/a>. This is a security measure to prevent unauthorized access to sensitive credentials.&lt;/p>
&lt;h2 id="a-quick-fix-re-open-the-pr-from-the-base-repository">
A quick fix: re-open the PR from the base repository
&lt;a class="header-anchor" href="#a-quick-fix-re-open-the-pr-from-the-base-repository">#&lt;/a>
&lt;/h2>&lt;p>The immediate fix was simple: re-open the PR from a branch in the base repository rather than from the fork. This worked perfectly, but it&amp;rsquo;s not a sustainable solution for open source projects that rely on community contributions from forks.
We don&amp;rsquo;t want to create a dynamic where maintainers have different PR workflows because they&amp;rsquo;re operating on the base repository.&lt;/p>
&lt;h2 id="how-use-secrets-with-forked-repositories-in-a-safe-ish-way">
How use secrets with forked repositories in a safe-ish way
&lt;a class="header-anchor" href="#how-use-secrets-with-forked-repositories-in-a-safe-ish-way">#&lt;/a>
&lt;/h2>&lt;p>If you need to make secrets available to PRs from forks, there are a few approaches we learned about, each with security trade-offs:&lt;/p>
&lt;h3 id="the-pull_request_target-workflow">
The &lt;code>pull_request_target&lt;/code> workflow
&lt;a class="header-anchor" href="#the-pull_request_target-workflow">#&lt;/a>
&lt;/h3>&lt;p>GitHub provides a
&lt;a href="https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#controlling-changes-from-forks-to-workflows-in-public-repositories" target="_blank" rel="noopener" >&lt;code>pull_request_target&lt;/code> workflow&lt;/a> that can access secrets even when triggered by forked PRs. In this case, GitHub will &lt;strong>always run the test suite on &lt;code>main&lt;/code>&lt;/strong>, instead of any changes your PR introduces.&lt;/p>
&lt;p>&lt;strong>Why this is dangerous&lt;/strong>: malicious actors could add &lt;em>code&lt;/em> to a PR that exfiltrates your secrets (for example, Python code that prints &lt;code>os.environ[&amp;quot;MY_SECRET&amp;quot;]&lt;/code>).&lt;/p>
&lt;p>As a result, &lt;strong>only use secrets that you&amp;rsquo;re OK with being public&lt;/strong>. In this case, we generated a read-only token with restricted permissions. However, this is still kinda risky so use at your own peril.&lt;/p>
&lt;p>If your repository workflows &lt;em>require&lt;/em> a secret that &lt;em>absolutely cannot be public&lt;/em> (e.g., a publishing key for a package repository), try a method like the following:&lt;/p>
&lt;h3 id="using-github-environments-for-granular-control">
Using GitHub Environments for granular control
&lt;a class="header-anchor" href="#using-github-environments-for-granular-control">#&lt;/a>
&lt;/h3>&lt;p>A safer approach is to use
&lt;a href="https://docs.github.com/en/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments" target="_blank" rel="noopener" >GitHub Environments&lt;/a>, which let you restrict which secrets are available to specific jobs. This way, you can ensure that only non-critical secrets (like those needed for testing) are available to jobs that run on forked PRs, while keeping sensitive secrets (like PyPI publishing tokens) restricted to trusted contexts.&lt;/p>
&lt;p>This is the approach we implemented in &lt;code>github-activity&lt;/code>, and it provides a good balance between security and community contribution workflows. We created a separate environment for publishing to PyPI so that its secret is never available to the job that runs with &lt;code>pull_request_target&lt;/code>.&lt;/p>
&lt;h2 id="we-hope-this-saves-you-time">
We hope this saves you time!
&lt;a class="header-anchor" href="#we-hope-this-saves-you-time">#&lt;/a>
&lt;/h2>&lt;p>Hopefully this learning is useful to others who run into the same confusing behavior. We&amp;rsquo;ve added a few improvements to &lt;code>github-activity&lt;/code> to more reliably check for empty strings to surface this kind of condition, but knowing the basic behavior of GitHub environments and forked PRs is even better.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#controlling-changes-from-forks-to-workflows-in-public-repositories" target="_blank" rel="noopener" >GitHub documentation on controlling changes from forks to workflows&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://docs.github.com/en/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments" target="_blank" rel="noopener" >GitHub Environments for deployment&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Openscapes is hiring a new team member</title><link>https://2i2c.org/blog/openscapes-is-hiring-a-new-team-member/</link><pubDate>Tue, 07 Oct 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/openscapes-is-hiring-a-new-team-member/</guid><description>&lt;p>
&lt;a href="https://2i2c.org/collaborators/openscapes/" >Openscapes&lt;/a> is hiring a &lt;strong>NASA Openscapes Suborbital Team Member&lt;/strong> to engage with NASA suborbital science teams and support open science practices. This is a &lt;strong>part-time contract position (20 hrs/week) starting as early as December 1, 2025&lt;/strong>, with a 6-month initial term and potential for extension.
The position is fully remote ($100/hr) with applications due by &lt;strong>October 26, 2025&lt;/strong>.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://openscapes.org/connect#work-with-us" target="_blank" rel="noopener" >Openscapes job posting&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/openscapes/" >Openscapes&lt;/a> for their continued work in empowering the research community&lt;/li>
&lt;/ul></description></item><item><title>Enabling transparent cloud cost monitoring with user-level dashboards</title><link>https://2i2c.org/blog/cloud-cost-monitoring/</link><pubDate>Tue, 30 Sep 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/cloud-cost-monitoring/</guid><description>&lt;p>We are excited to announce that &lt;strong>dashboards to monitor cloud usage and costs at a per-user level&lt;/strong> are now available! See the
&lt;a href="https://docs.2i2c.org/admin/monitoring/cost-users" target="_blank" rel="noopener" >cost monitoring documentation&lt;/a> for more information.&lt;/p>
&lt;p>A key goal of 2i2c is to make the cloud safe for science. By providing transparent cost monitoring, we give communities the confidence that they won&amp;rsquo;t face unexpected bills and can better understand how their usage patterns translate to cloud costs. This visibility is especially valuable in our shared platform model, where each community gets their own independent hub while benefiting from shared infrastructure expertise.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Cloud cost monitoring dashboard showing user-level usage and cost breakdowns" srcset="
/blog/cloud-cost-monitoring/featured_huf9d99e2c2d9f92e6fb1ca11e35925122_105209_bffe70397663ee858f707dbe4e8bdf6e.webp 400w,
/blog/cloud-cost-monitoring/featured_huf9d99e2c2d9f92e6fb1ca11e35925122_105209_b402739945113f1c9b3937c35a1f3200.webp 760w,
/blog/cloud-cost-monitoring/featured_huf9d99e2c2d9f92e6fb1ca11e35925122_105209_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/cloud-cost-monitoring/featured_huf9d99e2c2d9f92e6fb1ca11e35925122_105209_bffe70397663ee858f707dbe4e8bdf6e.webp"
width="760"
height="427"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The user-level cost breakdown allows communities to identify individual usage trends and manage their resources more effectively. Communities can now see exactly how their computational work translates to cloud spending, enabling better resource planning and budget management.&lt;/p>
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSff-u-sWFuwO1-VTgk2Ir7f1nfUUlLevQk_Vkk_jnmcI1nJnw/viewform?usp=pp_url&amp;amp;entry.648332035=https://2i2c.org/blog/cloud-cost-monitoring/" target="_blank" rel="noopener" class="text-decoration-none">
&lt;div class="alert alert-info d-flex align-items-start p-3" role="button" style="transition: all 0.2s ease; box-shadow: 0 2px 4px rgba(0,0,0,0.1);" onmouseover="this.style.backgroundColor='#b3e5fc'; this.style.boxShadow='0 4px 8px rgba(0,0,0,0.15)'; this.style.transform='translateY(-1px)'" onmouseout="this.style.backgroundColor=''; this.style.boxShadow='0 2px 4px rgba(0,0,0,0.1)'; this.style.transform='translateY(0)'" onfocus="this.style.backgroundColor='#b3e5fc'; this.style.boxShadow='0 4px 8px rgba(0,0,0,0.15)'; this.style.transform='translateY(-1px)'" onblur="this.style.backgroundColor=''; this.style.boxShadow='0 2px 4px rgba(0,0,0,0.1)'; this.style.transform='translateY(0)'">
&lt;div class="fw-bold mb-1">&lt;span style="font-weight:bold">Give us feedback!&lt;/span> Click here to provide feedback that will help us make this more impactful.&lt;/div>
&lt;/div>
&lt;/a>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://docs.2i2c.org/admin/monitoring/cost-users" target="_blank" rel="noopener" >Cost monitoring documentation&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Tarashish @
&lt;a href="https://2i2c.org/collaborators/devseed/" >Development Seed&lt;/a> for working on this with us.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA&lt;/a> for funding much of this work.&lt;/li>
&lt;li>Andy @
&lt;a href="https://2i2c.org/collaborators/openscapes/" >Openscapes&lt;/a>, Alex @ Development Seed and Sarah @
&lt;a href="https://2i2c.org/collaborators/earthscope/" >Earthscope&lt;/a> for giving us close feedback.&lt;/li>
&lt;/ul></description></item><item><title>From scattered effort to strategic impact: How we're systematizing our Foundational open source contributions</title><link>https://2i2c.org/blog/foundational-contributions/</link><pubDate>Fri, 26 Sep 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/foundational-contributions/</guid><description>&lt;p>Over the past year we&amp;rsquo;ve experimented with being more strategic about supporting upstream communities &lt;em>as a team&lt;/em>. This post summarizes our current plan, including team targets and practices we&amp;rsquo;ll continue to pilot. We&amp;rsquo;ll revisit this as we learn more.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: This document is about the &lt;em>Foundational&lt;/em> contributions we make so that open source communities are healthier and more impactful. It is not about &lt;em>Directed&lt;/em> upstream contributions we make as part of our own product work. See
&lt;a href="https://2i2c.org/blog/good-citizen/" >On being a good open source citizen: supporting a healthy ecosystem through directed and foundational contributions&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;h2 id="the-challenge-why-scattered-individual-efforts-arent-enough">
The challenge: Why scattered individual efforts aren&amp;rsquo;t enough
&lt;a class="header-anchor" href="#the-challenge-why-scattered-individual-efforts-arent-enough">#&lt;/a>
&lt;/h2>&lt;p>Healthy open source communities rely on both individual and institutional contributions.
2i2c
&lt;a href="https://2i2c.org/blog/good-citizen/" >aims to be an &lt;em>excellent &amp;ldquo;upstream citizen&amp;rdquo;&lt;/em>&lt;/a>, so we need a structured approach with clear goals and rationale for why it&amp;rsquo;s the best use of our team&amp;rsquo;s time.&lt;/p>
&lt;p>Without a coordinated approach, we risk two problematic outcomes:&lt;/p>
&lt;p>&lt;strong>Best case&lt;/strong>: Scattered, individual efforts that are subject to the
&lt;a href="https://www.jofreeman.com/joreen/tyranny.htm" target="_blank" rel="noopener" >Tyranny of Structurelessness&lt;/a>. We help at the margins but not meaningfully.&lt;/p>
&lt;p>&lt;strong>Worst case&lt;/strong>: Our organizational capacity inadvertently dominates communities, making 2i2c the sole stakeholder capable of meaningful development and maintenance. We &lt;em>functionally take over the project&lt;/em>.&lt;/p>
&lt;p>By setting explicit goals, both our member communities and upstream projects can hold us accountable for actions that strengthen rather than undermine community health.&lt;/p>
&lt;h2 id="our-long-term-goal-multi-stakeholder-resilient-communities">
Our long-term goal: Multi-stakeholder, resilient communities
&lt;a class="header-anchor" href="#our-long-term-goal-multi-stakeholder-resilient-communities">#&lt;/a>
&lt;/h2>&lt;p>With this in mind, we&amp;rsquo;ve chosen the following &lt;em>outcomes&lt;/em> as our major goals for upstream contribution:&lt;/p>
&lt;blockquote>
&lt;p>We want the Jupyter&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> community to be a &lt;em>multi-stakeholder&lt;/em>&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>, &lt;em>diverse&lt;/em>&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> community with a very high
&lt;a href="https://en.wikipedia.org/wiki/Bus_factor" target="_blank" rel="noopener" >&lt;em>bus factor&lt;/em>&lt;/a>, because we believe this is a critical pre-requisite for advancing
&lt;a href="https://compass.2i2c.org/organization/mission/" target="_blank" rel="noopener" >our mission and value proposition&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>We want to build team processes that help upstream communities make progress towards this goal, so everyone can equitably participate with the support they need.&lt;/p>
&lt;h2 id="two-key-objectives">
Two key objectives
&lt;a class="header-anchor" href="#two-key-objectives">#&lt;/a>
&lt;/h2>&lt;p>Starting with
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub&lt;/a>, we&amp;rsquo;ve identified two objectives that will guide our work:&lt;/p>
&lt;style>
blockquote {
font-size: 1.4em;
}
&lt;/style>
&lt;blockquote>
&lt;p>&lt;strong>Objective 1&lt;/strong>: Increase the number of casual but returning contributors to the JupyterHub community&lt;/p>
&lt;p>&lt;strong>Objective 2&lt;/strong>: Increase the number of total maintainers in the JupyterHub community&lt;/p>
&lt;/blockquote>
&lt;p>We&amp;rsquo;ve chosen these objectives because (1) they have impact, (2) we can make meaningful progress on them, and (3) we can integrate this work into our team&amp;rsquo;s workflow.&lt;/p>
&lt;p>For each activity below, we&amp;rsquo;ve brainstormed some Key Performance Indicators (KPIs) to track progress and ensure we&amp;rsquo;re learning effectively.&lt;/p>
&lt;h2 id="four-pilot-activities">
Four pilot activities
&lt;a class="header-anchor" href="#four-pilot-activities">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;ll experiment with these four activities&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="#review-prs" >&lt;strong>Review pull requests from non-maintainers&lt;/strong>&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#issue-triage" >&lt;strong>Issue Triage office hours&lt;/strong>&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#mentoring-maintainers" >&lt;strong>Sponsoring and Mentoring new Maintainers&lt;/strong>&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#release-diversity" >&lt;strong>Increase bus factor and diversity of people making releases&lt;/strong>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="review-prs">
Review Pull Requests from non-maintainers
&lt;a class="header-anchor" href="#review-prs">#&lt;/a>
&lt;/h3>&lt;p>Imagine two different scenarios:&lt;/p>
&lt;ol>
&lt;li>You casually contribute a PR to some OSS project. Someone responds the next day, you have a pleasant back and forth, and it gets merged (or rejected) within a few days.&lt;/li>
&lt;li>You casually contribute a PR to some OSS project. Nobody responds for a year. Eventually someone leaves a comment. You have forgotten everything, and don&amp;rsquo;t even respond. Much later, your PR gets closed as stale.&lt;/li>
&lt;/ol>
&lt;p>Which experience will encourage you to come back and contribute again?&lt;/p>
&lt;p>It&amp;rsquo;s clearly (1). We should use our institutional capacity to bring the community closer to (1).&lt;/p>
&lt;p>We&amp;rsquo;ll accomplish this by including the following work item in every sprint:&lt;/p>
&lt;blockquote>
&lt;p>&lt;code>Review of N PRs by non-maintainers of JupyterHub&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;p>We will build skills (via pairing, training, etc) inside 2i2c, as not everyone will feel comfortable reviewing pull requests for all projects, nor have rights to merge or close PRs. We may also do additional work like new contributor drives, better documentation, and policy advocacy. We will include pull requests of all types, not just code contributions.&lt;/p>
&lt;h4 id="kpis">
KPIs
&lt;a class="header-anchor" href="#kpis">#&lt;/a>
&lt;/h4>&lt;p>We imagine two KPIs for this activity:&lt;/p>
&lt;ol>
&lt;li>Number of PRs merged (or closed) through our sprint planning activity.&lt;/li>
&lt;li>Number of &lt;em>returning&lt;/em> contributors whose PRs were reviewed by us.&lt;/li>
&lt;/ol>
&lt;h3 id="issue-triage">
Issue Triage office hours
&lt;a class="header-anchor" href="#issue-triage">#&lt;/a>
&lt;/h3>&lt;p>Issue Triage involves combing through an upstream repository&amp;rsquo;s issue tracker, engaging with new issues, refining them to be actionable, and signal boosting important ones for team action.
This is hard for newcomers, as it often requires deep knowledge of various components to understand how to direct an issue or refine it.
It&amp;rsquo;s also challenging for team members still learning open source community dynamics. We&amp;rsquo;d like to upskill our team members within 2i2c and our upstream open source communities.&lt;/p>
&lt;p>As part of our sprints, we will run regular &amp;ldquo;Issue Triage&amp;rdquo; office hours.
We&amp;rsquo;ll begin by upskilling our &lt;em>own 2i2c team members&lt;/em> in effective issue triaging. We&amp;rsquo;ll then explore opening issue triage sessions to the broader upstream community.&lt;/p>
&lt;h4 id="kpis-1">
KPIs
&lt;a class="header-anchor" href="#kpis-1">#&lt;/a>
&lt;/h4>&lt;ol>
&lt;li>Number of issues triaged by 2i2c team members.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/li>
&lt;/ol>
&lt;h3 id="mentoring-maintainers">
Sponsoring and Mentoring new Maintainers
&lt;a class="header-anchor" href="#mentoring-maintainers">#&lt;/a>
&lt;/h3>&lt;p>OSS communities must grow their &lt;em>contributors&lt;/em> into &lt;em>maintainers&lt;/em>, or they will die.&lt;/p>
&lt;figure id="figure-xkcd-comic-about-dependency">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;a href="https://xkcd.com/2347/" target="_blank" rel="noopener">&lt;img src="https://imgs.xkcd.com/comics/dependency.png" alt="XKCD comic about dependency" loading="lazy" />&lt;/a>&lt;/div>
&lt;/div>&lt;figcaption>
XKCD comic about dependency
&lt;/figcaption>&lt;/figure>
&lt;p>Growing new maintainers takes time and effort from both the potential maintainer and existing maintainers who mentor and sponsor them. The focus on sponsorship is important, as
&lt;a href="https://larahogan.me/blog/what-sponsorship-looks-like/" target="_blank" rel="noopener" >laid out by Lara Hogan&lt;/a>. This work takes years, not months, to manifest.&lt;/p>
&lt;p>We will build structures to identify potential maintainers and create pathways for them to gain maintainership status. As JupyterHub lacks an explicit maintainer pathway, we will build our own process via these focus areas:&lt;/p>
&lt;ol>
&lt;li>Identifying potential candidates for maintainership&lt;/li>
&lt;li>Identifying potential community work they can do to help get involved (contributing bug fixes, code reviewing, issue triage, helping answer questions, contributing code / documentation, release management, etc)&lt;/li>
&lt;li>Build pathways for candidates to do (2) as appropriate.&lt;/li>
&lt;li>Iteratively continue until candidates have done &amp;rsquo;enough&amp;rsquo; work to gain maintainership status.&lt;/li>
&lt;/ol>
&lt;p>This work is nebulous but worthwhile. We will coordinate this effort closely with community leaders, recognizing it takes time to actualize.&lt;/p>
&lt;p>In the Jupyter community, maintainership status is tied to individuals, not to organizations they work for. Nobody should get maintainership status &lt;em>simply&lt;/em> because they work for a specific organization (such as 2i2c). We should look for diverse candidates, ideally funded by different organizations, who are &lt;em>interested&lt;/em> in becoming maintainers.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: We&amp;rsquo;d also like to start with individuals
&lt;a href="https://2i2c.org/collaborators/" >in our &lt;strong>collaborator network&lt;/strong>&lt;/a>. For example, we&amp;rsquo;re using an engagement between
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA&lt;/a> and
&lt;a href="https://2i2c.org/collaborators/devseed/" >Development Seed&lt;/a> to onboard several team members into these projects.&lt;/p>
&lt;/blockquote>
&lt;h4 id="kpi">
KPI
&lt;a class="header-anchor" href="#kpi">#&lt;/a>
&lt;/h4>&lt;p>This measurement moves slowly, but is very clearly impactful:&lt;/p>
&lt;ol>
&lt;li>Number of people who have become maintainers due to our concerted efforts.&lt;/li>
&lt;/ol>
&lt;h3 id="release-diversity">
Increase bus factor and diversity of people making releases
&lt;a class="header-anchor" href="#release-diversity">#&lt;/a>
&lt;/h3>&lt;p>Making releases is often thankless but important to community health. It involves coordinating testing, writing changelogs, and providing upgrade instructions. Institutions can help by dedicating team time to perform this task regularly. To advance the &amp;lsquo;multi-stakeholder&amp;rsquo; and &amp;lsquo;high bus factor&amp;rsquo; aspects of our goal, we will have many different people do releases, via mentorship and sponsorship. This will integrate into our regular workstreams.&lt;/p>
&lt;h4 id="kpis-2">
KPIs
&lt;a class="header-anchor" href="#kpis-2">#&lt;/a>
&lt;/h4>&lt;ol>
&lt;li>Number of releases performed by 2i2c engineers&lt;/li>
&lt;li>Number of releases performed by others with sponsorship / mentorship from 2i2c engineers&lt;/li>
&lt;/ol>
&lt;h2 id="criteria-for-upstream-projects-to-support">
Criteria for upstream projects to support
&lt;a class="header-anchor" href="#criteria-for-upstream-projects-to-support">#&lt;/a>
&lt;/h2>&lt;p>Our long-term goal applies to upstream communities that:&lt;/p>
&lt;ol>
&lt;li>We strategically &lt;em>depend&lt;/em> on to serve
&lt;a href="https://2i2c.org/members/" >our member communities&lt;/a> as part of
&lt;a href="https://2i2c.org/platform/" >our community hub service&lt;/a>&lt;/li>
&lt;li>We &lt;em>need&lt;/em> to help sustain, given upstream community dynamics&lt;/li>
&lt;li>We have the &lt;em>ability&lt;/em> to help sustain&lt;/li>
&lt;/ol>
&lt;p>For example, Kubernetes satisfies (1) but not (2) or (3), while JupyterLab meets (1) and (2) but not (3) (presently). Currently this policy only applies to JupyterHub, but may change as our organization evolves.&lt;/p>
&lt;h2 id="how-well-implement-this">
How we&amp;rsquo;ll implement this
&lt;a class="header-anchor" href="#how-well-implement-this">#&lt;/a>
&lt;/h2>
&lt;h3 id="who-is-responsible">
Who is responsible
&lt;a class="header-anchor" href="#who-is-responsible">#&lt;/a>
&lt;/h3>&lt;p>Implementation is the responsibility of
&lt;a href="https://compass.2i2c.org/product-and-services/" target="_blank" rel="noopener" >2i2c&amp;rsquo;s Product &amp;amp; Services team&lt;/a>. These activities must integrate into the team&amp;rsquo;s daily practices, not become an external shadow process for some members.&lt;/p>
&lt;h3 id="how-well-fund-this-work">
How we&amp;rsquo;ll fund this work
&lt;a class="header-anchor" href="#how-well-fund-this-work">#&lt;/a>
&lt;/h3>&lt;p>Foundational upstream support requires significant work and expertise. We plan to fund this through:&lt;/p>
&lt;ul>
&lt;li>Fees from
&lt;a href="https://2i2c.org/members/" >our member communities&lt;/a>. A percentage of our membership fees includes covering the cost of Foundational contributions like this.&lt;/li>
&lt;li>Targeted contributions from
&lt;a href="https://2i2c.org/collaborators/" >some of our collaborators&lt;/a>. Some collaborators have funds and want to support open source at a foundational level, in some cases we use funds from these collaborators to cover our costs.&lt;/li>
&lt;/ul>
&lt;p>We still need to explore what these efforts cost and mechanisms to recover those costs.&lt;/p>
&lt;h2 id="next-step-learning-in-public">
Next step: Learning in public
&lt;a class="header-anchor" href="#next-step-learning-in-public">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;re excited to experiment with more effective upstream contribution and eager to learn. We&amp;rsquo;ll share our experiences so others can learn from and comment on our process.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/minrk" target="_blank" rel="noopener" >@MinRK&lt;/a> and -
&lt;a href="https://github.com/bsipocz" target="_blank" rel="noopener" >@bsipocz&lt;/a> for helping review a draft of this!&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/author/chris-holdgraf/" >@choldgraf&lt;/a> for feedback, guidance, and editing for this post and the team practices in it.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub&lt;/a>,
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >JupyterBook&lt;/a>, and
&lt;a href="https://2i2c.org/collaborators/jupyter/" >Project Jupyter&lt;/a> for teaching us a lot about open source over the years.&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Currently this is particularly JupyterHub and Jupyter-wide leadership. We&amp;rsquo;re
&lt;a href="https://2i2c.org/blog/jb-for-communities/" >exploring how to incorporate JupyterBook into our service&lt;/a> and are thus investing Foundation contributions there as well.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>With different kinds and sizes of organizations (companies, non-profits, universities, etc) and individuals being stakeholders. We want to avoid a single organization monopolizing power within any community.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>Across the power spectrum - from users to bug reporters to casual contributors to maintainers to people on governance duty&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;strong>Implementation note&lt;/strong>: We will not start doing &lt;strong>all&lt;/strong> these immediately! We will consult with the rest of the team, and start these 1 at a time so we can build these processes sustainably and equitably.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>This requires a definition of &amp;ldquo;an issue that has been triaged&amp;rdquo;, and to our knowledge no such definition exists. We&amp;rsquo;d like to learn how to measure something abstract like &amp;ldquo;issue triage&amp;rdquo; - perhaps it is something specific putting it on a board for further action or applying a label, or something more abstract like &amp;ldquo;increasing how clear and actionable the issue is&amp;rdquo;. We&amp;rsquo;ll explore this when we start to make progress towards this objective.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Demonstrating our infrastructure's reliability with a hub status page for our communities</title><link>https://2i2c.org/blog/status-page/</link><pubDate>Tue, 23 Sep 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/status-page/</guid><description>&lt;p>One of 2i2c&amp;rsquo;s goals is to &lt;strong>make the cloud safe for science&lt;/strong>.
A big part of this is making the black box of commercial cloud infrastructure more predictable and reliable for our member communities, across our network of community hubs that all operate autonomously.&lt;/p>
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSff-u-sWFuwO1-VTgk2Ir7f1nfUUlLevQk_Vkk_jnmcI1nJnw/viewform?usp=pp_url&amp;amp;entry.648332035=https://2i2c.org/blog/status-page/" target="_blank" rel="noopener" class="text-decoration-none">
&lt;div class="alert alert-info d-flex align-items-start p-3" role="button" style="transition: all 0.2s ease; box-shadow: 0 2px 4px rgba(0,0,0,0.1);" onmouseover="this.style.backgroundColor='#b3e5fc'; this.style.boxShadow='0 4px 8px rgba(0,0,0,0.15)'; this.style.transform='translateY(-1px)'" onmouseout="this.style.backgroundColor=''; this.style.boxShadow='0 2px 4px rgba(0,0,0,0.1)'; this.style.transform='translateY(0)'" onfocus="this.style.backgroundColor='#b3e5fc'; this.style.boxShadow='0 4px 8px rgba(0,0,0,0.15)'; this.style.transform='translateY(-1px)'" onblur="this.style.backgroundColor=''; this.style.boxShadow='0 2px 4px rgba(0,0,0,0.1)'; this.style.transform='translateY(0)'">
&lt;div class="fw-bold mb-1">&lt;span style="font-weight:bold">Give us feedback!&lt;/span> Click here to provide feedback that will help us make this more impactful.&lt;/div>
&lt;/div>
&lt;/a>
&lt;p>To that end, we&amp;rsquo;ve created a &lt;strong>status page for 2i2c&amp;rsquo;s network of community hubs&lt;/strong>. This is a source of truth to provide a high-level picture of the stability of our infrastructure, let a community know if their hub is experiencing a problem, and to give us a heads up when things aren&amp;rsquo;t working as expected. You can check it out at:&lt;/p>
&lt;p>👉
&lt;a href="http://status.2i2c.org" target="_blank" rel="noopener" >&lt;strong>&lt;code>status.2i2c.org&lt;/code>&lt;/strong>&lt;/a>&lt;/p>
&lt;figure id="figure-the-2i2c-status-page-gives-communities-a-high-level-view-of-the-uptime-for-our-entire-network-of-community-hubs">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="The 2i2c Status Page gives communities a high-level view of the uptime for our entire network of community hubs." srcset="
/blog/status-page/featured_hudcfdf27a10fbca3598dd77978ccf2720_32254_65a3e43ecff516e4749f4c8de6cece80.webp 400w,
/blog/status-page/featured_hudcfdf27a10fbca3598dd77978ccf2720_32254_b5951eee6a91520a1d5155144fcbfbc5.webp 760w,
/blog/status-page/featured_hudcfdf27a10fbca3598dd77978ccf2720_32254_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/status-page/featured_hudcfdf27a10fbca3598dd77978ccf2720_32254_65a3e43ecff516e4749f4c8de6cece80.webp"
width="760"
height="476"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The 2i2c Status Page gives communities a high-level view of the uptime for our entire network of community hubs.
&lt;/figcaption>&lt;/figure>
&lt;p>While we make status more visible, we&amp;rsquo;re also
&lt;a href="https://github.com/2i2c-org/team-compass/pull/1021" target="_blank" rel="noopener" >streamlining our incident response processes&lt;/a> in order to more quickly respond to outages when they occur (ideally, before a community has even noticed!).&lt;/p>
&lt;p>There are still plenty of improvements we&amp;rsquo;d like to make: for example, we&amp;rsquo;re focusing on major outages right now, but would like to extend some level of reporting for &lt;em>degraded&lt;/em> service, like unexpectedly slow start times.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>👉
&lt;a href="https://2i2c-hubs.trust.pagerduty.com/posts/dashboard" target="_blank" rel="noopener" >The status page&lt;/a>&lt;/li>
&lt;li>👉
&lt;a href="https://docs.2i2c.org/admin/reliability/status-page" target="_blank" rel="noopener" >The status page documentation&lt;/a>&lt;/li>
&lt;li>👉
&lt;a href="https://github.com/2i2c-org/team-compass/pull/1021" target="_blank" rel="noopener" >Our new process for incident response&lt;/a>&lt;/li>
&lt;li>👉 Follow an
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/6417" target="_blank" rel="noopener" >in-progress initiative to improve the reliability of our infrastructure&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Updates from Chris' position on the Jupyter Executive Council and Foundation Board</title><link>https://2i2c.org/blog/executive-council-updates/</link><pubDate>Tue, 23 Sep 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/executive-council-updates/</guid><description>&lt;p>This is a running blog post for Chris to share out community updates from his time on the
&lt;a href="https://ec.jupyter.org/" target="_blank" rel="noopener" >Jupyter Executive Council&lt;/a>. See
&lt;a href="#context" >context for this page&lt;/a>.&lt;/p>
&lt;h2 id="updates-for-the-jupyter-community-from-chris">
Updates for the Jupyter community from Chris
&lt;a class="header-anchor" href="#updates-for-the-jupyter-community-from-chris">#&lt;/a>
&lt;/h2>&lt;p>Chris aims to write monthly updates for Jupyter&amp;rsquo;s community in the
&lt;a href="https://discourse.jupyter.org/c/governance/executive-council/51" target="_blank" rel="noopener" >Jupyter Community Forum&lt;/a> to share his perspective on what the council is up to. We&amp;rsquo;ll update this index post as new posts are available.&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://discourse.jupyter.org/t/chris-update-for-september-october-november-2025-wow-three-months-passed/38204" target="_blank" rel="noopener" >November 2025&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://discourse.jupyter.org/t/chris-update-for-august-2025-community-proposals-are-live/37879" target="_blank" rel="noopener" >August 2025&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://discourse.jupyter.org/t/chris-update-for-july-2025-towards-community-led-funding-proposals/37424/2" target="_blank" rel="noopener" >July 2025&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://discourse.jupyter.org/t/chris-jec-and-board-experience-for-june-2025/36488/1" target="_blank" rel="noopener" >June 2025&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://discourse.jupyter.org/t/chris-update-for-may-2025-a-few-funding-discussions-from-the-jupyter-foundation-board/35764/3" target="_blank" rel="noopener" >May 2025&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="blog-posts-about-chris-experience-on-the-executive-council">
Blog posts about Chris&amp;rsquo; experience on the executive council
&lt;a class="header-anchor" href="#blog-posts-about-chris-experience-on-the-executive-council">#&lt;/a>
&lt;/h2>&lt;p>Chris blogs now and then to share his thoughts, important announcements, and provide major updates from his perspective on the executive council. Here are the posts that have come out of this effort.&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://blog.jupyter.org/your-ideas-our-support-jupyter-community-call-for-funding-proposals-f4642590ae76?source=collection_home_page----95916e268740-----0-----------------------------------" target="_blank" rel="noopener" >Your Ideas, Our Support: Jupyter Community Call For Funding Proposals&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://chrisholdgraf.com/blog/fund-systems-not-developmend" target="_blank" rel="noopener" >Why open source foundations try to fund systems, not development&lt;/a> - May 31, 2025&lt;/li>
&lt;li>
&lt;a href="https://chrisholdgraf.com/blog/more-contributors" target="_blank" rel="noopener" >Jupyter can align the needs of its community and its foundation by enabling contribution&lt;/a> - Mar 22, 2025&lt;/li>
&lt;li>
&lt;a href="https://chrisholdgraf.com/blog/jupyter-org-structure" target="_blank" rel="noopener" >The relationship between the Jupyter Executive Council, Software Steering Council, and Foundation&lt;/a> - Mar 02, 2025&lt;/li>
&lt;li>
&lt;a href="https://chrisholdgraf.com/blog/os-support" target="_blank" rel="noopener" >Ways the Jupyter Foundation could support open source projects&lt;/a> - Feb 26, 2025&lt;/li>
&lt;li>
&lt;a href="https://chrisholdgraf.com/blog/jec" target="_blank" rel="noopener" >Running for the Jupyter Executive Council&lt;/a> - Jan 14, 2025&lt;/li>
&lt;/ul>
&lt;h2 id="2i2cs-commitment-to-supporting-open-source-communities">
2i2c&amp;rsquo;s commitment to supporting open source communities
&lt;a class="header-anchor" href="#2i2cs-commitment-to-supporting-open-source-communities">#&lt;/a>
&lt;/h2>&lt;p>In early 2025, Chris was
&lt;a href="https://2i2c.org/blog/jupyter-executive-council/" >elected to the Jupyter Executive Council&lt;/a>.
We&amp;rsquo;re tracking these efforts because providing leadership and community support to open source projects is a
&lt;a href="https://2i2c.org/blog/good-citizen/" >key Foundational contribution&lt;/a> we wish to make for open source projects. 2i2c makes time for team members to contribute upstream in strategic ways like this as part of our
&lt;a href="https://2i2c.org/open-practices/" >commitment to open practices&lt;/a>. However, this kind of work is very difficult to track! This blog post is an attempt at putting these efforts into one place for us to track and for others to discover.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/members/" >2i2c&amp;rsquo;s member communities&lt;/a> support
&lt;a href="https://2i2c.org/blog/good-citizen/" >Foundation open source contributions&lt;/a> like this with their membership fees.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> provides strategic funding support for 2i2c which covers major open source leadership contributions like this.&lt;/li>
&lt;/ul></description></item><item><title>Reducing base infrastructure costs on AWS with smarter instance types</title><link>https://2i2c.org/blog/aws-cost-reduction/</link><pubDate>Wed, 17 Sep 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/aws-cost-reduction/</guid><description>&lt;p>We&amp;rsquo;ve been working to reduce the base costs of running our cloud infrastructure on AWS by switching to more efficient instance types for our core nodes. This is the core infrastructure we use to ensure hubs are &amp;ldquo;always available&amp;rdquo; for users, even when no one is actively using a hub. By moving from older &lt;code>r5.xlarge&lt;/code> instances to newer, more efficient &lt;code>r8i-flex.large&lt;/code> instances, we&amp;rsquo;ve significantly reduced these baseline costs while maintaining the same level of service. Here&amp;rsquo;s a plot of daily savings for the
&lt;a href="https://2i2c.org/collaborators/geojupyter/" >GeoJupyter community&lt;/a>.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="EC2 cost reduction over time for one community" srcset="
/blog/aws-cost-reduction/featured_hu7020069b8cb86380af07e0c76d10ae22_44063_6cfebe5fd1227d9e39bfa9b7b43d8015.webp 400w,
/blog/aws-cost-reduction/featured_hu7020069b8cb86380af07e0c76d10ae22_44063_d67ff55e7e94adb95f8c97e3f035ef37.webp 760w,
/blog/aws-cost-reduction/featured_hu7020069b8cb86380af07e0c76d10ae22_44063_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/aws-cost-reduction/featured_hu7020069b8cb86380af07e0c76d10ae22_44063_6cfebe5fd1227d9e39bfa9b7b43d8015.webp"
width="760"
height="394"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The graph above shows the impact on EC2 node costs specifically (this doesn&amp;rsquo;t include the entire cost of always-on infrastructure, but represents a significant portion). We are rolling out this change to all &lt;em>new&lt;/em> clusters, and starting to work through our pre-existing AWS clusters.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/6721" target="_blank" rel="noopener" >Pull request implementing the instance type changes&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/6756" target="_blank" rel="noopener" >Our rollout plan for existing clusters&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Incident report: UC Merced user throttling during class startup</title><link>https://2i2c.org/blog/incident-ucmerced-user-throttling/</link><pubDate>Tue, 16 Sep 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/incident-ucmerced-user-throttling/</guid><description>&lt;p>On August 29, 2025 our cloud infrastructure team experienced an incident with the UC Merced community hub when students tried to login simultaneously at the start of class. For more detailed technical information about this incident, see our
&lt;a href="https://github.com/2i2c-org/incident-reports/blob/main/reports/2025-08-29-ucmerced-too-many-users-throttled.pdf" target="_blank" rel="noopener" >full incident report&lt;/a>.&lt;/p>
&lt;h2 id="what-happened">
What happened
&lt;a class="header-anchor" href="#what-happened">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Students experienced issues when trying to login to the hub at the same time during the start of class.&lt;/li>
&lt;li>The concurrent spawn limit was reached quickly due to the large number of users starting up simultaneously.&lt;/li>
&lt;li>New nodes had to be brought up by the autoscaler, which took roughly 10 minutes from start to end.&lt;/li>
&lt;li>Users who tried again after 1 minute weren&amp;rsquo;t guaranteed to get their servers started immediately since new nodes were still spinning up.&lt;/li>
&lt;li>This was an &amp;ldquo;expected&amp;rdquo; scale-up event but the lack of clear messaging caused users to interpret it as instability.&lt;/li>
&lt;/ul>
&lt;h2 id="what-we-learned">
What we learned
&lt;a class="header-anchor" href="#what-we-learned">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>We need better communication so users understand when infrastructure slowness is &amp;ldquo;expected&amp;rdquo; vs. &amp;ldquo;unstable&amp;rdquo;.&lt;/li>
&lt;li>We need better alerting for concurrent user startup throttling - we found out about this issue from users rather than automated monitoring.&lt;/li>
&lt;li>We learned that JupyterHub&amp;rsquo;s metrics don&amp;rsquo;t properly expose &lt;code>429 status&lt;/code> codes in our dashboards.&lt;/li>
&lt;li>This will happen again if we don&amp;rsquo;t have proper scaling limits and node provisioning strategies for sudden user influxes.&lt;/li>
&lt;/ul>
&lt;h2 id="resolution">
Resolution
&lt;a class="header-anchor" href="#resolution">#&lt;/a>
&lt;/h2>&lt;p>We implemented several fixes:&lt;/p>
&lt;ul>
&lt;li>Increased the concurrent spawn limit from 64 to 100.&lt;/li>
&lt;li>Put UC Merced users on larger nodes to reduce the number of node spinups needed. this will cost more in cloud but result in fewer scale-up events.&lt;/li>
&lt;li>Created action items to improve logging, alerting, and monitoring for similar incidents&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to UC Merced students and instructors for reporting the issue through our support system.&lt;/li>
&lt;/ul></description></item><item><title>We're going to try blogging about our work more often</title><link>https://2i2c.org/blog/communications-strategy/</link><pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/communications-strategy/</guid><description>&lt;p>At 2i2c, we aim to be an exemplar organization in working openly, supporting open science, and supporting open source communities in everything that we do.
We believe that
&lt;a href="https://2i2c.org/open-practices/" >open science is a process, not a product&lt;/a>, and commit to following practices that align with open principles throughout our work.&lt;/p>
&lt;p>A key principle for our team has always been &lt;strong>working in the open&lt;/strong>.
We do almost all of our work in our own public repositories or in upstream community spaces.
However, still struggle to &lt;em>communicate what we&amp;rsquo;ve been up to&lt;/em>.
We can&amp;rsquo;t expect everybody to keep an eye on the spaces where 2i2c operates in order to learn whether we are actually living up to our goals.&lt;/p>
&lt;p>So, we&amp;rsquo;re going to try an expriment that is
&lt;a href="https://simonwillison.net/" target="_blank" rel="noopener" >inspired by Simon Willison&amp;rsquo;s blog&lt;/a>. In short, here&amp;rsquo;s what we aim to do:&lt;/p>
&lt;ul>
&lt;li>Use our blog any time we learn or do something that&amp;rsquo;s aligned with
&lt;a href="https://compass.2i2c.org/organization/value-proposition" target="_blank" rel="noopener" >our value proposition&lt;/a>.&lt;/li>
&lt;li>Don&amp;rsquo;t hesitate to share in-progress work and things that are still rough - this is part of working in the open.&lt;/li>
&lt;li>Occasionally, share posts that help readers navigate this stream of short impact posts. We&amp;rsquo;ll use
&lt;a href="https://2i2c.org/mailing-list/" >our Mailing List&lt;/a> for this, so click that link if you&amp;rsquo;d like to sign up.&lt;/li>
&lt;/ul>
&lt;p>Our hope is that this will give us a steady stream of posts that show what we&amp;rsquo;ve been up to, as well as a way to navigate those posts via our mailing lists for the folks that don&amp;rsquo;t want to spend all day combing through our blog. :-)&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by a grant from
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>On being a good open source citizen: supporting a healthy ecosystem through directed and foundational contributions</title><link>https://2i2c.org/blog/good-citizen/</link><pubDate>Wed, 03 Sep 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/good-citizen/</guid><description>&lt;p>Any organization building on open source faces a fundamental tension: how do you serve the needs of your organizational stakeholders while also acting as a responsible steward of the upstream projects you depend on?
This is harder than it looks - simply &amp;ldquo;making PRs&amp;rdquo; leaves a number of open source needs unaddressed, and can burn out both your team members and the open source maintainers. We think about this a lot at 2i2c, and want to share our framework to navigate this challenge intentionally.&lt;/p>
&lt;p>Here are a few questions we&amp;rsquo;ve been grappling with:&lt;/p>
&lt;ul>
&lt;li>How do we tie general upstream maintenance to value delivered to our user communities?&lt;/li>
&lt;li>How can we scope upstream support so that it doesn&amp;rsquo;t detract from our service needs and product strategy?&lt;/li>
&lt;li>How can we encourage team members to work on the most impactful aspects of upstream support?&lt;/li>
&lt;li>How can we intentionally and equitably support open source communities as a team, rather than a collection of individuals?&lt;/li>
&lt;/ul>
&lt;p>Along the way, we realized there are &lt;strong>two very different kinds of upstream contributions&lt;/strong>:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Directed Contributions&lt;/strong>: A contribution driven by the needs of our member communities and product roadmap. We call these &amp;ldquo;Directed&amp;rdquo; contributions because they address a targeted need driven by one stakeholder (us!).&lt;/li>
&lt;li>&lt;strong>Foundational contributions&lt;/strong>: A contribution driven by the needs of the upstream community. We call these &amp;ldquo;Foundational contributions&amp;rdquo; because they&amp;rsquo;re meant to provide the healthy foundation on which a community can operate and grow.&lt;/li>
&lt;/ol>
&lt;p>Historically we have conflated these types of contributions, but we think it&amp;rsquo;s key that we treat them differently.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: For a more practical guide that describes the systems we&amp;rsquo;ve set up to accomplish &lt;em>Foundational&lt;/em> upstream contributions, see
&lt;a href="https://2i2c.org/blog/foundational-contributions/" >From scattered effort to strategic impact: How we&amp;rsquo;re systematizing our Foundational open source contributions&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;h2 id="everybody-has-an-open-source-hat-and-a-stakeholder-hat">
Everybody has an open source hat and a stakeholder hat
&lt;a class="header-anchor" href="#everybody-has-an-open-source-hat-and-a-stakeholder-hat">#&lt;/a>
&lt;/h2>&lt;p>Open source teams&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> are usually two kinds of teams that overlap heavily:&lt;/p>
&lt;ol>
&lt;li>A collection of &lt;em>stakeholders working together&lt;/em> on the open source project, each with their own goals and interests.&lt;/li>
&lt;li>An &lt;em>open source team&lt;/em> with a shared goal and strategy for the open source project.&lt;/li>
&lt;/ol>
&lt;p>In this case, stakeholders can be individuals or companies. They use and contribute to the open source project because it advances their own interests. For example, an enthusiast contributing to a project because it brings them joy, or a company contributing to a project because they build a product that depends on the open source technology.&lt;/p>
&lt;p>However, for open source projects to be successful they also need their own unique identity, goals, strategy for impact, and system of work. This allows a diverse collection of stakeholders to &lt;em>work together effectively&lt;/em> and &lt;em>create impactful technology&lt;/em>. This team is made up of the same stakeholders described above, but with a responsibility to lead and support the open source team, rather than just serve their individual interests as stakeholders.&lt;/p>
&lt;p>Thus, any open source stakeholder has two hats: they are both &lt;em>representatives of a stakeholder&lt;/em> and &lt;em>members of an open source team&lt;/em>. While it&amp;rsquo;s possible to &lt;em>align the interests&lt;/em> of these two groups, we think it&amp;rsquo;s still important to &lt;em>distinguish between them&lt;/em>.&lt;/p>
&lt;h2 id="directed-contributions-benefit-the-stakeholder-you-represent">
Directed Contributions benefit the stakeholder you represent
&lt;a class="header-anchor" href="#directed-contributions-benefit-the-stakeholder-you-represent">#&lt;/a>
&lt;/h2>&lt;p>A &lt;em>Directed Contribution&lt;/em> is primarily driven by the needs of a stakeholder in an open source project. To use 2i2c as an example, let&amp;rsquo;s take a quote from 2i2c&amp;rsquo;s value proposition:&lt;/p>
&lt;blockquote>
&lt;p>2i2c serves a global network of community hubs for interactive learning and discovery&lt;/p>
&lt;/blockquote>
&lt;p>&lt;em>Community&lt;/em> here does &lt;strong>not&lt;/strong> refer to open source upstream software provider communities (like JupyterHub or Kubernetes), but instead to downstream &lt;em>user communities&lt;/em> (like
&lt;a href="https://2i2c.org/collaborators/cryocloud/" >CryoCloud&lt;/a>,
&lt;a href="https://openscapes.org" target="_blank" rel="noopener" >Openscapes&lt;/a>, or
&lt;a href="https://www.earthdata.nasa.gov/data/tools/veda" target="_blank" rel="noopener" >NASA VEDA&lt;/a>).&lt;/p>
&lt;p>When 2i2c makes a Directed Contribution, it means we are trying to &lt;em>deliver value to one or more of our member communities&lt;/em> by making an upstream contribution.&lt;/p>
&lt;p>Satisfying community needs often involves directly working on the software they use. Driven by our
&lt;a href="https://2i2c.org/right-to-replicate/" target="_blank" rel="noopener" >right to replicate&lt;/a> principles, this means we mostly work on software that is not proprietary to 2i2c nor solely owned by us permanently - but by contributing to an upstream software community. These are all Directed Contributions.&lt;/p>
&lt;p>Some illustrative examples:&lt;/p>
&lt;ol>
&lt;li>
&lt;a href="https://github.com/jupyterhub/oauthenticator/pull/719" target="_blank" rel="noopener" >Allow login to be gated on OAuth2 granted scopes&lt;/a> was a feature we added to support one of our communities&amp;rsquo; auth flow (
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope&lt;/a>)&lt;/li>
&lt;li>
&lt;a href="https://github.com/pangeo-data/pangeo-docker-images/pull/426" target="_blank" rel="noopener" >Changing how &lt;code>.pyc&lt;/code> files are kept in images&lt;/a> was work we did as a result of a support ticket investigating spawn timeout issues in the
&lt;a href="https://leap.columbia.edu/" target="_blank" rel="noopener" >LEAP&lt;/a> hub.&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/myst-theme/pull/531" target="_blank" rel="noopener" >Adding landing pages functionality to Jupyter Book and MyST&lt;/a> was work we did to support member communities like
&lt;a href="https://2i2c.org/collaborators/cryocloud/" >CryoCloud&lt;/a> and
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a>.&lt;/li>
&lt;/ol>
&lt;p>The fact that these are open source contributions is &lt;em>incidental&lt;/em>. We are &lt;em>primarily&lt;/em> doing this work to deliver value to &lt;em>our community network&lt;/em>.&lt;/p>
&lt;h3 id="we-plan-directed-contributions-according-to-our-roadmap-and-member-feedback">
We plan Directed Contributions according to our roadmap and member feedback
&lt;a class="header-anchor" href="#we-plan-directed-contributions-according-to-our-roadmap-and-member-feedback">#&lt;/a>
&lt;/h3>&lt;p>Directed Contributions naturally align with 2i2c&amp;rsquo;s overall goals and strategy, so we use our
&lt;a href="https://compass.2i2c.org/product-and-services/" target="_blank" rel="noopener" >product processes&lt;/a> for planning and delivering on them. However, we also want to provide transparency to upstream communities so that they understand who is driving the contributions that we&amp;rsquo;re making.&lt;/p>
&lt;p>With that in mind, here are a few ways that Directed Contributions relate to our practices:&lt;/p>
&lt;ul>
&lt;li>Directed Contributions should be defined by our product roadmap and prioritization processes.&lt;/li>
&lt;li>We allocate engineering time for these upstream contributions as part of our product lifecycle, &lt;em>including the extra coordination and communication work needed to work at the pace of the upstream community&lt;/em>.&lt;/li>
&lt;li>We cross-link 2i2c product initiatives to upstream issues and pull-requests wherever we can to provide transparency about why we&amp;rsquo;re making a contribution.&lt;/li>
&lt;li>We communicate this work via our blog so that 2i2c&amp;rsquo;s member communities know about the contributions we&amp;rsquo;ve made on their behalf.&lt;/li>
&lt;/ul>
&lt;h2 id="foundational-contributions-support-a-healthy-open-source-community">
Foundational Contributions support a healthy open source community
&lt;a class="header-anchor" href="#foundational-contributions-support-a-healthy-open-source-community">#&lt;/a>
&lt;/h2>&lt;p>However, contributions can&amp;rsquo;t always be driven by a stakeholder&amp;rsquo;s needs or the open source team will not have an identity or support structure of its own. Here&amp;rsquo;s another excerpt from our value proposition:&lt;/p>
&lt;blockquote>
&lt;p>We need infrastructure services that are driven by community needs and values, that follow the same open source science practices we wish to see in others, and that believe in the power of shared community resources and knowledge.&lt;/p>
&lt;/blockquote>
&lt;p>Being a &amp;ldquo;healthy upstream citizen&amp;rdquo; is core to 2i2c&amp;rsquo;s mission, and is also a way to help communities we rely on remain healthy. Some of our contributions should be &lt;em>Foundational&lt;/em> rather than &lt;em>Directed&lt;/em>. This means doing things that keep the overall ecosystem healthy even if it does not &lt;em>directly&lt;/em> address a specific member community need. The &lt;em>presence&lt;/em> of a healthy open source ecosystem is a value to our member communities in-and-of itself.&lt;/p>
&lt;p>Defining &amp;ldquo;Foundational&amp;rdquo; needs is difficult, because open source teams tend to have less structure and formally-stated goals and needs than most organizations. In 2i2c&amp;rsquo;s case, we focus our Foundational Contributions around &lt;em>maintaining the health of the open source ecosystem&lt;/em>.&lt;/p>
&lt;p>It includes things like:&lt;/p>
&lt;ol>
&lt;li>Grow and guide new contributors to grow team capacity&lt;/li>
&lt;li>Help making releases&lt;/li>
&lt;li>Provide code review&lt;/li>
&lt;li>Fix broken CI&lt;/li>
&lt;li>Write documentation and tutorials&lt;/li>
&lt;li>Manage and run meetings&lt;/li>
&lt;li>Align open source teams on goals and strategy&lt;/li>
&lt;/ol>
&lt;p>However, the real point is that these actions need to be driven by &lt;em>the upstream project&amp;rsquo;s goals and needs&lt;/em>, not by 2i2c&amp;rsquo;s needs.&lt;/p>
&lt;p>Here are a few common examples of contributions that are &lt;em>not considered&lt;/em> Foundational for our team:&lt;/p>
&lt;ol>
&lt;li>Opening a PR to add a major feature to an upstream project.&lt;/li>
&lt;li>Creating a brand new project in an open source organization in order to scratch your own itch.&lt;/li>
&lt;li>Engaging in reactive open-source work that isn&amp;rsquo;t driven by a clear strategy or goal (e.g., randomly responding to the last few GitHub issue comments you happened to notice)&lt;/li>
&lt;/ol>
&lt;h3 id="we-plan-foundational-contributions-alongside-our-engineering-roadmap">
We plan Foundational Contributions alongside our engineering roadmap
&lt;a class="header-anchor" href="#we-plan-foundational-contributions-alongside-our-engineering-roadmap">#&lt;/a>
&lt;/h3>&lt;p>Foundational Contributions are important to 2i2c both for strategic and tactical reasons. However, when left as unstructured time (as we have historically), it runs into all the problems of unstructured work - it happens in non-strategic ways, it isn&amp;rsquo;t evenly balanced across team members, it is more or less accessible depending on your personal comfort level and skills, etc.&lt;/p>
&lt;p>With that in mind, here are a few ways that Foundational Contributions relate to our practices:&lt;/p>
&lt;ul>
&lt;li>We need to &lt;em>own Foundational Contributions as a team&lt;/em>, rather than asking individuals to identify and do this work on their own.&lt;/li>
&lt;li>We need to define team &lt;em>goals&lt;/em> and &lt;em>strategy&lt;/em> to define the impact we want to have, and what kind of work leads to that impact.&lt;/li>
&lt;li>We need a team system for identifying and prioritizing the most impactful Foundational Contributions to perform.&lt;/li>
&lt;li>This system must spread the responsibility of Foundational Contributions across our whole product team.&lt;/li>
&lt;li>It means we need to give people support and training to do this effectively. For example, helping team members grow into roles that involve upstream work, rotating certain types of contributions across team members, etc.&lt;/li>
&lt;/ul>
&lt;p>To ensure this work is intentional and equitable across our team, we encourage Foundational contributions to happen within this framework. Contributions that falls outside of it is treated as a valued, but separate, personal contribution.&lt;/p>
&lt;h2 id="whats-next">
What&amp;rsquo;s next
&lt;a class="header-anchor" href="#whats-next">#&lt;/a>
&lt;/h2>&lt;p>By distinguishing between Directed and Foundational contributions, we can align and balance our immediate product needs with our long-term commitment to community health. We believe this framework allows organizations like ours to be better partners. We&amp;rsquo;d love feedback about this process, how we can improve it, and what others have learned along the way.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>By &amp;ldquo;open source&amp;rdquo; we are focusing on multi-stakeholder open source projects with participatory and inclusive leadership and contributions. This wouldn&amp;rsquo;t apply to an organization- or person-specific open source project.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Sharing JupyterHub's vision for more flexible application deployment at the doepy talk series.</title><link>https://2i2c.org/blog/doepy-yuvi/</link><pubDate>Wed, 03 Sep 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/doepy-yuvi/</guid><description>&lt;p>Our Technical Lead
&lt;a href="https://2i2c.org/blog/doepy-yuvi/../../authors/yuvi-panda/_index.md" >Yuvi Panda&lt;/a> recently gave a talk at the
&lt;a href="https://meetup.doepy.org/" target="_blank" rel="noopener" >doepy meetup&lt;/a> about JupyterHub&amp;rsquo;s interest in moving beyond the &amp;ldquo;single-user notebook application&amp;rdquo; and towards a more flexible approach to enabling administrators to deploy many different types of applications and environments.&lt;/p>
&lt;p>Check out a video of the talk here:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/vsbHMvvsFw8?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;p>This is an important step for the JupyterHub project in order to support the many different kinds of workflows that data scientists need to use in their work. We hope that this generates more interest in the JupyterHub project and gives us useful feedback to guide the team&amp;rsquo;s understanding of this direction.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://www.youtube.com/watch?v=vsbHMvvsFw8" target="_blank" rel="noopener" >YouTube video of this talk&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://jupyter.zulipchat.com/#narrow/channel/469744-jupyterhub/topic/JupyterHub.20in.202025.3A.20Not.20just.20for.20Jupyter.20Notebooks/near/537708184" target="_blank" rel="noopener" >Jupyter Chat about this talk&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7364763956525092868" target="_blank" rel="noopener" >LinkedIn post announcing the talk&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.linkedin.com/posts/cameron-riddell_we-dont-use-this-code-loved-having-yuvi-activity-7369421556516601859-qOxw?utm_medium=ios_app&amp;amp;rcm=ACoAADSgbM8BXeDyQi3bGVtD7qmmJg9b20KhG6A&amp;amp;utm_source=social_share_send&amp;amp;utm_campaign=copy_link" target="_blank" rel="noopener" >LinkedIn post describing the talk&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://meetup.doepy.org/" target="_blank" rel="noopener" >The doepy team&lt;/a> for inviting Yuvi to give this talk.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >The JupyterHub team&lt;/a> for working with us on this strategy.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/members/" >2i2c&amp;rsquo;s network of member communities&lt;/a> whose fees support our Foundational open source engagement.&lt;/li>
&lt;/ul></description></item><item><title>Giving CCAD more control over data science infrastructure via a Catalyst Project hardware exchange</title><link>https://2i2c.org/blog/catalyst-hardware-exchange/</link><pubDate>Tue, 02 Sep 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/catalyst-hardware-exchange/</guid><description>&lt;p>2i2c has successfully completed a hardware exchange with Universidad Nacional de Córdoba&amp;rsquo;s
&lt;a href="https://supercomputo.unc.edu.ar/" target="_blank" rel="noopener" >Centro de Computación de Alto Desempeño (CCAD)&lt;/a> through funding from the
&lt;a href="https://catalystproject.cloud/" target="_blank" rel="noopener" >Catalyst Project&lt;/a>. CCAD used funding to purchase new on-prem computing infrastructure, significantly expanding their computing capabilities.&lt;/p>
&lt;p>This exchange reduces CCAD&amp;rsquo;s reliance on ongoing cloud funding while giving them direct control over their infrastructure. The new hardware will support a scalable JupyterHub deployment and provide valuable training opportunities for researchers who may work with local computing resources.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://supercomputo.unc.edu.ar/2025/09/02/colgando-a-boogie/" target="_blank" rel="noopener" >CCAD&amp;rsquo;s blog post about the hardware deployment&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://catalystproject.cloud/" target="_blank" rel="noopener" >The Catalyst Project&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/czi/" >Chan Zuckerberg Initiative&lt;/a> for their
&lt;a href="https://2i2c.org/collaborators/catalyst/" >Catalyst Project award&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://supercomputo.unc.edu.ar/" target="_blank" rel="noopener" >CCAD&lt;/a> for their collaboration on this hardware exchange&lt;/li>
&lt;/ul></description></item><item><title>Overhauling repo2docker's documentation</title><link>https://2i2c.org/blog/repo2docker-docs/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/repo2docker-docs/</guid><description>&lt;p>Documentation is incredibly important for open source projects to communicate their value and show users how to make the most of their tools. However, it&amp;rsquo;s one of those things that often gets de-prioritized with all of the other work that needs to happen in a project.&lt;/p>
&lt;p>We are heavy users of the
&lt;a href="https://repo2docker.readthedocs.io" target="_blank" rel="noopener" >repo2docker project&lt;/a> in 2i2c&amp;rsquo;s service. It allows you to dynamically build an environment image that can by hosted in a cloud service like JupyterHub. It&amp;rsquo;s the underlying tool used by
&lt;a href="https://binderhub.readthedocs.io" target="_blank" rel="noopener" >BinderHub&lt;/a>, and is the focus of recent work on enabling
&lt;a href="https://2i2c.org/blog/q1-product-goals/" >dynamic image building in a JupyterHub&lt;/a> (more on that to come).&lt;/p>
&lt;p>As part of this work, we decided to do a small
&lt;a href="https://github.com/jupyterhub/repo2docker/pull/1433" target="_blank" rel="noopener" >overhaul of repo2docker&amp;rsquo;s documentation&lt;/a>, with the goal of making it easier to discover, navigate, and learn from. Here&amp;rsquo;s how the landing page looks now!&lt;/p>
&lt;p>
&lt;figure id="figure-the-new-repo2docker-landing-page-now-looks-more-like-an-actual-landing-page">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./featured.png" alt="Repo2Docker documentation overhaul" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The new repo2docker landing page now looks more like an actual landing page!
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>We hope this makes repo2docker a more useful tool for everybody, and also gives us more confidence pointing our communities to the repo2docker documentation in their community workflows.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA project&lt;/a> for providing funding and collaboration for this work.&lt;/li>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub community&lt;/a> for collaboration and review of this work.&lt;/li>
&lt;/ul></description></item><item><title>Our Product and Service goals for Q3 2025</title><link>https://2i2c.org/blog/q3-goals/</link><pubDate>Tue, 22 Jul 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/q3-goals/</guid><description>&lt;p>As we enter Q3 2025, our focus remains on enabling better cost controls for our communities and increasing flexibility for end-users. In line with our commitment to transparency, we’re sharing our platform and service objectives for the quarter and inviting feedback to ensure our direction reflects what matters most to the communities we serve. See our
&lt;a href="https://2i2c.org/blog/q2-product-goals/" >product goals from the previous quarter here&lt;/a>.&lt;/p>
&lt;p>The themes below offer a high-level snapshot of where we aim to evolve our offerings in the coming months.&lt;/p>
&lt;blockquote>
&lt;p>⭐ Connect with us&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://docs.google.com/forms/u/1/d/1PXGM9_j0nyFLR1FEs7fz9x1vUuhs-J4IvoWGy5r-2aE/edit?fromCopy=true&amp;amp;ct=2" target="_blank" rel="noopener" >Give us feedback&lt;/a> about our direction and how it can improve.&lt;/li>
&lt;li>
&lt;a href="https://forms.fillout.com/t/uQHVMkgvsuus" target="_blank" rel="noopener" >Fund parts of this work&lt;/a> if you&amp;rsquo;re interested in making something happen.&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;h2 id="demonstrable-reliability-of-our-infrastructure">
Demonstrable reliability of our infrastructure
&lt;a class="header-anchor" href="#demonstrable-reliability-of-our-infrastructure">#&lt;/a>
&lt;/h2>&lt;p>Hub management has many moving parts, and things can go wrong. We want tighter control over the reliability of our infrastructure and better visibility into the status of our community hubs for administrators and members. We will take steps to improve &lt;strong>alerting&lt;/strong>, &lt;strong>uptime&lt;/strong>, and &lt;strong>overall platform reliability&lt;/strong>, as well as review our internal &lt;strong>incident response practices&lt;/strong>. Our goal is to improve the reliability and responsivity of our interactive computing hubs for both administrators and users throughout their community hub lifecycle.&lt;/p>
&lt;h2 id="user-level-costs-monitoring-and-group-level-usage-monitoring">
User-level costs monitoring and group-level usage monitoring
&lt;a class="header-anchor" href="#user-level-costs-monitoring-and-group-level-usage-monitoring">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;ll build on our recent
&lt;a href="https://2i2c.org/blog/aws-cost-attribution/" >Grafana dashboard usage monitoring&lt;/a> to add &lt;strong>usage monitoring for user groups&lt;/strong> and begin work on &lt;strong>user-level costs monitoring&lt;/strong>. These are steps toward group-level cost tracking, which will enable better management of team and departmental expenses, especially in large institutions.&lt;/p>
&lt;h2 id="improving-our-incident-response-capability">
Improving our Incident Response capability
&lt;a class="header-anchor" href="#improving-our-incident-response-capability">#&lt;/a>
&lt;/h2>&lt;p>As a special-case of doubling down on infrastructure reliability, we&amp;rsquo;re making a concerted effort to improve our incident response processes. This will allow us to respond more reliably and transparently to issues as they arise, and to give our communities confidence about the steps we&amp;rsquo;re taking to resolve them. Our goal is to improve response time and quality, and connect this with infrastructure reliability improvements.&lt;/p>
&lt;h2 id="piloting-a-feature-co-funding-model">
Piloting a feature co-funding model
&lt;a class="header-anchor" href="#piloting-a-feature-co-funding-model">#&lt;/a>
&lt;/h2>&lt;p>This year, 2i2c has experimented with a &lt;strong>collaborative community funding model for platform development&lt;/strong>. This is a way to share funding across communities, and to invite community champions to co-fund projects on the 2i2c roadmap. Our goal is to accelerate upstream development with funded time while minimizing costs for each community. Over the next quarter, we’ll share more details on how the program works, how communities can participate, and what we&amp;rsquo;re learning along the way.&lt;/p>
&lt;p>&lt;strong>Early candidates for community funding:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Compute quotas&lt;/strong>: Building on our user and group management foundation, we aim to let admins assign compute quotas to users or groups, increasing cost control and easing departmental budgeting.&lt;/li>
&lt;li>&lt;strong>Canvas authentication&lt;/strong>: Integrating with Canvas will enable management of users and groups within Canvas, while using the same data for usage and cost tracking.&lt;/li>
&lt;li>&lt;strong>nbgitpuller UX improvements&lt;/strong>: Enhance nbgitpuller for sharing interactive projects via a simple link, focusing on error handling, conflict resolution, and per-user authentication for content retrieval.&lt;/li>
&lt;/ul>
&lt;p>As we develop this initiative, we’ll need to learn how to credit community partners who co-sponsor work and align our roadmap with the interests of the upstream communities we support.&lt;/p>
&lt;p>If you have suggestions for improving this process, or if any features interest your community,
&lt;a href="https://forms.fillout.com/t/uQHVMkgvsuus" target="_blank" rel="noopener" >reach out to us&lt;/a> to discuss joining other 2i2c communities in funding and accelerating their development.&lt;/p>
&lt;h2 id="another-update-coming-in-q4">
Another update coming in Q4
&lt;a class="header-anchor" href="#another-update-coming-in-q4">#&lt;/a>
&lt;/h2>&lt;p>Each quarter, we’ll share an update like this to outline our product priorities and track progress. When planning for Q4, we’ll review what we’ve accomplished and provide a community update. Stay tuned!&lt;/p>
&lt;p>Meanwhile,
&lt;a href="https://docs.google.com/forms/u/1/d/1PXGM9_j0nyFLR1FEs7fz9x1vUuhs-J4IvoWGy5r-2aE/edit?fromCopy=true&amp;amp;ct=2" target="_blank" rel="noopener" >let us know what you think&lt;/a> about our direction. Your feedback helps us provide the best value to our communities. Thank you!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Our strategic and organization-level work is supported by a grant from
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> and fees from
&lt;a href="https://2i2c.org/members/" >our member organizations&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Product and team highlights from Q2 2025</title><link>https://2i2c.org/blog/q2-highlights/</link><pubDate>Mon, 21 Jul 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/q2-highlights/</guid><description>&lt;p>This post highlights what stood out to us from last quarter and reflects on the
&lt;a href="https://2i2c.org/blog/q2-product-goals/" >targets we set at the start of the quarter&lt;/a>.&lt;/p>
&lt;p>This quarter, our team learned the importance of shipping iteratively and inviting feedback frequently. In some cases, we learned this the hard way - having spent multiple cycles developing without feedback from community representatives. In other cases, we made rapid progress by working in collaboration with community members in our network. next quarter, we are leaning into this approach as we work towards &lt;strong>building a more standardized and sustainable service&lt;/strong> for our community network.&lt;/p>
&lt;p>We&amp;rsquo;ve experienced some disruption and more uncertainty due to the current scientific funding climate, and we&amp;rsquo;re working hard to iterate on this model with feedback from our communities to find a path towards sustainability. We&amp;rsquo;re confident that we&amp;rsquo;ll get there, and improving the value our network of community hubs is a key way to do so.&lt;/p>
&lt;p>With that in mind, here&amp;rsquo;s what stood out from the quarter:&lt;/p>
&lt;blockquote>
&lt;p>⭐ Find
&lt;a href="https://2i2c.org/blog/jupytercon-2025-submissions/" >our JupyterCon 2025 submissions here&lt;/a> to see some other things we&amp;rsquo;re excited about sharing.&lt;/p>
&lt;/blockquote>
&lt;h2 id="group-level-resource-monitoring">
Group-level resource monitoring
&lt;a class="header-anchor" href="#group-level-resource-monitoring">#&lt;/a>
&lt;/h2>&lt;p>Building on our previous work delivering
&lt;a href="https://2i2c.org/blog/aws-cost-attribution/" >usage monitoring using Prometheus and Grafana&lt;/a>, we&amp;rsquo;ve released
&lt;a href="https://2i2c.org/blog/jupyterhub-groups-exporter/" >jupyterhub-groups-exporter&lt;/a>, allowing hub administrators to leverage the latest group management features in JupyterHub to monitor group-level resource usage effectively, making it easier to identify usage patterns across teams and departments.&lt;/p>
&lt;blockquote>
&lt;p>⭐ Members of 2i2c&amp;rsquo;s community network can learn how to use this in
&lt;a href="https://docs.2i2c.org/admin/monitoring/grafana-dashboards#getting-a-grafana-account" target="_blank" rel="noopener" >our user guide to usage monitoring&lt;/a>. See this
&lt;a href="https://2i2c.org/blog/jupyterhub-groups-exporter/" >blog post announcing &lt;code>jupyterhub-groups-exporter&lt;/code>&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;h2 id="improve-creating-and-sharing-custom-environments">
Improve creating and sharing custom environments
&lt;a class="header-anchor" href="#improve-creating-and-sharing-custom-environments">#&lt;/a>
&lt;/h2>&lt;p>Last year we introduced
&lt;a href="https://2i2c.org/blog/jupyterhub-fancy-profiles-rollout/" >customizable servers via profile lists&lt;/a>. We&amp;rsquo;re building on that - servers can now be configured to
&lt;a href="https://docs.2i2c.org/user/environment/dynamic-imagebuilding" target="_blank" rel="noopener" >allow users to dynamically specify, build, and share their own custom environment images&lt;/a> without the need for a hub administrator. This will allow community champions with diverse user bases to give their users greater flexibility to support a wide variety of custom computational workflows, accelerating knowledge discovery and sharing. Look out for a blog post on this development in the coming weeks and months.&lt;/p>
&lt;blockquote>
&lt;p>⭐ Members of 2i2c&amp;rsquo;s community network can learn how to use this in our &lt;strong>
&lt;a href="https://docs.2i2c.org/user/environment/dynamic-imagebuilding" target="_blank" rel="noopener" >dynamic image building quick start guide&lt;/a>&lt;/strong>.&lt;/p>
&lt;/blockquote>
&lt;h2 id="co-located-narrative-content-with-out-of-the-box-jupyter-book-support">
Co-located narrative content with out-of-the-box Jupyter Book support
&lt;a class="header-anchor" href="#co-located-narrative-content-with-out-of-the-box-jupyter-book-support">#&lt;/a>
&lt;/h2>&lt;p>Central to our communities&amp;rsquo; work is sharing new findings, best practices, and community resources. To facilitate that, we&amp;rsquo;ve added support for
&lt;a href="http://next.jupyterbook.org" target="_blank" rel="noopener" >Jupyter Book 2&lt;/a> for all of our member communities. Our communities can rapidly build interactive starter documentation and provide users with a rich, interactive, and informative onboarding experience. With a suite of customizable landing-page layouts, colour themes, and component galleries ready to match a community&amp;rsquo;s branding, it&amp;rsquo;s now easier than ever to couple a hub with its own co-located narrative content.&lt;/p>
&lt;blockquote>
&lt;p>⭐ Members of 2i2c&amp;rsquo;s community network can learn how to use this in
&lt;a href="https://docs.2i2c.org/admin/monitoring/cost-users" target="_blank" rel="noopener" >our user guide to documentation and sharing&lt;/a>. See
&lt;a href="https://2i2c.org/blog/jb-for-communities/" >this blog post for an announcement&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;h2 id="a-better-onboarding-experience-for-our-communities">
A better onboarding experience for our communities
&lt;a class="header-anchor" href="#a-better-onboarding-experience-for-our-communities">#&lt;/a>
&lt;/h2>&lt;p>We have been working on a streamlined onboarding experience for communities, smoothing out the process of gathering requirements, customizing a hub for the community&amp;rsquo;s specific needs, and delivering new hubs more rapidly. We will be rolling out this process in the next few weeks for new communities onboarding the 2i2c network, and aim to continue learning and refining this process to deliver a faster, smoother onboarding experience for everyone.&lt;/p>
&lt;blockquote>
&lt;p>⭐ Members of 2i2c&amp;rsquo;s community network will see &lt;strong>changes to our process&lt;/strong> over the coming months that increase the speed and ease of hub delivery.&lt;/p>
&lt;/blockquote>
&lt;h2 id="efforts-to-improve-and-formalize-the-services-we-deliver-to-our-communities">
Efforts to improve and formalize the services we deliver to our communities
&lt;a class="header-anchor" href="#efforts-to-improve-and-formalize-the-services-we-deliver-to-our-communities">#&lt;/a>
&lt;/h2>&lt;p>As 2i2c has grown over the past few years, it organically developed internal processes for handling common tasks such as the management, rollout and maintenance of hubs, as well as expect consulting to help our communities get the most value out of their hubs. Earlier in the year, we realised it was time to review and refine these processes to better serve our growing community network. As a result of this exercise, we now have tighter service definitions and best practices which clarify what service levels our communities can expect, and how we can internally meet those expectations. We will be publishing our service definitions in the coming months as they are finalized, to ensure full transparency with our communities.&lt;/p>
&lt;blockquote>
&lt;p>⭐ You can learn more about our efforts to standardize and scale our services by
&lt;a href="http://2i2c.org/blog" target="_blank" rel="noopener" >following the 2i2c blog&lt;/a>, where we&amp;rsquo;ll share our work as it stabilizes.&lt;/p>
&lt;/blockquote>
&lt;h2 id="another-update-coming-in-q3">
Another update coming in Q3
&lt;a class="header-anchor" href="#another-update-coming-in-q3">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;ll be announcing the focus for our next quarter in a follow-up post, so stay tuned for our next roadmap update, and don&amp;rsquo;t forget to
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSfo6JFr9L5gEFpk_QjoR23YZ9GHXYaO-3WZWZV3qRz8pj7dbg/viewform?usp=dialog" target="_blank" rel="noopener" >let us know what you think&lt;/a> of our direction - we welcome your feedback!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> for core support to 2i2c which funds this strategic and organizational work.&lt;/li>
&lt;/ul></description></item><item><title>2i2c's submissions to JupyterCon 2025</title><link>https://2i2c.org/blog/jupytercon-2025-submissions/</link><pubDate>Sat, 19 Jul 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jupytercon-2025-submissions/</guid><description>&lt;p>&lt;em>&lt;strong>Update&lt;/strong>: The talks are now live! See this
&lt;a href="https://2i2c.org/blog/jupytercon-2025-talks/" >blog post with links to our videos&lt;/a>.&lt;/em>&lt;/p>
&lt;p>We were excited to hear that
&lt;a href="https://jupytercon.com" target="_blank" rel="noopener" >JupyterCon is happening again in 2025&lt;/a>. The Call for Proposals just wrapped up, and our team was involved in preparing and submitting several directly from 2i2c as well as from the ecosystem in general.&lt;/p>
&lt;p>Enjoy brief summaries of the proposals we contributed to below.
&lt;a href="https://forms.fillout.com/t/uQHVMkgvsuus" target="_blank" rel="noopener" >Let us know&lt;/a> if you have ideas for future talks you want to hear from us?&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: Many of these submissions were written in collaboration with others in the open-source projects we participate in. Particularly, in
&lt;a href="https://compass.hub.jupyter.org" target="_blank" rel="noopener" >JupyterHub&lt;/a> and
&lt;a href="https://compass.jupyterbook.org" target="_blank" rel="noopener" >JupyterBook&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;h2 id="jupyterhub-a-multi-user-server-for-jupyter-notebooks">
JupyterHub: A multi-user server for Jupyter notebooks
&lt;a class="header-anchor" href="#jupyterhub-a-multi-user-server-for-jupyter-notebooks">#&lt;/a>
&lt;/h2>&lt;p>This is how JupyterHub was described when it was announced in 2015, 10 years ago. The focus was on bringing Jupyter Notebooks to multiple users on shared infrastructure. The Jupyter Notebooks focus was so strong that Jupyter was even in the name of the project! Fast forward 10 years, &amp;amp; this is still the most common perception of JupyterHub.&lt;/p>
&lt;p>However, this has not been true for a &lt;em>long&lt;/em> time now. Instead of setting up 5 different kinds of infrastructure to support your users based on what kind of &lt;em>interface&lt;/em> they like to use (
&lt;a href="https://jupyterlab.readthedocs.io/" target="_blank" rel="noopener" >JupyterLab&lt;/a>,
&lt;a href="https://posit.co/products/open-source/rstudio/" target="_blank" rel="noopener" >RStudio&lt;/a>, Linux Desktop tools like
&lt;a href="https://qgis.org/" target="_blank" rel="noopener" >QGIS&lt;/a> or
&lt;a href="https://napari.org/" target="_blank" rel="noopener" >Napari&lt;/a>,
&lt;a href="https://code.visualstudio.com/" target="_blank" rel="noopener" >Visual Studio Code&lt;/a>, full &lt;code>ssh&lt;/code> (!?), etc) for their interactive computing, you can set up a JupyterHub that supports all of those! Meet your users where they are, rather than force them to conform to using only a specific set of tools.&lt;/p>
&lt;p>Come to this talk to:&lt;/p>
&lt;ul>
&lt;li>See cool demos of various popular applications running on JupyterHub seamlessly&lt;/li>
&lt;li>Understand the security model of JupyterHub &amp;amp; how that enables these cool demos&lt;/li>
&lt;li>Learn how you can set up your own application to run in JupyterHub&lt;/li>
&lt;li>Influence the future of how JupyterHub is marketed&lt;/li>
&lt;/ul>
&lt;h2 id="cloudy-with-a-chance-of-savings-per-user-usage-and-cost-monitoring-for-jupyterhubs-in-the-cloud">
Cloudy with a Chance of Savings: Per-User Usage and Cost Monitoring for JupyterHubs in the Cloud
&lt;a class="header-anchor" href="#cloudy-with-a-chance-of-savings-per-user-usage-and-cost-monitoring-for-jupyterhubs-in-the-cloud">#&lt;/a>
&lt;/h2>&lt;p>Cloud cost monitoring is moving beyond just preventing runaway cost explosions – it&amp;rsquo;s about empowering JupyterHub administrators with the guardrails they need to run efficient, transparent, and sustainable infrastructures. A cloud cost bill can show a broad view of services and machines provisioned, but how can we provide granular insights into each user and the value they are deriving from the hub on an application level?&lt;/p>
&lt;p>We&amp;rsquo;ve developed several open-source components towards answering this question:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Metric Collection&lt;/strong> –
&lt;a href="https://prometheus.io/" target="_blank" rel="noopener" >Prometheus&lt;/a> collects resource usage metrics (including CPU, memory, and storage) from individual user pods via standard and custom exporters.&lt;/li>
&lt;li>&lt;strong>Cost Estimation&lt;/strong> – Usage is correlated with AWS cost data to estimate per-user costs.&lt;/li>
&lt;li>&lt;strong>Visualization&lt;/strong> –
&lt;a href="https://grafana.com/" target="_blank" rel="noopener" >Grafana&lt;/a> dashboards display rich, interactive views of usage and cost data, making it easy to monitor trends, identify high-cost workloads, and generate reports for funders and decision-makers.&lt;/li>
&lt;/ul>
&lt;p>This approach delivers cloud observability and cost transparency that can be reliably deployed using
&lt;a href="https://kubernetes.io/" target="_blank" rel="noopener" >Kubernetes&lt;/a> and integrated with
&lt;a href="https://z2jh.jupyter.org/" target="_blank" rel="noopener" >Zero to JupyterHub&lt;/a> distributions.&lt;/p>
&lt;h2 id="controlling-home-directory-costs-with-user-empathy-on-the-cloud-with-jupyterhub-home-nfs">
Controlling home directory costs (with user empathy) on the cloud with jupyterhub-home-nfs
&lt;a class="header-anchor" href="#controlling-home-directory-costs-with-user-empathy-on-the-cloud-with-jupyterhub-home-nfs">#&lt;/a>
&lt;/h2>&lt;p>User home directories on JupyterHubs deployed in cloud providers has been a pain point for both end users and administrators. Administrators feel the pain of cloud costs for home directory storage (sometimes higher than compute!). No user wants to receive an email saying &amp;ldquo;well, this code you copy pasted downloaded 3TB of netcdf files into your home directory, and now we have used up our entire team&amp;rsquo;s cloud budget for the next 2 years&amp;rdquo; (true story).&lt;/p>
&lt;p>The
&lt;a href="https://github.com/2i2c-org/jupyterhub-home-nfs" target="_blank" rel="noopener" >jupyterhub-home-nfs&lt;/a> open source project is a JupyterHub native, cloud agnostic solution to these problems. Administrators can do per user limits, tune performance, report on usage and make cloud cost conscious choices around overprovisioning. It provides users empathetic guardrails to prevent them from overuse, rather than punitive gates that zap them after the fact.&lt;/p>
&lt;p>In this short talk, we will:&lt;/p>
&lt;ul>
&lt;li>Describe the core of the problem, and how it manifests for users and admins.&lt;/li>
&lt;li>Review current solutions and their limitations&lt;/li>
&lt;li>Introduce jupyterhub-home-nfs and how it moves the solution space forward&lt;/li>
&lt;li>Demo how this looks like for an end user&lt;/li>
&lt;li>Talk about future direction, and opportunities for collaboration&lt;/li>
&lt;/ul>
&lt;h2 id="rebuilding-user-trust-in-mybinderorg">
Rebuilding user trust in &lt;code>mybinder.org&lt;/code>
&lt;a class="header-anchor" href="#rebuilding-user-trust-in-mybinderorg">#&lt;/a>
&lt;/h2>&lt;p>Have you clicked a
&lt;a href="https://mybinder.org/" target="_blank" rel="noopener" >mybinder.org&lt;/a> link, waited for it to start and gave up after it took far too long to start? Or just failed?&lt;/p>
&lt;p>Have you stopped using mybinder.org for your tutorials, repositories and presentations because you could no longer rely on it to work each time?&lt;/p>
&lt;p>mybinder.org is open infrastructure run by incredible volunteers (who go above and beyond constantly) in the Jupyter community. Is &amp;lsquo;slow fade into unreliability&amp;rsquo; just the fate of all openly run infrastructure?&lt;/p>
&lt;p>But perhaps maybe, just maybe, you have tried doing that again recently, &amp;amp; noticed improvements! Launches are more reliable. Faster. The UI looks better. Maybe things are getting better?&lt;/p>
&lt;p>This talk will go through the problems facing mybinder.org &amp;amp; what we are doing about it. Come to this talk to find out:&lt;/p>
&lt;ol>
&lt;li>How is mybinder.org run?&lt;/li>
&lt;li>What are the structural issues facing open infrastructure services like mybinder.org?&lt;/li>
&lt;li>What sustainability experiments are we running to improve reliability and rebuild user trust?&lt;/li>
&lt;li>Has reliability actually improved?&lt;/li>
&lt;li>How can I help?&lt;/li>
&lt;/ol>
&lt;h2 id="can-your-jupyterhub-handle-your-workload-performance-testing-with-jupyterhub-simulator">
Can your JupyterHub handle your workload? Performance testing with &lt;code>jupyterhub-simulator&lt;/code>
&lt;a class="header-anchor" href="#can-your-jupyterhub-handle-your-workload-performance-testing-with-jupyterhub-simulator">#&lt;/a>
&lt;/h2>&lt;p>Your JupyterHub is all set up, and you&amp;rsquo;re excited to use it for your workshop of 60 students. Or your class of 600 students. Or your research group of 5 people with complex workflows.&lt;/p>
&lt;p>You &lt;em>feel&lt;/em> your infrastructure should hold up fine, but do you &lt;em>know&lt;/em> if your infrastructure will hold up fine? Is that just excitement, or is there a little bit of nervousness in there too? Wouldn&amp;rsquo;t it be nice to test and know for sure?&lt;/p>
&lt;p>&lt;code>jupyterhub-simulator&lt;/code> is an open source project that allows you to describe what you expect your users to be doing - starting servers, clicking on
&lt;a href="https://github.com/jupyterhub/nbgitpuller" target="_blank" rel="noopener" >nbgitpuller&lt;/a> links, running notebooks, etc. Once you have described it, you can then simulate any number of users doing that workflow simultaneously, and verify that your JupyterHub can handle that workload. If it can&amp;rsquo;t, tweak your infrastructure and try again until it does!&lt;/p>
&lt;p>In this talk you will learn:&lt;/p>
&lt;ul>
&lt;li>What is &lt;code>jupyterhub-simulator&lt;/code>?&lt;/li>
&lt;li>How can I describe my expected workflow?&lt;/li>
&lt;li>How can I test if N users can do this workflow all simultaneously?&lt;/li>
&lt;li>How can I visualize the performance of my infrastructure so I can tweak its configuration and try the simulation again?&lt;/li>
&lt;/ul>
&lt;h2 id="not-just-for-notebooks-jupyterhub-in-2025">
Not just for notebooks: JupyterHub in 2025
&lt;a class="header-anchor" href="#not-just-for-notebooks-jupyterhub-in-2025">#&lt;/a>
&lt;/h2>&lt;blockquote>
&lt;p>JupyterHub: A multi-user server for Jupyter notebooks&lt;/p>
&lt;/blockquote>
&lt;p>This is how JupyterHub was described when it was announced in 2015, 10 years ago. The focus was on bringing Jupyter Notebooks to multiple users on shared infrastructure. The Jupyter Notebooks focus was so strong that Jupyter was even in the name of the project! Fast forward 10 years, &amp;amp; this is still the most common perception of JupyterHub.&lt;/p>
&lt;p>However, this has not been true for a &lt;em>long&lt;/em> time now. Instead of setting up 5 different kinds of infrastructure to support your users based on what kind of &lt;em>interface&lt;/em> they like to use (
&lt;a href="https://jupyterlab.readthedocs.io/" target="_blank" rel="noopener" >JupyterLab&lt;/a>,
&lt;a href="https://posit.co/products/open-source/rstudio/" target="_blank" rel="noopener" >RStudio&lt;/a>, Linux Desktop tools like
&lt;a href="https://qgis.org/" target="_blank" rel="noopener" >QGIS&lt;/a> or
&lt;a href="https://napari.org/" target="_blank" rel="noopener" >Napari&lt;/a>,
&lt;a href="https://code.visualstudio.com/" target="_blank" rel="noopener" >Visual Studio Code&lt;/a>, full &lt;code>ssh&lt;/code> (!?), etc) for their interactive computing, you can set up a JupyterHub that supports all of those! Meet your users where they are, rather than force them to conform to using only a specific set of tools.&lt;/p>
&lt;p>Come to this talk to:&lt;/p>
&lt;ul>
&lt;li>See cool demos of various popular applications running on JupyterHub seamlessly&lt;/li>
&lt;li>Understand the security model of JupyterHub &amp;amp; how that enables these cool demos&lt;/li>
&lt;li>Learn how you can set up your own application to run in JupyterHub&lt;/li>
&lt;li>Influence the future of how JupyterHub is marketed&lt;/li>
&lt;/ul>
&lt;h2 id="introducing-jupyter-book-20">
Introducing Jupyter Book 2.0
&lt;a class="header-anchor" href="#introducing-jupyter-book-20">#&lt;/a>
&lt;/h2>&lt;p>This is a community talk from the
&lt;a href="https://compass.jupyterbook.org/team" target="_blank" rel="noopener" >Jupyter Book team&lt;/a>, detailing the principles behind the new
&lt;a href="https://mystmd.org/" target="_blank" rel="noopener" >MyST Document Engine&lt;/a> and
&lt;a href="https://next.jupyterbook.org" target="_blank" rel="noopener" >Jupyter Book 2&amp;rsquo;s upcoming release&lt;/a>. We&amp;rsquo;ll share the text when the Jupyter Book team posts it publicly.&lt;/p>
&lt;h2 id="you-dont-need-to-contribute-more-to-open-source-you-need-to-go-to-therapy">
You don&amp;rsquo;t need to contribute more to open source, you need to go to therapy
&lt;a class="header-anchor" href="#you-dont-need-to-contribute-more-to-open-source-you-need-to-go-to-therapy">#&lt;/a>
&lt;/h2>&lt;p>Open source communities can be incredible and irreplaceable sources of human connection in our lives, offering a unique kind of fulfillment hard to find elsewhere. This feeling of fulfillment and approval can, for some people, be a soothing balm in an otherwise rough life. However, it has the be part of a healthy, balanced ecosystem of different kinds of connections offering different kinds of fulfillment . If a significant chunk of fulfillment in your life comes from the open source work you do, unbalanced by other sources, that can quickly become unhealthy for both you and the community. Disagreements are more likely to become high stakes. Interactions can quickly become emotionally charged and filled with hard to interpret subtext. This can both burn you out, and drive away potential new community members.&lt;/p>
&lt;p>This talk explores the why &lt;em>emotional regulation&lt;/em> is a critical skill for participating in open source communities, and how therapy can be a tool for learning that skill. Come to learn:&lt;/p>
&lt;ol>
&lt;li>What is &lt;em>emotional regulation&lt;/em>?&lt;/li>
&lt;li>Why should I care?&lt;/li>
&lt;li>What is therapy and how can I access it?&lt;/li>
&lt;li>Wait that&amp;rsquo;s not what I thought therapy was! Are you telling me Missy Armitage lied in &lt;em>Get Out&lt;/em>?!&lt;/li>
&lt;li>What negative effects do &lt;em>communities&lt;/em> feel?&lt;/li>
&lt;/ol>
&lt;h2 id="what-2i2c-has-learned-while-trying-to-build-sustainable-relationships-with-jupyters-community">
What 2i2c has learned while trying to build sustainable relationships with Jupyter&amp;rsquo;s community.
&lt;a class="header-anchor" href="#what-2i2c-has-learned-while-trying-to-build-sustainable-relationships-with-jupyters-community">#&lt;/a>
&lt;/h2>&lt;p>2i2c is a non-profit organization that fosters co-creation and collaboration between science communities and open source communities. We are deeply embedded in an international network of research and education communities, as well as open source communities that underlie their infrastructure (particularly in the Jupyter ecosystem). Our technical infrastructure is built entirely with open source components that we contribute to, but do not control. This is a really hard problem to solve!&lt;/p>
&lt;p>We&amp;rsquo;ve learned a lot in the first four years of our existence. This talk will describe how our organization approaches a healthy and productive open source relationship with the Jupyter (and broader scientific python) ecosystem. It&amp;rsquo;ll cover some of the major mistakes we&amp;rsquo;ve made, lessons learned, and where we think we&amp;rsquo;ve had impact. We aim to make this talk full of practical learnings that others can follow in building sustainable open science organizations that contribute to a healthy and vibrant open source ecosystem. Our goal will be to provide inspiration to others that are interested in building on top of open source projects like Jupyter, and want to do so in a way that is healthy and sustainable.&lt;/p></description></item><item><title>Open slides: Jupyter Book 2 and MyST at the UC Berkeley Data Science Education Summit</title><link>https://2i2c.org/blog/jb2-berkeley-dsep/</link><pubDate>Tue, 01 Jul 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jb2-berkeley-dsep/</guid><description>&lt;p>Chris gave a talk about Jupyter Book 2 and MyST at the
&lt;a href="https://data.berkeley.edu/dsep" target="_blank" rel="noopener" >UC Berkeley Data Science Education Program&lt;/a>&amp;rsquo;s annual meeting. It covered the next direction for the Jupyter Book project, and its recent adoption of the
&lt;a href="https://mystmd.org" target="_blank" rel="noopener" >MyST Document Engine&lt;/a> for Jupyter Book 2.&lt;/p>
&lt;p>You can
&lt;a href="https://docs.google.com/presentation/d/1rHQudFtfk8ATu3Pmc1lFGDDAlCmAo8KGIk7ybTbTw6c/edit?slide=id.g2f14b3524cb_0_886#slide=id.g2f14b3524cb_0_886" target="_blank" rel="noopener" >view the full slide deck here&lt;/a>.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Slide from the presentation showing Jupyter Book 2 and MyST overview" srcset="
/blog/jb2-berkeley-dsep/featured_hu8430e0e9c10e10455f83c8ebe9d339d9_187852_6bbb6be570447b58bf1c8b32ded77fd2.webp 400w,
/blog/jb2-berkeley-dsep/featured_hu8430e0e9c10e10455f83c8ebe9d339d9_187852_7a0803bf6b1b290b1a3508b649c80e45.webp 760w,
/blog/jb2-berkeley-dsep/featured_hu8430e0e9c10e10455f83c8ebe9d339d9_187852_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/jb2-berkeley-dsep/featured_hu8430e0e9c10e10455f83c8ebe9d339d9_187852_6bbb6be570447b58bf1c8b32ded77fd2.webp"
width="760"
height="424"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://docs.google.com/presentation/d/1rHQudFtfk8ATu3Pmc1lFGDDAlCmAo8KGIk7ybTbTw6c/edit?slide=id.g2f14b3524cb_0_886#slide=id.g2f14b3524cb_0_886" target="_blank" rel="noopener" >View the full slide deck&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://blog.jupyterbook.org/posts/2024-11-15-jupyter-book-2-alpha/" target="_blank" rel="noopener" >Learn about Jupyter Book 2&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/blog/jb-for-communities/" >See how we&amp;rsquo;re using Jupyter Book for communities&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://next.jupyterbook.org/" target="_blank" rel="noopener" >Jupyter Book 2 documentation&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> for funding some of our work on the Jupyter Book and MyST ecosystem&lt;/li>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/cloudbank/" >CloudBank&lt;/a> for collaborating with us on adapting and deploying Jupyter Book for education and organizing this summit&lt;/li>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book project&lt;/a> for collaborating with us on these strategic efforts over the last years&lt;/li>
&lt;/ul></description></item><item><title>Announcing `jupyterhub-groups-exporter`: monitor usage based on JupyterHub group membership with Prometheus and Grafana</title><link>https://2i2c.org/blog/jupyterhub-groups-exporter/</link><pubDate>Wed, 11 Jun 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jupyterhub-groups-exporter/</guid><description>&lt;p>Managing user groups in JupyterHub can be a challenging task, especially in environments with dynamic user bases and complex group structures. This post describes how we can leverage the latest group management features in JupyterHub, along with Prometheus and Grafana, to monitor group-level resource usage effectively.&lt;/p>
&lt;blockquote>
&lt;p>⭐ &lt;strong>Members of 2i2c&amp;rsquo;s community network&lt;/strong> can use this feature in their hubs by
&lt;a href="https://docs.2i2c.org/admin/monitoring/cost-users" target="_blank" rel="noopener" >following our cost attribution documentation&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./featured.png" alt="Grafana User Group Diagnostics Dashboard showing a memory usage over time with each line aggregating usage over a different user group." loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="motivation">
Motivation
&lt;a class="header-anchor" href="#motivation">#&lt;/a>
&lt;/h2>&lt;p>Hub admins have a strong impetus to monitor usage and costs by user groups
because it allows them to advocate for better funding and cost recovery models based on data-driven insights. Group-level resource monitoring can help them to answer questions like:&lt;/p>
&lt;ul>
&lt;li>How many people participated in our workshop group?&lt;/li>
&lt;li>How much GPU compute is our power user group using?&lt;/li>
&lt;li>Is our resource usage cost-effective for X group persona or Y group persona?&lt;/li>
&lt;/ul>
&lt;p>Current methods and workarounds include:&lt;/p>
&lt;ul>
&lt;li>ring-fencing resources for specific user groups personas, e.g. creating a separate hub for a workshop group, or creating a separate Dask cluster for a power user group, which increases the admin burden of managing multiple hub instances&lt;/li>
&lt;li>writing custom scripts to aggregate per user metrics, that are already available, into groups – which can be time-consuming and error-prone&lt;/li>
&lt;/ul>
&lt;h2 id="jupyterhub-and-user-groups">
JupyterHub and user groups
&lt;a class="header-anchor" href="#jupyterhub-and-user-groups">#&lt;/a>
&lt;/h2>&lt;p>Recent key developments upstream in JupyterHub for groups management, such as
&lt;a href="https://jupyterhub.readthedocs.io/en/latest/reference/authenticators.html#authenticator-managed-group-membership" target="_blank" rel="noopener" >Authenticator managed group membership&lt;/a>, makes this piece of work a prime and timely opportunity to be tackled. For more technical details of these upstream contributions, see GitHub PRs
&lt;a href="https://github.com/jupyterhub/oauthenticator/pull/735" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> jupyterhub/oauthenticator#735&lt;/a> and
&lt;a href="https://github.com/jupyterhub/oauthenticator/pull/498" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> jupyterhub/oauthenticator#498&lt;/a>.&lt;/p>
&lt;p>Users can access JupyterHub using a variety of authentication methods. Authentication providers like GitHub have built-in user management features that allow admins to create and manage user groups. These groups can then be configured in JupyterHub to authorize access to the hub, as well as control access to certain hardware profiles.&lt;/p>
&lt;p>Following the key upstream contributions above, we can leverage
&lt;a href="https://jupyterhub.readthedocs.io/en/stable/reference/authenticators.html#authenticator-managed-group-membership" target="_blank" rel="noopener" >Authenticator-managed group membership&lt;/a> to automatically pass user group memberships from the authentication layer to JupyterHub itself. This allows us to capitalize on JupyterHub&amp;rsquo;s REST API to retrieve user group memberships from other
&lt;a href="https://jupyterhub.readthedocs.io/en/latest/reference/services.html" target="_blank" rel="noopener" >services&lt;/a>, such as exporting them as Prometheus metrics.&lt;/p>
&lt;h2 id="exporting-user-group-memberships-to-prometheus">
Exporting user group memberships to Prometheus
&lt;a class="header-anchor" href="#exporting-user-group-memberships-to-prometheus">#&lt;/a>
&lt;/h2>&lt;p>The
&lt;a href="https://github.com/2i2c-org/jupyterhub-groups-exporter" target="_blank" rel="noopener" >&lt;code>jupyterhub-groups-exporter&lt;/code>&lt;/a> project provides a
&lt;a href="https://jupyterhub.readthedocs.io/en/latest/reference/services.html" target="_blank" rel="noopener" >service&lt;/a> that integrates with JupyterHub to export user group memberships as Prometheus metrics. This component is readily deployable as part of any JupyterHub instance, such as a standalone deployment or a Zero to JupyterHub deployment on Kubernetes.&lt;/p>
&lt;p>The exporter provides a
&lt;a href="https://prometheus.io/docs/concepts/metric_types/" target="_blank" rel="noopener" >Gauge metric&lt;/a> called &lt;code>jupyterhub_user_group_info&lt;/code>, which contain the following labels:&lt;/p>
&lt;ul>
&lt;li>&lt;code>namespace&lt;/code> – the Kubernetes namespace where the JupyterHub is deployed&lt;/li>
&lt;li>&lt;code>usergroup&lt;/code> – the name of the user group&lt;/li>
&lt;li>&lt;code>username&lt;/code> – the unescaped username of the user&lt;/li>
&lt;li>&lt;code>username_escape&lt;/code> – the escaped username&lt;/li>
&lt;/ul>
&lt;p>Escaped usernames are useful because Kubernetes pods have characterset limits for valid pod label names (this limit does not apply to pod annotations). Storing both types of usernames allows us to join escaped versions with their more human-readable unescaped usernames.&lt;/p>
&lt;p>Exposing this metric as an endpoint for Prometheus to scrape allows us to query and join groups data with a range of usage metrics to gain powerful group-level insights. Here is an example PromQL query that retrieves the memory usage by user group:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-promql" data-lang="promql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">sum&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nv">container_memory_working_set_bytes&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nl">name&lt;/span>&lt;span class="o">!=&lt;/span>&lt;span class="p">&amp;#34;&amp;#34;,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nl">pod&lt;/span>&lt;span class="o">=~&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">jupyter-.*&lt;/span>&lt;span class="p">&amp;#34;,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nl">namespace&lt;/span>&lt;span class="o">=~&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">$hub_name&lt;/span>&lt;span class="p">&amp;#34;}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">on&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">namespace&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">pod&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">group_left&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">annotation_hub_jupyter_org_username&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">usergroup&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">group&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nv">kube_pod_annotations&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nl">namespace&lt;/span>&lt;span class="o">=~&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">$hub_name&lt;/span>&lt;span class="p">&amp;#34;,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nl">annotation_hub_jupyter_org_username&lt;/span>&lt;span class="o">=~&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">.*&lt;/span>&lt;span class="p">&amp;#34;,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nl">pod&lt;/span>&lt;span class="o">=~&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">jupyter-.*&lt;/span>&lt;span class="p">&amp;#34;}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">pod&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">namespace&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">annotation_hub_jupyter_org_username&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">on&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">namespace&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">annotation_hub_jupyter_org_username&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">group_left&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">usergroup&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">group&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kr">label_replace&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">jupyterhub_user_group_info&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nl">namespace&lt;/span>&lt;span class="o">=~&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">$hub_name&lt;/span>&lt;span class="p">&amp;#34;,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nl">username&lt;/span>&lt;span class="o">=~&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">.*&lt;/span>&lt;span class="p">&amp;#34;,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nl">usergroup&lt;/span>&lt;span class="o">=~&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">$user_group&lt;/span>&lt;span class="p">&amp;#34;},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">annotation_hub_jupyter_org_username&lt;/span>&lt;span class="p">&amp;#34;,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">$1&lt;/span>&lt;span class="p">&amp;#34;,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">username&lt;/span>&lt;span class="p">&amp;#34;,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="s">(.+)&lt;/span>&lt;span class="p">&amp;#34;&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">annotation_hub_jupyter_org_username&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">usergroup&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">namespace&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">usergroup&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nv">namespace&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h2 id="visualizing-user-group-resource-usage-with-grafana">
Visualizing user group resource usage with Grafana
&lt;a class="header-anchor" href="#visualizing-user-group-resource-usage-with-grafana">#&lt;/a>
&lt;/h2>&lt;p>The PromQL query above is rather long and complex to construct! However, you can benefit from an
&lt;a href="https://github.com/jupyterhub/grafana-dashboards/pull/149" target="_blank" rel="noopener" >upstream contribution&lt;/a> to the
&lt;a href="https://github.com/jupyterhub/grafana-dashboards" target="_blank" rel="noopener" >jupyterhub/grafana-dashboards&lt;/a> project where we have encapsulated the PromQL queries as Jsonnet code and represented them as Grafana Dashboard visualizations (also known as
&lt;a href="https://grafana.github.io/grafonnet/index.html" target="_blank" rel="noopener" >Grafonnet&lt;/a>). If you have a Kubernetes cluster running JupyterHub, try deploying these Grafana Dashboards and let us know what you think!&lt;/p>
&lt;p>Our particular PromQL query above is visualized in the Grafana Dashboard &lt;strong>User Groups Diagnostics&lt;/strong> under the &lt;strong>Memory Usage&lt;/strong> panel (see also the corresponding screenshot at the top of this post). This is equivalent to its counterpart &lt;strong>User Diagnostics&lt;/strong> dashboard, but with resource usage visualized on a &lt;em>per-group&lt;/em> level rather than a per-user level &amp;#x1f389;&lt;/p>
&lt;h2 id="future-work">
Future work
&lt;a class="header-anchor" href="#future-work">#&lt;/a>
&lt;/h2>&lt;p>We have laid the foundation for joining user group data to usage metrics with Prometheus by extracting memberships from JupyterHub&amp;rsquo;s database. This unlocks potent ways in which observability systems can be extended to group-level reporting and monitoring.&lt;/p>
&lt;p>Future directions for this work include:&lt;/p>
&lt;ul>
&lt;li>visualising cloud cost by user group in Grafana&lt;/li>
&lt;li>developing more group-level reporting and monitoring dashboards&lt;/li>
&lt;li>introducing group-level resource quotas.&lt;/li>
&lt;/ul>
&lt;p>What do you think? How would you like to see JupyterHub&amp;rsquo;s group management features evolve? Have you tried deploying this yourself?
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSff-u-sWFuwO1-VTgk2Ir7f1nfUUlLevQk_Vkk_jnmcI1nJnw/viewform?usp=header" target="_blank" rel="noopener" >We welcome your feedback&lt;/a> and feel free to open GitHub issues or make contributions to the repositories mentioned in this post.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>Thanks to the
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub project&lt;/a> for their collaboration and review of this work.&lt;/p></description></item><item><title>Solving classes of problems, rather than just an instance of a problem (with an example)</title><link>https://2i2c.org/blog/automating-support-upgrades/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/automating-support-upgrades/</guid><description>
&lt;h2 id="the-problem">
The Problem
&lt;a class="header-anchor" href="#the-problem">#&lt;/a>
&lt;/h2>&lt;p>Two of our the communities we serve (
&lt;a href="https://nmfs-openscapes.github.io/" target="_blank" rel="noopener" >NMFS Openscapes&lt;/a> and
&lt;a href="https://book.cryointhecloud.com" target="_blank" rel="noopener" >CryoCloud&lt;/a>) reported issues with starting GPU nodes on their hubs. Upon investigation, I discovered that the
&lt;a href="https://github.com/kubernetes/autoscaler" target="_blank" rel="noopener" >cluster autoscaler&lt;/a> seems to not recognize that GPUs were available in the cluster at all suddenly, and hence wasn&amp;rsquo;t provisioning the nodes. A restart of the cluster-autoscaler pod fixed the issue for both these communities.&lt;/p>
&lt;h2 id="an-incomplete-solution">
An incomplete solution
&lt;a class="header-anchor" href="#an-incomplete-solution">#&lt;/a>
&lt;/h2>&lt;p>But is that the end of the story? Not if we want to provide reliable long term infrastructure to communities with minimal
&lt;a href="https://sre.google/sre-book/eliminating-toil/" target="_blank" rel="noopener" >toil&lt;/a> on the part of 2i2c engineers!&lt;/p>
&lt;p>One of the engineering principles I&amp;rsquo;m trying to have us more intentionally and structurally embody is the idea that we don&amp;rsquo;t fix individual instances of problems, but &lt;strong>whole classes of problems, rather than just an individual instance of the problem&lt;/strong>. Fixing the immediate issue is &lt;em>not enough&lt;/em> - we need to understand what &lt;strong>class of issues&lt;/strong> was manifesting itself in this particular fashion, and fix &lt;em>that&lt;/em>.&lt;/p>
&lt;h2 id="what-was-the-class-of-issues-we-could-fix-here">
What was the &lt;strong>class of issues&lt;/strong> we could fix here?
&lt;a class="header-anchor" href="#what-was-the-class-of-issues-we-could-fix-here">#&lt;/a>
&lt;/h2>&lt;p>Digging in, I realized that our version of cluster-autoscaler was a little behind and not the latest. I &lt;em>presumed&lt;/em> this was a bug in cluster-autoscaler (given a restart fixed it, implying it is a bug about state). To me, the &lt;em>class of problem&lt;/em> here is that we were not rolling out releases to our &amp;ldquo;supporting infrastructure&amp;rdquo; fast enough. Perhaps if we were on the most recent cluster-autoscaler release, this issue would have never happened.&lt;/p>
&lt;p>Additionally, this failure to scale up was reported to us by the community rather than by an automated alert. We should change that too!&lt;/p>
&lt;h2 id="structured-solutions">
Structured solutions
&lt;a class="header-anchor" href="#structured-solutions">#&lt;/a>
&lt;/h2>&lt;p>We follow a two week sprint cycle, and I love the (hard won) structure it provides us. I don&amp;rsquo;t want to arbitrarily start doing work that upsets prior committed work from that structure. However, we also treat support requests seriously and try to work them into the sprint. So I timeboxed myself for one hour, and saw what I could accomplish. Turns out, a lot!&lt;/p>
&lt;ol>
&lt;li>I
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/6183" target="_blank" rel="noopener" >upgraded all our support components&lt;/a>, tested them, and rolled them out to &lt;em>all&lt;/em> our communities! This included upgrading Grafana, Prometheus, nginx-ingress as well as the cluster-autoscaler. This also restarts the cluster-autoscaler across our clusters, fixing this issue for other communities (if any had it).&lt;/li>
&lt;li>I
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/6182" target="_blank" rel="noopener" >re-enabled&lt;/a> the automatic once a month PR for upgrading these support tasks. We had switched to doing them on a manual sprint cadence, but clearly that was not fast enough nor automated enough. We will instead work these into the sprint once the bot opens the PR. Credit to
&lt;a href="https://github.com/consideratio" target="_blank" rel="noopener" >Erik Sundell&lt;/a> for initially setting this up&lt;/li>
&lt;li>Create
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/6185" target="_blank" rel="noopener" >an issue&lt;/a> to track the alert creation, and put it in our sprint backlog.&lt;/li>
&lt;li>(In an additional fifteen minute timebox) Write this blog post, to communicate out both to the affected communities and others what we have done.&lt;/li>
&lt;/ol>
&lt;p>By timeboxing myself, I didn&amp;rsquo;t upset our sprint cadence and was able to continue doing other work I had committed to in the sprint, while also fixing this &lt;em>class of issues&lt;/em> to the best of my ability.&lt;/p>
&lt;h2 id="moving-forward">
Moving forward
&lt;a class="header-anchor" href="#moving-forward">#&lt;/a>
&lt;/h2>&lt;p>While we have been &lt;em>implicitly&lt;/em> trying to solve whole classes of issues rather than individual instances of an issue as a team for a while, I want us to &lt;em>explicitly&lt;/em> do it from now on. Communicating this out to our communities is an important part of that, as is internal team training. This blog post is the former, and we are continually working on the latter :)&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/openscapes/" >OpenScapes&lt;/a> and
&lt;a href="https://2i2c.org/collaborators/cryocloud/" >CryoCloud&lt;/a> communities for working with us closely on infrastructure to identify improvements like this.&lt;/li>
&lt;/ul></description></item><item><title>Jupyter Book at the Scientific Python 2025 Developer Summit</title><link>https://2i2c.org/blog/scientific-python-summit/</link><pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/scientific-python-summit/</guid><description>&lt;p>Chris and Angus recently attended the Scientific Python 2025 Developer Summit on behalf of
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book&lt;/a>, here&amp;rsquo;s
&lt;a href="https://blog.jupyterbook.org/posts/2025-05-23-scientific-python-dev-summit" target="_blank" rel="noopener" >a brief blog post about their experience&lt;/a> written with the Jupyter Book team.&lt;/p></description></item><item><title>Launching Jupyter Book for 2i2c Communities</title><link>https://2i2c.org/blog/jb-for-communities/</link><pubDate>Thu, 08 May 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jb-for-communities/</guid><description>&lt;p>We&amp;rsquo;re excited to announce out-of-the-box support for
&lt;a href="https://next.jupyterbook.org" target="_blank" rel="noopener" >Jupyter Book 2&lt;/a> for our community members. This allows communities to create and share knowledge bases together for their community workflows. This post describes the motivation behind this new functionality, and how you can learn more about the project.&lt;/p>
&lt;blockquote>
&lt;p>⭐ &lt;strong>Members of 2i2c&amp;rsquo;s community network&lt;/strong> can use this feature in their hubs by following
&lt;a href="https://docs.2i2c.org/user/sharing/documentation" target="_blank" rel="noopener" >our documentation and sharing guide&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>A core component of our mission to make research and education more &lt;em>impactful&lt;/em>, &lt;em>accessible&lt;/em>, and &lt;em>delightful&lt;/em> is leveraging our unique
&lt;a href="https://2i2c.org/communities/" target="_blank" rel="noopener" >global network of communities&lt;/a> to make meaningful improvements to the open-source tools that power their work. Learning from one community can then provide value to our entire network, e.g.,
&lt;a href="https://2i2c.org/blog/pace-hackweek/" >our work with PACE on speeding up their CNN model training&lt;/a>.&lt;/p>
&lt;p>Central to our communities&amp;rsquo; work is the importance of sharing new findings, best practices, and community resources. Across our network, we have seen communities creating their own &amp;ldquo;books&amp;rdquo; that provide a home for this kind of content. Many of these books feature the concept of a &amp;ldquo;landing page&amp;rdquo; that welcomes new members, establishes an identity, and provides jumping-off points (or &amp;ldquo;calls to action&amp;rdquo;) to more detailed resources.&lt;/p>
&lt;p>Until now, each community has been required to undertake this work independently. 2i2c believes that by
&lt;a href="https://2i2c.org/blog/community-ownership/" >building upon existing open-source tools&lt;/a> like
&lt;a href="https://next.jupyterbook.org" target="_blank" rel="noopener" >Jupyter Book 2&lt;/a>, we can help communities focus on the &lt;em>content&lt;/em> of their home, rather than spending time worrying about its &lt;em>appearance&lt;/em>. To that end, we have been working on
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/5045" target="_blank" rel="noopener" >an initiative&lt;/a> to allow communities to rapidly build interactive starter documentation and provide users with a rich, interactive, and informative onboarding experience. Through this initiative, we have:&lt;/p>
&lt;ul>
&lt;li>Improved the user experience of launching into interactive compute environments from a Jupyter Book.&lt;/li>
&lt;li>Built components into the Jupyter Book &amp;ldquo;book theme&amp;rdquo; for low-density landing page content like call-to-action blocks.&lt;/li>
&lt;li>Extended our service to co-locate community documentation alongside community hubs (i.e., &lt;code>docs.hub.2i2c.cloud&lt;/code>).&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./landing-page.png" alt="Screenshot of the 2i2c Showcase Hub landing page" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
(A screenshot of the 2i2c
&lt;a href="https://docs.showcase.2i2c.cloud/" target="_blank" rel="noopener" >Showcase Hub&lt;/a> landing page, featuring a simple banner image and call-to-action.)&lt;/p>
&lt;p>To take advantage of this feature, communities can use the
&lt;a href="https://github.com/2i2c-org/community-docs-template" target="_blank" rel="noopener" >&lt;code>2i2c-org/community-docs-template&lt;/code>&lt;/a> to deploy a Jupyter Book site to GitHub Pages. This template demonstrates simple usage of Jupyter Book 2 for computational content and landing page creation, and establishes the necessary CD workflows for web publication. Meanwhile, 2i2c can update our domain name management to point the &lt;code>docs.hub.2i2c.cloud&lt;/code> nested subdomain to the newly deployed documentation.&lt;/p>
&lt;p>For more information, see
&lt;a href="https://docs.2i2c.org/user/sharing/documentation" target="_blank" rel="noopener" >our community documentation for deploying Jupyter Books&lt;/a>.&lt;/p>
&lt;p>Developing these new capabilities taught us a lot about what makes building &amp;ldquo;good&amp;rdquo; community documentation so difficult. A wide range of bespoke website-building tools and integration quirks previously made it challenging for communities to both keep documentation current with internal changes and keep up with necessary software updates. We also learned that by trading bespoke complexity for simplicity and readability, we could build a solution that scales to multiple communities, with a consequently reduced maintenance burden.&lt;/p>
&lt;p>With these improvements, we have initiated a conversation about what a more unified &amp;ldquo;look and feel&amp;rdquo; for our network might entail, and how it might benefit our communities. Much more can be done to build on this first step, and we are eager to gather feedback on how to improve these features for users.&lt;/p>
&lt;p>To learn more about this work, consider exploring a minimal example on
&lt;a href="https://docs.showcase.2i2c.cloud/" target="_blank" rel="noopener" >our Showcase Hub&lt;/a>, and check out
&lt;a href="https://docs.2i2c.org/user/sharing/documentation" target="_blank" rel="noopener" >our service guide&lt;/a>.
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSff-u-sWFuwO1-VTgk2Ir7f1nfUUlLevQk_Vkk_jnmcI1nJnw/viewform" target="_blank" rel="noopener" >Let us know&lt;/a> what you think!&lt;/p></description></item><item><title>Offering Jetstream2-powered hub support at 2i2c</title><link>https://2i2c.org/blog/jetstream2-persistent-hub/</link><pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jetstream2-persistent-hub/</guid><description>&lt;p>When we first committed to offer
&lt;a href="https://jetstream-cloud.org/index.html" target="_blank" rel="noopener" >Jetstream2&lt;/a> support at 2i2c, Jetstream2,
&lt;a href="https://docs.openstack.org/magnum/latest/" target="_blank" rel="noopener" >Magnum&lt;/a>,
&lt;a href="https://www.openstack.org/" target="_blank" rel="noopener" >OpenStack&lt;/a>,
&lt;a href="https://cluster-api.sigs.k8s.io/" target="_blank" rel="noopener" >ClusterAPI&lt;/a> were all new concepts that we hadn&amp;rsquo;t used at 2i2c before.
And although the initial exercise of reading about each of them independently was confusing, learning how they actually glued together was the key.
This post is about Jetstream2, 2i2c persistent hub offerings, and the learning that took place in the process.&lt;/p>
&lt;blockquote>
&lt;p>⭐ &lt;strong>Members of 2i2c&amp;rsquo;s community network&lt;/strong> can determine their eligibility and learn about JetStream2 in
&lt;a href="https://docs.2i2c.org/community-lead/about/cloud-providers#jetstream2" target="_blank" rel="noopener" >our supported cloud providers documentation&lt;/a>. If needed,
&lt;a href="https://docs.2i2c.org/support" target="_blank" rel="noopener" >reach out to 2i2c for support&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;h2 id="context">
Context
&lt;a class="header-anchor" href="#context">#&lt;/a>
&lt;/h2>&lt;p>At 2i2c, we want to be able to deploy k8s clusters on different cloud providers. In a very simplistic way, for this we use:&lt;/p>
&lt;ul>
&lt;li>&lt;code>Infrastructure as code&lt;/code> to describe, deploy and manage the actual physical infrastructure from the cloud providers&lt;/li>
&lt;li>Cloud specific CLI to authenticate to this infrastructure&lt;/li>
&lt;li>
&lt;a href="https://helm.sh/" target="_blank" rel="noopener" >&lt;code>Helm&lt;/code>&lt;/a> to deploy and manage k8s resources onto this infrastructure&lt;/li>
&lt;li>And finally
&lt;a href="https://kubernetes.io/docs/reference/kubectl/" target="_blank" rel="noopener" >&lt;code>kubectl&lt;/code>&lt;/a> to interact with all of these k8s resources&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./2i2c-generic-infra.png" alt="image" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
(Main tools used at 2i2c to deploy and manage k8s clusters on different cloud providers)&lt;/p>
&lt;p>On cloud providers like GCP, AWS, Azure, the Kubernetes support feels like an atomic feature of the cloud provider and works out of the box. But on Jetstream2, k8s support is not such a solid feature anymore.&lt;/p>
&lt;h2 id="jetstream2-kubernetes-support-stack">
Jetstream2 Kubernetes support stack
&lt;a class="header-anchor" href="#jetstream2-kubernetes-support-stack">#&lt;/a>
&lt;/h2>&lt;p>Jetstream2 is a collection of supercomputers that are part of the
&lt;a href="https://access-ci.org/" target="_blank" rel="noopener" >ACCESS cyberinfrastructure&lt;/a>. This ACCESS infrastructure groups together super computers like Jetstream2 (but not limited to it), into a mesh that creates the impression of a single, virtual system that scientists can openly access and interactively use.&lt;/p>
&lt;p>It offers Infrastructure as a Service (IaaS), that allows users to deploy VMs and manage environments dynamically. And the piece that enables this Infrastructure as a Service feature is OpenStack.&lt;/p>
&lt;h3 id="openstack-and-magnum">
OpenStack and Magnum
&lt;a class="header-anchor" href="#openstack-and-magnum">#&lt;/a>
&lt;/h3>&lt;p>OpenStack is an open source platform made of multiple projects that help build and manage both private and public cloud infrastructure.&lt;/p>
&lt;p>For our use-case, one of the most relevant OpenStack sub-project is Magnum. Magnum offers container orchestration engines for deploying and managing containers, like Kubernetes, but not limited to it.&lt;/p>
&lt;p>Initially, Kubernetes support was provided through a project called
&lt;a href="https://wiki.openstack.org/wiki/Heat" target="_blank" rel="noopener" >HEAT&lt;/a>. However that has proven harder to manage and maintain, and it was extremely hard to upgrade a cluster. So, they’ve migrated towards a new driver called
&lt;a href="https://docs.openstack.org/magnum-capi-helm/latest/user_docs/index.html" target="_blank" rel="noopener" >Cluster API magnum driver&lt;/a>, which offers a more native k8s integration.&lt;/p>
&lt;h3 id="cluster-api-and-capi-helm-driver">
Cluster API and CAPI helm driver
&lt;a class="header-anchor" href="#cluster-api-and-capi-helm-driver">#&lt;/a>
&lt;/h3>&lt;p>CAPI itself is k8s project that allows declaring k8s clusters in an easy way.&lt;/p>
&lt;p>The helm driver on the other hand is what acts like a bridge between OpenStack’s Magnum and Kubernetes’ Cluster API (CAPI). Its main goal is to to manage the lifecycle (create, scale, upgrade, destroy) of Kubernetes-conformant clusters using a declarative API.&lt;/p>
&lt;p>In order to do this, Cluster API provides an API for being able to manage the various components of a Kubernetes cluster. This conceptually looks like a Kubernetes cluster managing other Kubernetes clusters; the former, named the ‘CAPI management cluster’, is the one providing the API for managing the latter workload clusters.&lt;/p>
&lt;h3 id="decomposing-the-previous-atomic-feature">
Decomposing the previous atomic feature
&lt;a class="header-anchor" href="#decomposing-the-previous-atomic-feature">#&lt;/a>
&lt;/h3>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./Jetstream2-and-tent.png" alt="image" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
(Comparison between Jetstream2 and other cloud providers when it comes to k8s support)&lt;/p>
&lt;p>Magnum is part of the OpenStack tent and it’s the first layer on top of Jetstream2 towards achieving k8s support.&lt;/p>
&lt;p>The CAPI helm driver is what’s offering CAPI support. This is the last piece that’s needed to link a k8s cluster down to the hardware where it’s deployed, on Jetstream2.&lt;/p>
&lt;h2 id="challenges">
Challenges
&lt;a class="header-anchor" href="#challenges">#&lt;/a>
&lt;/h2>&lt;p>The Jetstream2-OpenStack stack is not a simple one. It’s a complex stack of technologies and each of the connection points can be challenging to debug and fix when something doesn&amp;rsquo;t work. Especially when you are one of the first ones that pilots this new magnum driver setup.&lt;/p>
&lt;p>So, it was expected that we faced some issues along the way. However, we were able to go around them and add Jetstream2 to our service menu. Below is a list of some of the issues that we faced:&lt;/p>
&lt;ol>
&lt;li>We have to create terraform resource in sequence which takes longer because of a race condition that makes concurrent nodegroups creation requests to fail&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>
&lt;a href="https://bugs.launchpad.net/magnum/&amp;#43;bug/2097946" target="_blank" rel="noopener" >bugs.launchpad.net/magnum/+bug/2097946&lt;/a>&lt;/li>
&lt;/ul>
&lt;ol start="2">
&lt;li>The role and labels of the nodegroups don&amp;rsquo;t get propagated to the actual nodes, so we cannot put our own labels on nodes at once&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>
&lt;a href="https://github.com/azimuth-cloud/capi-helm-charts/issues/84" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> azimuth-cloud/capi-helm-charts#84&lt;/a>&lt;/li>
&lt;/ul>
&lt;ol start="3">
&lt;li>The node count and min node count cannot be set to 0 and each nodegroup has to have at least 1 node&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>
&lt;a href="https://bugs.launchpad.net/magnum/&amp;#43;bug/2098002" target="_blank" rel="noopener" >bugs.launchpad.net/magnum/+bug/2098002&lt;/a>&lt;/li>
&lt;/ul>
&lt;ol start="4">
&lt;li>A default-worker is created apart from the default-control plane nodegroup and we cannot delete it due to the same issue as in 2.&lt;/li>
&lt;li>Latest CAPI helm chart version causes autoscaling to stop working in a persistent hub setup, so we had to downgrade it to a previous version&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/5601" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> 2i2c-org/infrastructure#5601&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="conclusion">
Conclusion
&lt;a class="header-anchor" href="#conclusion">#&lt;/a>
&lt;/h2>&lt;p>The biggest plus, is the people. We got support from
&lt;a href="https://github.com/julianpistorius" target="_blank" rel="noopener" >Julian Pistorius&lt;/a>, which has helped us a lot to both fix and validate some of the behaviours we were experiencing. Also, going through the
&lt;a href="https://jetstream-cloud.org/contact/index.html" target="_blank" rel="noopener" >Jetstream2 support process&lt;/a> was also a pleasant experience because they were super prompt in answering and they were very nice.&lt;/p>
&lt;p>Jetstream2 has a big plus over the other cloud providers with its openness thought the ACCESS program. This is something very handy to researchers and less costly than other cloud providers. 2i2c being able to offer hubs though this ACCESS program makes things more accessible to more researchers and more cost efficient.&lt;/p>
&lt;p>Higher complexity comes also with more control over the infrastructure which has its advantages.&lt;/p>
&lt;p>Leaving the challenges apart, the experience was a nice one and the outcome was positive -&amp;gt; 2i2c is now able to deploy both mybinder.org-like hubs as well as persistent storage hubs on Jetstream2 hardware, from the same cloud-agnostic infrastructure.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>Thanks to
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> for funding and collaborating with us on this work.&lt;/p></description></item><item><title>2025-Q1 reflection: Building a foundation for our new platform and membership model</title><link>https://2i2c.org/blog/q1-reflection/</link><pubDate>Wed, 16 Apr 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/q1-reflection/</guid><description>&lt;p>&lt;em>This is a summary of major progress we made in Q1 of 2025. Its goal is to summarize our major accomplishments and important context before we prioritize for Q2. We hope this gives our community stakeholders a more strategic-level insight into our progress and organizational plans. See
&lt;a href="https://2i2c.org/blog/q1-product-highlights/" >our Product Highlights for 2025Q1&lt;/a> for a product-focused review. Please
&lt;a href="https://2i2c.org/blog/q1-reflection/mailto:hello@2i2c.org" >give us feedback&lt;/a> for how we can provide more useful information.&lt;/em>&lt;/p>
&lt;p>Heading into Q1 2025, we had just completed an organizational re-structuring into new functional areas. These were
&lt;a href="https://compass.2i2c.org/product-and-services/" target="_blank" rel="noopener" >Products and Services&lt;/a>,
&lt;a href="https://compass.2i2c.org/biz-dev/" target="_blank" rel="noopener" >Business Development&lt;/a>, and
&lt;a href="https://compass.2i2c.org/delivery-enablement/" target="_blank" rel="noopener" >Delivery and Team Enablement&lt;/a>. Our
&lt;a href="https://2i2c.org/blog/funding-navigation/" >support from The Navigation Fund&lt;/a> began in January 2025, and we re-organized around the goals defined in that report. Q1 2025 was the first quarterly cycle under this new system.&lt;/p>
&lt;p>Our primary Q1 2025 goal was to build a solid organizational foundation that will enable us to iterate on our product and business model in Q2. We successfully completed our reorganization into dedicated Business Development and Product teams, and implemented a new quarterly target-setting process across the organization. There are still some key remaining areas to make progress, and we need to ensure that key KPIs and team responsibilities are solidified quickly in Q2.&lt;/p>
&lt;p>Below we’re sharing a brief update about the major achievements across each area of 2i2c, and first thoughts about outcomes to target in Q2 2025.&lt;/p>
&lt;h2 id="delivery-and-enablement">
Delivery and Enablement
&lt;a class="header-anchor" href="#delivery-and-enablement">#&lt;/a>
&lt;/h2>&lt;p>&lt;strong>Goal&lt;/strong>: Develop the operating structure and team skills to efficiently scale our product and service delivery.&lt;/p>
&lt;p>&lt;strong>Quarterly Objectives&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>D01&lt;/strong>: Re-organize into product-centric team structure. Define new roles, and accountability practices.&lt;/li>
&lt;li>&lt;strong>D02&lt;/strong>: Define at least one KPI across each of 2i2c’s areas and complete 2-3 iterations of measurement.&lt;/li>
&lt;/ul>
&lt;h3 id="how-we-did">
How we did
&lt;a class="header-anchor" href="#how-we-did">#&lt;/a>
&lt;/h3>&lt;p>We did a good job of taking our first steps at being more structured and intentional about our team and our goals. Our biggest accomplishment was to &lt;strong>significantly improve the Product and Services (P&amp;amp;S) team’s ability to plan and deliver on work&lt;/strong>. We are now measuring velocity as a P&amp;amp;S team, and this gives us a much better understanding of our capacity and a means of optimizing it.&lt;/p>
&lt;p>We were slower than expected in defining our new team structures - particularly within the Business Development (BD) team, but I’m confident that we are now on the right track. The biggest remaining challenge is to &lt;strong>refine the relationship between BD and P&amp;amp;S so that we have clear responsibility hand-offs.&lt;/strong>&lt;/p>
&lt;p>We have made progress defining KPIs, but have had uneven success in implementing them across the teams. We defined the BD KPIs later than expected, and as a result &lt;strong>we must still operationalize our measurement of those KPIs.&lt;/strong>&lt;/p>
&lt;p>Finally, &lt;strong>we were inconsistent in the way that we completed and documented the work above&lt;/strong>, and did not reliably encode outcomes as a “source of truth” in our team compass. This resulted in some confusion about the status, context, and outcomes of some of the team initiatives.&lt;/p>
&lt;h2 id="product-and-services">
Product and Services
&lt;a class="header-anchor" href="#product-and-services">#&lt;/a>
&lt;/h2>&lt;p>&lt;strong>Goal&lt;/strong>: Create a systematic approach to defining our product value and prioritizing development work.&lt;/p>
&lt;p>&lt;strong>Quarterly Objectives&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>P01:&lt;/strong> The Product Menu of current capabilities already exists. The focus now should be on finalizing the Product and Services MVP, which is linked to goal S01&lt;/li>
&lt;li>&lt;strong>P02:&lt;/strong> Integrate Services into the Product roadmap, prioritizing those needed to enable &lt;strong>S01&lt;/strong>&lt;/li>
&lt;li>&lt;strong>P03:&lt;/strong> We have designed a qualitative survey to benchmark and record customer satisfaction for any newly released product feature. This survey is already in the process of being sent out to customers of the recent Grafana work, and will be sent out to representative customers of subsequent feature releases.&lt;/li>
&lt;/ul>
&lt;h3 id="how-we-did-1">
How we did
&lt;a class="header-anchor" href="#how-we-did-1">#&lt;/a>
&lt;/h3>&lt;p>We&amp;rsquo;ve finalized our product roadmap and incorporated service design priorities into this system as well. It now guides both technical and service development which are the two key ways that we deliver value to our communities. This is a key win for the team, because it means &lt;strong>we can more systematically decide what to build next in order to deliver value to our communities&lt;/strong>.&lt;/p>
&lt;p>We also collaborated with the BD team to define our menu of options for communities and ensure they are clearly defined and scalable for our team. This involved a lot of extra back-and-forth that wasn’t planned, but was &lt;strong>critical to ensure we had alignment between our business model and our team’s ability to deliver&lt;/strong>.&lt;/p>
&lt;p>We ran an experiment at conducting community surveys to establish a baseline customer satisfaction KPI and learn if we are building the right things, but didn’t have the response rates that we needed to be useful. &lt;strong>We need to find a way of efficiently creating actionable answers to “are we building the right thing?”&lt;/strong>.&lt;/p>
&lt;p>We also agreed on a general principle of measuring community engagement as a primary KPI, but have not yet operationalized it. This is a key metric to &lt;strong>understand whether we’re delivering the value we intend, and whether a community is likely to renew their contract&lt;/strong>.&lt;/p>
&lt;p>Finally, in some cases we have continued to interact with communities in an unscalable way. This is both true for the ways in which we’ve given communities guidance and training, as well as the ways that the P&amp;amp;S team has supported BD in its sales and marketing efforts. It is critical that we &lt;strong>build scalable systems for delivering services to all of our member communities&lt;/strong> to ensure that we deliver value to our entire network of member organizations and not just those we have the strongest connections with. It will also &lt;strong>create more scalable channels of communication and relationship-building with communities&lt;/strong> so that we can support and learn from our entire network.&lt;/p>
&lt;h2 id="business-development">
Business Development
&lt;a class="header-anchor" href="#business-development">#&lt;/a>
&lt;/h2>&lt;p>&lt;strong>Goal&lt;/strong>: Create a structured service menu and improve sales tracking.&lt;/p>
&lt;p>&lt;strong>Quarterly targets&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>S01&lt;/strong>: Define a tiered pricing and service model&lt;/li>
&lt;li>&lt;strong>S02&lt;/strong>: Define a scalable sales system&lt;/li>
&lt;li>&lt;strong>S03&lt;/strong>: Create and operationalize revenue targets and projections&lt;/li>
&lt;/ul>
&lt;h3 id="how-we-did-2">
How we did
&lt;a class="header-anchor" href="#how-we-did-2">#&lt;/a>
&lt;/h3>&lt;p>Our BD team built a three-tier membership model that combines monthly fees with active user pricing. &lt;strong>This gives us a foundation to iterate on our pricing and business model.&lt;/strong> Initial anecdotal feedback from renewing communities has been positive, though &lt;strong>we have not yet systematized a process for collecting and incorporating feedback from communities into our sales assets&lt;/strong>.&lt;/p>
&lt;p>We&amp;rsquo;ve completed the first version of our sales CRM to track all customer conversations and tie them to ongoing opportunities. The &lt;strong>CRM is now being used reliably, and has already generated helpful feedback for improvement&lt;/strong>. However &lt;strong>we did not make our intended progress in creating systematized and scalable sales assets&lt;/strong>. It will be critical to build these assets quickly so that we can engage in efficient sales conversations and iterate quickly.&lt;/p>
&lt;p>We were slower than expected in defining the KPIs that drive BD. We’ve successfully defined the KPIs that should drive BD, but have not operationalized and iterated on business development targets. It will be &lt;strong>critical to measure these BD KPIs and define targets in Q2 in order to set a benchmark of success for BD&lt;/strong>.&lt;/p>
&lt;p>Finally, we were slower than expected in defining the team structure of BD, due to a diffusion of responsibility stemming from our shared leadership model. We’ve clarified that ambiguity and &lt;strong>now have a defined structure of roles and responsibilities within BD&lt;/strong>.&lt;/p>
&lt;h2 id="concluding-thoughts">
Concluding thoughts
&lt;a class="header-anchor" href="#concluding-thoughts">#&lt;/a>
&lt;/h2>&lt;p>Overall, I consider this quarter a success, given that we are operating with new systems for planning and executing work, as well as a new team structure. We didn&amp;rsquo;t accomplish everything we set out to do in Q1 2025, but I think that&amp;rsquo;s OK for our first quarterly cycle. In Q2 I expect us to be better at scoping the work we aim to accomplish, as well as holding ourselves accountable for getting it done.&lt;/p>
&lt;p>In Q2, we need to prioritize the refinement of our Business Development / Membership model and the system we use for growing and sustaining it. Our P&amp;amp;S team is now much more reliable at planning and delivering work, and our next bottleneck is having a business process that can reliably &lt;em>generate&lt;/em> work and revenue that sustains the organization. This will be a key focus in our Q2 planning.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> for core support to 2i2c which funds this strategic and organizational work.&lt;/li>
&lt;/ul></description></item><item><title>Our Product and Service goals for Q2 2025</title><link>https://2i2c.org/blog/q2-product-goals/</link><pubDate>Wed, 16 Apr 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/q2-product-goals/</guid><description>&lt;p>&lt;em>As we head into Q2 of 2025, we continue to focus our work delivering on a small set of core themes that reflect our communities’ most pressing needs. As a part of this process, we want to continue sharing our platform and service goals in an effort to remain transparent, as well as to provide our communities with an opportunity to give us feedback on our direction, and on what’s important for them. See
&lt;a href="https://2i2c.org/blog/q1-product-goals/" >last quarter’s product goals here&lt;/a>.&lt;/em>&lt;/p>
&lt;p>The following themes are not guarantees, but should provide a high level view on how we plan to improve our product and services offerings in the next quarter. &lt;strong>If your organization has funding available to support any of the enhancements below,
&lt;a href="https://forms.fillout.com/t/uQHVMkgvsuus" target="_blank" rel="noopener" >reach out to us&lt;/a> and we can discuss how you can shape our priorities and outcomes&lt;/strong>.&lt;/p>
&lt;h2 id="give-administrators-more-control">
Give administrators more control
&lt;a class="header-anchor" href="#give-administrators-more-control">#&lt;/a>
&lt;/h2>&lt;p>The implementation of
&lt;a href="https://2i2c.org/blog/per-user-storage-quota-gcp/" >per-user storage quotas&lt;/a> in Q1 was the start of a set of product initiatives aimed at giving hub administrators more control and peace of mind over unexpected cost overruns.&lt;/p>
&lt;p>We aim to continue giving administrators more control by implementing the ability to &lt;strong>associate users with groups for usage monitoring&lt;/strong>, and as a foundation for future improvements which will deliver &lt;strong>group-level management of storage quotas,&lt;/strong> and later Compute and Dask quotas.&lt;/p>
&lt;h2 id="improve-creating-and-sharing-custom-environments">
Improve creating and sharing custom environments
&lt;a class="header-anchor" href="#improve-creating-and-sharing-custom-environments">#&lt;/a>
&lt;/h2>&lt;p>One of the wonderful things about shared open source JupyterHub infrastructure is that it allows community members to share their projects with each other in ways that ensure the work can be fully experienced by the recipient, complete with fully executable content.&lt;/p>
&lt;p>In Q2, we aim to improve the ability for hub users to &lt;strong>build custom environments in their hubs&lt;/strong>, and later to easily &lt;strong>share those custom environments with others&lt;/strong>, ensuring their entire toolchain is replicated in full.&lt;/p>
&lt;h2 id="out-of-the-box-jupyter-book-support">
Out-of-the-box Jupyter Book support
&lt;a class="header-anchor" href="#out-of-the-box-jupyter-book-support">#&lt;/a>
&lt;/h2>&lt;p>We have been working on scoping and building a default JupyterBook implementation
&lt;a href="http://mystmd.org" target="_blank" rel="noopener" >using the new MyST document engine&lt;/a>, aiming to deliver a default set of tools for &lt;strong>authoring and sharing documentation&lt;/strong>, &lt;strong>customizable landing pages&lt;/strong> and &lt;strong>interactive training materials&lt;/strong> out of the box with new hub deployments.&lt;/p>
&lt;p>In Q1 we delivered improvements to the JupyterBook launching interface to allow for &lt;strong>automatic hub type detection&lt;/strong>, as well as &lt;strong>landing page components, theming capabilities, galleries and more&lt;/strong>. We aim to complete this work in Q2.&lt;/p>
&lt;h2 id="a-better-onboarding-experience-for-our-communities">
A better onboarding experience for our communities
&lt;a class="header-anchor" href="#a-better-onboarding-experience-for-our-communities">#&lt;/a>
&lt;/h2>&lt;p>As more communities in the research and education space join the 2i2c community network, it’s important for us to be ready to deliver the best value we can for them at scale. To that end, we’re &lt;strong>streamlining the processes we use to onboard our communities&lt;/strong>, improving the touchpoints through which we engage with them when they join our community network, and ensuring we create opportunities to better understand their needs in order to set them up for success with their hubs right from the start.&lt;/p>
&lt;h2 id="improve-and-formalize-the-services-we-deliver-to-our-communities">
Improve and formalize the services we deliver to our communities
&lt;a class="header-anchor" href="#improve-and-formalize-the-services-we-deliver-to-our-communities">#&lt;/a>
&lt;/h2>&lt;p>Together with an improved onboarding experience, we aim to improve how we deliver other key services to our communities, including &lt;strong>expert consulting, hub management, and technical support&lt;/strong>, with the aim to offer more scalable, high-value services to address the needs of our communities in a sustainable way.&lt;/p>
&lt;p>Some of the goals of this service revamp will include improving triaging of support tickets, shortening our issue response time, and providing our community champions with dedicated expertise on subjects including open source science and tools, community participation in open science, fundraising and grantsmanship co-creation, engineering consultancy and more.&lt;/p>
&lt;h2 id="another-update-coming-in-q3">
Another update coming in Q3
&lt;a class="header-anchor" href="#another-update-coming-in-q3">#&lt;/a>
&lt;/h2>&lt;p>We’ll use this blog post as an informal roadmap of our product goals for the quarter, striving to advance as many of the outlined areas as possible. During our Q3 planning, we’ll reflect on the achievements made in line with this initiative and share a progress update with our community. Keep an eye out for more details!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Our strategic and organization-level work is supported by a grant from
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> and fees from
&lt;a href="https://2i2c.org/members/" >our member organizations&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Our product highlights from Q2 2025</title><link>https://2i2c.org/blog/q1-product-highlights/</link><pubDate>Wed, 16 Apr 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/q1-product-highlights/</guid><description>&lt;p>&lt;em>These describe the major service improvements that we rolled out in Q1 2025. See this
&lt;a href="https://2i2c.org/blog/q1-product-goals/" >blog post describing our product enhancement goals in Q1 2025&lt;/a> for the targets we intended to hit this quarter. Below is a brief description of what we accomplished.&lt;/em>&lt;/p>
&lt;h2 id="user-storage-quotas">
User storage quotas
&lt;a class="header-anchor" href="#user-storage-quotas">#&lt;/a>
&lt;/h2>&lt;p>A key part of 2i2c’s service is &lt;strong>making the cloud safe to try&lt;/strong>. One of the biggest concerns from our communities is that their cloud costs will be unexpectedly high. This quarter we decided to make cloud storage a bit safer. Storage can get expensive, especially when a user accidentally downloads a particularly large file - they may not even realize that doing so incurs an extra cost. For this reason, we added the ability to limit user storage on JupyterHubs:&lt;/p>
&lt;p>
&lt;a href="https://2i2c.org/blog/per-user-storage-quota/" >Enforcing per-user storage quotas with &lt;code>jupyterhub-home-nfs&lt;/code>&lt;/a>&lt;/p>
&lt;p>We initially deployed this feature on our AWS hubs, and followed up by deploying it on GCP hubs as well. Any community with a hub on AWS and GCP now has the ability to limit the storage that their users receive, greatly increasing our communities’ control over their costs.&lt;/p>
&lt;p>
&lt;a href="https://2i2c.org/blog/per-user-storage-quota-gcp/" >Enforcing per-user storage quotas now available on GCP&lt;/a>&lt;/p>
&lt;p>&lt;em>&lt;strong>Thanks to&lt;/strong>
&lt;a href="https://developmentseed.org/" target="_blank" rel="noopener" >DevSeed&lt;/a> for collaboration on this work, in addition to the
&lt;a href="https://www.earthdata.nasa.gov/data/tools/veda" target="_blank" rel="noopener" >NASA VEDA project&lt;/a> for funding this effort.&lt;/em>&lt;/p>
&lt;h2 id="automated-backups-for-gcp-hubs">
Automated backups for GCP hubs
&lt;a class="header-anchor" href="#automated-backups-for-gcp-hubs">#&lt;/a>
&lt;/h2>&lt;p>Another concern communities have is “what happens if something breaks and I lose data?” Cloud providers offer a number of ways to recover from disasters like this, and we did some work enabling this for GCP so that communities have disaster recovery options available to them.&lt;/p>
&lt;p>
&lt;a href="https://2i2c.org/blog/gcp-filestore-backups/" >Announcing backups for GCP-hosted hubs!&lt;/a>&lt;/p>
&lt;h2 id="deploying-jupyterhub-on-public-infrastructure">
Deploying JupyterHub on public infrastructure
&lt;a class="header-anchor" href="#deploying-jupyterhub-on-public-infrastructure">#&lt;/a>
&lt;/h2>&lt;p>Deploying Kubernetes and JupyterHub on publicly-managed infrastructure could be an excellent way to reduce the perceived risk of depending on large tech companies for their key workflows, and potentially reduce costs by using federal infrastructure that can be paid with special grant funding. We built team expertise in deploying and running JupyterHub and BinderHub on JetStream2, and have promising results that we hope to build upon in Q2.&lt;/p>
&lt;p>
&lt;a href="https://2i2c.org/blog/jetstream-binderhub/" >Open infrastructure for collaborative geoscience with Project Pythia: Learning how to deploy a BinderHub on Jetstream2&lt;/a>&lt;/p>
&lt;p>&lt;em>&lt;strong>Thanks to&lt;/strong>
&lt;a href="https://jetstream-cloud.org/" target="_blank" rel="noopener" >Jetstream2&lt;/a> for an ACCESS allocation, to Julian Pistorius for technical support, to
&lt;a href="https://projectpythia.org/" target="_blank" rel="noopener" >Project Pythia&lt;/a> (NSF award 2324302) for funding this work, and to
&lt;a href="https://www.zonca.dev/posts/2024-12-11-jetstream_kubernetes_magnum" target="_blank" rel="noopener" >Andrea Zonca&lt;/a> for preliminary work on Kubernetes deployments on Jetstream 2.&lt;/em>&lt;/p>
&lt;h2 id="upgrading-to-the-latest-jupyterhub-version">
Upgrading to the latest JupyterHub version
&lt;a class="header-anchor" href="#upgrading-to-the-latest-jupyterhub-version">#&lt;/a>
&lt;/h2>&lt;p>We upgraded all of 2i2c’s community hubs to use JupyterHub 5.0. This brings in a bunch of security improvements, bugfixes, and enhancements. You can find links to the highlights and changelog in our blog post below.&lt;/p>
&lt;p>
&lt;a href="https://2i2c.org/blog/jupyterhub5-upgrade/" >2i2c hubs now run JupyterHub 5.0&lt;/a>&lt;/p>
&lt;h2 id="reproducible-environments-for-community-members">
Reproducible environments for community members
&lt;a class="header-anchor" href="#reproducible-environments-for-community-members">#&lt;/a>
&lt;/h2>&lt;p>Finally, we did a bit of product brainstorming around enabling communities to bring their environments with them when they publish. We are interested in making it easy to re-use a community’s hub infrastructure to provide the reproducible environments needed for publishing or communicating their work externally. Here’s a brief brainstorm for what this could look like:&lt;/p>
&lt;p>
&lt;a href="https://2i2c.org/blog/frictionless-reproducibility/" >Towards frictionless, portable, and sustainable reproducibility with Binder&lt;/a>&lt;/p>
&lt;h2 id="improving-the-ux-and-flexibility-of-community-documentation-with-myst">
Improving the UX and flexibility of community documentation with MyST
&lt;a class="header-anchor" href="#improving-the-ux-and-flexibility-of-community-documentation-with-myst">#&lt;/a>
&lt;/h2>&lt;p>To provide our communities with quality documentation that sits alongside their Hubs, we have been working on improving MyST to allow for a more flexible and usable document authoring experience, with improvements to landing page layouts, theming, galleries, button layouts, and project launching. We’re aiming to deliver a complete MVP covering our communities’ most requested features by the end of Q2.&lt;/p>
&lt;h2 id="in-case-you-missed-it">
In case you missed it
&lt;a class="header-anchor" href="#in-case-you-missed-it">#&lt;/a>
&lt;/h2>&lt;p>Finally, below are a few other blog posts where we’ve documented major impact stories and organizational updates:&lt;/p>
&lt;p>&lt;strong>Community impact&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/blog/hackweek-shoutout/" >Harnessing Marine Open Data Science for Ocean Sustainability in Africa, South Asia and Latin America&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/blog/veda-update-q4-2024/" >NASA VEDA &amp;amp; 2i2c Update for Q4 2024 (Oct-Dec 2024)&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Open Source impact&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/blog/jupyter-executive-council/" >Chris is joining Project Jupyter&amp;rsquo;s Executive Council&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://blog.jupyter.org/simplifying-and-speeding-up-binder-builds-with-buildkit-d44f96582994" target="_blank" rel="noopener" >Simplifying and speeding up Binder builds with BuildKit&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/blog/binder-singlenode/" >2i2c joins the mybinder.org federation with a cheaper and faster way to deploy Binderhub&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/blog/jupyter-book-cors/" >Designing for an ecosystem: a case study in cross-project open source contribution&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Organizational updates&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/blog/community-ownership/" >Announcing our formal commitment to open technology&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Our strategic and organization-level work is supported by a grant from
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> and fees from
&lt;a href="https://2i2c.org/members/" >our member organizations&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Harnessing Marine Open Data Science for Ocean Sustainability in Africa, South Asia and Latin America</title><link>https://2i2c.org/blog/hackweek-shoutout/</link><pubDate>Tue, 11 Mar 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/hackweek-shoutout/</guid><description>&lt;p>&lt;em>Thank you to Emilio Mayorga for sharing this publication.&lt;/em>&lt;/p>
&lt;p>Several community members, including
&lt;a href="https://github.com/paigem" target="_blank" rel="noopener" >Paige Martin&lt;/a> (Australian Climate Simulator),
&lt;a href="https://github.com/eeholmes" target="_blank" rel="noopener" >Eli Holmes&lt;/a> (NOAA Fisheries), and
&lt;a href="https://github.com/emiliom/" target="_blank" rel="noopener" >Emilio Mayorga&lt;/a> (University of Washington) published case studies in
&lt;a href="https://tos.org/oceanography/issue/volume-38-issue-1" target="_blank" rel="noopener" >Oceanography magazine&amp;rsquo;s &amp;ldquo;Vision for Capacity Sharing&amp;rdquo; issue&lt;/a>.&lt;/p>
&lt;p>Their article
&lt;a href="https://tos.org/oceanography/article/harnessing-marine-open-data-science-for-ocean-sustainability-in-africa-south-asia-and-latin-america" target="_blank" rel="noopener" >Harnessing Marine Open Data Science for Ocean Sustainability in Africa, South Asia, and Latin America&lt;/a> highlights the benefits of hackweek-style collaboration and learning events to build capacity in underrepresented communities, using 2i2c-supported JupyterHub for seamless set up and effective data sharing.&lt;/p>
&lt;p>More on these three specific initiatives is available at their respective websites:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://coessing.org" target="_blank" rel="noopener" >COESSING&lt;/a>, Coastal Ocean Environment Summer School In Nigeria and Ghana.&lt;/li>
&lt;li>
&lt;a href="https://intercoonecta.github.io" target="_blank" rel="noopener" >OHWe&lt;/a> - OceanHackWeek en Español (in Spanish).&lt;/li>
&lt;li>
&lt;a href="https://hackweek-itcoocean.github.io/2023-Hackbook/" target="_blank" rel="noopener" >ITCOocean Hack2Week&lt;/a> (an Indian Ocean program). Training Course &amp;amp; HackWeek On Machine Learning Based Species Distribution Modeling.&lt;/li>
&lt;/ul>
&lt;p>We&amp;rsquo;re happy to see these communities extend their impact and make interactive computing more accessible to participants around the world.&lt;/p></description></item><item><title>Chris is joining Project Jupyter's Executive Council</title><link>https://2i2c.org/blog/jupyter-executive-council/</link><pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jupyter-executive-council/</guid><description>&lt;p>We are proud to announce that 2i2c&amp;rsquo;s Executive Director, Chris Holdgraf, was
&lt;a href="https://blog.jupyter.org/project-jupyters-2025-executive-council-elections-605b183ec64c" target="_blank" rel="noopener" >recently elected to Jupyter&amp;rsquo;s Executive Council&lt;/a>. The 2i2c team discussed whether Chris should run for this position last year, and concluded that it was a way for our non-profit to both support Jupyter&amp;rsquo;s mission at a strategic level, and represent the interests of research and education communities in Jupyter&amp;rsquo;s direction. Chris wrote
&lt;a href="https://chrisholdgraf.com/blog/jupyter-org-structure" target="_blank" rel="noopener" >a blog post about his reasons for running&lt;/a> with more information.&lt;/p>
&lt;p>One of Chris&amp;rsquo; goals is to be a transparent source of information about what the council is working on, where its priorities lie, and what are the major challenges it is trying to tackle. He&amp;rsquo;s written two blog posts that describe some of his experiences so far, at the links below:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://chrisholdgraf.com/blog/os-support" target="_blank" rel="noopener" >On the ways that the Jupyter Foundation could support the Jupyter Project with its funds&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://chrisholdgraf.com/blog/jupyter-org-structure" target="_blank" rel="noopener" >A high-level overview of Jupyter&amp;rsquo;s structure&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>We&amp;rsquo;re hopeful that this is a way for 2i2c to scale its impact and lean into its
&lt;a href="https://2i2c.org/open-technology/" >commitment to open technology&lt;/a>. Chris intends to keep writing about his personal experience via
&lt;a href="https://chrisholdgraf.com" target="_blank" rel="noopener" >his blog&lt;/a>, and we&amp;rsquo;ll provide updates here for major developments that are relevant to 2i2c&amp;rsquo;s network of communities.
We&amp;rsquo;re proud to have Chris in this role, and excited for his contributions to the Jupyter community!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Strategic open source support like this is supported by a grant from
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> and fees from
&lt;a href="https://2i2c.org/members/" >our member organizations&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Simplifying and speeding up Binder builds with BuildKit</title><link>https://2i2c.org/blog/binder-buildkit/</link><pubDate>Mon, 03 Mar 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/binder-buildkit/</guid><description>&lt;p>Chris and Yuvi recently wrote
&lt;a href="https://blog.jupyter.org/simplifying-and-speeding-up-binder-builds-with-buildkit-d44f96582994" target="_blank" rel="noopener" >a blog post on the Jupyter blog&lt;/a> about a recent experiment to significantly reduce the cost of running a node on the mybinder.org federation.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> provides support for some of our work with the Binder project.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub&lt;/a> for working with us to get this new node deployed for mybinder.org.&lt;/li>
&lt;/ul></description></item><item><title>Enforcing per-user storage quotas now available on GCP</title><link>https://2i2c.org/blog/per-user-storage-quota-gcp/</link><pubDate>Tue, 25 Feb 2025 14:18:04 +0000</pubDate><guid>https://2i2c.org/blog/per-user-storage-quota-gcp/</guid><description>&lt;p>Building upon our previous work developing
&lt;a href="https://2i2c.org/blog/per-user-storage-quota/" >per-user storage quotas for our AWS infrastructure&lt;/a>, we are pleased to announce that this feature is now available for GCP-hosted hubs!&lt;/p>
&lt;p>To provide this feature on this vendor, we have updated our infrastructure provisioning system to create persistent disks, and enable automatic backups of the disk for disaster recovery purposes. However, the systems we had already developed for AWS, such as
&lt;a href="https://github.com/2i2c-org/jupyterhub-home-nfs" target="_blank" rel="noopener" >&lt;code>jupyterhub-home-nfs&lt;/code>&lt;/a> and our alerting system through
&lt;a href="https://prometheus.io/docs/alerting/latest/alertmanager/" target="_blank" rel="noopener" >Prometheus Alertmanager&lt;/a>, are vendor agnostic and work right out of the box with the new architecture!&lt;/p>
&lt;p>If you would like to try this feature on your 2i2c-managed JupyterHub,
&lt;a href="https://docs.2i2c.org/support" target="_blank" rel="noopener" >please get in touch&lt;/a>.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>This project was developed and deployed in collaboration with
&lt;a href="https://developmentseed.org/team/tarashish-mishra/" target="_blank" rel="noopener" >Tarashish Mishra&lt;/a> from
&lt;a href="https://2i2c.org/collaborators/devseed/" >Development Seed&lt;/a>, funded through the
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA project&lt;/a>.&lt;/p></description></item><item><title>Open infrastructure for collaborative geoscience with Project Pythia: Learning how to deploy a BinderHub on Jetstream2</title><link>https://2i2c.org/blog/jetstream-binderhub/</link><pubDate>Wed, 12 Feb 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jetstream-binderhub/</guid><description>
&lt;h2 id="project-pythia-and-the-jupyter-notebook-obsolescence-problem">
Project Pythia and the &amp;ldquo;Jupyter notebook obsolescence&amp;rdquo; problem
&lt;a class="header-anchor" href="#project-pythia-and-the-jupyter-notebook-obsolescence-problem">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://projectpythia.org/" target="_blank" rel="noopener" >Project Pythia&lt;/a> provides educational resources for essential software tools that enable open, reproducible and scalable geoscience, such as the
&lt;a href="https://pangeo.io" target="_blank" rel="noopener" >Pangeo&lt;/a> stack of packages (Xarray, Dask, Jupyter). Their &lt;em>Cookbooks&lt;/em> are crowdsourced, community-curated, and open-source collections of Jupyter notebooks that demonstrate how to use these tools for cloud-native, geoscientific workflows (see our
&lt;a href="https://2i2c.org/contentblog/2024/project-pythia-cookoff/index.md" >Project Pythia Cookoff&lt;/a> blog post). However, &amp;ldquo;Jupyter notebook obsolescence&amp;rdquo; is a common problem: tutorials that were created a few years ago may no longer work due to changes in the software ecosystem and hampers the reproducibility of scientific results. A reproducible execution environment and the infrastructure to support it are essential for the long-term sustainability of these educational resources.&lt;/p>
&lt;h2 id="leveraging-nsf-funded-cyberinfrastructure-for-binderhub">
Leveraging NSF-funded cyberinfrastructure for BinderHub
&lt;a class="header-anchor" href="#leveraging-nsf-funded-cyberinfrastructure-for-binderhub">#&lt;/a>
&lt;/h2>&lt;p>A
&lt;a href="https://binderhub.readthedocs.io/en/latest/" target="_blank" rel="noopener" >BinderHub&lt;/a> allows users to dynamically create custom computing environments from
&lt;a href="https://mybinder.readthedocs.io/en/latest/introduction.html#what-is-a-binder" target="_blank" rel="noopener" >Binder-ready&lt;/a> repositories containing computational notebooks and configuration files that describe the software environment required to run them. A public Binder service exists at
&lt;a href="https://mybinder.org/" target="_blank" rel="noopener" >mybinder.org&lt;/a> (see our blog post about
&lt;a href="https://2i2c.org/blog/binder-singlenode/" >joining the mybinder federation&lt;/a> 🎉) and is a successful example of how open cloud infrastructure can accommodate reproducible execution environments.&lt;/p>
&lt;p>The resources available on such a public service are limited therefore 2i2c, together with Project Pythia, have been exploring how to deploy a BinderHub backed by larger resources from the NSF-funded cloud computing platform
&lt;a href="https://jetstream-cloud.org/" target="_blank" rel="noopener" >Jetstream2&lt;/a>. This allows for larger simultaneous user loads, such as at workshops, as well as access to more powerful distributed and parallelized workflows required to process large geoscientific datasets, under a persistent resource allocation.&lt;/p>
&lt;h2 id="learning-how-to-deploy-on-openstack">
Learning how to deploy on OpenStack
&lt;a class="header-anchor" href="#learning-how-to-deploy-on-openstack">#&lt;/a>
&lt;/h2>&lt;p>Jetstream2 uses
&lt;a href="https://www.openstack.org" target="_blank" rel="noopener" >OpenStack&lt;/a> in order to manage pools of compute, storage and networking resources, and for our purposes we specifically make use of OpenStack
&lt;a href="https://docs.openstack.org/magnum/latest/" target="_blank" rel="noopener" >Magnum&lt;/a>
&lt;a href="https://specs.openstack.org/openstack//magnum-specs/specs/bobcat/clusterapi-driver.html" target="_blank" rel="noopener" >Cluster API driver&lt;/a> to manage Kubernetes for our deployment.&lt;/p>
&lt;p>Cluster API needs a &lt;code>CAPI management cluster&lt;/code> in order to manage other Kubernetes clusters, called workload clusters. On Jetstream2, this management cluster is gracefully created and operated by the Jetstream2 team, which means that the only task to worry about is creating and configuring the workload cluster.&lt;/p>
&lt;p>For the workload cluster we used the
&lt;a href="https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs" target="_blank" rel="noopener" >Openstack Terraform provider&lt;/a> to define the cluster template, the cluster itself and the node groups in a reproducible way.&lt;/p>
&lt;p>After the cluster infrastructure was successfully created on Jetstream2, thanks to the 2i2c hub infrastructure being cloud agnostic as well, deploying BinderHub to Jetstream2, was a seamless experience and it was no different than on other cloud providers that we already supported.&lt;/p>
&lt;p>We also learnt about some limitations of the Openstack Magnum driver project, which were expected given it being a relatively recent project, slowly being adopted, but they were all reported upstream and hopefully will soon be fixed.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://jetstream-cloud.org/" target="_blank" rel="noopener" >Jetstream2&lt;/a>: Explore ACCESS allocation and Julian Pistorius for technical support&lt;/li>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> for funding and collaborating with us on this work.&lt;/li>
&lt;li>
&lt;a href="https://www.zonca.dev/posts/2024-12-11-jetstream_kubernetes_magnum" target="_blank" rel="noopener" >Andrea Zonca&lt;/a> for preliminary work on Kubernetes deployments on Jetstream 2&lt;/li>
&lt;/ul></description></item><item><title>Towards frictionless, portable, and sustainable reproducibility with Binder</title><link>https://2i2c.org/blog/frictionless-reproducibility/</link><pubDate>Mon, 10 Feb 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/frictionless-reproducibility/</guid><description>&lt;p>Last December I had an opportunity to discuss the current and future state of the open publishing ecosystem at a workshop hosted by
&lt;a href="https://2i2c.org/collaborators/hhmi/" >HHMI&lt;/a>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. While 2i2c doesn&amp;rsquo;t primarily focus on &amp;ldquo;publishing&amp;rdquo; workflows, we do support communities on a journey that often &lt;em>leads to publishing&lt;/em>, and we make choices about technology in our
&lt;a href="https://2i2c.org/platform/" >community hub platform&lt;/a> that can support different kinds of publishing outcomes.&lt;/p>
&lt;p>After listening to folks across the open science and publishing ecosystem, I noticed a common challenge:&lt;/p>
&lt;ul>
&lt;li>Publishers care about &lt;strong>reproducibility&lt;/strong> of computational narratives and the &lt;strong>interactivity&lt;/strong> that computation can provide.&lt;/li>
&lt;li>But they &lt;strong>lack the capacity to manage computational infrastructure&lt;/strong> in a way that is flexible enough for all of their authors.&lt;/li>
&lt;/ul>
&lt;p>This post is a reflection on how ecosystems like Jupyter and managed community hubs could solve some of these challenges.&lt;/p>
&lt;h2 id="a-community-experiment-to-provide-reproducible-environments-for-published-pre-prints">
A community experiment to provide reproducible environments for published pre-prints
&lt;a class="header-anchor" href="#a-community-experiment-to-provide-reproducible-environments-for-published-pre-prints">#&lt;/a>
&lt;/h2>&lt;p>Many of 2i2c&amp;rsquo;s communities already care about reproducibility and sharing their computational narratives. That&amp;rsquo;s one reason that we&amp;rsquo;ve
&lt;a href="https://2i2c.org/blog/jupyterhub-binderhub-gesis/" >been improving reproducible environment sharing with Binder&lt;/a>,
&lt;a href="https://2i2c.org/blog/project-pythia-cookoff/" >integrating Jupyter Book into our community cloud platform&lt;/a>, and
&lt;a href="https://2i2c.org/blog/binder-singlenode/" >supporting the mybinder.org federation&lt;/a>.&lt;/p>
&lt;p>However, communities often want to &lt;strong>publish&lt;/strong> rather than just &lt;strong>share&lt;/strong>. Publishing is more structured, invites particular kinds of feedback, and requires more Quality Assurance. There&amp;rsquo;s a huge ecosystem of publishers and services that support formal publishing, and they ensure things like discoverability, long-term archivability, versioning, peer review, DOI referencing, etc.&lt;/p>
&lt;p>We recently piloted
&lt;a href="https://2i2c.org/blog/hhmi-spyglass-mysql/" >running a BinderHub for Biorxiv publications with the Loren Frank lab and HHMI&lt;/a>, and found this to be a nice proof-of-concept. While the &amp;ldquo;published article&amp;rdquo; lives on
&lt;a href="https://www.biorxiv.org/" target="_blank" rel="noopener" >Biorxiv&lt;/a>, the computational infrastructure and environment is provided by a BinderHub (in this case managed by 2i2c, but anybody could manage a hub in this way).&lt;/p>
&lt;figure id="figure-the-biorxiv-binder-pilot-workflow-an-author-used-a-2i2c-managed-binderhub-to-generate-a-reproducible-environment-for-their-paper-they-included-a-link-to-this-environment-in-the-abstract-readers-could-click-this-link-and-be-taken-to-a-fully-interactive-environment-to-explore-the-ideas-in-the-paper-and-reproduce-its-computation">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="The Biorxiv Binder pilot workflow. An author used a 2i2c-managed BinderHub to generate a reproducible environment for their paper. They included a link to this environment in the abstract. Readers could click this link, and be taken to a fully interactive environment to explore the ideas in the paper and reproduce its computation." srcset="
/blog/frictionless-reproducibility/images/reproduce-biorxiv_hu4a264c61637efbf8d7f2942ea4842e16_81975_c880c6edf541702d3444066f72a10e05.webp 400w,
/blog/frictionless-reproducibility/images/reproduce-biorxiv_hu4a264c61637efbf8d7f2942ea4842e16_81975_5b181b3431ea56b42eb92cace47a174f.webp 760w,
/blog/frictionless-reproducibility/images/reproduce-biorxiv_hu4a264c61637efbf8d7f2942ea4842e16_81975_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/frictionless-reproducibility/images/reproduce-biorxiv_hu4a264c61637efbf8d7f2942ea4842e16_81975_c880c6edf541702d3444066f72a10e05.webp"
width="760"
height="428"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The Biorxiv Binder pilot workflow. An author used a 2i2c-managed BinderHub to generate a reproducible environment for their paper. They included a link to this environment in the abstract. Readers could click this link, and be taken to a fully interactive environment to explore the ideas in the paper and reproduce its computation.
&lt;/figcaption>&lt;/figure>
&lt;p>This was a nice proof-of-concept, though I think that broader adoption of this type of workflow would require a deeper connection between publisher workflows and open source communities.&lt;/p>
&lt;h2 id="could-we-enable-communities-to-bring-their-computational-environments-with-them-when-publishing">
Could we enable communities to &amp;ldquo;bring their computational environments with them&amp;rdquo; when publishing?
&lt;a class="header-anchor" href="#could-we-enable-communities-to-bring-their-computational-environments-with-them-when-publishing">#&lt;/a>
&lt;/h2>&lt;p>Currently, a community&amp;rsquo;s computational environment and data are &lt;em>not accessible to publishers&lt;/em>. Could we relax this by allowing JupyterHub and Binder to be re-used by external services like publishers? This could allow a community&amp;rsquo;s hub to act like an &lt;strong>external service for reproducibility&lt;/strong> that could be used by one of the many publishing platforms out there. It would require making improvements around a few different areas of Jupyter:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>JupyterHub&lt;/strong> and &lt;strong>BinderHub&lt;/strong> would need improved workflows around external authentication so that services could easily request kernels from a hub.&lt;/li>
&lt;li>&lt;strong>Jupyter Book&lt;/strong> and &lt;strong>MyST&lt;/strong> would need the ability to power computation on a page from a variety of computational back-ends, potentially defined by a user (e.g., via
&lt;a href="https://thebe.readthedocs.io/en/stable/" target="_blank" rel="noopener" >Thebe&lt;/a> and some UI design in Jupyter Book).&lt;/li>
&lt;li>&lt;strong>Jupyter Lab&lt;/strong> and other user interfaces may need improved ways for defining and sharing their environments and their content to use tools like Jupyter Book and Binder.&lt;/li>
&lt;/ul>
&lt;p>We&amp;rsquo;d also need &lt;strong>integration work&lt;/strong> for the various publishers to leverage this technology for their infrastructure. This is a significant lift - a lot of publishers use &lt;em>very old&lt;/em> and bespoke technology in their systems. However, there&amp;rsquo;s also hope that a subset of the publishing ecosystem is ready to try things like this.&lt;/p>
&lt;h2 id="there-are-many-publishing-organizations-innovating-with-open-source">
There are many publishing organizations innovating with open source
&lt;a class="header-anchor" href="#there-are-many-publishing-organizations-innovating-with-open-source">#&lt;/a>
&lt;/h2>&lt;p>I learned that &lt;strong>there&amp;rsquo;s a lot of interest in innovating around publishing workflows&lt;/strong>, as well as &lt;strong>building on top of open source communities and standards&lt;/strong>. We don&amp;rsquo;t need the whole industry to move at once (it won&amp;rsquo;t), but we do need a critical mass of organizations who are interested in innovating. This might be possible with more publishing-focused products that integrate heavily with open source.&lt;/p>
&lt;p>For example,
&lt;a href="https://curvenote.com" target="_blank" rel="noopener" >Curvenote&lt;/a> is a publishing and communication platform that builds heavily on top of the Jupyter and MyST ecosystems. They co-lead many of the open source projects they use in their platform. Curvenote builds largely around the
&lt;a href="https://mystmd.org" target="_blank" rel="noopener" >MyST Markdown document engine&lt;/a>, which means they could more easily integrate improvements around Portable Computation in the Jupyter ecosystem.&lt;/p>
&lt;p>I hope that the broader publishing ecosystem moves in this direction. Because Jupyter is largely based around open standards and protocols, it should be possible for publishers to leverage the BinderHub API and the
&lt;a href="https://repo2docker.readthedocs.io/en/latest/specification.html" target="_blank" rel="noopener" >Reproducible Execution Environment Specification&lt;/a> to integrate computation that powers their reproducible articles. This would allow a community&amp;rsquo;s members to connect their hub&amp;rsquo;s reproducible environment with each published article. Something like the figure below.&lt;/p>
&lt;figure id="figure-publishers-could-re-use-the-computational-environments-from-a-communitys-hub-resulting-in-a-de-duplication-of-infrastructure-and-effort-and-bridging-the-gap-between-where-a-community-does-its-work-and-where-it-submits-new-ideas-for-publication-note-these-are-hypothetical-for-now-but-we-think-publishing-platforms-like-these-are-a-good-starting-point">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Publishers could re-use the computational environments from a community&amp;#39;s hub, resulting in a de-duplication of infrastructure and effort, and bridging the gap between where a community does its work, and where it submits new ideas for publication. (note these are hypothetical for now, but we think publishing platforms like these are a good starting point!)" srcset="
/blog/frictionless-reproducibility/featured_hu264951e48eab912d65d96f304a781973_78955_697f770e880664f63e9ccf3d720f94da.webp 400w,
/blog/frictionless-reproducibility/featured_hu264951e48eab912d65d96f304a781973_78955_711db73ce17759ea694f6c540369cdd5.webp 760w,
/blog/frictionless-reproducibility/featured_hu264951e48eab912d65d96f304a781973_78955_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/frictionless-reproducibility/featured_hu264951e48eab912d65d96f304a781973_78955_697f770e880664f63e9ccf3d720f94da.webp"
width="760"
height="428"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Publishers could re-use the computational environments from a community&amp;rsquo;s hub, resulting in a de-duplication of infrastructure and effort, and bridging the gap between where a community does its work, and where it submits new ideas for publication. (note these are hypothetical for now, but we think publishing platforms like these are a good starting point!)
&lt;/figcaption>&lt;/figure>
&lt;p>Integrating with publishing in this way would allow communities to leverage their pre-existing infrastructure as part of their scholarly workflows. If a community had their own capacity to manage Binder infrastructure they could do so, or they could use a service provider like
&lt;a href="https://2i2c.org" target="_blank" rel="noopener" >2i2c&lt;/a> to manage it for them. This would distribute the responsibility of infrastructure management to those who are in the best position to do so - the communities that do the work.&lt;/p>
&lt;h2 id="how-could-we-sustain-the-cost-of-running-computation-for-published-articles">
How could we sustain the cost of running computation for published articles?
&lt;a class="header-anchor" href="#how-could-we-sustain-the-cost-of-running-computation-for-published-articles">#&lt;/a>
&lt;/h2>&lt;p>This raises an important question: how would you sustain services like these? Communities are already nervous about the cost of computation for their workflows. Public services like
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >mybinder.org&lt;/a> are free and accessible, but not scalable, nor suitable for complex or mission-critical workflows&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>. Would community stakeholders pay for privileged access to BinderHubs that could reproduce and share their computational narratives? Would publishers be willing to pay a percentage of the cloud and management costs associated with reproduction? Could we use this to sustain a larger public service like mybinder.org?&lt;/p>
&lt;p>We don&amp;rsquo;t have any answers yet but we&amp;rsquo;re keen to try. Our colleague Jim Colliander recently explored some of these ideas in a talk recorded for
&lt;a href="https://agu.confex.com/agu/fm24/meetingapp.cgi/Paper/100644" target="_blank" rel="noopener" >AGU 2024&lt;/a>.&lt;/p>
&lt;figure>
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/D5s2HbaulZw?si=GCeDPpr2WobIuu4w" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>&lt;/iframe>
&lt;figcaption>
&lt;p>A talk from 2i2c team member
&lt;a href="https://2i2c.org/author/jim-colliander/" target="_blank" rel="noopener" >Jim Colliander&lt;/a> discussing the right to reproduce computational ideas, the importance of enabling frictionless reproducibility, and how we might sustain such a service.&lt;/p>
&lt;/figcaption>
&lt;/figure>
&lt;p>One thing seems clear - there is an imperative to make reproducibility and interaction frictionless. This is both to ensure the scientific integrity of the work being done, and also to make computational ideas more accessible to the world. Technologies and service partnerships like these can help ensure the broader community&amp;rsquo;s right to reproduce the work of others.&lt;/p>
&lt;h2 id="exploring-frictionless-portable-computing-at-2i2c">
Exploring Frictionless Portable Computing at 2i2c
&lt;a class="header-anchor" href="#exploring-frictionless-portable-computing-at-2i2c">#&lt;/a>
&lt;/h2>&lt;p>2i2c often plays a role in &lt;em>bridging user communities and open source communities&lt;/em> through cycles of development and collaboration, perhaps we could do the same for the publishing community. We&amp;rsquo;d like to explore some tooling improvements that lay a foundation for these workflows, and will report back on our experiments in the coming months.&lt;/p>
&lt;p>&lt;strong>If you are interested in collaborating&lt;/strong>, &lt;a href="mailto:hello@2i2c.org">please reach out&lt;/a>. We&amp;rsquo;d love to hear from organizations from the scholarly publishing community to understand where these ideas have holes or need significant new development. I&amp;rsquo;d also love feedback on sustainability models to ensure these services can be relied on as part of the publishing ecosystem. In the meantime, hopefully these ideas serve as an inspiration for what is possible, and where we might be heading with 2i2c&amp;rsquo;s service and the broader publishing ecosystem.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/hhmi/" >HHMI&lt;/a> for organizing and hosting this workshop.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >the Jupyter Book community&lt;/a> for their collaboration and feedback on these ideas.&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>There&amp;rsquo;s a
&lt;a href="https://incentivizingopen.org/2025/03/new-paradigms-in-research-communication-continuing-thediscussion/" target="_blank" rel="noopener" >follow-up meeting&lt;/a> for those who are interested.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>The costs associated with running
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >mybinder.org&lt;/a> have historically been shouldered by donations from organizations such as
&lt;a href="https://ovhcloud.com" target="_blank" rel="noopener" >OVH&lt;/a>,
&lt;a href="https://google.com" target="_blank" rel="noopener" >Google&lt;/a>,
&lt;a href="https://notebooks.gesis.org/" target="_blank" rel="noopener" >GESIS&lt;/a>,
&lt;a href="https://curvenote.com" target="_blank" rel="noopener" >Curvenote&lt;/a>, and now
&lt;a href="https://2i2c.org" target="_blank" rel="noopener" >2i2c&lt;/a>. These donations are not guaranteed, and do not scale directly with the number of users.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Announcing backups for GCP-hosted hubs!</title><link>https://2i2c.org/blog/gcp-filestore-backups/</link><pubDate>Fri, 07 Feb 2025 13:08:22 +0000</pubDate><guid>https://2i2c.org/blog/gcp-filestore-backups/</guid><description>&lt;p>2i2c are pleased to announce the development and deployment of automated backups of home directories on GCP-hosted hubs!&lt;/p>
&lt;p>We have developed the
&lt;a href="https://github.com/2i2c-org/gcp-filestore-backups" target="_blank" rel="noopener" >&lt;code>gcp-filestore-backups&lt;/code> project&lt;/a> that regularly creates backups of JupyterHub home directories for disaster recovery purposes. The project is a Python wrapper around the
&lt;a href="https://cloud.google.com/sdk/gcloud" target="_blank" rel="noopener" >&lt;code>gcloud&lt;/code> tool&lt;/a> to regularly request backups be made of the Filestore hosting JupyterHub&amp;rsquo;s user home directories, by default on a daily basis. The script also manages retention of these backups by checking how recently the last backup was made, and the age of existing backups, by default deleting any backup older than 5 days.&lt;/p>
&lt;p>Having these backups enabled means that, in the unlikely and unfortunate case of data loss or corruption, we can reinstate the home directories of the hub to a relatively recent state that is at a maximum of 1 day prior to the incident.&lt;/p>
&lt;p>We have deployed &lt;code>gcp-filestore-backups&lt;/code> to all our GCP hubs presently running, with a retention period of 2 days. If you would like to discuss this further with us,
&lt;a href="https://docs.2i2c.org/support" target="_blank" rel="noopener" >please get in touch!&lt;/a>&lt;/p>
&lt;p>As ever, this project has been developed openly in line with our
&lt;a href="https://2i2c.org/right-to-replicate/" target="_blank" rel="noopener" >Right to Replicate&lt;/a> so you can deploy it against your own infrastructure!&lt;/p></description></item><item><title>Our product goals for Q1 2025</title><link>https://2i2c.org/blog/q1-product-goals/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/q1-product-goals/</guid><description>&lt;p>&lt;em>This quarterly post is coming out a little bit late - our goal was to post this in early January, but the year has been more complicated than we bargained for :-)&lt;/em>&lt;/p>
&lt;p>Over the past year, 2i2c has made team-wide efforts to improve our product planning and delivery. A key part of this is re-organizing an integrated
&lt;a href="https://compass.2i2c.org/product-and-services/" target="_blank" rel="noopener" >Product and Services team&lt;/a> that brings our strategic planning, engineering, and service delivery closer together. We&amp;rsquo;ve also built systems for planning and measuring progress within the P&amp;amp;S team, and a product initiatives system for planning major work.&lt;/p>
&lt;p>Our goal is to &lt;strong>organize our product work around a small set of core themes&lt;/strong> to help us focus and prioritize. As part of this, we’d like to share platform enhancement goals for roughly each quarter. These are not guarantees, but we share them to be transparent about where we think we can be the most impactful in the next few months. Here are the major areas we hope to improve 2i2c’ platform in Q1 2025.&lt;/p>
&lt;h2 id="expand-access-to-cloud-providers-and-improve-data-safety">
Expand access to cloud providers and improve data safety
&lt;a class="header-anchor" href="#expand-access-to-cloud-providers-and-improve-data-safety">#&lt;/a>
&lt;/h2>&lt;p>One of 2i2c&amp;rsquo;s goals is to showcase the ability of open infrastructure to be deployed on a variety of infrastructure proiders. This includes user-facing features, as well as guardrails and safety measures.&lt;/p>
&lt;p>&lt;strong>In Q1 2025&lt;/strong> we are working to bring closer feature parity between hub deployments on AWS and GCP, while enabling disaster recovery with automated home directory backups.&lt;/p>
&lt;h2 id="explore-deploying-on-public-infrastructure-providers">
Explore deploying on public infrastructure providers
&lt;a class="header-anchor" href="#explore-deploying-on-public-infrastructure-providers">#&lt;/a>
&lt;/h2>&lt;p>Many communities in research and education are interested in leveraging publicly-owned infrastructure providers like
&lt;a href="https://jetstream-cloud.org/index.html" target="_blank" rel="noopener" >JetStream 2&lt;/a> and the
&lt;a href="https://nationalresearchplatform.org/" target="_blank" rel="noopener" >National Research Platform&lt;/a>. While 2i2c has historically focused on commercial cloud due to their highly-reliable Kubernetes platforms, we think it is important to explore publicly-owned infrastructure providers as well.&lt;/p>
&lt;p>&lt;strong>In Q1 2025&lt;/strong> we&amp;rsquo;ll begin this expansion by deploying JupyterHubs and BinderHubs on JetStream 2, which will give communities access to publicly-funded computing resources. We will use this experience to decide whether it&amp;rsquo;s sustainable for us to deploy on this and other publicly-owned infrastructure providers.&lt;/p>
&lt;h2 id="enable-enhanced-community-knowledge-bases-with-jupyter-book-2">
Enable enhanced community knowledge bases with Jupyter Book 2
&lt;a class="header-anchor" href="#enable-enhanced-community-knowledge-bases-with-jupyter-book-2">#&lt;/a>
&lt;/h2>&lt;p>A key theme we aim to enable is &lt;strong>sharing&lt;/strong> within and between community hubs. This is a critical part of the data science workflow because it allows people to collaborate on the same ideas, and build on top of one another&amp;rsquo;s ideas. An early target for this is to facilitate lightweight sharing of computational content so that community members can learn from one another more effectively.&lt;/p>
&lt;p>&lt;strong>In Q1 2025&lt;/strong> we want to help get
&lt;a href="https://next.jupyterbook.org" target="_blank" rel="noopener" >Jupyter Book 2&amp;rsquo;s beta&lt;/a> released, and provide an out-of-the-box configuration for our communities to use it with their hubs. This includes adding landing pages and better integration with JupyterHub via launch buttons to create a more seamless experience between documentation and interactive computing.&lt;/p>
&lt;h2 id="enable-sharing-reproducible-environments-on-a-hub">
Enable sharing reproducible environments on a hub
&lt;a class="header-anchor" href="#enable-sharing-reproducible-environments-on-a-hub">#&lt;/a>
&lt;/h2>&lt;p>Another key aspect of sharing is &lt;strong>sharing the computational environment as well&lt;/strong>. This would allow communities to not only sheir their content, but also live infrastructure that allows others to reproduce and interact with their work. We think that investing more time into imiproving and deploying
&lt;a href="https://binderhub.readthedocs.io/en/latest/" target="_blank" rel="noopener" >BinderHubs&lt;/a> (the technology behind
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >mybinder.org&lt;/a>) will help us learn more about how to make this a reality.&lt;/p>
&lt;p>&lt;strong>In Q1 2025&lt;/strong> we plan to grow our capacity to deploy BinderHubs across multiple cloud providers. This will allow hub users to build their own Binder environments on the fly and make it possible to share these environments with others, enabling better reproducibility and collaboration within communities.&lt;/p>
&lt;h2 id="give-communities-more-visibility-and-control-over-their-hub-setup-and-costs">
Give communities more visibility and control over their hub setup and costs
&lt;a class="header-anchor" href="#give-communities-more-visibility-and-control-over-their-hub-setup-and-costs">#&lt;/a>
&lt;/h2>&lt;p>Perhaps the biggest perceived risk to using cloud infrastructure is the possibility of &lt;strong>runaway costs&lt;/strong>. Community leaders are often nervous that something unexpected will happen and they&amp;rsquo;ll have to foot a giant bill at the end of the month. We think that reducing this risk is a key way to make cloud infrastructure safer and more useful for research and education communities.&lt;/p>
&lt;p>&lt;strong>In Q1 2025&lt;/strong> we are aim to add more &lt;strong>visibility into hub usage&lt;/strong> and &lt;strong>more controls over resources via quotas&lt;/strong>. This will allow more fine control over resource budgets such as CPU, memory, and storage. We&amp;rsquo;ll also work on &lt;strong>assigning users to groups&lt;/strong>, allowing communities greater control over resource allocation across large user bases.&lt;/p>
&lt;h2 id="standardize-our-hub-service-menu-of-options-and-prices">
Standardize our hub service menu of options and prices
&lt;a class="header-anchor" href="#standardize-our-hub-service-menu-of-options-and-prices">#&lt;/a>
&lt;/h2>&lt;p>A key goal of our
&lt;a href="https://2i2c.org/blog/q1-product-goals/../2024/funding-navigation/index.md" >Navigation Fund grant&lt;/a> is to streamline ourselves into a few repeatable, scalable service offerings at different price points. This will allow us to more easily support new communities and provide a more consistent experience for users.&lt;/p>
&lt;p>&lt;strong>In Q1 2025&lt;/strong> we&amp;rsquo;d like to define a starting point that we can begin to iterate on. We&amp;rsquo;ll define a new set of pricing based around a tiered service model, and decide on an initial set of features and services to include with each. Our goal will be to have something defined quickly so that we can iterate a few times with community feedback before the quarter is over.&lt;/p>
&lt;h2 id="standardize-our-community-support-services">
Standardize our community support services
&lt;a class="header-anchor" href="#standardize-our-community-support-services">#&lt;/a>
&lt;/h2>&lt;p>Finally, we&amp;rsquo;ve audited our ongoing support practices and realized that we aren&amp;rsquo;t always delivering them in an efficient way. We often share the same information one-on-one conversations, and aren&amp;rsquo;t effectively leveraging our community network to support and learn from one another. We&amp;rsquo;d like to standardize and boost the scalability of our support services.&lt;/p>
&lt;p>&lt;strong>In Q1 2025&lt;/strong> we want to explore how we can more scalably and efficiently provide hands-on guidance, expert co-creation, and support to communities. Our goal is to define a starting point for these services so that we can offer this support in a sustainable way and begin to learn from our experiences. We also want to build a mechanism for scoping (and pricing) additional capacity that is needed beyond standard community services.&lt;/p>
&lt;h2 id="another-update-coming-in-q2">
Another update coming in Q2
&lt;a class="header-anchor" href="#another-update-coming-in-q2">#&lt;/a>
&lt;/h2>&lt;p>Our aim is to use this blog post as a guide for the quarter, and to make progress in as many areas above as we can. As part of our Q2 planning process, we&amp;rsquo;ll provide a retrospective on the accomplishments we&amp;rsquo;ve made towards this effort, and will provide an update for our community on our progress. Stay tuned for more!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Our strategic and organization-level work is supported by a grant from
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> and fees from
&lt;a href="https://2i2c.org/members/" >our member organizations&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>2i2c joins the mybinder.org federation with a cheaper and faster way to deploy Binderhub</title><link>https://2i2c.org/blog/binder-singlenode/</link><pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/binder-singlenode/</guid><description>&lt;div class="alert alert-note">
&lt;div>
If you&amp;rsquo;re interested in supporting &lt;code>mybinder.org&lt;/code> with cloud resources, financial resources, or human resources, please see the
&lt;p>&lt;a href="https://mybinder.readthedocs.io/en/latest/about/support.html" target="_blank" rel="noopener" >Support Binder&lt;/a> page for how you can help.&lt;/p>
&lt;/div>
&lt;/div>
&lt;blockquote>
&lt;p>&lt;code>tl;dr&lt;/code>: The 2i2c team is joining the mybinder.org federation with a
&lt;a href="https://github.com/jupyterhub/mybinder.org-deploy/pull/3169/" target="_blank" rel="noopener" >single-node BinderHub instance at &lt;code>2i2c.mybinder.org&lt;/code>&lt;/a>. It should be much cheaper to run than auto-scaling Kubernetes clusters, and might be a good way to support &lt;code>mybinder.org&lt;/code> more sustainably. For questions or comments, join
&lt;a href="https://jupyter.zulipchat.com/#narrow/channel/469744-jupyterhub/topic/ANN.3A.202i2c.20joins.20mybinder.2Eorg.20federation.20with.20new.20strategy/near/496811301" target="_blank" rel="noopener" >this Jupyter Zulip thread&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >&lt;code>mybinder.org&lt;/code>&lt;/a> is a massive public service for creating and sharing reproducible computational environments. It is managed by the JupyterHub team and
&lt;a href="https://mybinder.readthedocs.io/en/latest/about/federation.html" target="_blank" rel="noopener" >members of the &lt;code>mybinder.org&lt;/code> federation&lt;/a>. One challenge in running
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >&lt;code>mybinder.org&lt;/code>&lt;/a> is identifying cloud credits or financial resources to support the cloud infrastructure that runs the service. Two years ago,
&lt;a href="https://medium.com/jupyter-blog/mybinder-org-reducing-capacity-c93ccfc6413f" target="_blank" rel="noopener" >Google stopped supporting &lt;code>mybinder.org&lt;/code> federation with cloud credits&lt;/a>, and last month
&lt;a href="https://discourse.jupyter.org/t/mybinder-org-reduced-capacity-stability/31750" target="_blank" rel="noopener" >the federation lost more capacity&lt;/a>, leaving only
&lt;a href="https://www.gesis.org/en/home" target="_blank" rel="noopener" >GESIS&lt;/a> and
&lt;a href="https://us.ovhcloud.com/" target="_blank" rel="noopener" >OVH&lt;/a> as remaining federation members&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. This makes &lt;code>mybinder.org&lt;/code> less reliable, slower, and generally less useful to the world.&lt;/p>
&lt;p>The landscape of cloud infrastructure technology and services has changed considerably, and we think that there&amp;rsquo;s a way to deploy BinderHub instances with lower costs and less complexity. We&amp;rsquo;ve accomplished this by deploying a &lt;strong>single-node Kubernetes cluster&lt;/strong> on a VM provider that is much cheaper, now running at &lt;code>2i2c.mybinder.org&lt;/code>. This both relieves Binder&amp;rsquo;s short-term capacity shortage and may provide an easier pathway for others to support the project in the future.&lt;/p>
&lt;p>Below, we&amp;rsquo;ll describe what has changed to enable this, what we&amp;rsquo;re deploying, and what the impact should be.&lt;/p>
&lt;h2 id="cloud-infrastructure-has-become-cheaper-and-more-commodified">
Cloud infrastructure has become cheaper and more commodified
&lt;a class="header-anchor" href="#cloud-infrastructure-has-become-cheaper-and-more-commodified">#&lt;/a>
&lt;/h2>&lt;p>A key theory of mybinder.org (and 2i2c) is that commercial cloud infrastructure will be commidified over time &amp;ndash; what begins as cutting-edge functionality will become commonplace and offered across all cloud providers. As a result, costs will go down over time. Abstractions like
&lt;a href="https://kubernetes.io/" target="_blank" rel="noopener" >Kubernetes&lt;/a> will allow you to easily migrate workflows and infrastructure between cloud providers. As a result, you&amp;rsquo;ll be able to easily &lt;em>follow those costs&lt;/em> where there are better options. That&amp;rsquo;s essentially what is happening here.&lt;/p>
&lt;p>There are two key changes that make it much easier to deploy a BinderHub instance at a fraction of the cost:&lt;/p>
&lt;p>First, &lt;strong>Kubernetes has matured and become easier to deploy&lt;/strong>. When mybinder.org started, it was using the cutting-edge of Kubernetes functionality. This meant that we needed to use cloud providers that provided a &lt;em>managed Kubernetes service&lt;/em> to deal with this complexity. A managed Kubernetes offering tends to be expensive, offered by only a few cloud providers, and thus raises costs across-the-board for the provider that offers it.&lt;/p>
&lt;p>However, this was almost a decade ago, and Kubernetes has become both more functional and more stable. There are now many more ways of running Kubernetes, especially for simpler workflows that don&amp;rsquo;t require autoscaling. In the last several months, we&amp;rsquo;ve been experimenting with &lt;strong>single-node Kubernetes workflows&lt;/strong> via
&lt;a href="https://k3s.io/" target="_blank" rel="noopener" >K3s&lt;/a>&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.
&lt;a href="https://k3s.io/" target="_blank" rel="noopener" >K3s&lt;/a> is a lightweight Kubernetes distribution that is much easier to deploy and manage. It&amp;rsquo;s designed for things like edge computing and low-resource environments, and it can be deployed with a single script!&lt;/p>
&lt;p>By running a Kubernetes cluster on a single node, we don&amp;rsquo;t need a &amp;ldquo;managed Kubernetes service&amp;rdquo;, which means &lt;strong>we can choose from a much larger pool of infrastructure / cloud providers&lt;/strong>. If all we need is a running VM, this is something the tech industry has been doing for decades.&lt;/p>
&lt;p>Second, &lt;strong>Managed Object Storage services have more open source options, and are more commodified and cheaper&lt;/strong>. In addition to Kubernetes, the other thing that BinderHub needs is a way to store and retrieve images for the environments that it builds. This also used to be a fairly complex problem, and thus required managed solutions from cloud providers that charged a premium for their service. However, a number of open source object storage solutions have emerged and made it much easier for providers to support this workflow.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>. Because these are open source, infrastructure providers can provide managed object storage at a fraction of the cost.&lt;/p>
&lt;p>Because of these two things, we&amp;rsquo;ve learned that we can run a BinderHub instance on a single VM from a much larger pool of infrastructure providers. This means &lt;strong>we should be able to run BinderHub instances at a fraction of the cost&lt;/strong>.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="deploying-binderhub-on-a-single-node-vm-is-cheaper-and-simpler">
Deploying BinderHub on a single-node VM is cheaper and simpler
&lt;a class="header-anchor" href="#deploying-binderhub-on-a-single-node-vm-is-cheaper-and-simpler">#&lt;/a>
&lt;/h2>&lt;p>Last week, we
&lt;a href="https://github.com/jupyterhub/mybinder.org-deploy/pull/3169" target="_blank" rel="noopener" >deployed 2i2c.mybinder.org&lt;/a>, a single-node Kubernetes instance on
&lt;a href="https://hetzner.com/cloud" target="_blank" rel="noopener" >Hetzner&lt;/a> cloud using
&lt;a href="https://k3s.io/" target="_blank" rel="noopener" >K3s&lt;/a>. This will run on a single node VM, with a Kubernetes instance that is entirely managed by us, and with managed object storage from Hetzner. Compared to other cloud providers, it is &lt;strong>around 5x cheaper per month&lt;/strong>.&lt;/p>
&lt;figure id="figure-comparison-of-rough-monthly-costs-across-different-cloud-providers-for-similar-vm-instances-these-are-rough-estimates-based-on-cloud-provider-pricing-pages-for-an-on-demand-vm-with-around-190gb-ram-pricing-pages-hetzner-cloudhttpswwwhetznercomcloud-300-microsoft-azurehttpsazurecomeda6294b08dfa49639f74caad1630bbe4-1300-google-cloud-platformhttpscloudgooglecomproductscalculatorhlendlcjhdavjrwlrbevpeumpnqzawtvrrmkxuumtnalv0t0rnnu5pmhpav1eywlrnmfphsxppve1rqve9praigirdrtq3qtywqy1dnum5ltq3qkqtqtm3ms05mjbcqju1qjngrjg-1500-amazon-web-serviceshttpscalculatorawsestimateida3bddb8bdbfa2058b941b669e408141e7fd18da4-1600">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Comparison of rough monthly costs across different cloud providers for similar VM instances. These are rough estimates based on cloud provider pricing pages for an on-demand VM with around 190GB RAM. Pricing pages: [Hetzner Cloud](https://www.hetzner.com/cloud) ~$300, [Microsoft Azure](https://azure.com/e/da6294b08dfa49639f74caad1630bbe4) ~$1,300, [Google Cloud Platform](https://cloud.google.com/products/calculator?hl=en&amp;amp;dl=CjhDaVJrWlRBeVpEUmpNQzAwTVRrMkxUUmtNalV0T0RnNU5pMHpaV1EyWlRnMFpHSXpPVE1RQVE9PRAIGiRDRTQ3QTYwQy1DNUM5LTQ3QkQtQTM3MS05MjBCQjU1QjNGRjg) ~$1,500, [Amazon Web Services](https://calculator.aws/#/estimate?id=a3bddb8bdbfa2058b941b669e408141e7fd18da4) ~$1,600." srcset="
/blog/binder-singlenode/featured_hu5599e630254656f9a400bcb8f9798a4e_195115_a97d3a2cc01d69e748ff6cdd73a8195e.webp 400w,
/blog/binder-singlenode/featured_hu5599e630254656f9a400bcb8f9798a4e_195115_70c7d648b80153fb33bd84196702bda4.webp 760w,
/blog/binder-singlenode/featured_hu5599e630254656f9a400bcb8f9798a4e_195115_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/binder-singlenode/featured_hu5599e630254656f9a400bcb8f9798a4e_195115_a97d3a2cc01d69e748ff6cdd73a8195e.webp"
width="760"
height="540"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Comparison of rough monthly costs across different cloud providers for similar VM instances. These are rough estimates based on cloud provider pricing pages for an on-demand VM with around 190GB RAM. Pricing pages:
&lt;a href="https://www.hetzner.com/cloud" target="_blank" rel="noopener" >Hetzner Cloud&lt;/a> ~$300,
&lt;a href="https://azure.com/e/da6294b08dfa49639f74caad1630bbe4" target="_blank" rel="noopener" >Microsoft Azure&lt;/a> ~$1,300,
&lt;a href="https://cloud.google.com/products/calculator?hl=en&amp;amp;dl=CjhDaVJrWlRBeVpEUmpNQzAwTVRrMkxUUmtNalV0T0RnNU5pMHpaV1EyWlRnMFpHSXpPVE1RQVE9PRAIGiRDRTQ3QTYwQy1DNUM5LTQ3QkQtQTM3MS05MjBCQjU1QjNGRjg" target="_blank" rel="noopener" >Google Cloud Platform&lt;/a> ~$1,500,
&lt;a href="https://calculator.aws/#/estimate?id=a3bddb8bdbfa2058b941b669e408141e7fd18da4" target="_blank" rel="noopener" >Amazon Web Services&lt;/a> ~$1,600.
&lt;/figcaption>&lt;/figure>
&lt;!-- Machines for the figure above:
Hetzner: CCX63
Amazon Web Services: m8g.12xlarge
Google Cloud Platform: n2-standard-48
Microsoft Azure: D48as v5
-->
&lt;p>Running a single-node Kubernetes instance will be a cheap and effective way to handle a lot of &lt;code>mybinder.org&lt;/code>&amp;rsquo;s capacity needs. Because it&amp;rsquo;s a single node cluster, there is no auto-scaling (one reason it is so cheap), which reduces a lot of the complexity we&amp;rsquo;ll have to manage. These are acceptable tradeoffs for a service like &lt;code>mybinder.org&lt;/code>, which runs entirely ephemeral sessions with very limited resources and no promises about uptime, persistence, etc.&lt;/p>
&lt;p>You might be wondering: &amp;ldquo;I thought Kubernetes was supposed to &lt;em>save money&lt;/em>.&amp;rdquo; Normally, running Kubernetes for scalable workflows does save costs because you can scale infrastructure to match your capacity needs. Without scaling, you&amp;rsquo;d need to provide a VM that can &lt;em>always&lt;/em> handle your &lt;em>maximum capacity&lt;/em> needs (and pay for the costs the entire time). With Kubernetes, you can request and remove nodes to grow your capacity as-needed (and save money doing so). It looks something like this:&lt;/p>
&lt;figure id="figure-the-cost-difference-between-a-single-large-vm-vs-scalable-nodes-given-variable-usage-over-time-kubernetes-allows-you-to-scale-your-cost-up-and-down-with-need-which-is-more-efficient-than-paying-for-a-single-vm-that-can-withstand-your-maximum-capacity">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="The cost difference between a single large VM vs scalable nodes. Given variable usage over time, kubernetes allows you to scale your cost up and down with need, which is more efficient than paying for a single VM that can withstand your maximum capacity."
src="https://2i2c.org/blog/binder-singlenode/images/scalable.excalidraw.svg"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The cost difference between a single large VM vs scalable nodes. Given variable usage over time, kubernetes allows you to scale your cost up and down with need, which is more efficient than paying for a single VM that can withstand your maximum capacity.
&lt;/figcaption>&lt;/figure>
&lt;p>However, there is a built-in cost you pay when you use a service that provides managed Kubernetes. &lt;strong>Managed Kubernetes services are complex and expensive&lt;/strong>, and this is reflected across-the-board in the provider&amp;rsquo;s costs. What if we could achieve the same outcome with a much simpler cloud offering like a single VM?&lt;/p>
&lt;p>We did a bit of research and discovered that the Kubernetes and object storage landscape has indeed evolved significantly since the early days of mybinder.org. For example,
&lt;a href="https://www.hetzner.com/cloud/" target="_blank" rel="noopener" >Hetzner&lt;/a> is a cloud provider that has been around for a long time. It has single-node VMs that are about &lt;code>4x&lt;/code> cheaper than their counterparts in Google Cloud or AWS, and provides managed object storage that uses
&lt;a href="https://min.io/" target="_blank" rel="noopener" >MinIO&lt;/a> in a cost-effective way. Using
&lt;a href="https://k3s.io/" target="_blank" rel="noopener" >K3s&lt;/a>, we can run a lightweight, single-node Kubernetes runtime on this node, and deploy a BinderHub with the same infrastructure as any other BinderHub federation member.&lt;/p>
&lt;p>By our estimate, we could fit around &lt;strong>400 simultaneous sessions&lt;/strong> on &lt;code>mybinder.org&lt;/code> (because each session uses very few cloud resources). This is already the majority of mybinder.org&amp;rsquo;s capacity needs, and at a much lower cost than using a scalable Kubernetes cluster. The cost picture looks something like this:&lt;/p>
&lt;figure id="figure-if-your-single-vm-is-much-cheaper-it-might-still-be-the-cheapest-option-in-the-case-of-a-hetzner-vm-it-has-roughly-the-same-capacity-as-another-cloud-providers-vm-but-at-14-of-the-cost">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="If your single VM is much cheaper, it might still be the cheapest option. In the case of a Hetzner VM, it has roughly the same capacity as another cloud provider&amp;#39;s VM, but at 1/4 of the cost."
src="https://2i2c.org/blog/binder-singlenode/images/single.excalidraw.svg"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
If your single VM is much cheaper, it might still be the cheapest option. In the case of a Hetzner VM, it has roughly the same capacity as another cloud provider&amp;rsquo;s VM, but at 1/4 of the cost.
&lt;/figcaption>&lt;/figure>
&lt;h2 id="2i2cmybinderorg-now-serves-70-of-the-mybinderorg-federation">
2i2c.mybinder.org now serves 70% of the mybinder.org federation
&lt;a class="header-anchor" href="#2i2cmybinderorg-now-serves-70-of-the-mybinderorg-federation">#&lt;/a>
&lt;/h2>&lt;p>About a week ago, we launched
&lt;a href="https://2i2c.mybinder.org" target="_blank" rel="noopener" >2i2c.mybinder.org&lt;/a> running via the methodology we described above. We intended to run this as a longer experiment, but believe that it has already proven useful enough to consider &amp;ldquo;ready for production&amp;rdquo;. We recently
&lt;a href="https://github.com/jupyterhub/mybinder.org-deploy/pull/3196" target="_blank" rel="noopener" >increased 2i2c.mybinder.org&amp;rsquo;s load to 70%&lt;/a> and will continue to monitor its performance over time. Here&amp;rsquo;s a plot of where each mybinder.org session has been run over the past ten days - you can see the moment where we turn on &lt;code>2i2c.mybinder.org&lt;/code> to the left:&lt;/p>
&lt;figure id="figure-sessions-launched-on-mybinderorgs-federation-over-the-past-ten-days-the-yellow-area-represents-sessions-run-on-2i2cmybinderorg-they-now-make-up-the-majority-of-launches-on-mybinderorg-prior-to-this-gesismybinderorg-was-the-only-remaining-federation-member">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Sessions launched on mybinder.org&amp;#39;s federation over the past ten days. The yellow area represents sessions run on `2i2c.mybinder.org`. They now make up the majority of launches on mybinder.org. Prior to this, `gesis.mybinder.org` was the only remaining federation member." srcset="
/blog/binder-singlenode/images/grafana_hu475853c06f9a32183866c212d09dafeb_419800_3da468561744d0f716672253d58b10f0.webp 400w,
/blog/binder-singlenode/images/grafana_hu475853c06f9a32183866c212d09dafeb_419800_c6e0913b4252dd59d82a4055e9738576.webp 760w,
/blog/binder-singlenode/images/grafana_hu475853c06f9a32183866c212d09dafeb_419800_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/binder-singlenode/images/grafana_hu475853c06f9a32183866c212d09dafeb_419800_3da468561744d0f716672253d58b10f0.webp"
width="760"
height="455"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Sessions launched on mybinder.org&amp;rsquo;s federation over the past ten days. The yellow area represents sessions run on &lt;code>2i2c.mybinder.org&lt;/code>. They now make up the majority of launches on mybinder.org. Prior to this, &lt;code>gesis.mybinder.org&lt;/code> was the only remaining federation member.
&lt;/figcaption>&lt;/figure>
&lt;p>For now, 2i2c is sponsoring a max of €350 a month (with some currency conversion noise) to run this service. We&amp;rsquo;ll provide in-kind labor to run this node, and treat it as an organizational investment in supporting open science, as well as learning new Kubernetes and cloud infrastructure workflows. We&amp;rsquo;re going to use funds recovered from communities in our
&lt;a href="https://2i2c.org/platform/" >community hub network&lt;/a>, along with in-kind labor to build out this experiment.&lt;/p>
&lt;p>In six months, we&amp;rsquo;ll evaluate how much effort it was to run this node for &lt;code>mybinder.org&lt;/code>, whether it meaningfully helped with &lt;code>mybinder.org&lt;/code>&amp;rsquo;s capacity, and whether it was sustainable for us from a time and labor perspective.&lt;/p>
&lt;h2 id="others-can-join-the-mybinderorg-federation-using-this-approach-as-well">
Others can join the mybinder.org federation using this approach as well
&lt;a class="header-anchor" href="#others-can-join-the-mybinderorg-federation-using-this-approach-as-well">#&lt;/a>
&lt;/h2>&lt;p>We think that developing this single-node BinderHub workflow will make it much easier for others to join the mybinder.org federation, because it lowers the infrastructure and skills complexity needed to join.
&lt;a href="https://github.com/jupyterhub/mybinder.org-deploy/blob/72a1a34509e2c43aec788f602250c58d9d849a13/docs/source/deployment/k3s.md" target="_blank" rel="noopener" >Here is a brief guide we&amp;rsquo;ve written for deploying a BinderHub with K3s&lt;/a>. We are helping a few interested organizations deploy their own BinderHubs in this way in order to validate the idea, and are hopeful that this makes it much easier to grow mybinder.org&amp;rsquo;s capacity via new federation members.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>We&amp;rsquo;re excited to experiment with new ways to support &lt;code>mybinder.org&lt;/code>. We think this is an excellent example of how open standards and technology lead to cloud workflows with lower costs and more flexibility. We also think it&amp;rsquo;s a good example of how it is valuable to have organizations aligned with open science (like 2i2c!) acting in this space. If you have any questions or comments, please join
&lt;a href="https://jupyter.zulipchat.com/#narrow/channel/469744-jupyterhub/topic/ANN.3A.202i2c.20joins.20mybinder.2Eorg.20federation.20with.20new.20strategy/near/496811301" target="_blank" rel="noopener" >this Jupyter Zulip thread&lt;/a>&lt;/p>
&lt;h2 id="anybody-want-to-fund-this">
Anybody want to fund this?
&lt;a class="header-anchor" href="#anybody-want-to-fund-this">#&lt;/a>
&lt;/h2>&lt;p>If you&amp;rsquo;re interested in making open science infrastructure like Binder more scalable and sustainable, we&amp;rsquo;d love to find more resources to both sustain this node and cover more development time to run this experiment.
&lt;a href="https://2i2c.org/blog/binder-singlenode/mailto:hello@2i2c.org" >Feel free to reach out here&lt;/a>.&lt;/p>
&lt;p>If you have access to VMs and object storage, and are interested in running a mybinder.org federation member using the methods described here, check out
&lt;a href="https://github.com/jupyterhub/mybinder.org-deploy/blob/72a1a34509e2c43aec788f602250c58d9d849a13/docs/source/deployment/k3s.md" target="_blank" rel="noopener" >our brief guide for deploying a BinderHub with K3s&lt;/a>.&lt;/p>
&lt;p>If you&amp;rsquo;re generally interested in supporting &lt;code>mybinder.org&lt;/code> with cloud resources, financial resources, or human resources, please see the
&lt;a href="https://mybinder.readthedocs.io/en/latest/about/support.html" target="_blank" rel="noopener" >Support Binder&lt;/a> page for how you can help.&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
If you&amp;rsquo;re interested in supporting &lt;code>mybinder.org&lt;/code> with cloud resources, financial resources, or human resources, please see the
&lt;p>&lt;a href="https://mybinder.readthedocs.io/en/latest/about/support.html" target="_blank" rel="noopener" >Support Binder&lt;/a> page for how you can help.&lt;/p>
&lt;/div>
&lt;/div>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub community&lt;/a> for helping us set up this new node.&lt;/li>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/members/" >our member communities&lt;/a> whose fees currently support this work.&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Many thanks to
&lt;a href="https://www.gesis.org/en/home" target="_blank" rel="noopener" >GESIS&lt;/a> and
&lt;a href="https://us.ovhcloud.com/" target="_blank" rel="noopener" >OVH&lt;/a> for their continued support of mybinder.org, your contributions to keeping this service running are critical!&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>thanks to
&lt;a href="https://carlboettiger.info/" target="_blank" rel="noopener" >Carl Boettiger&lt;/a> for collaborating on this with us!&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>One example is
&lt;a href="https://min.io/" target="_blank" rel="noopener" >MinIO&lt;/a>, which is used by
&lt;a href="https://hetzner.com/cloud" target="_blank" rel="noopener" >Hetzner&lt;/a> to provide managed object storage for their single-node VMs.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>For example,
&lt;a href="https://hetzner.com/cloud" target="_blank" rel="noopener" >Hetzner&lt;/a> provides a single-VM option with managed object storage that is roughly 25% of the cost of other cloud providers that also offer autoscaling Kubernetes services. There are many other infrastructure providers who could be used in this way.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>We&amp;rsquo;re also experimenting with a few other ways to reduce the complexity and costs of running a BinderHub even further, but will have more on that later as we learn more :-).&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Enforcing per-user storage quotas with `jupyterhub-home-nfs`</title><link>https://2i2c.org/blog/per-user-storage-quota/</link><pubDate>Tue, 28 Jan 2025 09:57:28 +0000</pubDate><guid>https://2i2c.org/blog/per-user-storage-quota/</guid><description>&lt;p>When sharing a storage disk between users, as is usually the case in a JupyterHub deployment, it is important to put in guardrails so that one user cannot eat up the whole storage capacity from the rest of the users.
To this end, 2i2c in close collaboration with
&lt;a href="https://developmentseed.org" target="_blank" rel="noopener" >Development Seed&lt;/a> have developed the
&lt;a href="https://github.com/2i2c-org/jupyterhub-home-nfs" target="_blank" rel="noopener" >&lt;code>jupyterhub-home-nfs&lt;/code> project&lt;/a> which is a Helm chart that permits enforcing per-user quotas on the storage space.&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
Note that this feature is currently available to AWS hosted hubs only and will be rolled out to other cloud providers in the future.
&lt;/div>
&lt;/div>
&lt;p>Under the hood, the Helm chart runs
&lt;a href="https://github.com/nfs-ganesha/nfs-ganesha" target="_blank" rel="noopener" >NFS Ganesha&lt;/a> as an in-cluster NFS server, backed by
&lt;a href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-xfs" target="_blank" rel="noopener" >XFS&lt;/a> as the underlying filesystem. Storage quota is enforced through XFS&amp;rsquo;s native quota management utility &lt;code>xfs_quota&lt;/code>.&lt;/p>
&lt;p>Since this feature moves our infrastructure away from managed filesystems (such as AWS&amp;rsquo;s Elastic File System) that cannot support per-user storage quotas, we have also developed monitoring and alerting mechanisms that will let us know when the disks are getting full, and automated back-ups for disaster recovery.&lt;/p>
&lt;p>If you would like to try this on your 2i2c-managed hub,
&lt;a href="https://docs.2i2c.org/support" target="_blank" rel="noopener" >please get in touch&lt;/a>.&lt;/p>
&lt;p>This project can also be used with &lt;em>any&lt;/em> Kubernetes-based JupyterHub, as per our
&lt;a href="https://2i2c.org/right-to-replicate/" target="_blank" rel="noopener" >Right to Replicate policy&lt;/a>, so please try it out on your own deployment and let us know what you think!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>This project was developed and deployed in collaboration with
&lt;a href="https://developmentseed.org/team/tarashish-mishra/" target="_blank" rel="noopener" >Tarashish Mishra&lt;/a> from
&lt;a href="https://2i2c.org/collaborators/devseed/" >Development Seed&lt;/a>, funded through the
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA project&lt;/a>.&lt;/p></description></item><item><title>Designing for an ecosystem: a case study in cross-project open source contribution</title><link>https://2i2c.org/blog/jupyter-book-cors/</link><pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jupyter-book-cors/</guid><description>&lt;p>A key challenge in the open source space is that projects are often independent and autonomous, with relatively few formal ways to collaborate and coordinate efforts. While this usually isn&amp;rsquo;t a big deal, it means that there is a missed opportunity to grow the impact of an ecosystem because it requires coordinated development among multiple stakeholders within it.&lt;/p>
&lt;p>This is one of the reasons we created 2i2c&amp;rsquo;s open community hub platform. By deploying a single platform that utilizes entirely open infrastructure that we contribute back to, we have visibility over a variety of projects along with the need to combine them together for a specific end-user outcome. One-such development scenario recently came up involving
&lt;a href="https://next.jupyterbook.org/" target="_blank" rel="noopener" >Jupyter Book 2&lt;/a> and
&lt;a href="https://jupyterhub.org/" target="_blank" rel="noopener" >JupyterHub&lt;/a>.&lt;/p>
&lt;h2 id="allowing-readers-to-bring-their-own-binders">
Allowing readers to &amp;ldquo;bring their own Binders&amp;rdquo;
&lt;a class="header-anchor" href="#allowing-readers-to-bring-their-own-binders">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;ve recently been working to integrate
&lt;a href="https://next.jupyterbook.org/" target="_blank" rel="noopener" >Jupyter Book 2&lt;/a> workflows with our community hubs for a more seamless experience (for example, having book pages link back to interactive cloud sessions that allow users to interact with the content). We imagine a network of Jupyter Books that all build upon the same core infrastructures (JupyterHub, Binder, etc) for cloud-based computing. Our hope is to allow a user to &lt;em>bring their own Binder&lt;/em> with them so that they can interact with another book&amp;rsquo;s content with their own cloud infrastructure. For example:&lt;/p>
&lt;ul>
&lt;li>A student with access to &lt;code>binder.myuniversity.edu&lt;/code> could read a Jupyter Book created by a professor at &lt;code>otheruniversity.edu&lt;/code>.&lt;/li>
&lt;li>The Jupyter Book is defined with a
&lt;a href="https://repo2docker.readthedocs.io/en/latest/specification.html" target="_blank" rel="noopener" >Binder specification&lt;/a> that has a recipe for re-building the environment needed to run te book&amp;rsquo;s content.&lt;/li>
&lt;li>From the professor&amp;rsquo;s book, the student can choose to launch an interactive Binder sessions on &lt;em>their university&amp;rsquo;s Binder&lt;/em>, allowing them to interact with the book&amp;rsquo;s content on their own infrastructure.&lt;/li>
&lt;/ul>
&lt;p>We want a workflow like this to be as seamless and un-complicated as possible. We also want it to follow the same fundamental workflow as the
&lt;a href="https://docs.2i2c.org/user/sharing/files" target="_blank" rel="noopener" >nbgitpuller-based launch buttons&lt;/a>. Along the way, we realized that we needed to coordinate development across
&lt;a href="https://next.jupyterbook.org/" target="_blank" rel="noopener" >Jupyter Book 2&lt;/a>,
&lt;a href="https://jupyter.readthedocs.io" target="_blank" rel="noopener" >JupyterHub&lt;/a>, and
&lt;a href="https://binderhub.readthedocs.io" target="_blank" rel="noopener" >BinderHub&lt;/a>.&lt;/p>
&lt;figure id="figure-the-three-projects-jupyter-book-binderhub-and-jupyterhub-that-needed-to-work-together-to-enable-bring-your-own-binderhub-workflows">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./featured.png" alt="The three projects (Jupyter Book, BinderHub, and JupyterHub) that needed to work together to enable &amp;#39;bring your own binderhub&amp;#39; workflows." loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The three projects (Jupyter Book, BinderHub, and JupyterHub) that needed to work together to enable &amp;lsquo;bring your own binderhub&amp;rsquo; workflows.
&lt;/figcaption>&lt;/figure>
&lt;h2 id="getting-jupyter-book-to-discover-jupyter-hub">
Getting Jupyter Book to discover Jupyter Hub
&lt;a class="header-anchor" href="#getting-jupyter-book-to-discover-jupyter-hub">#&lt;/a>
&lt;/h2>&lt;p>As we began developing this workflow, we realized that there was a blocker in the JupyterHub and BinderHub ecosystem that needed to be fixed. We needed a way to &lt;strong>ask a JupyterHub whether it had an unauthenticated end-point for service discovery&lt;/strong>. Basically, a way to ask a hub &amp;ldquo;what kind of hub are you, and how can we launch an interactive session on you?&amp;rdquo; Doing this is simple-enough - JupyterHub already has a way of reporting its version and application type, which allows us to infer how to launch interactive sessions. But, we hit a snag in an HTML context.&lt;/p>
&lt;p>By default, JupyterHub disallows certain kinds of
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" target="_blank" rel="noopener" >Cross-Origin Resource Sharing&lt;/a> (CORS) requests, in order to restrict other applications from abusing a JupyterHub&amp;rsquo;s API. If you hit parts of a JupyterHub API from &lt;em>the command line&lt;/em>, things work fine. But if you do the same thing via JavaScript from a website, the request is disallowed. This was a problem if we want Jupyter Book (a web application) to be able to make requests of JupyterHub&amp;rsquo;s API.&lt;/p>
&lt;p>So, we realized that we needed to make an &lt;strong>upstream contribution in JupyterHub&lt;/strong> in order to &lt;strong>enable an interaction between JupyterHub and Jupyter Book&lt;/strong>. In this case, it was a relatively simple fix: allowing CORS requests for the specific API endpoint we needed (which is a very lightweight endpoint that is not vulnerable to security risks, and is broadly useful to make accessible)&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. That resulted in two PRs:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://github.com/jupyterhub/jupyterhub/pull/4966" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> jupyterhub/jupyterhub#4966&lt;/a> allows CORS requests for the API that was needed for service discovery in JupyterHub.&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1906" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> jupyterhub/binderhub#1906&lt;/a> enables this workflow on a BinderHub so that its services can be discovered.&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/myst-theme/pull/503" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> jupyter-book/myst-theme#503&lt;/a> adds new launch button functionality to
&lt;a href="https://next.jupyterbook.org/" target="_blank" rel="noopener" >Jupyter Book 2&lt;/a> that allows readers to bring their own Binder / JupyterHub links for launching. (this is what necessitated the above two PRs)&lt;/li>
&lt;/ul>
&lt;p>As a result of this upstream contribution loop, JupyterHub can now accept API requests at its &amp;ldquo;service discovery&amp;rdquo; endpoint, which means that Jupyter Book (and any other web application) can more easily learn about a hub&amp;rsquo;s capabilities and version.&lt;/p>
&lt;p>We wanted to share this short vignette because it&amp;rsquo;s a good reflection of the kind of value that 2i2c tries to provide, given its role in helping to build and enhance networks of infrastructure, domain communities, and open source communities. In this case, we enabled a &lt;em>cross-project&lt;/em> workflow that required knowledge of each project, and a vision for how they could be used together in a way that exceeded the sum of their parts.&lt;/p>
&lt;p>We think there&amp;rsquo;s a lot more potential in these kinds of workflows, and are eager to continue our work to identify and enhance community-centric infrastructure for interactive computing.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>Thanks to the
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub&lt;/a> and
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book&lt;/a> communities for collaboration and review on this work.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>This actually required an interesting bit of team discussion that was much easier with a few 2i2c staff on the JupyterHub team. The original request from Angus was interpreted as opening up the &lt;em>entire hub API&lt;/em> to external requests (which is a bad idea!) but we were able to quickly discuss this with the JupyterHub team to clarify that this was only about a very specific API endpoint. This is the kind of communication loop that often goes haywire when you have people contributing to a project without historical relationships to the project&amp;rsquo;s maintainers.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>2i2c hubs now run JupyterHub 5.0</title><link>https://2i2c.org/blog/jupyterhub5-upgrade/</link><pubDate>Fri, 17 Jan 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jupyterhub5-upgrade/</guid><description>&lt;p>We are excited to announce that all 2i2c hubs now run JupyterHub 5.0!&lt;/p>
&lt;p>This is an upgrade that brings some exciting new features and improvements. Some of the highlights include:&lt;/p>
&lt;ol>
&lt;li>The possibility to enable
&lt;a href="https://jupyterhub.readthedocs.io/en/5.0.0/tutorial/sharing.html" target="_blank" rel="noopener" >user-initiated server sharing&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://jupyterhub.readthedocs.io/en/5.0.0/reference/authenticators.html#authenticator-managed-roles" target="_blank" rel="noopener" >Authenticator-managed roles&lt;/a>&lt;/li>
&lt;/ol>
&lt;p>Also, JupyterHub 5 will enable us to offer per-group shared directories in the future!
&lt;a href="https://github.com/NASA-IMPACT/veda-jupyterhub/issues/61" target="_blank" rel="noopener" >Tracking Issue&lt;/a>.&lt;/p>
&lt;p>Checkout the
&lt;a href="https://jupyterhub.readthedocs.io/en/latest/howto/upgrading-v5.html" target="_blank" rel="noopener" >JupyterHub 5.0 migration&lt;/a> docs or the
&lt;a href="https://jupyterhub.readthedocs.io/en/5.0.0/reference/changelog.html#id3" target="_blank" rel="noopener" >changelog&lt;/a> for more details.&lt;/p></description></item><item><title>Announcing our formal commitment to open technology</title><link>https://2i2c.org/blog/community-ownership/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/community-ownership/</guid><description>&lt;p>In this post, we&amp;rsquo;re sharing our
&lt;a href="https://2i2c.org/open-technology/" >Commitment to Open Technology&lt;/a>. It is focused on &lt;em>software licenses&lt;/em> for reasons we&amp;rsquo;ll describe below. We hope that it clarifies what kind of licenses we&amp;rsquo;ll use, and assures our communities that we will not change our stance towards open source technology in the future. This ensures 2i2c&amp;rsquo;s long-term commitment to community-owned and open infrastructure.&lt;/p>
&lt;p>Being a platform and service provider gives us a lot of power, and also introduces a potential source of &lt;em>lock-in&lt;/em> for our member communities. While 2i2c&amp;rsquo;s organizational mission and culture are strongly aligned with open infrastructure, we believe it&amp;rsquo;s important to encode commitments like these in a formal way to provide both transparency and accountability to our member communities.&lt;/p>
&lt;h2 id="our-commitment-to-open-technology">
Our commitment to open technology
&lt;a class="header-anchor" href="#our-commitment-to-open-technology">#&lt;/a>
&lt;/h2>&lt;p>Below we copy the original language of this policy from our
&lt;a href="https://2i2c.org/open-technology/" >Commitment to Open Technology&lt;/a>:&lt;/p>
&lt;!-- TODO: When we switch to MyST, we should embed this rather than copy/paste -->
&lt;p>&lt;em>Definitions of MUST, MUST NOT, SHOULD, MAY, etc are defined in
&lt;a href="https://tools.ietf.org/html/rfc2119" target="_blank" rel="noopener" >RFC 2119&lt;/a>&lt;/em>&lt;/p>
&lt;ol>
&lt;li>All engineering artifacts (code, documentation, etc) produced by 2i2c&amp;rsquo;s engineering team MUST be licensed under an open source license approved by a non-profit organization that is not 2i2c.&lt;/li>
&lt;li>Open Source Projects originating at 2i2c, or stewarded by 2i2c, MUST NOT require a
&lt;a href="https://en.wikipedia.org/wiki/Contributor_License_Agreement" target="_blank" rel="noopener" >Contributor Licensing Agreement&lt;/a> that includes Copyright Assignment to 2i2c.&lt;/li>
&lt;li>The list of external organizations that define licenses we accept are
&lt;ol>
&lt;li>
&lt;a href="https://opensource.org/" target="_blank" rel="noopener" >the Open Source Initiative&lt;/a>&lt;/li>
&lt;li>the
&lt;a href="https://ethicalsource.dev/" target="_blank" rel="noopener" >Organization for Ethical Source&lt;/a>.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Modifying (1), (2), or (3) MUST be done through a 2/3 majority vote of 2i2c staff.&lt;/li>
&lt;/ol>
&lt;h2 id="what-does-this-commitment-mean">
What does this commitment mean?
&lt;a class="header-anchor" href="#what-does-this-commitment-mean">#&lt;/a>
&lt;/h2>&lt;p>In plain language, here&amp;rsquo;s what this commitment means:&lt;/p>
&lt;ol>
&lt;li>We&amp;rsquo;ll only use open source licenses that have been approved by standard non-profits that are broadly recognized by the tech industry.&lt;/li>
&lt;li>For anything we build, we won&amp;rsquo;t require contributors to give up the rights to their contributions via CLAs, so that it is much harder for 2i2c to change our licenses in the future.&lt;/li>
&lt;li>Changing this policy will require organization-wide agreement, and in the future we&amp;rsquo;ll give authority over this policy to a group of people representing our member communities.&lt;/li>
&lt;/ol>
&lt;h2 id="why-are-licenses-and-clas-important">
Why are licenses and CLAs important?
&lt;a class="header-anchor" href="#why-are-licenses-and-clas-important">#&lt;/a>
&lt;/h2>&lt;p>Many organizations claim to be committed to open infrastructure, while retaining the ability to &lt;em>change this commitment in the future when it is in their interests&lt;/em>. A classic example of this is a &amp;ldquo;bait and switch&amp;rdquo; that looks something like this:&lt;/p>
&lt;ol>
&lt;li>A company releases software under an open source license and professes to build an open source community around it.&lt;/li>
&lt;li>However, they retain the rights to all of the code in their projects through a
&lt;a href="https://en.wikipedia.org/wiki/Contributor_License_Agreement" target="_blank" rel="noopener" >Contributor License Agreement&lt;/a> (CLA) with copyright assignment. This generally means that contributors must &lt;em>give up the rights to their contribution&lt;/em> in order to make that contribution.&lt;/li>
&lt;li>Once their product has gained traction and it is in their interests, the company can &lt;em>change the license&lt;/em> to whatever they wish (even one that is not open source) because they retain the rights to all contributions in the codebase.&lt;/li>
&lt;li>They then leverage this new position as owners of a proprietary project to extract business value or grow their position in a market.&lt;/li>
&lt;/ol>
&lt;p>Think this sounds unlikely? Here are just a few recent examples of companies that have switched their license after many years of releasing their technology under an open source license:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://redis.io/blog/redis-adopts-dual-source-available-licensing/" target="_blank" rel="noopener" >Redis&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license" target="_blank" rel="noopener" >Hashicorp / Terraform&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://en.wikipedia.org/wiki/Elasticsearch#Licensing_changes" target="_blank" rel="noopener" >Elastic Search&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>We want to ensure our communities that 2i2c is not headed down this path, in order to give them confidence in treating us as a long-term service partner.&lt;/p>
&lt;h2 id="what-does-this-change-about-2i2cs-open-source-commitment">
What does this change about 2i2c&amp;rsquo;s open source commitment?
&lt;a class="header-anchor" href="#what-does-this-change-about-2i2cs-open-source-commitment">#&lt;/a>
&lt;/h2>&lt;p>In short: nothing. These are already the principles that 2i2c was committed to from its inception, and already implied via our
&lt;a href="https://2i2c.org/right-to-replicate/" >Right to Replicate&lt;/a>. However, we wanted to make these commitments more formally in order to give ourselves more accountability to sticking with them, and to provide more transparency for our community members and stakeholders.&lt;/p>
&lt;h2 id="who-is-this-for">
Who is this for?
&lt;a class="header-anchor" href="#who-is-this-for">#&lt;/a>
&lt;/h2>&lt;p>We imagine three audiences for this policy:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>2i2c present and future staff&lt;/strong> who want to ensure that their organization remains committed to our open principles. This document provides a sense of psychological safety to have bold discussions about structuring our approach to open source.&lt;/li>
&lt;li>&lt;strong>Member communities and 2i2c stakeholders&lt;/strong> who need to have an understanding of the guarantees that we provide in order to trust 2i2c as a service developer and provider. This is similar to the effect our
&lt;a href="https://2i2c.org/right-to-replicate/" >Right to Replicate&lt;/a> has.&lt;/li>
&lt;li>&lt;strong>Open source communities&lt;/strong> who need to understand our long-term commitment and goals around open technology in order to trust as a peer and collaborator within open source communities.&lt;/li>
&lt;/ol>
&lt;h2 id="wed-love-feedback">
We&amp;rsquo;d love feedback
&lt;a class="header-anchor" href="#wed-love-feedback">#&lt;/a>
&lt;/h2>&lt;p>We hope that these ideas both clarify our intent and the reason that we think it&amp;rsquo;s important. We&amp;rsquo;d love feedback about early refinements to these principles in order to make them more effective, as well as ways that we can provide more community oversight and participation in evolving these policies moving forward. If you have any thoughts to share, please send feedback via e-mail
&lt;a href="https://2i2c.org/blog/community-ownership/mailto:hello@2i2c.org" >hello@2i2c.org&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Acknowledgements&lt;/strong>: &lt;em>The creation of this policy and the rationale behind it was led by
&lt;a href="https://2i2c.org/author/yuvaraj-yuvi/" >Yuvi Panda&lt;/a> with feedback from 2i2c&amp;rsquo;s team. This blog post was co-written with
&lt;a href="https://2i2c.org/author/chris-holdgraf/" >Chris Holdgraf&lt;/a>. Strategic work like this is supported by a grant from
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a>&lt;/em>.&lt;/p></description></item><item><title>NASA VEDA &amp; 2i2c Update for Q4 2024 (Oct-Dec 2024)</title><link>https://2i2c.org/blog/veda-update-q4-2024/</link><pubDate>Tue, 07 Jan 2025 15:18:37 -0800</pubDate><guid>https://2i2c.org/blog/veda-update-q4-2024/</guid><description>&lt;p>A non-exhaustive list of things 2i2c and
&lt;a href="https://developmentseed.org/" target="_blank" rel="noopener" >Development Seed&lt;/a> did with the
&lt;a href="https://www.earthdata.nasa.gov/data/tools/veda" target="_blank" rel="noopener" >NASA VEDA&lt;/a> project last quarter!&lt;/p>
&lt;h2 id="automated-backups-and-alerting-with-jupyterhub-home-nfs">
Automated backups and alerting with &lt;code>jupyterhub-home-nfs&lt;/code>
&lt;a class="header-anchor" href="#automated-backups-and-alerting-with-jupyterhub-home-nfs">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://github.com/NASA-IMPACT/veda-jupyterhub/issues/56" target="_blank" rel="noopener" >Tracking Issue&lt;/a>&lt;/p>
&lt;p>
&lt;a href="https://github.com/2i2c-org/jupyterhub-home-nfs/" target="_blank" rel="noopener" >jupyterhub-home-nfs&lt;/a> is a young project to provide flexible per-user home directory limits on JupyterHub - an important feature for controlling cloud costs.
&lt;a href="https://sunu.in/" target="_blank" rel="noopener" >Tarashish Mishra&lt;/a> and
&lt;a href="https://sgibson91.github.io/cv/" target="_blank" rel="noopener" >Sarah Gibson&lt;/a> have been leading this project for the last few months. Since we are moving away from
&lt;a href="https://aws.amazon.com/efs/" target="_blank" rel="noopener" >AWS Managed EFS&lt;/a> here, we had to do some work to recreate some of the benefits EFS gives us out of the box. During this quarter, we:&lt;/p>
&lt;ol>
&lt;li>Set up automated backups so we can recover files in cases of disaster&lt;/li>
&lt;li>Set up automated alerting (via prometheus and pagerduty) to know if our backing EBS device is getting full and we need to perform a manual intervention&lt;/li>
&lt;li>Deployed this to a few other communities (
&lt;a href="https://www.cryocloud.io/" target="_blank" rel="noopener" >CryoCloud&lt;/a> and
&lt;a href="https://nmfs-openscapes.github.io/" target="_blank" rel="noopener" >NMFS Openscapes&lt;/a>) to broaden adoption.&lt;/li>
&lt;/ol>
&lt;p>We will continue doing work on &lt;code>jupyterhub-home-nfs&lt;/code> in the upcoming quarter! If this is functionality you are interested in deploying, please reach out to us to collaborate!&lt;/p>
&lt;h2 id="enable-users-to-dynamically-build-environments-with-jupyterhub-fancy-profiles">
Enable users to dynamically build environments with &lt;code>jupyterhub-fancy-profiles&lt;/code>
&lt;a class="header-anchor" href="#enable-users-to-dynamically-build-environments-with-jupyterhub-fancy-profiles">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://github.com/NASA-IMPACT/veda-jupyterhub/issues/58" target="_blank" rel="noopener" >Tracking Issue&lt;/a>&lt;/p>
&lt;p>We covered this more extensively in
&lt;a href="https://2i2c.org/blog/jupyterhub-fancy-profiles-rollout/" >another blog post&lt;/a>, so go read that!&lt;/p>
&lt;p>This work in particular is a good demonstrator of 2i2c&amp;rsquo;s value - it started off with a
&lt;a href="https://2i2c.org/blog/jupyterhub-binderhub-gesis/" >grant from GESIS&lt;/a>, and now with support from
&lt;a href="https://impact.earthdata.nasa.gov/" target="_blank" rel="noopener" >NASA IMPACT&lt;/a> we are able to bring it to a &lt;em>lot&lt;/em> of communities, not just the ones that funded it.&lt;/p>
&lt;p>Ongoing work here will focus on improving the UX as well as better documentation so users can actually use it!&lt;/p>
&lt;h2 id="open-in-qgis-from-veda-ui">
&amp;ldquo;Open in QGIS&amp;rdquo; from VEDA UI
&lt;a class="header-anchor" href="#open-in-qgis-from-veda-ui">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://github.com/NASA-IMPACT/veda-jupyterhub/issues/59" target="_blank" rel="noopener" >Tracking Issue&lt;/a>&lt;/p>
&lt;p>We had worked in the past with many communities in enabling
&lt;a href="https://2i2c.org/blog/qgis-greenland/" >QGIS on the Cloud&lt;/a>, and this quarter we got closer to enabling a contextual &amp;lsquo;Open in QGIS&amp;rsquo; button in the
&lt;a href="https://www.earthdata.nasa.gov/dashboard/" target="_blank" rel="noopener" >VEDA Dashboard&lt;/a>! Here is a quick demo:&lt;/p>
&lt;p>&lt;video src="./open-in-qgis.mp4" muted controls>&lt;/video>&lt;/p>
&lt;p>(This shows the workflow when user is already logged into the JupyterHub and had started the server)&lt;/p>
&lt;p>You can play with this in
&lt;a href="https://deploy-preview-688--ghg-demo.netlify.app/exploration" target="_blank" rel="noopener" >this preview&lt;/a>, although you need to have access to the NASA VEDA hub to fully try it out at this point.&lt;/p>
&lt;p>Tarashish from Development Seed is again responsible for most of the work here, available in
&lt;a href="https://github.com/sunu/jupyter-remote-qgis-proxy" target="_blank" rel="noopener" >jupyter-remote-qgis-proxy&lt;/a>. You can use it to create &amp;lsquo;magic links&amp;rsquo; that will open QGIS in a desktop environment in your browser, and add a specific layer to it! Our hope is that this allows primarily GIS folks to better use tools they already are familiar with in cloud based contexts.&lt;/p>
&lt;h2 id="other-updates">
Other updates
&lt;a class="header-anchor" href="#other-updates">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>We participated heavily in an evaluation process for the authentication and authorization solution to be used across NASA VEDA!
&lt;a href="https://github.com/NASA-IMPACT/veda-jupyterhub/issues/57" target="_blank" rel="noopener" >Tracking Issue&lt;/a>&lt;/li>
&lt;li>We are very close to
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/5209" target="_blank" rel="noopener" >rolling out JupyterHub 5.0&lt;/a> and associated changes across all our hubs, which will enable us to eventually offer per-group shared directories!
&lt;a href="https://github.com/NASA-IMPACT/veda-jupyterhub/issues/61" target="_blank" rel="noopener" >Tracking Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA project&lt;/a> for thir ongoing support for this work.&lt;/li>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/devseed/" >DevSeet&lt;/a> for their collaboration and leadership on this project.&lt;/li>
&lt;/ul></description></item><item><title>2i2c communities at AGU 2024</title><link>https://2i2c.org/blog/agu/</link><pubDate>Mon, 09 Dec 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/agu/</guid><description>&lt;p>We are proud to share that several of 2i2c&amp;rsquo;s community partners are presenting their work at AGU 2024! In each case, 2i2c&amp;rsquo;s infrastructure plays a part in helping communities create and share knowledge, and grow their community. As an organization rooted in community-centric practices, we are particularly excited to see 2i2c represented &amp;ldquo;indirectly&amp;rdquo; at this conference, and to see ourselves as a supporting role enabling the impact of others.&lt;/p>
&lt;p>Here&amp;rsquo;s a summary and links to all of the sessions. See below for a brief overview of seach one.&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1735091" target="_blank" rel="noopener" >ED31G-2272 Breaking down the barriers to Open Science with Project Pythia&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1577974" target="_blank" rel="noopener" >ED31G-2277 PACE Hackweek: An open community keeping up with PACE&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1709763" target="_blank" rel="noopener" >IN13A-2147 Including more solutions and more solvers via actionable open science&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1522970" target="_blank" rel="noopener" >IN34A-01 Beyond Open Data: Ensuring True Accessibility for All (Invited)&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1645291" target="_blank" rel="noopener" >Introducing GeoLab - An EarthScope JupyterHub for Enabling Collaborative Cloud-Native Geophysical Data Analysis and Skill Development Workshops&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1697601" target="_blank" rel="noopener" >U13A-2349 Sharing recipes for cloud computing: the Project Pythia Cookbook Initiative&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1708480" target="_blank" rel="noopener" >U13A-2350 Supporting NASA Earthdata users in the Cloud: NASA Openscapes JupyterHub and User Onboarding &amp;amp; Fledging&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1605357" target="_blank" rel="noopener" >V31A-08 VICTOR – A new Cyber-infrastructure for Volcanology&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="ed31g-2272-breaking-down-the-barriers-to-open-science-with-project-pythia">
ED31G-2272 Breaking down the barriers to Open Science with Project Pythia
&lt;a class="header-anchor" href="#ed31g-2272-breaking-down-the-barriers-to-open-science-with-project-pythia">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1735091" target="_blank" rel="noopener" >Link to session&lt;/a>&lt;/p>
&lt;p>Hall B-C (Poster Hall) (Convention Center)&lt;/p>
&lt;h3 id="abstract">
Abstract
&lt;a class="header-anchor" href="#abstract">#&lt;/a>
&lt;/h3>&lt;p>Project Pythia is an open access educational initiative established with funding from the U.S. National Science Foundation. Its mission is to help students and scientists enhance their skills and adopt best practices using the tools and technologies of open science. As part of the Pangeo community, Project Pythia primarily focuses on the Pangeo stack, which includes cloud computing, Jupyter technologies, GitHub, and various software packages in the Scientific Python ecosystem, centered around Xarray. Project Pythia offers a wide range of open access content, such as datasets, software, tutorials, and annotated real-world workflows presented in the form of Jupyter Books.&lt;/p>
&lt;p>Project Pythia serves as a resource for scientists, promoting and fostering open science. Although it is not a scientific research artifact itself, the development of Project Pythia adheres to many best practices advocated by open science proponents. The Pythia team actively encourages community engagement and collaborates openly with scientists and technologists to create new content. All Pythia resources are freely accessible, and the project follows the FAIR principles (Findable, Accessible, Interoperable, and Reusable) for managing research outputs, including publications, data, and other materials. We support and facilitate open evaluation and peer reviews of content to ensure verifiability and trust. Lastly, we endeavor to openly discuss ideas, designs, and methods before implementation.&lt;/p>
&lt;p>This presentation will provide an overview of Project Pythia&amp;rsquo;s extensive educational resources and share our experiences in applying many open science principles to develop this flagship training resource for the geoscience community.&lt;/p>
&lt;h3 id="authors">
Authors
&lt;a class="header-anchor" href="#authors">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/15277" target="_blank" rel="noopener" >John Clyne&lt;/a> - NSF National Center for Atmospheric Research (first author)&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1112151" target="_blank" rel="noopener" >Drew Camron&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/pythia/" >University Corporation for Atmospheric Research&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1104277" target="_blank" rel="noopener" >Orhan Eroglu&lt;/a> - NSF National Center for Atmospheric Research&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1266060" target="_blank" rel="noopener" >Robert Ford&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/pythia/" >University at Albany State University of New York&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/796821" target="_blank" rel="noopener" >Julia Kent&lt;/a> - NSF National Center for Atmospheric Research&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/529702" target="_blank" rel="noopener" >Ryan May&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/pythia/" >University Corporation for Atmospheric Research&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1317099" target="_blank" rel="noopener" >James Munroe&lt;/a> - 2i2c / Code for Science and Society&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/10645" target="_blank" rel="noopener" >Brian E J Rose&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/pythia/" >SUNY at Albany&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="ed31g-2277-pace-hackweek-an-open-community-keeping-up-with-pace">
ED31G-2277 PACE Hackweek: An open community keeping up with PACE
&lt;a class="header-anchor" href="#ed31g-2277-pace-hackweek-an-open-community-keeping-up-with-pace">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1577974" target="_blank" rel="noopener" >Link to session&lt;/a>&lt;/p>
&lt;h3 id="abstract-1">
Abstract
&lt;a class="header-anchor" href="#abstract-1">#&lt;/a>
&lt;/h3>&lt;p>The NASA Plankton, Aerosol, Cloud, ocean Ecosystem (PACE) mission, while bringing NASA&amp;rsquo;s Earth System Observatory &lt;em>up to speed&lt;/em> with aquatic, atmospheric, and terrestrial science capabilities, is also providing data records of the Earth System for the next generation of scientists &lt;em>to grow into&lt;/em>. The goal of the PACE Hackweek, supported by the Ocean Carbon &amp;amp; Biogeochemistry program and hosted at the University of Maryland Baltimore County in August 2024, was to enrich and support the practice of open science by both emerging and established researchers. Cloud-compute resources for the event were provided by
&lt;a href="https://2i2c.org/collaborators/cryocloud/" >CryoCloud&lt;/a>, a NASA funded collaboration between ICESat-2 and the International Interactive Computing Collaboration (2i2c) to provide cryosphere researchers with a shared JupyterHub. We, the hackweek mentors, were buoyed by the NASA Openscapes program and adopted its mantra of striving toward &amp;ldquo;a kinder science for future us.&amp;rdquo; Participants faced two novelties: the &amp;ldquo;firehose&amp;rdquo; of data from the PACE instrument array (a hyper-spectral imaging spectrometer, a wide-swath hyper-angular polarimeter, and a narrow-swath spectro-polarimeter), and the distribution of PACE collections through the NASA Earthdata Cloud (a first for the Ocean Biology Distributed Active Archive Center). We present our approach and the challenges undertaken to hold an in-person, social coding event with 45 participants that provided a collaborative, supportive launchpad for doing open science with PACE. All lectures and tutorials produced for the event are freely available for examination and reuse. Our results additionally include highlights from the demonstration projects pursued by event participants and results from two post-event, qualitative surveys. One anonymous survey gathered participant feedback that will inform plans for growing these 45 participants into a lasting, open community. A separate, anonymous survey recorded participant demographics in order to evaluate our efforts at increasing diversity within the community of PACE data users. Key points of discussion include participant views, informed by our event, on whether and how the NASA Earthdata Cloud is a significant resource for the practice of open science with PACE, and how a shared JupyterHub can further the practice of open science by the community it serves.&lt;/p>
&lt;h3 id="authors-1">
Authors
&lt;a class="header-anchor" href="#authors-1">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1480998" target="_blank" rel="noopener" >Ian Carroll&lt;/a> - NASA Goddard Space Flight Center; University of Maryland Baltimore County (first author)&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1495436" target="_blank" rel="noopener" >Kelsey Bisson&lt;/a> - NASA Headquarters&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1376909" target="_blank" rel="noopener" >Sean Foley&lt;/a> - NASA Goddard Space Flight Center; Morgan State University&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/741441" target="_blank" rel="noopener" >Patrick Clifton Gray&lt;/a> - University of Maine&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/23781" target="_blank" rel="noopener" >Elizabeth E Holmes&lt;/a> - NOAA Fisheries&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1492013" target="_blank" rel="noopener" >Carina Poulin&lt;/a> - Science Systems and Applications, Inc.; NASA Goddard Space Flight Center&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1306597" target="_blank" rel="noopener" >Tasha Snow&lt;/a> - NASA Goddard Space Flight Center; University of Maryland College Park&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1076991" target="_blank" rel="noopener" >Guoqing Wang&lt;/a> - NASA Goddard Space Flight Center; Science Systems and Applications, Inc.&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/38898" target="_blank" rel="noopener" >Jeremy Werdell&lt;/a> - NASA Goddard Space Flight Center&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1466866" target="_blank" rel="noopener" >Anna Windle&lt;/a> - NASA Goddard Space Flight Center; Science Systems and Applications, Inc.&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/66734" target="_blank" rel="noopener" >Pengwang Zhai&lt;/a> - Department of Physics, University of Maryland Baltimore County&lt;/li>
&lt;/ul>
&lt;h2 id="in13a-2147-including-more-solutions-and-more-solvers-via-actionable-open-science">
IN13A-2147 Including more solutions and more solvers via actionable open science
&lt;a class="header-anchor" href="#in13a-2147-including-more-solutions-and-more-solvers-via-actionable-open-science">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1709763" target="_blank" rel="noopener" >Link to session&lt;/a>&lt;/p>
&lt;p>Monday, 9 December 2024
13:40 - 17:30&lt;br>
Hall B-C (Poster Hall) (Convention Center)&lt;/p>
&lt;h3 id="abstract-2">
Abstract
&lt;a class="header-anchor" href="#abstract-2">#&lt;/a>
&lt;/h3>&lt;p>If we&amp;rsquo;re asking people to change for open science, we must be willing to change ourselves. Internalizing this as individuals and institutions is critical - &amp;ldquo;to address our climate emergency, we must rapidly, radically reshape society. We need every solution and every solver&amp;rdquo; (Johnson &amp;amp; Wilkinson, All We Can Save).&lt;/p>
&lt;p>Radically reshaping our society and including more solvers requires Earth scientists of all disciplines, across AGU, to work together in new ways. Many of these shifts can be considered Open science. They change how we work daily, not just the open products we produce. And for that, people need to consider themselves part of a team, let go of perfection and embrace a growth mindset to continually reflect and improve skills – no matter their job title. Further, open science requires all of us to see ourselves as leaders making small changes that collectively add up to a movement.&lt;/p>
&lt;p>Openscapes is an open source approach to cultivating leaders and change makers. Openscapes&amp;rsquo; flywheel approach intervenes and builds momentum through identifying mentors within organizations and mentoring teams curious about shifting to open science (Robinson &amp;amp; Lowndes 2022). Collectively, the Openscapes flywheel iterations have had a significant impact over the past five years across institutions like the federal government and academia that seem impossible to change. Through stories working with professional scientists over the past 5 years including at NASA, NOAA, Black Women in Ecology, Evolution, and Marine Science, and many universities, and open source software communities like 2i2c, Posit, Pangeo, and RLadies, we will share actionable insights for flourishing in the open science commons, and are interested in learning with and growing flywheel momentum further at AGU.&lt;/p>
&lt;h3 id="authors-2">
Authors
&lt;a class="header-anchor" href="#authors-2">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/259076" target="_blank" rel="noopener" >Julia S. Stewart Lowndes&lt;/a> - Openscapes, LLC (first author)&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/710145" target="_blank" rel="noopener" >Ileana Faye Fenwick&lt;/a> - Hampton University&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/23781" target="_blank" rel="noopener" >Elizabeth E Holmes&lt;/a> - NOAA Fisheries&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/156587" target="_blank" rel="noopener" >Luis Alberto Lopez&lt;/a> - National Snow and Ice Data Center (NSIDC), CIRES, University of Colorado Boulder&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1117961" target="_blank" rel="noopener" >Erin Robinson&lt;/a> - Self Employed&lt;/li>
&lt;/ul>
&lt;h2 id="in34a-01-beyond-open-data-ensuring-true-accessibility-for-all-invited">
IN34A-01 Beyond Open Data: Ensuring True Accessibility for All (Invited)
&lt;a class="header-anchor" href="#in34a-01-beyond-open-data-ensuring-true-accessibility-for-all-invited">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1522970" target="_blank" rel="noopener" >Link to session&lt;/a>&lt;/p>
&lt;h3 id="abstract-3">
Abstract
&lt;a class="header-anchor" href="#abstract-3">#&lt;/a>
&lt;/h3>&lt;p>The Earth Observation (EO) industry has seen rapid technological advancements alongside a massive increase in the number of private and public missions, leading to exponentially growing data archives. For publicly funded entities, this data is typically required to be freely available. However, open data does not always guarantee accessibility, and significant barriers remain for even the most advanced users. The stagnation in the use and adoption of open data can be attributed to several factors, including 1) challenges in unifying and maintaining metadata standards, 2) inefficiencies associated with legacy data formats, 3) a lack of training and resources for transitioning to cloud-based infrastructure, and 4) systemic social inequalities.&lt;/p>
&lt;p>This talk will explore real-life examples of these barriers and highlight success stories that have emerged from partnerships largely originating within open-source communities which foster diverse connections between private and public entities including efforts like GeoZarr, pangeo-forge, Openscapes and 2i2c. While many advancements in improving the usability and accessibility of EO data have come from private efforts (i.e. Google Earth Engine), the shutdown of the Planetary Computer is a reminder of the need for publicly funded alternatives. The sustainability of open source projects will be addressed, with questions posed around reliable funding mechanisms as a means to ensure equitable development to address barriers and ensure accessibility for all. While this talk will be presented by one individual, it is the review and reflection of the work done by dozens of people across various organizations.&lt;/p>
&lt;h3 id="authors-3">
Authors
&lt;a class="header-anchor" href="#authors-3">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1267904" target="_blank" rel="noopener" >Brianna Rita Pagán&lt;/a> - NASA Goddard Space Flight Center; ADNET Systems Inc. Greenbelt (first author)&lt;/li>
&lt;/ul>
&lt;h2 id="introducing-geolab---an-earthscopecollaboratorsearthscope-jupyterhub-for-enabling-collaborative-cloud-native-geophysical-data-analysis-and-skill-development-workshops">
Introducing GeoLab - An
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope&lt;/a> JupyterHub for Enabling Collaborative Cloud-Native Geophysical Data Analysis and Skill Development Workshops
&lt;a class="header-anchor" href="#introducing-geolab---an-earthscopecollaboratorsearthscope-jupyterhub-for-enabling-collaborative-cloud-native-geophysical-data-analysis-and-skill-development-workshops">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1645291" target="_blank" rel="noopener" >Link to session&lt;/a>&lt;/p>
&lt;h3 id="abstract-4">
Abstract
&lt;a class="header-anchor" href="#abstract-4">#&lt;/a>
&lt;/h3>&lt;p>The
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope&lt;/a> Consortium manages NSF&amp;rsquo;s GAGE and SAGE facilities and makes all of its geophysical data available in a commercial cloud system. This enables
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope&lt;/a> and the communities it supports to leverage the abundant computational resources and cost-effective benefits of adopting data-proximate workflows with direct access to large, analysis-ready geophysical data sets.&lt;/p>
&lt;p>In recent years, JupyterHub environments have gained popularity with data enthusiasts for their ability to provide open access to powerful compute resources. As part of a broad effort to support communities with intuitive resources to quickly adapt their workflows to the cloud,
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope&lt;/a> has partnered with 2i2c to operate a scalable JupyterHub environment in AWS that will provide equitable access to cloud compute resources for researchers, educators, and the general public. GeoLab, the
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope&lt;/a> hub, is aligned with related open science initiatives to establish rigorous and transparent standards for reproducible, data-intensive workflows. In addition to promoting interdisciplinary and inter-institutional collaborative work between researchers in GeoLab,
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope&lt;/a> is developing and hosting workshops that can support both in-person and asynchronous learning modules that will train users how to utilize these new resources and transition their work to the cloud. We are excited to invite all geophysical data users to participate in the vigorous growth of this new platform and collaborate with adjacent open-science compute hub initiatives.&lt;/p>
&lt;h3 id="authors-4">
Authors
&lt;a class="header-anchor" href="#authors-4">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/74000" target="_blank" rel="noopener" >Robert T Weekly&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope Consortium&lt;/a> (first author)&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/84732" target="_blank" rel="noopener" >Tammy K Bravo&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope Consortium&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/38950" target="_blank" rel="noopener" >Jerry A Carter&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope Consortium&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1522227" target="_blank" rel="noopener" >Tim Dittmann&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope Consortium&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1293466" target="_blank" rel="noopener" >Alex Hamilton&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope Consortium&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/57436" target="_blank" rel="noopener" >David Mencin&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope Consortium&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/13120" target="_blank" rel="noopener" >Chad Trabant&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope Consortium&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1526474" target="_blank" rel="noopener" >Sarah Wilson&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope Consortium&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="u13a-2349-sharing-recipes-for-cloud-computing-the-project-pythia-cookbook-initiative">
U13A-2349 Sharing recipes for cloud computing: the Project Pythia Cookbook Initiative
&lt;a class="header-anchor" href="#u13a-2349-sharing-recipes-for-cloud-computing-the-project-pythia-cookbook-initiative">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1697601" target="_blank" rel="noopener" >Link to session&lt;/a>&lt;/p>
&lt;h3 id="abstract-5">
Abstract
&lt;a class="header-anchor" href="#abstract-5">#&lt;/a>
&lt;/h3>&lt;p>Project Pythia is the flagship education and training initiative of the Pangeo community. Pangeo has advanced transformative platforms and paradigms for &amp;ldquo;Big Data&amp;rdquo; geoscience in the cloud; Pythia is creating on-ramps for new users with open, interactive learning resources centered on Python in the geosciences. Pythia is now building a vibrant community-owned clearinghouse of accessible, reusable, and reproducible tutorials and exemplar workflows in the cloud known as Pythia Cookbooks.&lt;/p>
&lt;p>&amp;ldquo;Cookbooks&amp;rdquo; imply collections of recipes for transforming raw ingredients (publicly available data) into scientifically useful results. Based on Jupyter notebooks, Cookbooks are explicitly tied to reproducible computational environments and supported by a rich cloud-based infrastructure enabling collaborative authoring and automated health-checking – essential tools in the struggle against the widespread notebook obsolescence problem. Cookbooks are hosted on Pythia&amp;rsquo;s searchable gallery and nurtured by a growing community of open science enthusiasts from across the geosciences. The Pythia Cookbook gallery is essentially a crowd-sourced, community-curated collection of best practices for data analysis and visualization.&lt;/p>
&lt;p>Here we will outline the stack of technologies and infrastructure enabling cookbook creation, collaboration, testing, publication, and interactive deployment, and how these are used in service of building an inclusive participatory community. We will discuss existing technical and social hurdles for contributors, as well as new infrastructure developments in collaboration with the Executable Books Project that are reducing these hurdles.&lt;/p>
&lt;h3 id="authors-5">
Authors
&lt;a class="header-anchor" href="#authors-5">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/10645" target="_blank" rel="noopener" >Brian E J Rose&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/pythia/" >University at Albany State University of New York&lt;/a> (first author)&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1112151" target="_blank" rel="noopener" >Drew Camron&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/pythia/" >University Corporation for Atmospheric Research&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/15277" target="_blank" rel="noopener" >John Clyne&lt;/a> - NCAR&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1104277" target="_blank" rel="noopener" >Orhan Eroglu&lt;/a> - NSF National Center for Atmospheric Research&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1266060" target="_blank" rel="noopener" >Robert Ford&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/pythia/" >University at Albany State University of New York&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/796821" target="_blank" rel="noopener" >Julia Kent&lt;/a> - NSF National Center for Atmospheric Research&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/529702" target="_blank" rel="noopener" >Ryan May&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/pythia/" >University Corporation for Atmospheric Research&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1317099" target="_blank" rel="noopener" >James Munroe&lt;/a> - 2i2c / Code for Science and Society&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/218622" target="_blank" rel="noopener" >Kevin Tyle&lt;/a> -
&lt;a href="https://2i2c.org/collaborators/pythia/" >SUNY at Albany&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="u13a-2350-supporting-nasa-earthdata-users-in-the-cloud-nasa-openscapes-jupyterhub-and-user-onboarding--fledging">
U13A-2350 Supporting NASA Earthdata users in the Cloud: NASA Openscapes JupyterHub and User Onboarding &amp;amp; Fledging
&lt;a class="header-anchor" href="#u13a-2350-supporting-nasa-earthdata-users-in-the-cloud-nasa-openscapes-jupyterhub-and-user-onboarding--fledging">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1708480" target="_blank" rel="noopener" >Link to session&lt;/a>&lt;/p>
&lt;h3 id="abstract-6">
Abstract
&lt;a class="header-anchor" href="#abstract-6">#&lt;/a>
&lt;/h3>&lt;p>In this talk we will highlight our NASA Openscapes community teaching approach to using the 2i2c-managed JupyterHub – how we&amp;rsquo;ve collaboratively developed it to meet user needs, and how it continues to enable researchers and users of NASA Earthdata in the new Cloud paradigm.&lt;/p>
&lt;p>NASA Openscapes is an open source mentor community across NASA Earth science data centers (
&lt;a href="https://www.earthdata.nasa.gov/eosdis/daacs" target="_blank" rel="noopener" >DAACs&lt;/a>) that helps users explore and use the Cloud for their science and applications.
&lt;a href="https://nasa-openscapes.github.io/earthdata-cloud-cookbook/" target="_blank" rel="noopener" >Earthdata Cloud Cookbook&lt;/a> is a learner-focused open source tutorial collection that we update openly as we learn together.&lt;/p>
&lt;p>A critical piece of the NASA Openscapes effort is our &lt;strong>NASA Openscapes 2i2c JupyterHub&lt;/strong>, a managed cloud computing space. By working with cloud early adopters and science
&lt;a href="https://nasa-openscapes.github.io/news/2024-07-24-2024-nasa-champions-cohort/" target="_blank" rel="noopener" >Champions&lt;/a>, responding and co-developing solutions, the JupyterHub has evolved since its early days in 2021. We support cloud computing for several languages (python, R, Matlab, QGIS) and common science libraries with
&lt;a href="https://github.com/nasa-openscapes/corn" target="_blank" rel="noopener" >corn&lt;/a>; we streamlined how to bulk-add workshop participants via GitHub Teams; we established policy and technology for a special authentication mechanism for large scale workshops; we are developing earthaccess as an community-developed python library for NASA Earthdata search and access, whether locally or in the cloud.&lt;/p>
&lt;p>Based on the last 3 years of engaging with the user community and the Hub, we have &lt;strong>evolved&lt;/strong> how we &lt;strong>onboard&lt;/strong> (first experience in the cloud) and &lt;strong>fledge&lt;/strong> (set up for Cloud that includes a plan, how to do it, how to pay for it; leaving the nest and perhaps building your own). Fledging is an important part of adoption and initiating users to the Cloud - where do researchers go when they decide to do their science in the Cloud? We&amp;rsquo;ve been developing practices that aim to be equitable and consider policy (cost), technical (where do people go, what admin setup is needed, what tech like base images etc are needed), and social (how do I learn, get support) aspects, and look forward to discussing further at AGU.&lt;/p>
&lt;h3 id="authors-6">
Authors
&lt;a class="header-anchor" href="#authors-6">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/259076" target="_blank" rel="noopener" >Julia S. Stewart Lowndes&lt;/a> - Openscapes, LLC (first author)&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1187283" target="_blank" rel="noopener" >Andrew Barrett&lt;/a> - National Snow and Ice Data Center (NSIDC)&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/153347" target="_blank" rel="noopener" >Carl Boettiger&lt;/a> - University of California Santa Cruz&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/249458" target="_blank" rel="noopener" >Aaron M Friesz&lt;/a> - Organization Not Listed&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/23781" target="_blank" rel="noopener" >Elizabeth E Holmes&lt;/a> - NOAA Fisheries&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1187291" target="_blank" rel="noopener" >Alexis Hunzinger&lt;/a> - NASA Goddard Space Flight Center&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1232669" target="_blank" rel="noopener" >Daniel Kaufman&lt;/a> - NASA Langley Research Center&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/156587" target="_blank" rel="noopener" >Luis Alberto Lopez&lt;/a> - National Snow and Ice Data Center (NSIDC), CIRES, University of Colorado Boulder&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/64338" target="_blank" rel="noopener" >Catalina M Oaida Taglialatela&lt;/a> - NASA Jet Propulsion Laboratory, California Institute of Technology&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/773544" target="_blank" rel="noopener" >Yuvi Panda&lt;/a> - University of California, Berkeley&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/153320" target="_blank" rel="noopener" >Michele Thornton&lt;/a> - Oak Ridge National Laboratory&lt;/li>
&lt;/ul>
&lt;h2 id="v31a-08-victor--a-new-cyber-infrastructure-for-volcanology">
V31A-08 VICTOR – A new Cyber-infrastructure for Volcanology
&lt;a class="header-anchor" href="#v31a-08-victor--a-new-cyber-infrastructure-for-volcanology">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Paper/1605357" target="_blank" rel="noopener" >Link to session&lt;/a>&lt;/p>
&lt;h3 id="abstract-7">
Abstract
&lt;a class="header-anchor" href="#abstract-7">#&lt;/a>
&lt;/h3>&lt;p>Numerical models are essential for forecasting volcanic hazards for both short-term responses and long-term hazard assessment. While many models of volcanic processes already exist, challenges in finding, installing, and evaluating these models, coupled with limited computational resources, hinder their widespread use. To address this, we introduce VICTOR, the Volcanology Infrastructure for Computational Tools and Resources.&lt;/p>
&lt;p>VICTOR is a cutting-edge cyber-infrastructure platform offering an open-source, cloud-based environment tailored for the volcanology community. It features Jupyter notebooks that integrate existing volcano models, such as the lava flow codes MOLASSES and IMEX_lava, the tephra and ash dispersal codes Tephra2 and HYSPLIT, and the mass flow code TITAN2D. The backend of VICTOR is managed as a JupyterHub, operated by the non-profit 2i2c under the Code for Science and Society.&lt;/p>
&lt;p>VICTOR not only provides access to individual modeling tools, but also hosts workflows that use them in data inversion, model benchmarking, and uncertainty quantification. For example, we developed a workflow to validate mass flow models using multiple metrics and Bayesian statistics. VICTOR provides built-in access to external databases such as OpenTopography, Copernicus, and NASA&amp;rsquo;s remote sensing products to streamline obtaining and using data in workflows.&lt;/p>
&lt;p>VICTOR also serves as an educational resource. In Spring 2023 and 2024 we taught graduate level, multi-institutional courses in Computational Volcanology using VICTOR, and we are creating multilingual tutorials for the workflows. We are developing teaching modules on topics such as lava flows and remote sensing to be shared with instructors. Lastly, VICTOR collaborates with national efforts including CONVERSE and SZ4D.&lt;/p>
&lt;p>In summary, VICTOR addresses the critical need for accessible, effective volcanic hazard modeling tools and resources, fostering advancements in both research and education within the volcanology community.&lt;/p>
&lt;h3 id="plain-language-summary">
Plain-language Summary
&lt;a class="header-anchor" href="#plain-language-summary">#&lt;/a>
&lt;/h3>&lt;p>VICTOR is a new online platform designed to help scientists predict volcanic hazards more easily. Traditional models can be difficult to find, use, and combine with other tools. VICTOR solves these problems by offering a cloud-based, open-source environment with user-friendly tools.&lt;/p>
&lt;p>VICTOR includes tools like Jupyter notebooks that combine various volcano models for lava flows, ash dispersal, and mass movements. It operates through JupyterHub, managed by the non-profit 2i2c. The platform not only provides access to these models but also offers workflows for tasks like data analysis and model validation. For example, it has a workflow for testing mass flow models using multiple evaluation methods.&lt;/p>
&lt;p>VICTOR simplifies data access by connecting directly to databases like OpenTopography and NASA&amp;rsquo;s remote sensing products. It&amp;rsquo;s also an educational tool, used in graduate courses and offering multilingual tutorials. Additionally, VICTOR is developing teaching materials on topics like lava flows and remote sensing and collaborates with national projects like CONVERSE and SZ4D.&lt;/p>
&lt;p>In essence, VICTOR makes volcanic hazard modeling more accessible and effective, benefiting both research and education in volcanology.&lt;/p>
&lt;h3 id="authors-7">
Authors
&lt;a class="header-anchor" href="#authors-7">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/23513" target="_blank" rel="noopener" >Einat Lev&lt;/a> - Columbia University of New York (first author)&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/82273" target="_blank" rel="noopener" >Sylvain J Charbonnier&lt;/a> - University of South Florida&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/12431" target="_blank" rel="noopener" >Charles Connor&lt;/a> - University of South Florida&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/1565568" target="_blank" rel="noopener" >Samuel Krasnoff&lt;/a> - Lamont -Doherty Earth Observatory&lt;/li>
&lt;li>
&lt;a href="https://agu.confex.com/agu/agu24/meetingapp.cgi/Person/880" target="_blank" rel="noopener" >Abani K Patra&lt;/a> - University at Buffalo&lt;/li>
&lt;/ul></description></item><item><title>2024 impact report: new team structure, new funding, and growth in our network</title><link>https://2i2c.org/blog/retrospective/</link><pubDate>Sun, 08 Dec 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/retrospective/</guid><description>&lt;p>2024 has been a busy year for 2i2c, with many highs and lows, a lot of impact, and significant organizational change. As the year comes to an end, I want to reflect on the work we&amp;rsquo;ve done in 2024, and where we aim to go in 2025.&lt;/p>
&lt;p>In 2024, 2i2c reached the point in an organization&amp;rsquo;s lifecycle when a team has grown enough in size and complexity that you must change the ways that you organize. The informal ways that worked as a small group don&amp;rsquo;t suffice anymore, and you have to put more effort into aligning and coordinating everyone to ensure you have the same impact.&lt;/p>
&lt;p>I call this the &amp;ldquo;$1M to $2M budget jump&amp;rdquo;, because organizations seem to hit this point around when your annual budget goes from &lt;code>$1M&lt;/code> to &lt;code>$2M&lt;/code>. Getting to the other side of this gap with an intact runway and team is hard, and I suspect that 2i2c&amp;rsquo;s fully distributed nature means that we hit these scaling milestones earlier than many organizations. For us, this has been a major focus of effort all year, and has involved taking a top-to-bottom look at our plans and ways of working as a team. Read on for more details about major updates, challenges, and impact that our team had in 2024.&lt;/p>
&lt;h2 id="organizational-updates">
Organizational updates
&lt;a class="header-anchor" href="#organizational-updates">#&lt;/a>
&lt;/h2>&lt;p>At an organizational level, this year had a lot of introspection and planning, a few new roles, a few departing team members, a funding crunch, a successful effort to dig out of it, and a new system of work organizing our team. We&amp;rsquo;ll share more about all of this later, but here are the major implications for our team:&lt;/p>
&lt;p>&lt;strong>We&amp;rsquo;ve raised another $2.2M in funding&lt;/strong> to support our efforts in scaling and sustaining our network of community hubs. This gives us roughly another 2 years of projected runway (with some assumptions about revenue from contracts and grants). Below are two posts that describe two major awards we were awarded in Q3 and Q4 of this year:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>
&lt;a href="https://2i2c.org/blog/funding-czi/" >A one-year award from the Chan Zuckerberg Initiative&lt;/a>&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>
&lt;a href="https://2i2c.org/blog/funding-navigation/" >A two-year award from The Navigation Fund&lt;/a>&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>We&amp;rsquo;ve designed and hired several strategic and systems-level roles&lt;/strong> to give our team support and direction as it grows. Here&amp;rsquo;s a brief summary:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>
&lt;a href="https://2i2c.org/author/giuliano-maciocci/" >Head of Product, Giuliano Maciocci&lt;/a>&lt;/strong>. Giuliano leads our efforts to define and steward our value proposition and the roadmap of development for products and services that feeds into it. Giuliano has 10+ years experience driving growth in companies, was the ex-Chief Product Officer at Ex Ordo, ex-head of Product at eLife Sciences where he led the open science product
&lt;a href="https://elifesciences.org/collections/d72819a9/executable-research-articles" target="_blank" rel="noopener" >Executable Research Article&lt;/a>, and contributed significantly to mobile design and innovation at Adobe.&lt;/li>
&lt;li>&lt;strong>
&lt;a href="https://2i2c.org/author/harold-campbell/" >Chief of Staff and Delivery Manager, Harold Campbell&lt;/a>&lt;/strong>. Harold leads our delivery and operations efforts, and stewards our system of work and coordination around it to ensure we deliver on our commitments efficiently and reliably. Harold has 15+ years of industry experience spanning companies in Africa and Jamaica, and 10+ years experience in agile consulting and coaching in technical and product teams.&lt;/li>
&lt;li>&lt;strong>
&lt;a href="https://2i2c.org/author/april-johnson/" >People Lead, April Johnson&lt;/a>&lt;/strong>. April leads and stewards our system to support our team as individuals, ensuring that we provide the guidance and support needed to grow our team members in their careers and skills. April has 20+ years growing and guiding technology organizations. She is the ex-Global Head of Transformation at Thoughtworks (Europe, Latin America, India, North America, and Asia), with expertise in human-centered design, agility, people leadership, change, leading remote and asynchronous agile teams, coaching, and non-profit development.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>We&amp;rsquo;ve re-organized our team into separate product and business development teams&lt;/strong>, in order to focus on &lt;em>providing an excellent technical platform and a collection of services that maximizes community impact&lt;/em>, as well as &lt;em>sustaining this service for our communities&lt;/em>. This has allowed us to more effectively coordinate our service enhancement and development efforts, and increases our ability to deliver improvements to our communities and to upstream projects.&lt;/p>
&lt;p>As a result, our organization has a much stronger foundation to build upon as we continue to grow and refine our sustainability model in 2025. It has positioned us to more effectively deal with the challenges in reaching our next milestones for scale and impact, and gives us the tools to be more adaptive and responsive to community needs.&lt;/p>
&lt;p>Along the way, we also generated a lot of impact through our collaborations with communities in our network, and in the upstream projects that we support. For more details about our impact, see the summaries below.&lt;/p>
&lt;h2 id="community-impact">
Community impact
&lt;a class="header-anchor" href="#community-impact">#&lt;/a>
&lt;/h2>&lt;p>2i2c&amp;rsquo;s core mission is to support its network of communities that create and share knowledge with open infrastructure. Here are the highlights of how our community network has grown and had impact.&lt;/p>
&lt;p>First, we&amp;rsquo;ve grown our network of hubs and users through several new partnerships. We &lt;strong>grew the number of active hubs from ~75 to ~105&lt;/strong>, and &lt;strong>grew our end-of-year Monthly Active Users (MAUs) from ~6000 to ~8000&lt;/strong>.&lt;/p>
&lt;figure id="figure-you-can-see-an-interactive-version-of-these-numbers-in-our-platform-usage-dashboard-https2i2corgkpiscloud">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="You can see an interactive version of these numbers in our platform usage dashboard: https://2i2c.org/kpis/cloud/" srcset="
/blog/retrospective/images/maus_hu483458d45819eebdb9e9276a88dcf58f_105988_476d15d7f86bd66c1e8ba7e0025c096b.webp 400w,
/blog/retrospective/images/maus_hu483458d45819eebdb9e9276a88dcf58f_105988_713c67adf3569741f26c75a5a60aab27.webp 760w,
/blog/retrospective/images/maus_hu483458d45819eebdb9e9276a88dcf58f_105988_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/retrospective/images/maus_hu483458d45819eebdb9e9276a88dcf58f_105988_476d15d7f86bd66c1e8ba7e0025c096b.webp"
width="75%"
height="359"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
You can see an interactive version of these numbers in our platform usage dashboard:
&lt;a href="https://2i2c.org/kpis/cloud/" target="_blank" rel="noopener" >2i2c.org/kpis/cloud/&lt;/a>
&lt;/figcaption>&lt;/figure>
&lt;p>Beyond the numbers, we also re-focused our team on reporting impact stories from our collaborations with community members, and have published these into a (growing) list of posts on our blog:&lt;/p>
&lt;figure id="figure-our-impact-gallery-is-a-new-place-to-share-stories-of-our-impact-with-user-research-communities-as-well-as-open-source-communities-https2i2corgcategoryimpact">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Our impact gallery is a new place to share stories of our impact with user research communities as well as open source communities: https://2i2c.org/category/impact/"
src="https://2i2c.org/blog/retrospective/images/impact-gallery.gif"
loading="lazy" data-zoomable width="75%" />&lt;/div>
&lt;/div>&lt;figcaption>
Our impact gallery is a new place to share stories of our impact with user research communities as well as open source communities:
&lt;a href="https://2i2c.org/category/impact/" target="_blank" rel="noopener" >2i2c.org/category/impact/&lt;/a>
&lt;/figcaption>&lt;/figure>
&lt;p>Here are a few community highlights from this year:&lt;/p>
&lt;ul>
&lt;li>We served around 20 communities from Latin America and Africa for the
&lt;a href="https://2i2c.org/blog/catalyst-partner-highlights/" >&lt;strong>Catalyst project&lt;/strong>&lt;/a>&lt;/li>
&lt;li>Our community partner
&lt;a href="https://openscapes.org/events/2024-09-26-openscapes-whitehouse/" target="_blank" rel="noopener" >&lt;strong>Openscapes&lt;/strong> were invited to the White House&lt;/a> to discuss the importance of open science&lt;/li>
&lt;li>The
&lt;a href="https://2i2c.org/blog/neurohackademy-summer-school-reflections/" >&lt;strong>NeuroHackademy&lt;/strong> used our infrastructure&lt;/a> to support their annual summer school&lt;/li>
&lt;li>We enabled
&lt;a href="https://2i2c.org/blog/amerigeo-workshop/" >ephemeral and sharable interactive computing environments for the &lt;strong>Amerigeo workshop&lt;/strong>&lt;/a> in the geospatial community&lt;/li>
&lt;li>We ran a
&lt;a href="https://2i2c.org/blog/hhmi-spyglass-mysql/" >pilot for an &lt;strong>HHMI-affiliated open source project called Spyglass&lt;/strong>&lt;/a> for reproducing their pre-print with a live interactive environment using BinderHub to support publishing infrastructure&lt;/li>
&lt;li>We began a
&lt;a href="https://2i2c.org/blog/veda-devseed-collab/" >collaboration with &lt;strong>Development Seed&lt;/strong> around the &lt;strong>NASA VEDA&lt;/strong> project&lt;/a>, to support them with interactive cloud environments for geospatial research&lt;/li>
&lt;li>Several members in our community network
&lt;a href="https://2i2c.org/blog/agu/" >showed off their work at &lt;strong>AGU 2024&lt;/strong>&lt;/a>&lt;/li>
&lt;li>We
&lt;a href="https://2i2c.org/blog/project-pythia-cookoff/" >co-organized a workshop alongside &lt;strong>Project Pythia&lt;/strong>&lt;/a> to create computational narrative content for geospatial analytics, and upgrade their stack to Jupyter Book 2.0&lt;/li>
&lt;/ul>
&lt;h2 id="open-source-technology-enhancements">
Open source technology enhancements
&lt;a class="header-anchor" href="#open-source-technology-enhancements">#&lt;/a>
&lt;/h2>&lt;p>Our second pillar of impact is to improve the ecosystem of open infrastructure and the open science workflows it enables. We use collaborations with our community partners to drive new cycles of development in open source tools that we support. Here&amp;rsquo;s a brief overview of our impact across the open source ecosystem this year.&lt;/p>
&lt;p>In 2024, 2i2c team members
&lt;a href="https://github.com/search?q=author%3Acholdgraf&amp;#43;author%3Aharoldcampbell&amp;#43;author%3Aaprilmj&amp;#43;author%3Acolliand&amp;#43;author%3Ajmunroe&amp;#43;author%3Ajnywong&amp;#43;author%3AGman0909&amp;#43;author%3AconsideRatio&amp;#43;author%3Ageorgianaelena&amp;#43;author%3Asgibson91&amp;#43;author%3Ayuvipanda&amp;#43;author%3Aagoose77&amp;#43;org%3Ajupyter&amp;#43;org%3Ajupyter-server&amp;#43;org%3Ajupyterhub&amp;#43;org%3Ajupyterlab&amp;#43;org%3Abinder-examples&amp;#43;org%3Aexecutablebooks&amp;#43;org%3Acryptnono&amp;#43;org%3Adask&amp;#43;org%3Apydata&amp;#43;org%3Arocker-org&amp;#43;org%3Apangeo-data&amp;#43;org%3Ajupyter-book&amp;#43;is%3Apr&amp;#43;merged%3A%3E%3D2024-01-01&amp;amp;type=pullrequests" target="_blank" rel="noopener" >authored &lt;strong>over 500 pull requests&lt;/strong>&lt;/a> that were merged in our key open source communities communities. Find our list of key open source communities here:&lt;/p>
&lt;p>
&lt;a href="https://compass.2i2c.org/open-source/key-communities/" target="_blank" rel="noopener" >compass.2i2c.org/open-source/key-communities/&lt;/a>&lt;/p>
&lt;p>Here are a few highlights where we focused our effort this year - each of these efforts required both development with and for our community network, as well as upstream contributions and support:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>We released
&lt;a href="https://2i2c.org/blog/jupyterhub-fancy-profiles-rollout/" >&lt;strong>JupyterHub Fancy Profiles&lt;/strong>&lt;/a>, which allows for a more flexible and modern interface to launch environments with JupyterHub.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We used this to allow users to
&lt;a href="https://2i2c.org/blog/nasa-ephemeral-hubs/" >&lt;strong>build and launch custom environments in JupyterHub&lt;/strong>&lt;/a> in a way that users can also share with others.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We&amp;rsquo;ve added a Grafana dashboard for
&lt;a href="https://2i2c.org/blog/aws-cost-attribution/" >&lt;strong>resource and cost monitoring with JupyterHub&lt;/strong>&lt;/a> to give communities more visibility over their projected cloud costs.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We began
&lt;a href="https://2i2c.org/blog/project-pythia-cookoff/" >&lt;strong>incorporating Jupyter Book 2.0 workflows into our community hubs&lt;/strong>&lt;/a> and laid a foundation for enabling our communuty networks to communicate with one another more effectively using the new MyST document engine. Read more in our
&lt;a href="https://2i2c.org/blog/jupyter-book-2/" >blog post about Jupyter Book 2.0&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We built
&lt;a href="https://2i2c.org/blog/frx/" >&lt;strong>&lt;code>frx-challenges&lt;/code>&lt;/strong>&lt;/a>, a tool to help communities host data challenges with secure, automated evaluation of submissions. This was built in collaboration with the
&lt;a href="https://cellmapchallenge.janelia.org/" target="_blank" rel="noopener" >&lt;strong>HHMI Cellmap Challenge&lt;/strong>&lt;/a> competition.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="looking-to-next-year">
Looking to next year
&lt;a class="header-anchor" href="#looking-to-next-year">#&lt;/a>
&lt;/h2>&lt;p>2025 is going to be a critical year for 2i2c to build upon the work we began in 2024 to achieve a more sustainable and scalable community model. Here are the main areas that will guide our work in the new year and into 2026, pulled from our
&lt;a href="https://2i2c.org/blog/funding-navigation/" >recent proposal from The Navigation Fund&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Goal #1: Delivery&lt;/strong>. Develop the operating structure and team skills to
efficiently scale our product and service delivery.&lt;/li>
&lt;li>&lt;strong>Goal #2: Product&lt;/strong>. Develop a product system that continuously improves and
delivers value and impact at scale.&lt;/li>
&lt;li>&lt;strong>Goal #3: Sustainability&lt;/strong>. Build a business model that is competitive and gives
us resources to sustain and scale our service.&lt;/li>
&lt;/ul>
&lt;p>These are the key goals 2i2c must achieve in order to ensure that its service remains impactful, sustainable, scalable, and accessible. We believe that we&amp;rsquo;ve laid a strong foundation to get there, and are excited to begin work next year.&lt;/p>
&lt;p>Overall, 2024 has been a challenging, but also a rewarding year for our team. We&amp;rsquo;ve encountered and successfully worked thorugh a number of scaling challenges, and we&amp;rsquo;ve made significant progress at laying a foundation on which we can build for the years to come.&lt;/p>
&lt;p>I&amp;rsquo;m incredibly proud of 2i2c&amp;rsquo;s team for all of their hard work this year, and also honored to be working with a network of communities that care about open infrastructure and its value for creating and sharing knowledge with the world. Here&amp;rsquo;s to another year of impact!&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by a grant from
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> and
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Financial support from The Navigation Fund for identifying and building a scalable sustainability model</title><link>https://2i2c.org/blog/funding-navigation/</link><pubDate>Sun, 08 Dec 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/funding-navigation/</guid><description>&lt;p>We are proud to announce that 2i2c has received financial support from
&lt;a href="https://2i2c.org/collaborators/navigation/" >The Navigation Fund&lt;/a> to assist us in our mission to design and build a sustainable and scalable model for helping communities create and share knowledge with open infrastructure.&lt;/p>
&lt;figure id="figure-funding-comes-from-the-open-science-initiativehttpswwwnavigationorggrantsopen-science-of-the-navigation-fund-which-is-dedicated-to-transforming-scientific-research-by-enhancing-collaboration-and-innovation-we-support-tools-and-approaches-that-move-beyond-traditional-practices-making-scientific-knowledge-more-accessible-and-impactful">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Funding comes from the [Open Science Initiative](https://www.navigation.org/grants/open-science) of The Navigation Fund, which is &amp;#39;...dedicated to transforming scientific research by enhancing collaboration and innovation. We support tools and approaches that move beyond traditional practices, making scientific knowledge more accessible and impactful.&amp;#39;" srcset="
/blog/funding-navigation/images/tnf-logo_hu06f6004545acd7c58f4bbf0dd3a80800_16965_7fc90f4c99552c72f0ee28010fe9d16b.webp 400w,
/blog/funding-navigation/images/tnf-logo_hu06f6004545acd7c58f4bbf0dd3a80800_16965_acc8b24cd8202e0a4ca78c8b97b33b07.webp 760w,
/blog/funding-navigation/images/tnf-logo_hu06f6004545acd7c58f4bbf0dd3a80800_16965_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/funding-navigation/images/tnf-logo_hu06f6004545acd7c58f4bbf0dd3a80800_16965_7fc90f4c99552c72f0ee28010fe9d16b.webp"
width="75%"
height="365"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Funding comes from the
&lt;a href="https://www.navigation.org/grants/open-science" target="_blank" rel="noopener" >Open Science Initiative&lt;/a> of The Navigation Fund, which is &amp;lsquo;&amp;hellip;dedicated to transforming scientific research by enhancing collaboration and innovation. We support tools and approaches that move beyond traditional practices, making scientific knowledge more accessible and impactful.&amp;rsquo;
&lt;/figcaption>&lt;/figure>
&lt;p>The award totals &lt;strong>~$1.5M over 2 years&lt;/strong>. It provides support for several key strategic roles that are traditionally difficult to fund in a young organization: product management, delivery management, and business development. Here are the key goals this funding works toward:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Goal #1: Delivery&lt;/strong>. Develop the operating structure and team skills to
efficiently scale our product and service delivery.&lt;/li>
&lt;li>&lt;strong>Goal #2: Product&lt;/strong>. Develop a product system that continuously improves and
delivers value and impact at scale.&lt;/li>
&lt;li>&lt;strong>Goal #3: Sustainability&lt;/strong>. Build a business model that is competitive and gives
us resources to sustain and scale our service.&lt;/li>
&lt;/ul>
&lt;p>We believe this is a critical step in helping our organization define and build a pathway to sustainability so that our service remains accessible, scalable, and resilient for years to come.&lt;/p>
&lt;p>We&amp;rsquo;re incredibly honored to be supported by the Navigation Fund, and excited to continue our work helping communities create and share knowledge with open infrastructure.&lt;/p></description></item><item><title>`frx-challenges`: A new tool to host data challenges for Frictionless Research Exchanges</title><link>https://2i2c.org/blog/frx/</link><pubDate>Fri, 06 Dec 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/frx/</guid><description>&lt;p>2i2c is pleased to announce the &lt;code>frx-challenges&lt;/code> project, a new open source tool to help communities host data challenges on shared infrastructure:&lt;/p>
&lt;p>
&lt;a href="https://github.com/2i2c-org/frx-challenges" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> 2i2c-org/frx-challenges&lt;/a>&lt;/p>
&lt;p>This project aims to make it easier for administrators to provide a service that enables users to &lt;strong>submit code and data&lt;/strong> that are &lt;strong>evaluated on secure infrastructure with access to private data and resources&lt;/strong>. It also provides a leaderboard that helps users compare their performance against others.&lt;/p>
&lt;figure id="figure-an-example-leaderboard-for-a-data-challenge-taken-from-the-cellmap-challengehttpscellmapchallengejaneliaorg-users-make-submissions-that-are-run-against-secure-and-private-infrastructure-and-data-and-provides-feedback-about-the-submissions-performance-learn-more-about-the-frx-challenges-project-here-https2i2corgfrx-challenges">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="An example leaderboard for a data challenge, taken from the [Cellmap Challenge](https://cellmapchallenge.janelia.org/). Users make submissions that are run against secure and private infrastructure and data, and provides feedback about the submission&amp;#39;s performance. Learn more about the FRX challenges project here: https://2i2c.org/frx-challenges/" srcset="
/blog/frx/images/leaderboard_hu1c5275577555814ddf920c106a29e815_883850_ee579eedac01dcd34d5748aaae5eb014.webp 400w,
/blog/frx/images/leaderboard_hu1c5275577555814ddf920c106a29e815_883850_692532b48c8d5ab59e590c0e714e84e9.webp 760w,
/blog/frx/images/leaderboard_hu1c5275577555814ddf920c106a29e815_883850_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/frx/images/leaderboard_hu1c5275577555814ddf920c106a29e815_883850_ee579eedac01dcd34d5748aaae5eb014.webp"
width="75%"
height="417"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
An example leaderboard for a data challenge, taken from the
&lt;a href="https://cellmapchallenge.janelia.org/" target="_blank" rel="noopener" >Cellmap Challenge&lt;/a>. Users make submissions that are run against secure and private infrastructure and data, and provides feedback about the submission&amp;rsquo;s performance. Learn more about the FRX challenges project here:
&lt;a href="https://2i2c.org/frx-challenges/" target="_blank" rel="noopener" >2i2c.org/frx-challenges/&lt;/a>
&lt;/figcaption>&lt;/figure>
&lt;p>It is designed to be lightweight and flexible, and can be run on a variety of shared infrastructure. For those who wish to run this project on cloud infrastructure, we&amp;rsquo;ve also published a
&lt;a href="https://2i2c.org/frx-challenges-helm-chart/" target="_blank" rel="noopener" >Helm Chart to help you deploy &lt;code>frx-challenges&lt;/code> with Kubernetes&lt;/a>.&lt;/p>
&lt;p>While it can be run on its own, we believe that it naturally complements other tools and services for interactive computing and data, such as &lt;strong>JupyterHub&lt;/strong>, &lt;strong>Jupyter Book&lt;/strong>, and &lt;strong>Binder&lt;/strong>. More on that below.&lt;/p>
&lt;p>Below is a brief description of the motivation behind this project.&lt;/p>
&lt;h2 id="what-are-frictionless-research-exchanges">
What are Frictionless Research Exchanges
&lt;a class="header-anchor" href="#what-are-frictionless-research-exchanges">#&lt;/a>
&lt;/h2>&lt;p>The project is heavily inspired by David Donoho&amp;rsquo;s vision of &lt;strong>Frictionless Research Exchanges&lt;/strong> (FRX) as described in
&lt;a href="https://arxiv.org/abs/2310.00865" target="_blank" rel="noopener" >&lt;em>Data Science at the Singularity&lt;/em>&lt;/a>.&lt;/p>
&lt;p>In this article, Donoho describes three key pillars for Frictionless Research Exchanges:&lt;/p>
&lt;blockquote>
&lt;p>The three initiatives are related but separate; and all three have to come together, and in a particularly strong way, to provide the conditions for the new era. Here they are:&lt;/p>
&lt;ul>
&lt;li>[FR-1: Data] datafication of everything, with a culture of research data sharing. One can now find datasets publicly available online on a bewildering variety of topics, from chest x-rays to cosmic microwave background measurements to uber routes to geospatial crop identifications.&lt;/li>
&lt;li>[FR-2: Re-execution] research code sharing including the ability to exactly re-execute the same complete workflow by different researchers.&lt;/li>
&lt;li>[FR-3: Challenges] adopting challenge problems as a new paradigm powering scientific research. The paradigm includes: a shared public dataset, a prescribed and quantified task performance metric, a set of enrolled competitors seeking to outperform each other on the task, and a public leaderboard. Thousands of such challenges with millions of entries have now taken place, across many fields.&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>We considered the landscape of tools and services, and felt that [FR-1] and [FR-2] were already well-served by a variety of tools and services for community workspace infrastructure (e.g., JupyterHub:
&lt;a href="https://jupyterhub.readthedocs.io" target="_blank" rel="noopener" >jupyterhub.readthedocs.io&lt;/a>), sharable computational environments (e.g., BinderHub:
&lt;a href="https://binderhub.readthedocs.io" target="_blank" rel="noopener" >binderhub.readthedocs.io&lt;/a>), authoring and reading computational narratives (e.g., Jupyter Book:
&lt;a href="https://jupyterbook.org" target="_blank" rel="noopener" >jupyterbook.org&lt;/a> and MyST:
&lt;a href="https://mystmd.org" target="_blank" rel="noopener" >mystmd.org&lt;/a>), and data I/O tools and standards (e.g., Zarr:
&lt;a href="https://zarr.readthedocs.io" target="_blank" rel="noopener" >zarr.readthedocs.io&lt;/a> and Intake:
&lt;a href="https://intake.readthedocs.io" target="_blank" rel="noopener" >intake.readthedocs.io&lt;/a>).&lt;/p>
&lt;p>However there was a natural missing piece for &lt;strong>[FR-3 Challenges]&lt;/strong>, and we could not identify any community-managed infrastructure that facilitated data challenges. This is the goal of &lt;code>frx-challenges&lt;/code>.&lt;/p>
&lt;h2 id="why-facilitate-data-challenges">
Why facilitate data challenges?
&lt;a class="header-anchor" href="#why-facilitate-data-challenges">#&lt;/a>
&lt;/h2>&lt;p>Data challenges are harder than you think! While it is simple enough to run somebody else&amp;rsquo;s code locally, data challenges require a systematic, secure, and automated approach to accepting and evaluating submissions in a fair and repeatable way. Here are some of the big challenges to tackle:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Submissions must retain user and team identity&lt;/strong>, which means that we must keep track of users and their submissions over time, since data challenges are designed to encourage iterative improvement and optimization.&lt;/li>
&lt;li>&lt;strong>Evaluations must use potentially complex resources and data&lt;/strong> since many data challenges operate by publicly sharing a small dataset, and then running it against a much more complex dataset.&lt;/li>
&lt;li>&lt;strong>Evaluations must be totally secure&lt;/strong>, so that submissions can&amp;rsquo;t do nefarious things like mine cryptocurrency or extract the challenge&amp;rsquo;s private data in unintended ways.&lt;/li>
&lt;li>&lt;strong>Evaluations must be automated&lt;/strong>, so that running the challenge does not require extensive human intervention and can scale to many users.&lt;/li>
&lt;li>&lt;strong>Evaluation must be flexible&lt;/strong>, so that the infrastructure can accept a variety of types of submissions (e.g. code, data, model weights, etc), run them with arbitrary environments designed by the organizers, and run them with the right hardware to get the job done.&lt;/li>
&lt;/ul>
&lt;p>These are just a few of the major challenges that we&amp;rsquo;ve tried to address with &lt;code>frx-challenges&lt;/code>, and we&amp;rsquo;re excited to see how it goes with our first assisted community challenge: the
&lt;a href="https://cellmapchallenge.janelia.org/" target="_blank" rel="noopener" >Cellmap Challenge&lt;/a>.&lt;/p>
&lt;p>If you&amp;rsquo;re interested in learning more or participating in this project, follow along at its GitHub repository:&lt;/p>
&lt;p>
&lt;a href="https://github.com/2i2c-org/frx-challenges" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> 2i2c-org/frx-challenges&lt;/a>&lt;/p>
&lt;p>This is still the &lt;strong>very early stages&lt;/strong> of the project, and we imagine it will evolve significantly. We welcome feedback for how it can more effectively serve a variety of communities.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>Thanks to the
&lt;a href="https://2i2c.org/collaborators/hhmi/" >Howard Hughes Medical Institute&lt;/a> (HHMI) for collaborating with us on the
&lt;a href="https://cellmapchallenge.janelia.org/" target="_blank" rel="noopener" >Cellmap Challenge&lt;/a>, which led to the creation of this project.&lt;/p>
&lt;p>Thanks to Kristen Ratan and
&lt;a href="https://strategiesos.org/about/" target="_blank" rel="noopener" >Strategies for Open Science&lt;/a> (Stratos) for enabling this collaboration, and providing strategic guidance and support.&lt;/p></description></item><item><title>Improving the logged in home page experience in JupyterHub with `jupyterhub-fancy-profiles`</title><link>https://2i2c.org/blog/jupyterhub-fancy-profiles-rollout/</link><pubDate>Mon, 18 Nov 2024 12:55:20 -0800</pubDate><guid>https://2i2c.org/blog/jupyterhub-fancy-profiles-rollout/</guid><description>&lt;p>On most research oriented JupyterHub installations, users would like to customize their server (the environment, resources available, etc) after logging in. In Kubernetes based JupyterHub environments, a
&lt;a href="https://z2jh.jupyter.org/en/latest/jupyterhub/customizing/user-environment.html#using-multiple-profiles-to-let-users-select-their-environment" target="_blank" rel="noopener" >profile list&lt;/a> provides this functionality.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./classic-profiles.png" alt="image" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
(Profile List for the NASA VEDA JupyterHub with the default implementation from KubeSpawner)&lt;/p>
&lt;p>The profile list is the de-facto &amp;ldquo;logged in homepage&amp;rdquo; for these users, as that is what they see after they have logged in.&lt;/p>
&lt;p>In collaboration with
&lt;a href="https://developmentseed.org/" target="_blank" rel="noopener" >Development Seed&lt;/a>, funded by our
&lt;a href="https://2i2c.org/blog/jupyterhub-binderhub-gesis/" >earlier grant&lt;/a> from
&lt;a href="https://www.gesis.org/home" target="_blank" rel="noopener" >GESIS&lt;/a> as well as the
&lt;a href="https://www.earthdata.nasa.gov/data/tools/veda" target="_blank" rel="noopener" >NASA VEDA project&lt;/a>, we have been building the
&lt;a href="https://github.com/2i2c-org/jupyterhub-fancy-profiles" target="_blank" rel="noopener" >&lt;code>jupyterhub-fancy-profiles&lt;/code>&lt;/a> project to improve this experience.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./fancy-profiles.png" alt="image" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
(Profile List for the NASA VEDA JupyterHub with &lt;code>jupyterhub-fancy-profiles&lt;/code>)&lt;/p>
&lt;p>Last week, we rolled this new experience out to all 2i2c managed JupyterHubs! Here&amp;rsquo;s a quick rundown of what this enables:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Descriptions for choices in the dropdowns, making it much easier for users to know what they are getting with each environment (or resource selection).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Fully backwards compatible with the existing KubeSpawner profile list implementation. In our PR to
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/5083" target="_blank" rel="noopener" >roll this out&lt;/a> to all hubs, you notice that we didn&amp;rsquo;t have to change the structure of any profile lists! So you can safely roll this out to your hubs too without needing to fundamentally change how your profiles are set up.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>It is a modern web app (built with
&lt;a href="https://react.dev/" target="_blank" rel="noopener" >react&lt;/a>), just like the JupyterHub admin panel. This allows us to evolve and satisfy user needs much faster, as well as expanding the pool of people who can contribute to the project!&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Support for dynamically building images using
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >mybinder.org&lt;/a> style repositories! It talks to the
&lt;a href="https://github.com/jupyterhub/binderhub/" target="_blank" rel="noopener" >binderhub&lt;/a> API so users can build reproducible environments as they wish without admin involvement nor needing to fully understand how docker and containers work. Our
&lt;a href="https://2i2c.org/blog/jupyterhub-binderhub-gesis/" >earlier blog post&lt;/a> has more information.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./fancy-profiles-build.png" alt="image" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>This is just the start, and thanks to ongoing funding from the
&lt;a href="https://www.earthdata.nasa.gov/data/tools/veda" target="_blank" rel="noopener" >NASA VEDA&lt;/a> project, we are going to continue making improvements to this experience.&lt;/p>
&lt;h2 id="use-this-in-your-jupyterhub">
Use this in your JupyterHub
&lt;a class="header-anchor" href="#use-this-in-your-jupyterhub">#&lt;/a>
&lt;/h2>&lt;p>As with everything we build at 2i2c (per our
&lt;a href="https://2i2c.org/right-to-replicate/" target="_blank" rel="noopener" >right to replicate&lt;/a> policy), this project can be used with &lt;em>any&lt;/em> JupyterHub installation that uses Kubernetes. There are
&lt;a href="https://github.com/2i2c-org/jupyterhub-fancy-profiles/?tab=readme-ov-file#how-to-use" target="_blank" rel="noopener" >instructions&lt;/a> in the README. Please try it out on yours and let us know what you think!&lt;/p>
&lt;h2 id="credit">
Credit
&lt;a class="header-anchor" href="#credit">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>The project was initiated with funding generously provided by
&lt;a href="https://2i2c.org/collaborators/gesis/" >GESIS&lt;/a> (see our
&lt;a href="https://2i2c.org/blog/jupyterhub-binderhub-gesis/" >earlier blog post&lt;/a>).&lt;/li>
&lt;li>
&lt;a href="https://developmentseed.org/team/sanjay-bhangar/" target="_blank" rel="noopener" >Sanjay Bhangar&lt;/a> and
&lt;a href="https://oliverroick.net/" target="_blank" rel="noopener" >Oliver Roick&lt;/a> from
&lt;a href="https://developmentseed.org/" target="_blank" rel="noopener" >Development Seed&lt;/a> for advocating for this project and contributing heavily to it.&lt;/li>
&lt;li>The
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA&lt;/a> project (in particular,
&lt;a href="https://github.com/freitagb/" target="_blank" rel="noopener" >Brian Freitag&lt;/a> and
&lt;a href="https://github.com/wildintellect" target="_blank" rel="noopener" >Alex Mandel&lt;/a>), for continued funding (in the form of engineering time) plus being early adopters!&lt;/li>
&lt;/ul></description></item><item><title>Announcing the Jupyter Book 2 alpha</title><link>https://2i2c.org/blog/jupyter-book-2/</link><pubDate>Mon, 18 Nov 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/jupyter-book-2/</guid><description>&lt;p>&lt;em>Cross-posted from the
&lt;a href="https://blog.jupyterbook.org/" target="_blank" rel="noopener" >Jupyter Book blog&lt;/a>. Note that some MyST functionality is not supported on the 2i2c website – please see the original post for previews.&lt;/em>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Jupyter Book 2 logo" srcset="
/blog/jupyter-book-2/featured_hu9397abb9dc215fd1bcc8d6a18f27fb4c_8272_0f3fdc395470dff824d4ec5734091fa6.webp 400w,
/blog/jupyter-book-2/featured_hu9397abb9dc215fd1bcc8d6a18f27fb4c_8272_b4e8201419be0cac62b6b5b6eda55797.webp 760w,
/blog/jupyter-book-2/featured_hu9397abb9dc215fd1bcc8d6a18f27fb4c_8272_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/jupyter-book-2/featured_hu9397abb9dc215fd1bcc8d6a18f27fb4c_8272_0f3fdc395470dff824d4ec5734091fa6.webp"
width="461"
height="105"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Over the last ten months, the Jupyter Book team have been hard at work; Jupyter Book has
&lt;a href="https://github.com/jupyter/governance/pull/229" target="_blank" rel="noopener" >become a Jupyter subproject&lt;/a>, and the team&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> announced a
&lt;a href="https://executablebooks.org/en/latest/blog/2024-05-20-jupyter-book-myst/" target="_blank" rel="noopener" >plan to release Jupyter Book 2&lt;/a>. This post announces the &lt;strong>alpha release of Jupyter Book 2.0&lt;/strong>, which has been re-written from the ground up to use the new MyST-MD engine.&lt;/p>
&lt;p>Over the next few months, we will work in preparation for the full release of Jupyter Book 2. Stay tuned for more! The initial documentation for the alpha release can be found at:&lt;/p>
&lt;p>
&lt;a href="https://next.jupyterbook.org/" target="_blank" rel="noopener" >next.jupyterbook.org/&lt;/a>&lt;/p>
&lt;h2 id="install-the-jupyter-book-2-alpha">
Install the Jupyter Book 2 Alpha
&lt;a class="header-anchor" href="#install-the-jupyter-book-2-alpha">#&lt;/a>
&lt;/h2>&lt;p>The Jupyter Book 2 alpha is available from PyPI.org. You can install it with &lt;code>pip&lt;/code>, using&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">pip install -U jupyter-book&lt;span class="o">==&lt;/span>2.0.0a0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you use &lt;code>pipx&lt;/code>, it&amp;rsquo;s recommened to run Jupyter Book 2 using&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">pipx run jupyter-book&lt;span class="o">==&lt;/span>2.0.0a0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Jupyter Book 2 needs Node.js installed on your computer. If this is not the case, running &lt;code>jupyter book&lt;/code> will prompt you to install it using the &lt;code>nodeenv&lt;/code> package that ships with Jupyter Book 2:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">❗ Node.js (node) is required to run Jupyter Book, but could not be found`.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">❔ Install Node.js in &amp;#39;...&amp;#39;? (y/N):
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Press &lt;code>y&lt;/code> and &lt;code>Enter&lt;/code> to proceed.&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
&lt;p>The Jupyter Book 2 project is a complete re-write of Jupyter Book. We expect there to be bugs and breakages! Please use our support channels to keep us up to date with your findings!&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://discord.mystmd.org/" target="_blank" rel="noopener" >Discord&lt;/a>&lt;/li>&lt;/p>
&lt;li>
&lt;p>&lt;a href="https://github.com/jupyter-book/jupyter-book/issues/new?template=prerelease.yml" target="_blank" rel="noopener" >GitHub Issues&lt;/a>&lt;/li>&lt;/p>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;h2 id="new-features-in-20-alpha">
New Features in &lt;code>2.0 alpha&lt;/code>
&lt;a class="header-anchor" href="#new-features-in-20-alpha">#&lt;/a>
&lt;/h2>
&lt;h3 id="rich-hover-previews">
Rich Hover Previews
&lt;a class="header-anchor" href="#rich-hover-previews">#&lt;/a>
&lt;/h3>&lt;p>The new MyST book and article themes provide useful hover previews for links to other MyST content, Wikipedia, GitHub issues, and many more.&lt;/p>
&lt;video width="100%" autoplay>
&lt;source src="https://github.com/jupyter-book/blog/raw/refs/heads/main/media/hover-previews.mp4" type="video/mp4">
&lt;/video>
&lt;h3 id="share--embed-content">
Share &amp;amp; Embed Content
&lt;a class="header-anchor" href="#share--embed-content">#&lt;/a>
&lt;/h3>&lt;p>Content from other websites built with the MyST engine can be embedded in your own sites and PDFs:&lt;/p>
&lt;p>
&lt;figure id="figure-cross-referenced-content-can-easily-be-embedded-and-re-captioned-into-other-pages-and-projects-such-as-this-figure-to-">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://cdn.curvenote.com/0192bff5-9c9d-722f-92bf-e702aa8e1f46/public/c8830546aa82907becb6cd46c414a80c.webp" alt="Image of a mountain range." loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Cross-referenced content can easily be embedded and re-captioned into other pages and projects, such as this figure to
&lt;a href="https://mystmd.org/guide/embed#mylabel" target="_blank" rel="noopener" >mystmd.org/guide/embed#mylabel&lt;/a>.
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h3 id="simple-instant-search">
Simple Instant Search
&lt;a class="header-anchor" href="#simple-instant-search">#&lt;/a>
&lt;/h3>&lt;p>A new client-side search uses a simple, modern algorithm for fast &lt;em>local&lt;/em> search that finds the results that you care about.&lt;/p>
&lt;p>
&lt;figure id="figure-client-side-search-uses-simple-modern-algoliahttpsalgoliacom-inspired-search-algorithm-to-provide-_useful_-search-results-we-will-be-iterating-on-this-in-the-near-future-for-even-richer-search-results">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://github.com/jupyter-book/blog/blob/main/media/search.png?raw=true" alt="Screenshot of a search bar." loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Client-side search uses simple, modern,
&lt;a href="https://algolia.com" target="_blank" rel="noopener" >Algolia&lt;/a>-inspired search algorithm to provide &lt;em>useful&lt;/em> search results. We will be iterating on this in the near future for even richer search results!
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h3 id="high-quality-pdfs">
High Quality PDFs
&lt;a class="header-anchor" href="#high-quality-pdfs">#&lt;/a>
&lt;/h3>&lt;p>PDF documents can now be built with Typst, a high-quality typesetting engine that produces readable error messages and beautiful documents. This feature was the basis for the 2024
&lt;a href="https://proceedings.scipy.org" target="_blank" rel="noopener" >SciPy proceedings&lt;/a>, which is now built on MyST Markdown and will be accepting Jupyter Notebooks in 2025.&lt;/p>
&lt;p>
&lt;figure id="figure-example-of-the-lapreprint-typst-template-for-rendering-pdfs-from-jupyter-book-via-the-myst-engine">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://raw.githubusercontent.com/rowanc1/LaPreprint/68f5ccbf1e1e26819149bcea1d547dfdfc5ceecd/example/files/screenshot.png" alt="An example preprint using the LaPreprint template." loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Example of the LaPreprint Typst template for rendering PDFs from Jupyter Book (via the MyST Engine).
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h2 id="coming-soon-in-20-beta">
Coming Soon in &lt;code>2.0 beta&lt;/code>
&lt;a class="header-anchor" href="#coming-soon-in-20-beta">#&lt;/a>
&lt;/h2>
&lt;h3 id="custom-styles--scrips">
Custom Styles &amp;amp; Scrips
&lt;a class="header-anchor" href="#custom-styles--scrips">#&lt;/a>
&lt;/h3>&lt;p>Jupyter Book 2 will make it easy to tweak your website styles, and add new website behaviors.&lt;/p>
&lt;h3 id="generate-markdown-from-code-cells">
Generate Markdown from Code Cells
&lt;a class="header-anchor" href="#generate-markdown-from-code-cells">#&lt;/a>
&lt;/h3>&lt;p>The MyST engine is on-track to support the inclusion of references and other markup features generated by code cells.&lt;/p>
&lt;h3 id="control-cell-visibility-with-tags">
Control Cell Visibility with Tags
&lt;a class="header-anchor" href="#control-cell-visibility-with-tags">#&lt;/a>
&lt;/h3>&lt;p>In the beta release, Jupyter Book 2 will once-again be able to show and hide content according to cell tags.&lt;/p>
&lt;h2 id="jupyter-book-2-vs-myst-md">
Jupyter Book 2 vs MyST-MD
&lt;a class="header-anchor" href="#jupyter-book-2-vs-myst-md">#&lt;/a>
&lt;/h2>&lt;p>At this early stage, the new Jupyter Book application &lt;code>jupyter book&lt;/code> behaves identically to the &lt;code>mystmd&lt;/code> engine that it is built upon; as outlined in
&lt;a href="https://executablebooks.org/en/latest/blog/2024-05-20-jupyter-book-myst/" target="_blank" rel="noopener" >our Jupyter Book 2 plan&lt;/a>, we intend for Jupyter Book to be an &amp;ldquo;opinionated distribution&amp;rdquo; of &lt;code>mystmd&lt;/code> that shares the same configuration format and CLI. This contrasts with Jupyter Book 1, which was built on top of the Sphinx documentation engine, but offered its own CLI and configuration files. In future, the &lt;code>jupyter book&lt;/code> and &lt;code>mystmd&lt;/code> CLIs may diverge from one another, but we expect that this will be handled in a graceful manner: &lt;code>mystmd&lt;/code> commands should always be compatible with the &lt;code>jupyter book&lt;/code> application.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> for funding some of our ongoing work on Jupyter Book.&lt;/li>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book community&lt;/a> for their collaboration.&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Jupyter Book project has historically been a &lt;em>technical&lt;/em> project of the Executable Books organisation. In 2024, the establishment of a Jupyter subproject means that the Jupyter Book project now has its own identity outside of Executable Books.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Track and manage cloud costs using Grafana</title><link>https://2i2c.org/blog/aws-cost-attribution/</link><pubDate>Fri, 15 Nov 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/aws-cost-attribution/</guid><description>&lt;p>
&lt;figure id="figure-grafana-dashboard-showing-cloud-costs-broken-down-by-compute-storage-and-other-components-for-the-openscapeshttpsopenscapesorg-hub">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Screenshot of a graph showing total daily costs per component." srcset="
/blog/aws-cost-attribution/featured_hu0a1ce7d8654f8efa8d798b6fefc5ebab_212463_bd231e67cdeebc846a0c3ad021439e5f.webp 400w,
/blog/aws-cost-attribution/featured_hu0a1ce7d8654f8efa8d798b6fefc5ebab_212463_2f89930d0393a8dbc3970e24741294eb.webp 760w,
/blog/aws-cost-attribution/featured_hu0a1ce7d8654f8efa8d798b6fefc5ebab_212463_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/aws-cost-attribution/featured_hu0a1ce7d8654f8efa8d798b6fefc5ebab_212463_bd231e67cdeebc846a0c3ad021439e5f.webp"
width="760"
height="485"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Grafana dashboard showing cloud costs broken down by compute, storage and other components for the
&lt;a href="https://openscapes.org/" target="_blank" rel="noopener" >Openscapes&lt;/a> hub.
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>We are pleased to unveil a new feature to track cloud costs within our Grafana dashboards! Community Champions now have the ability to monitor the cost and usage of their 2i2c-managed hubs that displays up to date aggregated costs as well as detailed breakdowns for more granular reports.&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
Note that this feature is currently available to AWS hosted hubs only and will be rolled out to other cloud providers in the future.
&lt;/div>
&lt;/div>
&lt;h2 id="accessing-the-cloud-cost-dashboard">
Accessing the cloud cost dashboard
&lt;a class="header-anchor" href="#accessing-the-cloud-cost-dashboard">#&lt;/a>
&lt;/h2>&lt;p>Community Champions can view the Cloud Cost dashboard from their Grafana instance (please see the
&lt;a href="https://docs.2i2c.org/admin/monitoring/grafana-dashboards#getting-a-grafana-account" target="_blank" rel="noopener" >Service Guide&lt;/a> for how to gain access).&lt;/p>
&lt;p>From the main menu of Grafana, navigate to &lt;em>Dashboards &amp;gt; Cloud cost dashboards &amp;gt; Cloud cost attribution&lt;/em> to view the dashboard.&lt;/p>
&lt;h2 id="understanding-the-cloud-cost-dashboard">
Understanding the cloud cost dashboard
&lt;a class="header-anchor" href="#understanding-the-cloud-cost-dashboard">#&lt;/a>
&lt;/h2>&lt;p>A typical 2i2c-managed deployment comprises of a staging hub and a production hub, although some other communities may have extra hubs such as a workshop hub. By default, costs are not broken down on a per hub basis unless the community has opted in to this feature.&lt;/p>
&lt;p>The dashboard is made of several panels:&lt;/p>
&lt;ul>
&lt;li>Daily costs&lt;/li>
&lt;li>Daily costs per hub (opt-in only)&lt;/li>
&lt;li>Total daily costs per component&lt;/li>
&lt;li>Daily costs per component per hub (opt-in only).&lt;/li>
&lt;/ul>
&lt;video mute autoplay loop >
&lt;source src="https://2i2c.org/blog/aws-cost-attribution/demo.mp4" type="video/mp4">
&lt;/video>
&lt;p>For more detailed information on the data that each panel displays, please consult our
&lt;a href="https://docs.2i2c.org/admin/monitoring/cost-users#understanding-the-cloud-cost-dashboard" target="_blank" rel="noopener" >Service Guide&lt;/a> for reference.&lt;/p>
&lt;h2 id="sharing-cost-reports">
Sharing cost reports
&lt;a class="header-anchor" href="#sharing-cost-reports">#&lt;/a>
&lt;/h2>&lt;p>The dashboard can be shared with other community members and stakeholders so they can understand usage and cost patterns. Community Champions can export data to a CSV file, or they can generate a snapshot of the Grafana dashboard and share a public link.&lt;/p>
&lt;p>For instructions on how to export data from the dashboard, please see our
&lt;a href="https://docs.2i2c.org/admin/monitoring/cost-users#sharing-cost-reports" target="_blank" rel="noopener" >Service Guide&lt;/a> for reference.&lt;/p>
&lt;h2 id="next-steps">
Next steps
&lt;a class="header-anchor" href="#next-steps">#&lt;/a>
&lt;/h2>&lt;p>We would love to know whether this feature is useful and how it can be improved. We will be contacting individual communities to share their feedback with us – please share your thoughts with us!&lt;/p>
&lt;p>We will work on rolling out this service to GCP hosted clusters in future. Stay tuned to know when this feature is available to your community.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thank you to Erik for spearheading the rollout effort and to the rest of the 2i2c team for their support.&lt;/li>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/openscapes/" >Openscapes&lt;/a> and
&lt;a href="https://2i2c.org/collaborators/cryocloud/" >Cryocloud&lt;/a> communities for providing valuable insights during the prototyping and testing phase, and for funding part of this work.&lt;/li>
&lt;/ul></description></item><item><title>Introducing the Catalyst Project Community Partner Highlights</title><link>https://2i2c.org/blog/catalyst-partner-highlights/</link><pubDate>Thu, 31 Oct 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/catalyst-partner-highlights/</guid><description>&lt;p>&lt;em>Cross-posted from the
&lt;a href="https://catalystproject.cloud/blog.html" target="_blank" rel="noopener" >Catalyst Project blog&lt;/a>&lt;/em>&lt;/p>
&lt;p>
&lt;figure id="figure-catalyst-project-community-partners-using-accessible-cloud-infrastructure-for-open-science-leadership-and-training-clockwise-from-top-left-nnb-ccghttpswwwnnbunammx-musthttpswwwmustacmw-cicadahttpscicadauy-and-iner-photos-courtesy-of-shirley-alquicira-hernández-bennett-kankuzi-maría-inés-fariello-rico-and-yalbi-i-balderas-martinez">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Photos of people using their laptops to access cloud computing." srcset="
/blog/catalyst-partner-highlights/featured_hue9753c412a3ed68416bfa4126f876f6f_511886_24ca20d655f971af01585017117713ee.webp 400w,
/blog/catalyst-partner-highlights/featured_hue9753c412a3ed68416bfa4126f876f6f_511886_610f50ec4d5a9dd93ac1b90d629b0710.webp 760w,
/blog/catalyst-partner-highlights/featured_hue9753c412a3ed68416bfa4126f876f6f_511886_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/catalyst-partner-highlights/featured_hue9753c412a3ed68416bfa4126f876f6f_511886_24ca20d655f971af01585017117713ee.webp"
width="720"
height="550"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Catalyst Project community partners using accessible cloud infrastructure for open science leadership and training. (clockwise from top-left)
&lt;a href="https://www.nnb.unam.mx/" target="_blank" rel="noopener" >NNB-CCG&lt;/a>,
&lt;a href="https://www.must.ac.mw/" target="_blank" rel="noopener" >MUST&lt;/a>,
&lt;a href="https://cicada.uy/" target="_blank" rel="noopener" >CICADA&lt;/a> and INER. Photos courtesy of Shirley Alquicira Hernández, Bennett Kankuzi, María Inés Fariello Rico and Yalbi I. Balderas-Martinez.
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>The Catalyst Project is a community-engaged initiative designed to support the adoption of open science principles in under-served bioscientific research communities through the provision of reliable and sustainable cloud computing infrastructure. It’s a project we’ve been working on now for almost two years, which involves staff from seven different organizations:
&lt;a href="https://2i2c.org/" target="_blank" rel="noopener" >2i2c&lt;/a>,
&lt;a href="https://carpentries.org/about/" target="_blank" rel="noopener" >The Carpentries&lt;/a>,
&lt;a href="https://ccad.unc.edu.ar/" target="_blank" rel="noopener" >CCAD&lt;/a>,
&lt;a href="https://www.cscce.org/" target="_blank" rel="noopener" >CSCCE&lt;/a>,
&lt;a href="http://investinopen.org/" target="_blank" rel="noopener" >IOI&lt;/a>,
&lt;a href="http://metadocencia.org/" target="_blank" rel="noopener" >MetaDocencia&lt;/a>, and
&lt;a href="http://openlifesci.org/" target="_blank" rel="noopener" >OLS&lt;/a>, and is funded by the Chan Zuckerberg Initiative.&lt;/p>
&lt;p>A key part of the project is engaging with Community Partners in Africa and Latin America: Institutions, organizations, and individuals who are undertaking bioscientific research projects that require cloud computing infrastructure. As collaborators on the Catalyst Project, Community Partners can access and use 2i2c’s open science cloud services, and also receive training from 2i2c, The Carpentries, MetaDocencia, and OLS to support their work.
&lt;a href="https://catalystproject.cloud/current-community-partners.html" target="_blank" rel="noopener" >Community Partners&lt;/a> also play a vital role in shaping an evolving governance model for the Catalyst Project to help sustain, scale, and maximize impact in Latin America, Africa, and under-served communities around the world.&lt;/p>
&lt;p>In a new collection of blog posts (that we hope will expand over the next couple of months!) we’re highlighting the work of the Catalyst Project Community Partners. This post is a gateway to learning more about the Catalyst Project and its Community Partners. If you have any questions or feedback about the project, please
&lt;a href="https://2i2c.org/blog/catalyst-partner-highlights/mailto:catalyst-project-core-team@googlegroups.com" >send an email to the core team&lt;/a>.&lt;/p>
&lt;h2 id="highlighting-the-catalyst-project-community-partners">
Highlighting the Catalyst Project Community Partners
&lt;a class="header-anchor" href="#highlighting-the-catalyst-project-community-partners">#&lt;/a>
&lt;/h2>&lt;p>The Catalyst Project currently involves 19 Community Partners, 9 in Africa and 10 in Latin America. Our initial blog post series showcases seven of the Partners, and each post is available in English and Spanish:&lt;/p>
&lt;h3 id="african-institute-of-biomedical-science-and-technology-aibst">
African Institute of Biomedical Science and Technology (AiBST)
&lt;a class="header-anchor" href="#african-institute-of-biomedical-science-and-technology-aibst">#&lt;/a>
&lt;/h3>&lt;img src="aibst-logo.jpg" alt="logo" width="300"/>
&lt;p>At the African Institute of Biomedical Sciences and Technology (AiBST) in Zimbabwe, Zedias Chikwambi and colleagues are working to discover and utilise biomarkers to guide personalized medical treatment.&lt;/p>
&lt;p>&lt;em>&amp;ldquo;Through the Catalyst Project we are able to bring genomic information interpretation to patient bedsides.&amp;rdquo; - Zedias Chikwambi&lt;/em>&lt;/p>
&lt;p>Read more:
&lt;a href="https://catalystproject.cloud/blog/community-highlight-aibst-en.html" target="_blank" rel="noopener" >EN&lt;/a> |
&lt;a href="https://catalystproject.cloud/blog/community-highlight-aibst-es.html" target="_blank" rel="noopener" >ES&lt;/a>&lt;/p>
&lt;h3 id="malawi-university-of-science-and-technology-must">
Malawi University of Science and Technology (MUST)
&lt;a class="header-anchor" href="#malawi-university-of-science-and-technology-must">#&lt;/a>
&lt;/h3>&lt;img src="must-logo.png" alt="logo" width="200"/>
&lt;p>The Catalyst Project Community at the Malawi University of Science and Technology (MUST) is working to popularize the applicability of data science and artificial intelligence in various undergraduate and postgraduate research contexts in Malawi, including health, business, and education.&lt;/p>
&lt;p>&lt;em>“&amp;hellip;many staff and students need… a robust and easily accessible platform from which they can efficiently run their machine learning models and do advanced data analysis for their data science research…” - Bennett Kankuzi&lt;/em>&lt;/p>
&lt;p>Read more:
&lt;a href="https://catalystproject.cloud/blog/community-highlight-must-en.html" target="_blank" rel="noopener" >EN&lt;/a> |
&lt;a href="https://catalystproject.cloud/blog/community-highlight-must-es.html" target="_blank" rel="noopener" >ES&lt;/a>&lt;/p>
&lt;h3 id="molerhealth">
MolerHealth
&lt;a class="header-anchor" href="#molerhealth">#&lt;/a>
&lt;/h3>&lt;img src="molerhealth-logo.png" alt="logo" width="300"/>
&lt;p>MolerHealth is focused on revolutionizing healthcare in Nigeria by developing an accessible electronic health record (EHR) system aimed at reducing disease misdiagnosis.&lt;/p>
&lt;p>&lt;em>“Access to training, like The Carpentries Instructor Training, has empowered our team with essential skills for effective teaching and collaboration.” - Monsurat Onabajo&lt;/em>&lt;/p>
&lt;p>Read more:
&lt;a href="https://catalystproject.cloud/blog/community-highlight-molerhealth-en.html" target="_blank" rel="noopener" >EN&lt;/a> |
&lt;a href="https://catalystproject.cloud/blog/community-highlight-molerhealth-es.html" target="_blank" rel="noopener" >ES&lt;/a>&lt;/p>
&lt;h3 id="nelson-mandela-african-institution-of-science-and-technology-nm-aist">
Nelson Mandela African Institution of Science and Technology (NM-AIST)
&lt;a class="header-anchor" href="#nelson-mandela-african-institution-of-science-and-technology-nm-aist">#&lt;/a>
&lt;/h3>&lt;img src="nm-aist-logo.png" alt="logo" width="300"/>
&lt;p>The Northern Tanzania One Health Research Group, hosted at the Nelson Mandela African Institution of Science and Technology (NM-AIST), is using the Catalyst Cloud Infrastructure to understand the transmission dynamics, genetic diversity, and antimicrobial resistance of the Mycobacterium tuberculosis complex (Mtb) between humans and livestock in Northern Tanzania.&lt;/p>
&lt;p>&lt;em>“&amp;hellip;access to training, particularly through the 2i2c Hub Champion Training, has significantly enhanced our ability to manage and optimize cloud-based resources.&amp;quot; - Beatus M Lyimo&lt;/em>&lt;/p>
&lt;p>Read more:
&lt;a href="https://catalystproject.cloud/blog/community-highlight-nmaist-en.html" target="_blank" rel="noopener" >EN&lt;/a> |
&lt;a href="https://catalystproject.cloud/blog/community-highlight-nmaist-es.html" target="_blank" rel="noopener" >ES&lt;/a>&lt;/p>
&lt;h3 id="nodo-nacional-de-bioinformática-nnb-ccg">
Nodo Nacional de Bioinformática (NNB-CCG)
&lt;a class="header-anchor" href="#nodo-nacional-de-bioinform%c3%a1tica-nnb-ccg">#&lt;/a>
&lt;/h3>&lt;img src="unam-logo.jpg" alt="logo" width="300"/>
&lt;p>The Nodo Nacional de Bioinformática (NNB-CCG) of the Centro de Ciencias Genómicas (CCG) - Universidad Nacional Autónoma de México (UNAM) is a group that brings together professionals and academics to support, provide services, and maintain the growth of the field of bioinformatics in the country&amp;rsquo;s research.&lt;/p>
&lt;p>&lt;em>“(Our) goal is to optimize our participation in events, assess the usefulness of the Catalyst Project&amp;rsquo;s resources, and, in turn, provide the Catalyst Project with guidelines to improve their service by identifying the necessary areas for improvement within the institutions.&amp;quot; - Shirley Alquicira Hernández&lt;/em>&lt;/p>
&lt;p>Read more:
&lt;a href="https://catalystproject.cloud/blog/community-highlight-nnbccg-en.html" target="_blank" rel="noopener" >EN&lt;/a> |
&lt;a href="https://catalystproject.cloud/blog/community-highlight-nnbccg-es.html" target="_blank" rel="noopener" >ES&lt;/a>&lt;/p>
&lt;h3 id="instituto-nacional-de-enfermedades-respiratorias-iner">
Instituto Nacional de Enfermedades Respiratorias (INER)
&lt;a class="header-anchor" href="#instituto-nacional-de-enfermedades-respiratorias-iner">#&lt;/a>
&lt;/h3>&lt;img src="iner-logo.jpeg" alt="logo" width="300"/>
&lt;p>Collaborators at INER are using the Catalyst Cloud Infrastructure to implement machine learning algorithms that will classify radiology images of pulmonary thromboembolism (PTE), with a view to improving patient outcomes.&lt;/p>
&lt;p>&lt;em>&amp;ldquo;The Catalyst Project is helping us to collaborate more efficiently and work remotely.&amp;rdquo; - Yalbi I. Balderas-Martinez&lt;/em>&lt;/p>
&lt;p>Read more:
&lt;a href="https://catalystproject.cloud/blog/community-highlight-iner-en.html" target="_blank" rel="noopener" >EN&lt;/a> |
&lt;a href="https://catalystproject.cloud/blog/community-highlight-iner-es.html" target="_blank" rel="noopener" >ES&lt;/a>&lt;/p>
&lt;h3 id="centro-interdisciplinario-en-ciencia-de-datos-y-aprendizaje-automático-cicada">
Centro Interdisciplinario en Ciencia de Datos y Aprendizaje Automático (CICADA)
&lt;a class="header-anchor" href="#centro-interdisciplinario-en-ciencia-de-datos-y-aprendizaje-autom%c3%a1tico-cicada">#&lt;/a>
&lt;/h3>&lt;img src="cicada-logo.png" alt="logo" width="300"/>
&lt;p>CICADA, an interdisciplinary center researching data science and machine learning, is using the Catalyst CLoud Infrastructure to analyze Uruguayan population data to understand patterns of migration, how much of the native footprint remains, and what can be said about the people who lived in the Uruguayan territory before the arrival of Europeans.&lt;/p>
&lt;p>&lt;em>&amp;ldquo;The Catalyst Project…trainings are attractive, as they are respectful of the people, no previous knowledge is assumed, and the instructors are welcoming.” - María Inés Fariello Rico&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>Read more:
&lt;a href="https://catalystproject.cloud/blog/community-highlight-cicada-en.html" target="_blank" rel="noopener" >EN&lt;/a> |
&lt;a href="https://catalystproject.cloud/blog/community-highlight-cicada-es.html" target="_blank" rel="noopener" >ES&lt;/a>&lt;/p>
&lt;h2 id="about-the-blog-posts--acknowledgements">
About the blog posts – Acknowledgements
&lt;a class="header-anchor" href="#about-the-blog-posts--acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>Creating a series of blog posts to highlight the work of the Catalyst Community Partners was a collaborative effort involving staff from CSCCE, 2i2c, OLS, and MetaDocencia. Specifically, Lou Woodley, Katie Pratt, Jenny Wong, and Tajuddeen Gwadabe conceived the idea during our regular Catalyst Project “website team” meetings, and developed a strategy for reaching out to community partners to gather information.&lt;/p>
&lt;p>Katie then led that outreach, which involved a representative of each Community Partners completing a Google Form to answer three key questions and sharing a photo (or a selection of photos) to use on the blog. Katie curated all of the information, edited together the blog posts, and secured sign-off from all of the partners. Sabrina López and her team at MetaDocencia coordinated the translation of the posts from English to Spanish, and Jenny formatted and published them on the website.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/catalyst/" >Catalyst Community Partners&lt;/a> for generously sharing more about their work.&lt;/li>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a> for funding this work.&lt;/li>
&lt;/ul></description></item><item><title>Support from CZI to sustain 2i2c's mission to help communities create and share knowledge with open infrastructure</title><link>https://2i2c.org/blog/funding-czi/</link><pubDate>Sun, 13 Oct 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/funding-czi/</guid><description>&lt;p>We are proud to announce that 2i2c has received financial support from
&lt;a href="https://2i2c.org/collaborators/czi/" >The Chan Zuckerberg Initiative&lt;/a> to sustain our efforts at helping open science communities create and share knowledge with open infrastructure.&lt;/p>
&lt;figure id="figure-funding-comes-from-the-open-science-programhttpschanzuckerbergcomscienceprograms-resourcesopen-science-at-czi-which-aims-to-support-a-diverse-scientific-community-working-in-the-open-to-accelerate-our-understanding-of-human-health-and-disease-we-invest-in-tools-platforms-and-organizations-that-help-expand-participation-and-access-to-the-scientific-process-by-making-it-open-and-reproducible-and-helping-scientists-build-on-each-others-work">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Funding comes from the [Open Science Program](https://chanzuckerberg.com/science/programs-resources/open-science/) at CZI, which aims to &amp;#39;...support a diverse scientific community working in the open to accelerate our understanding of human health and disease. We invest in tools, platforms, and organizations that help expand participation and access to the scientific process by making it open and reproducible, and helping scientists build on each others’ work.&amp;#39;" srcset="
/blog/funding-czi/images/czi-logo_hu8d3bae804c2797e8c24a643b52df5222_53852_3bad88e81656e703652947402f853c23.webp 400w,
/blog/funding-czi/images/czi-logo_hu8d3bae804c2797e8c24a643b52df5222_53852_0558b09069fb3682fe17db85568ae10c.webp 760w,
/blog/funding-czi/images/czi-logo_hu8d3bae804c2797e8c24a643b52df5222_53852_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/funding-czi/images/czi-logo_hu8d3bae804c2797e8c24a643b52df5222_53852_3bad88e81656e703652947402f853c23.webp"
width="75%"
height="399"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Funding comes from the
&lt;a href="https://chanzuckerberg.com/science/programs-resources/open-science/" target="_blank" rel="noopener" >Open Science Program&lt;/a> at CZI, which aims to &amp;lsquo;&amp;hellip;support a diverse scientific community working in the open to accelerate our understanding of human health and disease. We invest in tools, platforms, and organizations that help expand participation and access to the scientific process by making it open and reproducible, and helping scientists build on each others’ work.&amp;rsquo;
&lt;/figcaption>&lt;/figure>
&lt;p>This builds upon
&lt;a href="https://2i2c.org/blog/funding-czi/../../2021/czi-core-support/" >previous core support provided by CZI&lt;/a>, and provides an additional &lt;strong>~$700K over 1 year&lt;/strong> to help 2i2c sustain its mission. We are deeply grateful to CZI for their support, and this funding provides key runway for 2i2c to serve its community network and explore a sustainable and scalable model for impact.&lt;/p></description></item><item><title>From the GeoLab team - Pancakes are the future of geophysical data processing</title><link>https://2i2c.org/blog/external-earthscope-pancakes/</link><pubDate>Tue, 01 Oct 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/external-earthscope-pancakes/</guid><description>&lt;p>Our partner
&lt;a href="https://2i2c.org/collaborators/earthscope/" >EarthScope&lt;/a> published a
&lt;a href="https://www.earthscope.org/news/pancakes-are-the-future-of-geophysical-data-processing/" target="_blank" rel="noopener" >blog post about their cloud stack&lt;/a> which includes heavy mention of 2i2c&amp;rsquo;s infrastructure model. Check it out!&lt;/p></description></item><item><title>Openscapes goes to the White House!</title><link>https://2i2c.org/blog/external-openscapes-whitehouse/</link><pubDate>Mon, 23 Sep 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/external-openscapes-whitehouse/</guid><description>&lt;p>Our partner
&lt;a href="https://2i2c.org/collaborators/openscapes/" >OpenScapes&lt;/a> recently took a trip to the White House to advocate for Open Science and the Open Source ecosystem, check out
&lt;a href="https://openscapes.org/events/2024-09-26-openscapes-whitehouse/" target="_blank" rel="noopener" >their blog post&lt;/a> about the experience.&lt;/p></description></item><item><title>Hub Champion Training Reflections (English)</title><link>https://2i2c.org/blog/external-hub-champion-training/</link><pubDate>Wed, 04 Sep 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/external-hub-champion-training/</guid><description>&lt;p>We&amp;rsquo;ve developed and are now offering a Communtiy Hub Champion training, see
&lt;a href="https://catalystproject.cloud/blog/2024-08-23-hub-champion-training-reflections.html" target="_blank" rel="noopener" >this blog post from the Catalyst Project&lt;/a> for more details.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/catalyst/" >Catalyst Project&lt;/a> for this work.&lt;/li>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a> for funding this work.&lt;/li>
&lt;/ul></description></item><item><title>Reflexiones sobre la formación de Campeones y Campeonas del Hub (Español)</title><link>https://2i2c.org/blog/external-hub-champion-training-es/</link><pubDate>Wed, 04 Sep 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/external-hub-champion-training-es/</guid><description/></item><item><title>MyST Mini-Hackathon with the DeepLabCut Team</title><link>https://2i2c.org/blog/deeplabcut-myst-hackathon/</link><pubDate>Mon, 02 Sep 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/deeplabcut-myst-hackathon/</guid><description>
&lt;h2 id="the-deeplabcut-team">
The DeepLabCut Team
&lt;a class="header-anchor" href="#the-deeplabcut-team">#&lt;/a>
&lt;/h2>&lt;p>
&lt;figure id="figure-animal-pose-estimation-using-deep-neural-networks-courtesy-of-the-deeplabcut-jupyter-bookhttpsdeeplabcutgithubiodeeplabcutreadmehtml">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://images.squarespace-cdn.com/content/v1/57f6d51c9f74566f55ecf271/daed7f16-527f-4150-8bdd-cbb20e267451/cheetah-ezgif.com-video-to-gif-converter.gif?format=180w" alt="Animal pose estimation using deep neural networks. Courtesy of the DeepLabCut Jupyter Book" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Animal pose estimation using deep neural networks. Courtesy of the
&lt;a href="https://deeplabcut.github.io/DeepLabCut/README.html" target="_blank" rel="noopener" >DeepLabCut Jupyter Book&lt;/a>
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>The
&lt;a href="http://www.mackenziemathislab.org/deeplabcut" target="_blank" rel="noopener" >DeepLabCut team&lt;/a> is a group of researchers and developers who are working on open source tools for analyzing animal pose estimation by training deep neural networks on videos.&lt;/p>
&lt;p>Chris Holdgraf visited the lab in early August to learn more about how the group were using open-source tools to document and share their work.&lt;/p>
&lt;h2 id="jupyter-book-and-myst">
Jupyter Book and MyST
&lt;a class="header-anchor" href="#jupyter-book-and-myst">#&lt;/a>
&lt;/h2>&lt;p>Extensive documentation for using the DeepLabCut software package is already available as a
&lt;a href="https://deeplabcut.github.io/DeepLabCut/README.html" target="_blank" rel="noopener" >Jupyter Book&lt;/a>. The group was interested in adopting MyST Markdown to stay ahead of the curve and upgrade their Jupyter Book (see the related announcement
&lt;a href="https://executablebooks.org/en/latest/blog/2024-05-20-jupyter-book-myst/" target="_blank" rel="noopener" >Jupyter Book 2 will be build upon the MyST-MD engine&lt;/a>).&lt;/p>
&lt;p>Chris led a mini-hackathon to introduce the group to MyST and collect feedback on where enhancement features could be made in the future. Here&amp;rsquo;s a summary of the outcomes:&lt;/p>
&lt;ul>
&lt;li>Many improvements were made to the
&lt;a href="https://mystmd.org/guide/" target="_blank" rel="noopener" >MyST documentation&lt;/a> 📖
&lt;ul>
&lt;li>The
&lt;a href="https://mystmd.org/guide/quickstart" target="_blank" rel="noopener" >MyST Quick Start Guide&lt;/a> was used to onboard new users. Amendments were
&lt;a href="https://github.com/jupyter-book/mystmd/pull/1433" target="_blank" rel="noopener" >upstreamed to the MyST docs directly&lt;/a> and were immediately available to all.&lt;/li>
&lt;li>A
&lt;a href="https://mystmd.org/guide/quickstart-executable-documents" target="_blank" rel="noopener" >tutorial on executable documents&lt;/a> was added to the collection of MyST tutorials.&lt;/li>
&lt;li>MyST-MD installation instructions were
&lt;a href="https://github.com/jupyter-book/mystmd/pull/1454" target="_blank" rel="noopener" >simplified using &lt;code>mamba&lt;/code>&lt;/a>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>A bunch of enhancement features were requested ✨
&lt;ul>
&lt;li>
&lt;a href="https://github.com/jupyter-book/mystmd/issues/1455" target="_blank" rel="noopener" >Using cell tags for labelling notebook cells&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/myst-theme/issues/321" target="_blank" rel="noopener" >Support for loading user-defined CSS stylesheets for theming&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/mystmd/issues/1458" target="_blank" rel="noopener" >Better UX for multi-versioned documentation&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyter-book/mystmd/issues/1462" target="_blank" rel="noopener" >Bibliography styling in HTML&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/DeepLabCut/DeepLabCut/pull/2712" target="_blank" rel="noopener" >Automatic API documentation generation&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>And we found a bug in the
&lt;a href="https://github.com/jupyter-book/mystmd/issues/1456" target="_blank" rel="noopener" >table of contents validation&lt;/a> 🐞&lt;/li>
&lt;/ul>
&lt;h2 id="summary">
Summary
&lt;a class="header-anchor" href="#summary">#&lt;/a>
&lt;/h2>&lt;p>Hackathons are a great way for quickly imparting knowledge and gathering feedback in a short space of time. The event spurred rapid contributions to the MyST ecosystem – embracing reuse of the MyST quick start guides saved time and effort, while engaging with users directly closed a tight feedback loop for enhancements.&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thank to the
&lt;a href="http://www.mackenziemathislab.org/" target="_blank" rel="noopener" >Mackenzie Mathis Lab&lt;/a> for hosting Chris Holdgraf at EPFL, Lausanne, Switzerland.&lt;/li>
&lt;li>Thanks to the
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book team&lt;/a> for collaborating on this with us.&lt;/li>
&lt;/ul></description></item><item><title>NeuroHackademy Summer School Reflections</title><link>https://2i2c.org/blog/neurohackademy-summer-school-reflections/</link><pubDate>Mon, 19 Aug 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/neurohackademy-summer-school-reflections/</guid><description>&lt;p>&lt;em>Thank you to Ariel Rokem and Noah Benson for guest writing this blog post!&lt;/em>&lt;/p>
&lt;p>
&lt;figure id="figure-group-photo-from-neurohackademy-2024">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Group photo from NeuroHackademy 2024" srcset="
/blog/neurohackademy-summer-school-reflections/featured_huecb6f4e8562771129f15ce610a4fee00_4920150_d9c8d4b3def41206a1ceaedc8148d686.webp 400w,
/blog/neurohackademy-summer-school-reflections/featured_huecb6f4e8562771129f15ce610a4fee00_4920150_3b7acc562ced4c059e8f97c68962370a.webp 760w,
/blog/neurohackademy-summer-school-reflections/featured_huecb6f4e8562771129f15ce610a4fee00_4920150_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/neurohackademy-summer-school-reflections/featured_huecb6f4e8562771129f15ce610a4fee00_4920150_d9c8d4b3def41206a1ceaedc8148d686.webp"
width="760"
height="339"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Group photo from NeuroHackademy 2024
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h2 id="what-is-neurohackademy">
What is NeuroHackademy?
&lt;a class="header-anchor" href="#what-is-neurohackademy">#&lt;/a>
&lt;/h2>&lt;p>Part summer school, part free-wheeling hackathon, all focused on the use of data science methods in neuroscience, NeuroHackademy is an event that was recently hosted by the
&lt;a href="http://escience.washington.edu/" target="_blank" rel="noopener" >University of Washington eScience Institute&lt;/a> in Seattle, WA, USA. This event, that has been running annually since 2016, aims to provide early-career researchers in Psychology, Medicine, Neuroscience, and other related fields with the skills and knowledge that they need to effectively and rigorously work with open source tools and workflows for analyzing human neuroscience data. This supports the effort to make scientific analysis and results shareable, reproducible, and accessible.&lt;/p>
&lt;h2 id="global-and-inclusive">
Global and inclusive
&lt;a class="header-anchor" href="#global-and-inclusive">#&lt;/a>
&lt;/h2>&lt;p>In 2020, the event had to rapidly pivot to an online format, and this format was also used in 2021. Through this experience, the organizers (
&lt;a href="https://arokem.org/" target="_blank" rel="noopener" >Ariel Rokem&lt;/a> and
&lt;a href="https://nben.net/" target="_blank" rel="noopener" >Noah Benson&lt;/a>) realized that many participants preferred the online format. For example, participants who could not afford to travel to Seattle, or participants who had care-taking responsibilities that precluded them from participating in a two-week event away from their homes. In 2022, the event pioneered a hybrid format, where half of the participants are present in-person and half join the event via zoom, slack, GitHub, and of course through a dedicated 2i2c JupyterHub. Taken together, this format allows the participation of students from a larger range of backgrounds and locations. This aspect plays an important part in building a global and inclusive community of practice. See the paper
&lt;a href="https://pubmed.ncbi.nlm.nih.gov/38763989/" target="_blank" rel="noopener" >Hands-On Neuroinformatics Education at the Crossroads of Online and In-Person: Lessons Learned from NeuroHackademy&lt;/a> to read more on this subject.&lt;/p>
&lt;h2 id="collaboration-with-2i2c">
Collaboration with 2i2c
&lt;a class="header-anchor" href="#collaboration-with-2i2c">#&lt;/a>
&lt;/h2>
&lt;h3 id="previous-years">
Previous years
&lt;a class="header-anchor" href="#previous-years">#&lt;/a>
&lt;/h3>&lt;p>NeuroHackademy has been an early adopter of the cloud-based JupyterHub model, setting up its first hub using the zero-to-jupyterhub guide in 2018. NeuroHackademy partnered with 2i2c as soon as it was founded, and 2i2c has operated a JupyterHub for the last 3 years. The hub provides an interactive computing platform for learners, and implements the &amp;ldquo;digital watering hole&amp;rdquo; for practical and immediate access to a range of cloud-based datasets in human neuroscience (see
&lt;a href="https://2i2c.org/blog/neurohackademy-summer-school/" >blog post&lt;/a> announcing support for this year&amp;rsquo;s event).&lt;/p>
&lt;p>In terms of the software environment, the following tools and features that have benefited the event over the years include&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://github.com/jupyterhub/nbgitpuller" target="_blank" rel="noopener" >&lt;code>nbgitpuller&lt;/code>&lt;/a> allows students to synchronise lesson content with an organizational GitHub repository that is collaboratively maintained by the lesson instructors.&lt;/li>
&lt;li>
&lt;a href="https://docs.2i2c.org/user/data/sharing" target="_blank" rel="noopener" >Shared data file storage&lt;/a> with read-only access for learners and read-write access for instructors&lt;/li>
&lt;li>Access to an abundance of neuroimaging data hosted in cloud object storage
&lt;ul>
&lt;li>
&lt;a href="https://www.humanconnectome.org/" target="_blank" rel="noopener" >The Human Connectome Project&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://naturalscenesdataset.org/" target="_blank" rel="noopener" >The Natural Scenes Dataset&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://openneuro.org/" target="_blank" rel="noopener" >OpenNeuro&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://fcp-indi.s3.amazonaws.com/index.html#data/Projects/HBN/" target="_blank" rel="noopener" >The Healthy Brain Network&lt;/a>&lt;/li>
&lt;li>And more.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="this-year">
This year
&lt;a class="header-anchor" href="#this-year">#&lt;/a>
&lt;/h3>&lt;p>This year 2i2c supported the following tools and features for NeuroHackademy&lt;/p>
&lt;ul>
&lt;li>A &amp;ldquo;Bring your own image&amp;rdquo; option where users can pull any image hosted on a container registry into the hub. See our
&lt;a href="https://2i2c.org/blog/jupyterhub-binderhub-gesis/" >Integrating BinderHub with JupyterHub: Empowering users to manage their own environments&lt;/a> blog post for more details.&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyterhub/repo2docker" target="_blank" rel="noopener" >&lt;code>repo2docker&lt;/code>&lt;/a> and GitHub actions to build and prototype images from a repository.&lt;/li>
&lt;li>The support services provided by 2i2c and the ability for instructors to
&lt;a href="https://infrastructure.2i2c.org/contributing/community-partner/" target="_blank" rel="noopener" >open pull requests on 2i2c infrastructure&lt;/a> for speedy resolution.&lt;/li>
&lt;li>GPU instances to support more compute intensive workloads for machine learning.&lt;/li>
&lt;/ul>
&lt;h3 id="next-year">
Next year
&lt;a class="header-anchor" href="#next-year">#&lt;/a>
&lt;/h3>&lt;p>One thing we have learned is that 2i2c automatically
&lt;a href="https://docs.2i2c.org/admin/user-management/control-user-server#stop-user-servers-after-inactivity" target="_blank" rel="noopener" >shuts down a user server after one hour of inactivity&lt;/a> by default to ensure efficient resource usage and limit runaway cloud costs. Naturally, we are seeing increasing demand from learners for longer and more complex analyses. In response to this, we are keen to explore how the
&lt;a href="https://github.com/minrk/jupyter-keepalive" target="_blank" rel="noopener" >&lt;code>jupyter-keepalive&lt;/code>&lt;/a> extension can keep the server alive for long-running processes.&lt;/p>
&lt;p>We are pleased that learners have made great progress in making use of cloud-native, open-source workflows for analyzing human neuroscience data. We are keen to benefit from lessons learned this year and are looking forward to collaborating with 2i2c once again to deliver the NeuroHackademy Summer School in 2025.&lt;/p>
&lt;p>Watch this space next year!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>Funded by grant
&lt;a href="https://pubmed.ncbi.nlm.nih.gov/38763989/" target="_blank" rel="noopener" >R25MH112480&lt;/a> from the US National Institute of Mental Health awarded to
&lt;a href="https://arokem.org/" target="_blank" rel="noopener" >Ariel Rokem&lt;/a> and
&lt;a href="https://nben.net/" target="_blank" rel="noopener" >Noah Benson&lt;/a>.&lt;/p>
&lt;p>The NeuroHackademy Summer School is sponsored by&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="http://escience.washington.edu/" target="_blank" rel="noopener" >University of Washington eScience Institute&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/moore/" >Gordon and Betty Moore Foundation&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/sloan/" >Alfred P. Sloan Foundation&lt;/a>&lt;/li>
&lt;li>
&lt;a href="http://www.washington.edu/" target="_blank" rel="noopener" >University of Washington&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.utexas.edu/" target="_blank" rel="noopener" >The University of Texas at Austin&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.nimh.nih.gov/" target="_blank" rel="noopener" >National Institute of Mental Health&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.nsf.gov/" target="_blank" rel="noopener" >National Science Foundation&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="references">
References
&lt;a class="header-anchor" href="#references">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://github.com/NeuroHackademy2024" target="_blank" rel="noopener" >NeuroHackademy2024 GitHub Organization&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://doi.org/10.1007/s12021-024-09666-6" target="_blank" rel="noopener" >Hands-On Neuroinformatics Education at the Crossroads of Online and In-Person: Lessons Learned from NeuroHackademy&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Keeping PACE with GPU enabled compute to detect global cloud cover using satellite data</title><link>https://2i2c.org/blog/pace-hackweek/</link><pubDate>Mon, 12 Aug 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/pace-hackweek/</guid><description>&lt;p>
&lt;figure id="figure-left-bw-model-inputs-and-right-color-model-outputs-of-a-simple-multi-layer-perceptronhttpspacehackweekgithubiopace-2024presentationshackweekml_cloud_maskhtmla-simple-multi-layer-perceptron-for-detecting-cloud-cover">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="(left, b&amp;amp;amp;w) Model inputs and (right, color) model outputs of a simple multi-layer perceptron" srcset="
/blog/pace-hackweek/cloud-cover-data_hua0335f94820be0055f8450212e11126d_932348_8a93d91e70c837a116e513bc14230bd2.webp 400w,
/blog/pace-hackweek/cloud-cover-data_hua0335f94820be0055f8450212e11126d_932348_271163ff4ce9b3b6d887787d3e0f3c12.webp 760w,
/blog/pace-hackweek/cloud-cover-data_hua0335f94820be0055f8450212e11126d_932348_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/pace-hackweek/cloud-cover-data_hua0335f94820be0055f8450212e11126d_932348_8a93d91e70c837a116e513bc14230bd2.webp"
width="760"
height="384"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
(left, b&amp;amp;w) Model inputs and (right, color) model outputs of a
&lt;a href="https://pacehackweek.github.io/pace-2024/presentations/hackweek/ml_cloud_mask.html#a-simple-multi-layer-perceptron" target="_blank" rel="noopener" >simple multi-layer perceptron&lt;/a> for detecting cloud cover.
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://pace.gsfc.nasa.gov/" target="_blank" rel="noopener" >PACE&lt;/a> is the NASA Plankton, Aerosol, Cloud, ocean Ecosystem mission that focuses on understanding ocean health and its impact on the atmosphere. Together with the
&lt;a href="https://www.us-ocb.org/" target="_blank" rel="noopener" >Ocean Carbon and Biochemistry (OCB)&lt;/a> program, a one-week
&lt;a href="https://pacehackweek.github.io/pace-2024/" target="_blank" rel="noopener" >hackathon&lt;/a> ran from Aug 4 to Aug 8 on the 2i2c-hosted
&lt;a href="https://cryointhecloud.com/" target="_blank" rel="noopener" >CryoCloud&lt;/a> hub. The goal of the hackathon was to explore new Earth science data streams provided by the
&lt;a href="https://pace.oceansciences.org/oci.htm" target="_blank" rel="noopener" >OCI&lt;/a>,
&lt;a href="https://pace.oceansciences.org/spexone.htm" target="_blank" rel="noopener" >SPEXone&lt;/a> and
&lt;a href="https://pace.oceansciences.org/harp2.htm" target="_blank" rel="noopener" >HARP2&lt;/a> instruments using Python.&lt;/p>
&lt;h2 id="machine-learning-with-gpus">
Machine Learning with GPUs
&lt;a class="header-anchor" href="#machine-learning-with-gpus">#&lt;/a>
&lt;/h2>&lt;p>One of the most advanced tutorials delivered during the hackathon was the
&lt;a href="https://pacehackweek.github.io/pace-2024/presentations/hackweek/ml_cloud_mask.html" target="_blank" rel="noopener" >Machine Learning Tutorial&lt;/a>. The tutorial focused on creating a machine learning pipeline to detect cloud cover from satellite imagery. This was done by training a convolutional neural network (CNN) to assign each pixel a binary value to indicate whether the location was covered by cloud or not. To improve the spatial context beyond a single pixel value, as the likelihood of a pixel containing cloud cover increases if its neighbours also contain cloud cover, the CNN needs to be trained on the entire image at once rather than at a single pixel level. This massively increases the training time, but also allows the CNN to learn more complex relationships between pixels.&lt;/p>
&lt;p>GPUs have a far greater number of cores than CPUs that are well-suited for accelerating the massive parallel processing needed to train a neural network on the large amounts of image data in the above scenario.
&lt;a href="https://pytorch.org/" target="_blank" rel="noopener" >PyTorch&lt;/a> is a popular Python library for training CNNs, available for both CPUs and GPUs, and is an ideal tool for performing this kind of work. In terms of the accelerator hardware available on the CryoCloud hub, 2i2c provisions an instance with an
&lt;a href="https://www.nvidia.com/en-us/data-center/tesla-t4/" target="_blank" rel="noopener" >NVIDIA Tesla T4 GPU&lt;/a> with 4 CPUS, 16GB of RAM and 2,560 CUDA cores.&lt;/p>
&lt;h2 id="managing-shared-memory-on-2i2c-hubs">
Managing shared memory on 2i2c hubs
&lt;a class="header-anchor" href="#managing-shared-memory-on-2i2c-hubs">#&lt;/a>
&lt;/h2>&lt;p>While developing the above tutorial, tutorial lead Sean Foley (NASA/GSFC/SED &amp;amp; Morgan State University &amp;amp; GESTAR II) noticed that training neural networks was way slower than it should be given the GPUs available to them. They investigated the issue, and with help from the 2i2c engineering team, it was determined that shared memory was the issue. PyTorch uses shared memory via &lt;code>/dev/shm&lt;/code> for faster parallel processing, and maximizing use of GPU. However in containerized environments, this is limited to a maximum of 64MB by default.&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
&lt;p>You can check the amount of shared memory available on your hub in a terminal with the command&lt;/p>
&lt;p>&lt;code>df -h | grep /dev/shm&lt;/code>&lt;/p>
&lt;/div>
&lt;/div>
&lt;p>As you might expect, 64 MB of shared memory is not enough for training over 160,000 images in the tutorial. 2i2c was able to remove the limit, making &lt;code>/dev/shm&lt;/code> share the memory the user has selected via their profile list, rather than be artificially limited to any particular size. This was done for &lt;em>all&lt;/em> users on the CryoCloud hub within an hour of the issue being reported and we upstreamed the change for &lt;em>all&lt;/em> 2i2c hubs (see GitHub pull requests for
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/4564" target="_blank" rel="noopener" >CryoCloud&lt;/a> and
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/4563" target="_blank" rel="noopener" >all 2i2c hubs&lt;/a>).&lt;/p>
&lt;h2 id="conclusion">
Conclusion
&lt;a class="header-anchor" href="#conclusion">#&lt;/a>
&lt;/h2>&lt;p>This event demonstrates the economy of how running shared and open infrastructure dynamically solves problems for the benefit of many users, not just for one occasion. Learning experiences such as the above are transferred and embedded upstream into transparent and flexible open source software that impacts not only all users of 2i2c operated hubs, but also generalized for the wider research community at large (case in point, see the Slack thread below from
&lt;a href="https://eeholmes.github.io/" target="_blank" rel="noopener" >Eli Holmes&lt;/a>, operator of the
&lt;a href="https://www.fisheries.noaa.gov/science-data/open-science-noaa-fisheries" target="_blank" rel="noopener" >NOAA Fisheries&lt;/a> hubs)! We are grateful for the strong partnerships with our communities who help us to co-design impactful solutions that are specific for their needs and accessible to all.&lt;/p>
&lt;p>
&lt;figure id="figure-the-power-of-open-infrastructure-beyond-2i2c-operated-hubs">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="A slack thread demonstrating the power of open infrastructure beyond 2i2c-operated hubs" srcset="
/blog/pace-hackweek/slack-noaa_hu8140b1a5049e83ecae06aa169fa86758_81075_bfe16d82bcc453e2160013774ed93e25.webp 400w,
/blog/pace-hackweek/slack-noaa_hu8140b1a5049e83ecae06aa169fa86758_81075_56e73ec80e3330e7c6df94d73d120496.webp 760w,
/blog/pace-hackweek/slack-noaa_hu8140b1a5049e83ecae06aa169fa86758_81075_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/pace-hackweek/slack-noaa_hu8140b1a5049e83ecae06aa169fa86758_81075_bfe16d82bcc453e2160013774ed93e25.webp"
width="506"
height="327"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The power of open infrastructure beyond 2i2c-operated hubs
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h2 id="references-and-acknowledgments">
References and Acknowledgments
&lt;a class="header-anchor" href="#references-and-acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://science.gsfc.nasa.gov/sci/bio/sean.r.foley" target="_blank" rel="noopener" >Sean Foley&lt;/a> (NASA/GSFC/SED &amp;amp; Morgan State University &amp;amp; GESTAR II)&lt;/li>
&lt;li>
&lt;a href="https://www.linkedin.com/in/tasha-snow-26815b23" target="_blank" rel="noopener" >Tasha Snow&lt;/a> (ESSIC UMD &amp;amp; NASA GSFC &amp;amp;
&lt;a href="https://cryointhecloud.com/" target="_blank" rel="noopener" >CryoCloud&lt;/a>)&lt;/li>
&lt;li>
&lt;a href="https://pacehackweek.github.io/pace-2024/intro.html" target="_blank" rel="noopener" >PACE Hackweek Jupyter Book&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Ephemeral Interactive Computing for the AmeriGEO Workshop</title><link>https://2i2c.org/blog/amerigeo-workshop/</link><pubDate>Mon, 05 Aug 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/amerigeo-workshop/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Video presentation of the RStudio environment used for the workshop." srcset="
/blog/amerigeo-workshop/rstudio_hu0c068fc734631bc73313d8e13b30607e_982879_c5c3f1371490cba5ca388fc0a084dc10.webp 400w,
/blog/amerigeo-workshop/rstudio_hu0c068fc734631bc73313d8e13b30607e_982879_6c0030c834c734ef7ae7d3ac958ac49a.webp 760w,
/blog/amerigeo-workshop/rstudio_hu0c068fc734631bc73313d8e13b30607e_982879_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/amerigeo-workshop/rstudio_hu0c068fc734631bc73313d8e13b30607e_982879_c5c3f1371490cba5ca388fc0a084dc10.webp"
width="760"
height="428"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://www.amerigeo.org/" target="_blank" rel="noopener" >AmeriGEO&lt;/a> provides a framework for cooperation in the Americas for the use of Earth data to benefit science and society with data driven decision-making. As part of a virtual workshop held on 1st August 2024, 2i2c provided an interactive computing environment to support the delivery of a
&lt;a href="https://www.nasa.gov/centers-and-facilities/marshall/nasa-boosts-open-science-through-innovative-training/" target="_blank" rel="noopener" >NASA TOPST&lt;/a> water module.&lt;/p>
&lt;p>The workshop was facilitated by
&lt;a href="https://people.climate.columbia.edu/users/profile/kytt-macmanus" target="_blank" rel="noopener" >Kytt MacManus&lt;/a> and
&lt;a href="https://ciesin.climate.columbia.edu/directory/juan-f-martinez" target="_blank" rel="noopener" >Juan F. Martinez&lt;/a> (both of
&lt;a href="http://www.ciesin.columbia.edu/" target="_blank" rel="noopener" >CIESIN&lt;/a>, Columbia University, New York). Juan presented interactive R code, with explanatory content written in Quarto, for hotspot vulnerability analysis for floods and landslides focused on Ecuador using earth observation data and socioeconomic data to develop an index of vulnerability. Check out their
&lt;a href="https://github.com/ciesin-geospatial/TOPSTSCHOOL-water" target="_blank" rel="noopener" >GitHub repo&lt;/a> and
&lt;a href="https://tinyurl.com/TOPSTSCHOOL" target="_blank" rel="noopener" >explore interactively yourself&lt;/a> on our BinderHub (see our blog post for more details of how to access the BinderHub deployments to provide
&lt;a href="https://2i2c.org/blog/nasa-ephemeral-hubs/" >Ephemeral Interactive Computing for NASA Communities&lt;/a>).&lt;/p>
&lt;p>Over 100 participants were able to access the interactive workshop on our infrastructure, with 8 GB of RAM per user to facilitate the processing of large amounts of earth data. We are pleased that the workshop was successful and the platform was able to provide a great experience for participants. After the workshop, Kytt reported that&lt;/p>
&lt;blockquote>
&lt;p>The technology worked as expected and we didn&amp;rsquo;t run into 1 major technical problem. Thank you so much for that!&amp;quot;.&lt;/p>
&lt;/blockquote>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Funding from Science Mission Directorate’s Open Source Science Initiative, Research Opportunities in Space and Earth Science (ROSES-2022), F.14 Transform to Open Science&lt;/li>
&lt;li>NASA NSPIRES F.15 High Priority Open-Source Science Award NNH22ZDA001N-HPOSS&lt;/li>
&lt;li>
&lt;a href="https://sedac.ciesin.columbia.edu/" target="_blank" rel="noopener" >NASA Socioeconomic Data and Applications Center (SEDAC)&lt;/a>&lt;/li>
&lt;li>Kytt MacManus&lt;/li>
&lt;li>Juan F. Martinez&lt;/li>
&lt;li>James Munroe for providing support and assistance for setting up the cyberinfrastructure for this workshop.&lt;/li>
&lt;/ul></description></item><item><title>Collaborating with Development Seed to deliver cyberinfrastructure for NASA VEDA</title><link>https://2i2c.org/blog/veda-devseed-collab/</link><pubDate>Fri, 12 Jul 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/veda-devseed-collab/</guid><description>&lt;p>&lt;em>Thank you to Sajjad Anwar and Sanjay Bhangar for contributing to this post.&lt;/em>&lt;/p>
&lt;p>
&lt;figure id="figure-the-veda-dashboardhttpswwwearthdatanasagovdashboard">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Landing page of the public-facing NASA VEDA dashboard" srcset="
/blog/veda-devseed-collab/featured_hu24026c3ba79339d6cab1fefe6f955a05_2636756_0c346142ccc9fb3d33c505813b73ecdd.webp 400w,
/blog/veda-devseed-collab/featured_hu24026c3ba79339d6cab1fefe6f955a05_2636756_d1509b93338ce6bee9dcdedbe51f26c9.webp 760w,
/blog/veda-devseed-collab/featured_hu24026c3ba79339d6cab1fefe6f955a05_2636756_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/veda-devseed-collab/featured_hu24026c3ba79339d6cab1fefe6f955a05_2636756_0c346142ccc9fb3d33c505813b73ecdd.webp"
width="760"
height="490"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The
&lt;a href="https://www.earthdata.nasa.gov/dashboard/" target="_blank" rel="noopener" >VEDA dashboard&lt;/a>
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>The 2i2c team are proud to continue our strong working collaboration with
&lt;a href="https://2i2c.org/collaborators/devseed/" >Development Seed&lt;/a>, following our previous work on launching the
&lt;a href="https://2i2c.org/blog/veda-devseed-collab/../2023/us-ghg-center-launches/index.md" >US GHG center&lt;/a> (also see the
&lt;a href="https://developmentseed.org/blog/2023-12-14-ghg-center" target="_blank" rel="noopener" >Development Seed blog post&lt;/a>). Together with scientists at NASA in our regular sync touchpoints, we have recently delivered a tranche of improvements to
&lt;a href="https://www.earthdata.nasa.gov/esds/veda" target="_blank" rel="noopener" >the Visualization, Exploration and Data Analysis (VEDA) project&lt;/a>.&lt;/p>
&lt;p>This platform is designed to thread open-source components together to consolidate GIS delivery mechanisms, processing, analysis and visualization tools, and presented in a collaborative interactive computing environment. All code repositories and associated resources stemming from this work are available on the
&lt;a href="https://github.com/NASA-IMPACT/VEDA/wiki" target="_blank" rel="noopener" >VEDA GitHub page&lt;/a>.&lt;/p>
&lt;p>In the spirit of fully open development, you can
&lt;a href="https://github.com/NASA-IMPACT/veda-jupyterhub/issues?q=is%3Aissue&amp;#43;jh&amp;#43;is%3Aclosed&amp;#43;label%3A%22PI&amp;#43;24.3%22&amp;#43;" target="_blank" rel="noopener" >see the objectives&lt;/a>
the combined 2i2c and Development Seed team had for the last quarter. In this blog post, we will describe some of the significant ones!&lt;/p>
&lt;h2 id="better-image-management-and-testing">
Better image management and testing
&lt;a class="header-anchor" href="#better-image-management-and-testing">#&lt;/a>
&lt;/h2>&lt;p>The
&lt;a href="https://github.com/jupyterhub/repo2docker-action" target="_blank" rel="noopener" >repo2docker-action&lt;/a> is a GitHub action simplifying image building and testing for use with JupyterHub, using either a &lt;code>Dockerfile&lt;/code> or various
&lt;a href="https://repo2docker.readthedocs.io/en/latest/config_files.html" target="_blank" rel="noopener" >configuration files&lt;/a> (like &lt;code>requirements.txt&lt;/code>, &lt;code>environment.yml&lt;/code>, etc) supported by
&lt;a href="https://github.com/jupyterhub/repo2docker" target="_blank" rel="noopener" >repo2docker&lt;/a>. We migrated our image building pipeline from a somewhat homegrown solution to this upstream action, making image updates and testing &lt;em>much&lt;/em> easier. In particular, we can
&lt;a href="https://github.com/NASA-IMPACT/pangeo-notebook-veda-image/pull/4" target="_blank" rel="noopener" >automatically run test notebooks&lt;/a> on every change we make to the image! This way, we can easily catch any breaking changes in library versions or other package installs without disrupting users. We also debugged and
&lt;a href="https://github.com/jupyterhub/repo2docker-action/pull/124" target="_blank" rel="noopener" >contributed upstream&lt;/a> fixes to the testing infrastructure so everyone could benefit from this, rather than just us.&lt;/p>
&lt;h2 id="automatically-pulling-example-notebooks-on-startup">
Automatically pulling example notebooks on startup
&lt;a class="header-anchor" href="#automatically-pulling-example-notebooks-on-startup">#&lt;/a>
&lt;/h2>&lt;p>When a user logs into a JupyterHub, it is very helpful if we could have a bunch of example notebooks and other content pre-populated for them so they can get started right away.
&lt;a href="https://nbgitpuller.readthedocs.io/" target="_blank" rel="noopener" >nbgitpuller&lt;/a> is heavily used for this particular use case. However, it requires that nbgitpuller is installed inside the image the user is using - and not all images have it installed. In particular, we wanted to continue using the (wonderful)
&lt;a href="https://rocker-project.org/" target="_blank" rel="noopener" >Rocker images&lt;/a> maintained upstream for R users, however they do not have nbgitpuller installed. To solve this problem we built
&lt;a href="https://github.com/NASA-IMPACT/jupyterhub-gitpuller-init" target="_blank" rel="noopener" >jupyterhub-gitpuller-init&lt;/a>, which can be used as an
&lt;a href="https://kubernetes.io/docs/concepts/workloads/pods/init-containers/" target="_blank" rel="noopener" >init container&lt;/a> to pre-populate user content on persistent home directories regardless of the image used. We also made sure to build this in a way that &lt;em>anyone&lt;/em> can use it, and it is not tied into either 2i2c or VEDA infrastructure!&lt;/p>
&lt;h2 id="opening-specific-visualizations-in-qgis-via-url">
Opening specific visualizations in QGIS via URL
&lt;a class="header-anchor" href="#opening-specific-visualizations-in-qgis-via-url">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://www.qgis.org/" target="_blank" rel="noopener" >QGIS&lt;/a> is the world&amp;rsquo;s most used open source GIS software, and previously 2i2c had
&lt;a href="https://blog.jupyter.org/desktop-gis-software-in-the-cloud-with-jupyterhub-ddced297019a" target="_blank" rel="noopener" >worked with Openscapes and QGreenland&lt;/a> to bring this &lt;em>desktop&lt;/em> software to JupyterHub. We had previously worked on a
&lt;a href="https://github.com/2i2c-org/nasa-qgis-image" target="_blank" rel="noopener" >container image&lt;/a> that allows users to access large datasets stored in the cloud directly through QGIS on the JupyterHub, allowing users to work with much larger datasets than they could on their desktops by bringing cloud compute adjacent to the data. As a continuation of this work, we developed
&lt;a href="https://github.com/sunu/jupyter-remote-qgis-proxy" target="_blank" rel="noopener" >jupyter-remote-qgis-proxy&lt;/a>, which builds QGIS specific features on top of
&lt;a href="https://github.com/jupyterhub/jupyter-remote-desktop-proxy" target="_blank" rel="noopener" >jupyter-remote-desktop-proxy&lt;/a>. In particular, it allows creation of shareable links that when clicked, opens specific datasets and layers in QGIS in a JupyterHub! You can see this in action:&lt;/p>
&lt;figure>
&lt;video mute autoplay loop >
&lt;source src="https://2i2c.org/blog/veda-devseed-collab/qgis.mp4" type="video/mp4">
&lt;/video>
&lt;figcaption>Launching QGIS on a Linux desktop served by the VEDA JupyterHub&lt;/figcaption>
&lt;/figure>
&lt;p>This opens up exciting future possibilities. Imagine this
&lt;a href="https://www.earthdata.nasa.gov/dashboard/data-catalog/campfire_ndvi_difference_2015_2022" target="_blank" rel="noopener" >exploration of the Camp Fire&lt;/a> having an &amp;lsquo;Open in QGIS&amp;rsquo; button that enables further exploration of the data without the user needing to download or install anything! Work will continue in the coming quarter towards achieving this vision.&lt;/p>
&lt;p>We are also excited to see recent work in this space
&lt;a href="https://blog.jupyter.org/jupytergis-d63b7adf9d0c" target="_blank" rel="noopener" >from QuantStack and Simula Labs&lt;/a>, and will follow up to ensure an orderly transition to more web native workflows for existing users of QGIS in due time.&lt;/p>
&lt;h2 id="better-profile-selection">
Better Profile Selection
&lt;a class="header-anchor" href="#better-profile-selection">#&lt;/a>
&lt;/h2>&lt;p>This is a continuation of our
&lt;a href="https://2i2c.org/blog/jupyterhub-binderhub-gesis/" >GESIS collaboration&lt;/a>. In the path to deploying dynamic image building to end users, we wanted to stabilize
&lt;a href="https://github.com/yuvipanda/jupyterhub-fancy-profiles" target="_blank" rel="noopener" >jupyterhub-fancy-profiles&lt;/a> enough to deploy to users of VEDA (and eventually everyone else). This is the primary interface users see &lt;em>after&lt;/em> they log in to JupyterHub, and was ripe for UX improvements. The default interface looks like this:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Default profile list page" srcset="
/blog/veda-devseed-collab/old-profile_hu10b987728cacc6727099b87fdcffde73_116187_f55ed283a1bbb45a4002b7db6646d205.webp 400w,
/blog/veda-devseed-collab/old-profile_hu10b987728cacc6727099b87fdcffde73_116187_a96b242c08a12d0156109234e3f2269d.webp 760w,
/blog/veda-devseed-collab/old-profile_hu10b987728cacc6727099b87fdcffde73_116187_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/veda-devseed-collab/old-profile_hu10b987728cacc6727099b87fdcffde73_116187_f55ed283a1bbb45a4002b7db6646d205.webp"
width="734"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The revamped one is much more streamlined and looks like this:&lt;/p>
&lt;figure>
&lt;video mute autoplay loop >
&lt;source src="https://2i2c.org/blog/veda-devseed-collab/new-profile.mp4" type="video/mp4">
&lt;/video>
&lt;figcaption>Revamped Profile Screen&lt;/figcaption>
&lt;/figure>
&lt;p>This is currently deployed to a staging hub and has helped us shake out a lot of bugs! We expect the improved interface will be rolled out to all users in the near future. We are also planning further development to make the user experience even better and smoother for everyone.&lt;/p>
&lt;h2 id="supporting-workshops">
Supporting workshops
&lt;a class="header-anchor" href="#supporting-workshops">#&lt;/a>
&lt;/h2>&lt;p>End users benefiting from our work is what ultimately gives meaning to our work. To that end, we were very happy to support running workshops during this collaboration – see our related blog post
&lt;a href="https://2i2c.org/blog/ghg-summer-school/" >US Greenhouse Gas Center supports summer school at CIRA&lt;/a> for more information.&lt;/p>
&lt;h2 id="ongoing-collaboration">
Ongoing Collaboration
&lt;a class="header-anchor" href="#ongoing-collaboration">#&lt;/a>
&lt;/h2>&lt;p>Delivering on these objectives in a timely way heavily depended on the success of the team collaboration.
&lt;a href="https://developmentseed.org/team/sanjay-bhangar" target="_blank" rel="noopener" >Sanjay Bhangar&lt;/a> of Development Seed commented&lt;/p>
&lt;blockquote>
&lt;p>Working closely with the 2i2c team on growing features to support users on the VEDA and GHG Center hubs has been absolutely amazing. With 2i2c’s deep experience in the Jupyter ecosystem, we have been able to implement some fairly complex features quite easily, and their strong open-source roots have ensured that whatever we work on is broadly useful to the wider Jupyter and scientific computing communities.&lt;/p>
&lt;/blockquote>
&lt;p>Take a look at the companion
&lt;a href="https://developmentseed.org/blog/2024-07-12-jupyter-geospatial" target="_blank" rel="noopener" >Development Seed blog post&lt;/a> of this work.&lt;/p>
&lt;p>This collaboration continues, and we have now
&lt;a href="https://github.com/NASA-IMPACT/veda-jupyterhub/issues?q=is%3Aissue&amp;#43;jh%3A&amp;#43;label%3A%22PI&amp;#43;24.4%22&amp;#43;" target="_blank" rel="noopener" >published our objectives for the coming quarter&lt;/a>. Watch this space!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://developmentseed.org/" target="_blank" rel="noopener" >Development Seed&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://impact.earthdata.nasa.gov/" target="_blank" rel="noopener" >NASA IMPACT&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://sunu.in/" target="_blank" rel="noopener" >Tarashish Mishra&lt;/a>,
&lt;a href="https://jsignell.github.io/" target="_blank" rel="noopener" >Julia Signell&lt;/a>,
&lt;a href="https://oliverroick.net/" target="_blank" rel="noopener" >Oliver Roick&lt;/a>,
&lt;a href="https://slesa.com.np/" target="_blank" rel="noopener" >Slesa Adhikari&lt;/a> and
&lt;a href="https://developmentseed.org/team/sanjay-bhangar" target="_blank" rel="noopener" >Sanjay Bhangar&lt;/a> for various code contributions towards these objectives&lt;/li>
&lt;/ul></description></item><item><title>Openscapes Host a Surface Biology and Geology Workshop with Shared Password Feature</title><link>https://2i2c.org/blog/openscapes-sbg-workshop/</link><pubDate>Tue, 09 Jul 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/openscapes-sbg-workshop/</guid><description>&lt;p>&lt;em>Thanks to Brianna Lind, Julia Lowndes and Andy Teucher for contributing to this blog post!&lt;/em>&lt;/p>
&lt;p>
&lt;figure id="figure-surface-biology-and-geology-vitals-workshop">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Cover slide from the SBG Workshop" srcset="
/blog/openscapes-sbg-workshop/featured_hue819d1810c727f509c70882af2906386_1363058_81f857b51daa1aca4a2de354a9020ee1.webp 400w,
/blog/openscapes-sbg-workshop/featured_hue819d1810c727f509c70882af2906386_1363058_786bb3400878e74ec50331db2192a249.webp 760w,
/blog/openscapes-sbg-workshop/featured_hue819d1810c727f509c70882af2906386_1363058_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/openscapes-sbg-workshop/featured_hue819d1810c727f509c70882af2906386_1363058_81f857b51daa1aca4a2de354a9020ee1.webp"
width="760"
height="476"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Surface Biology and Geology: VITALS Workshop
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://openscapes.org" target="_blank" rel="noopener" >Openscapes&lt;/a> is a value-based initiative that supports kinder, better science based on open source community.
&lt;a href="https://nasa-openscapes.github.io" target="_blank" rel="noopener" >NASA Openscapes&lt;/a> is in its fourth year as a project supporting NASA Earth science in the Cloud, co-developed by Julia Lowndes (Openscapes) and Erin Robinson (Metadata Game Changers).&lt;/p>
&lt;p>The initiative recently supported the
&lt;a href="https://nasa.github.io/VITALS/" target="_blank" rel="noopener" >Surface Biology and Geology: VITALS Workshop&lt;/a> hosted by NASA
&lt;a href="https://lpdaac.usgs.gov/" target="_blank" rel="noopener" >Land Processes Distributed Activate Archive Center (LP DAAC)&lt;/a> and NASA
&lt;a href="https://www.jpl.nasa.gov/" target="_blank" rel="noopener" >Jet Propulsion Laboratory (JPL)&lt;/a>.&lt;/p>
&lt;p>Instructors used the 2i2c Openscapes Hub to lead hands-on exercises teaching learners how to manipulate data collected from the
&lt;a href="https://ecostress.jpl.nasa.gov/" target="_blank" rel="noopener" >ECOSTRESS&lt;/a> and
&lt;a href="https://earth.jpl.nasa.gov/emit/" target="_blank" rel="noopener" >EMIT&lt;/a> instruments onboard the International Space Station. They used
&lt;a href="https://nasa.github.io/VITALS/python/01_Finding_Concurrent_Data.html" target="_blank" rel="noopener" >Jupyter notebooks&lt;/a> in the Hub to demonstrate how open source tools together with cloud data and compute resources could effectively analyse the the Canopy Water Content and the Land Surface Temperature over the
&lt;a href="https://www.dangermondpreserve.org/" target="_blank" rel="noopener" >Jack and Laura Dangermond Preserve&lt;/a>, Santa Barbara, CA.&lt;/p>
&lt;p>
&lt;figure id="figure-plot-of-the-canopy-water-content-over-the-jack-and-laura-dangermond-preserve-santa-barbara-ca-from-a-vitals-workshop-jupyter-notebookhttpsnasagithubiovitalspython03_emit_cwc_from_reflectancehtml">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Plot of the Canopy Water Content over the Jack and Laura Dangermond Preserve, Santa Barbara, CA." srcset="
/blog/openscapes-sbg-workshop/canopy-water-content_hu0373bdfe9208f8ce22ea7a38db775ed2_317466_d893568d95e870664fbed01c909ac38f.webp 400w,
/blog/openscapes-sbg-workshop/canopy-water-content_hu0373bdfe9208f8ce22ea7a38db775ed2_317466_b8db493d7219802231e43b5f83cc2182.webp 760w,
/blog/openscapes-sbg-workshop/canopy-water-content_hu0373bdfe9208f8ce22ea7a38db775ed2_317466_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/openscapes-sbg-workshop/canopy-water-content_hu0373bdfe9208f8ce22ea7a38db775ed2_317466_d893568d95e870664fbed01c909ac38f.webp"
width="739"
height="601"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Plot of the Canopy Water Content over the Jack and Laura Dangermond Preserve, Santa Barbara, CA from a
&lt;a href="https://nasa.github.io/VITALS/python/03_EMIT_CWC_from_Reflectance.html" target="_blank" rel="noopener" >VITALS Workshop Jupyter notebook&lt;/a>.
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>This event was attended by around 250 participants. An event of this size therefore requires a &lt;em>frictionless login flow&lt;/em> so that organizers could focus on the essential complexity of teaching data analysis rather than the accidental complexity of managing Hub authorization. GitHub authentication is the default option for most 2i2c Hubs for research use cases, but for an educational event of this size this option was not fit for purpose since organizers had to&lt;/p>
&lt;ol>
&lt;li>Retrieve the GitHub usernames of each participant (assuming everyone was familiar with GitHub!)&lt;/li>
&lt;li>Manually invite GitHub users to a GitHub organization to authorize access to the Hub (invitations would expire within seven days)&lt;/li>
&lt;li>Repeat the above two steps last-minute for participants who showed up on the day without preparing&lt;/li>
&lt;li>Manually remove GitHub users from the GitHub organization if they wanted to revoke access to the Hub after the event.&lt;/li>
&lt;/ol>
&lt;p>In response to this need, we developed a shared password feature so that workshop organizers can simply hand the share password out to learners for access to the Hub. This bypassed the manual labour of managing GitHub accounts while not adding to the learner&amp;rsquo;s high cognitive load and improving the participant&amp;rsquo;s learning experience overall.&lt;/p>
&lt;p>One of the elements that enabled us to recognize and solve this issue effectively is our close partnership with the Openscapes team. We engage in regular
&lt;a href="https://github.com/NASA-Openscapes/2i2cAccessPolicies/issues/7" target="_blank" rel="noopener" >6-weekly catch-ups&lt;/a> where we can learn about user requirements and how we can develop our infrastructure to co-create optimal solutions. Together with our
&lt;a href="https://team-compass.2i2c.org/product/deliveryflow/#defining-our-product-delivery-flow" target="_blank" rel="noopener" >Product Delivery Flow&lt;/a>, we were quickly able to architect the shared password solution in time for the workshop.&lt;/p>
&lt;p>
&lt;figure id="figure-feedback-from-brianna-lind-lp-daac">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Slack message from Bri Lind" srcset="
/blog/openscapes-sbg-workshop/slack_hu92a99c5a2eca92e535f899967fd8b202_53752_ba09f4df240787c9a04d2d27bc2c5a5b.webp 400w,
/blog/openscapes-sbg-workshop/slack_hu92a99c5a2eca92e535f899967fd8b202_53752_095056e86e2035dc6c4a5a38c3ed7a5a.webp 760w,
/blog/openscapes-sbg-workshop/slack_hu92a99c5a2eca92e535f899967fd8b202_53752_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/openscapes-sbg-workshop/slack_hu92a99c5a2eca92e535f899967fd8b202_53752_ba09f4df240787c9a04d2d27bc2c5a5b.webp"
width="760"
height="219"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Feedback from Brianna Lind (LP DAAC)
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>We have documented the technical infrastructure changes required to enable a shared password for the Hub in our
&lt;a href="https://infrastructure.2i2c.org/hub-deployment-guide/configure-auth/shared-password/" target="_blank" rel="noopener" >Infrastructure Guide&lt;/a> and hope to support many future events with this mechanism!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://nasa-openscapes.github.io/" target="_blank" rel="noopener" >NASA Openscapes&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://lpdaac.usgs.gov/" target="_blank" rel="noopener" >NASA LP DAAC&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.jpl.nasa.gov/" target="_blank" rel="noopener" >NASA JPL&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://science.nasa.gov/researchers/" target="_blank" rel="noopener" >NASA ROSES funding&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Determining Climate Risks with NASA Earthdata Cloud at Scipy 2024</title><link>https://2i2c.org/blog/climaterisk-scipy-tutorial/</link><pubDate>Mon, 08 Jul 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/climaterisk-scipy-tutorial/</guid><description>&lt;p>&lt;em>Determining Climate Risks with NASA Earthdata Cloud&lt;/em> is a
&lt;a href="https://www.nasa.gov/centers-and-facilities/marshall/nasa-boosts-open-science-through-innovative-training/" target="_blank" rel="noopener" >ScienceCore&lt;/a> curriculum module that comprises part of NASA&amp;rsquo;s
&lt;a href="https://science.nasa.gov/open-science-overview" target="_blank" rel="noopener" >Open Science&lt;/a> and
&lt;a href="https://nasa.github.io/Transform-to-Open-Science/" target="_blank" rel="noopener" >Transform to Open Science (TOPS)&lt;/a> initiatives.
The aim of this module is to deliver a hands-on experience with &amp;ldquo;data-proximate computing&amp;rdquo; in the cloud with
&lt;a href="https://www.earthdata.nasa.gov/" target="_blank" rel="noopener" >NASA Earthdata&lt;/a> products with content co-developed with
&lt;a href="https://www.metadocencia.org/" target="_blank" rel="noopener" >MetaDocencia&lt;/a>.&lt;/p>
&lt;p>This module was delivered as a
&lt;a href="https://cfp.scipy.org/2024/talk/3DVH7S/" target="_blank" rel="noopener" >SciPy tutorial&lt;/a> at this year&amp;rsquo;s conference. 2i2c have been working closely with the organizers to provide the hub infrastructure for the tutorial, including enabling a shared password for easy authentication (see our
&lt;a href="https://2i2c.org/blog/climaterisk-scipy-tutorial/blog/2024/openscapes-sbg-workshop/index.mdindex" >Openscapes post&lt;/a> for more about this feature) and operating a small binder service for participants to view content after the event.&lt;/p>
&lt;p>You can take a look at the tutorial on the
&lt;a href="https://binder.opensci.2i2c.cloud/v2/gh/ScienceCore/scipy-2024-climaterisk/HEAD?labpath=00_Introduction_Setup%2F01_Initial_Setup.ipynb" target="_blank" rel="noopener" >NASA ephemeral hub&lt;/a>!&lt;/p>
&lt;p>The event was well-attended, with 40 learners taking part. Special thanks go to the organizers
&lt;a href="https://github.com/dhavide" target="_blank" rel="noopener" >Dhavide Aruliah&lt;/a>,
&lt;a href="https://www.linkedin.com/in/karthikvenkataramani/" target="_blank" rel="noopener" >Karthik Venkataramani&lt;/a> and
&lt;a href="https://github.com/patriloto" target="_blank" rel="noopener" >Patricia A. Loto&lt;/a> for leading the tutorial.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>NASA F.14 Transform to Open Science Training award NNH23ZDA001N-TOPST&lt;/li>
&lt;li>
&lt;a href="https://www.metadocencia.org/en/proyecto/nasa-2i2c/" target="_blank" rel="noopener" >MetaDocencia&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/dhavide" target="_blank" rel="noopener" >Dhavide Aruliah&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.linkedin.com/in/karthikvenkataramani/" target="_blank" rel="noopener" >Karthik Venkataramani&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/patriloto" target="_blank" rel="noopener" >Patricia A. Loto&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Enabling neuroscience in the cloud with HHMI Spyglass and MySQL on JupyterHub</title><link>https://2i2c.org/blog/hhmi-spyglass-mysql/</link><pubDate>Fri, 05 Jul 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/hhmi-spyglass-mysql/</guid><description>&lt;p>
&lt;figure id="figure-the-hhmi-spyglass-tutorialhttpsspyglasshhmi2i2ccloud">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="HHMI Spyglass tutorial" srcset="
/blog/hhmi-spyglass-mysql/featured_huda5696297f7fdc49904c82761adc3edf_243308_598303ce9fab37b82985827d80811661.webp 400w,
/blog/hhmi-spyglass-mysql/featured_huda5696297f7fdc49904c82761adc3edf_243308_be7fedce8169ff93e4d1bb453a589d91.webp 760w,
/blog/hhmi-spyglass-mysql/featured_huda5696297f7fdc49904c82761adc3edf_243308_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/hhmi-spyglass-mysql/featured_huda5696297f7fdc49904c82761adc3edf_243308_598303ce9fab37b82985827d80811661.webp"
width="760"
height="498"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The
&lt;a href="https://spyglass.hhmi.2i2c.cloud/" target="_blank" rel="noopener" >HHMI Spyglass tutorial&lt;/a>
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h2 id="spyglass">
Spyglass
&lt;a class="header-anchor" href="#spyglass">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://github.com/LorenFrankLab/spyglass" target="_blank" rel="noopener" >Spyglass&lt;/a> is a framework for reproducible and shareable neuroscience research produced by
&lt;a href="https://github.com/LorenFrankLab" target="_blank" rel="noopener" >Loren Frank’s lab&lt;/a> at the University of California, San Francisco. Check out our
&lt;a href="https://2i2c.org/blog/hhmi-spyglass/" >blog post about the release of their preprint&lt;/a> to read more about the methods.&lt;/p>
&lt;p>This post focuses on the complex data storage needed for the project, which can be difficult to set up locally or at scale in the cloud. In particular, the analysis needed a MySQL database for reproducibility. This is a fairly common task across many fields. The aim of 2i2c is to enable researchers to focus on the essential complexity of what they were doing, i.e. the science, without managing the accidental complexity of how to do it &amp;ndash; in this case, setting up databases.&lt;/p>
&lt;p>We describe how you can do this too for your own JupyterHubs. Since 2i2c commits to running our infrastructure in line with open-source values as much as possible, you can also directly see the
&lt;a href="https://github.com/2i2c-org/infrastructure/blob/99071c38712ef8e6bed6609117ca4b894b89ae5c/config/clusters/hhmi/spyglass.values.yaml#L76" target="_blank" rel="noopener" >configuration for the hub&lt;/a> referenced in the paper.&lt;/p>
&lt;h2 id="what-is-a-sidecar-container">
What is a &amp;ldquo;sidecar container&amp;rdquo;?
&lt;a class="header-anchor" href="#what-is-a-sidecar-container">#&lt;/a>
&lt;/h2>&lt;p>The Kubernetes definition of a
&lt;a href="https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/" target="_blank" rel="noopener" >sidecar container&lt;/a> is&lt;/p>
&lt;blockquote>
&lt;p>Sidecar containers are the secondary containers that run along with the main application container within the same Pod. These containers are used to enhance or to extend the functionality of the primary app container by providing additional services, or functionality such as logging, monitoring, security, or data synchronization, without directly altering the primary application code.&lt;/p>
&lt;/blockquote>
&lt;p>In this case, the &lt;em>primary&lt;/em> app container is the JupyterLab instance where people are interactively running code and doing science. We want to provide a MySQL database as a sidecar so that each user server gets their own independent MySQL server instance (that is not accessible to anyone else). We can then run code such as&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">%%bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mysql -h 127.0.0.1 -u root --password=tutorial &amp;lt; path-to-sql-file-with-data
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>to load data into the database. Note the IP address &lt;code>127.0.0.1&lt;/code> - the MySQL server is listening on localhost, even though it is not running in the &lt;em>same container&lt;/em>! Thanks to the magic of
&lt;a href="https://lwn.net/Articles/580893/" target="_blank" rel="noopener" >Linux Network Namespaces&lt;/a>, the sidecar and main app container can share &lt;code>127.0.0.1&lt;/code>. This allows you to write code that works &lt;strong>in the exact same way&lt;/strong> on a user&amp;rsquo;s local computers as on the JupyterHub, making transitions and replication easier.&lt;/p>
&lt;h2 id="setting-up-sidecars-in-jupyterhub-on-kubernetes">
Setting up sidecars in JupyterHub on Kubernetes
&lt;a class="header-anchor" href="#setting-up-sidecars-in-jupyterhub-on-kubernetes">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;re leveraging multiple tools from the open-source ecosystem - JupyterHub, Kubernetes, Linux as well as MySQL itself.&lt;/p>
&lt;p>Since this is a &lt;em>Kubernetes&lt;/em> feature, we can pass through config to it. There are
two layers here, which are&lt;/p>
&lt;ol>
&lt;li>
&lt;a href="https://z2jh.jupyter.org/en/latest/resources/reference.html#singleuser-extracontainers" target="_blank" rel="noopener" >singleuser.extraContainers&lt;/a> in
&lt;a href="https://z2jh.jupyter.org/en/stable/" target="_blank" rel="noopener" >z2jh&lt;/a> configuration&lt;/li>
&lt;li>
&lt;a href="https://jupyterhub-kubespawner.readthedocs.io/en/latest/spawner.html#kubespawner.KubeSpawner.extra_containers" target="_blank" rel="noopener" >KubeSpawner.extra_containers&lt;/a> in
&lt;a href="https://jupyterhub-kubespawner.readthedocs.io/en/latest/spawner.html" target="_blank" rel="noopener" >KubeSpawner&lt;/a> configuration&lt;/li>
&lt;/ol>
&lt;p>The hub configuration looks like&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">singleuser&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">extraContainers&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">mysql&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">image&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">datajoint/mysql:8.0&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># following the spyglass tutorial at https://lorenfranklab.github.io/spyglass/latest/notebooks/00_Setup/#existing-database&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ports&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">mysql&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">containerPort&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">3306&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">resources&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">limits&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Best effort only. No more than 1 CPU, and if mysql uses more than 4G, restart it&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">memory&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">4Gi&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cpu&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1.0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">requests&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If we don&amp;#39;t set requests, k8s sets requests == limits!&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># So we set something tiny&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">memory&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">64Mi&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cpu&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0.01&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Configured using the env vars documented in https://lorenfranklab.github.io/spyglass/latest/notebooks/00_Setup/#existing-database&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">MYSQL_ROOT_PASSWORD&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">value&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;tutorial&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>By setting this up, we allow users to insert the code snippet above&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">%%bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mysql -h 127.0.0.1 -u root --password=tutorial &amp;lt; path-to-sql-file-with-data
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>into their
&lt;a href="https://github.com/LorenFrankLab/spyglass-demo/blob/main/notebooks/00_HubQuickStart.ipynb" target="_blank" rel="noopener" >Jupyter Notebooks&lt;/a>, which gives access to their MySQL database in the hub!&lt;/p>
&lt;p>However, this configuration does not include permanently store the database itself between hub server sessions. Thanks to a pilot in a prior collaboration with University of Texas, Austin, we do have
&lt;a href="https://github.com/2i2c-org/infrastructure/blob/main/docs/howto/features/per-user-db.md" target="_blank" rel="noopener" >some documentation&lt;/a> on how you can enable that as well!&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/hhmi/" >Howard Hughes Medical Institute&lt;/a>&lt;/li>
&lt;li>National Institute of Mental Health (NIMH), grant number RF1MH130623&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyterhub/kubespawner" target="_blank" rel="noopener" >kubespawner&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/jupyterhub/zero-to-jupyterhub-k8s/" target="_blank" rel="noopener" >zero-to-jupyterhub-k8s&lt;/a> and the
&lt;a href="https://2i2c.org/collaborators/jupyterhub/" >JupyterHub community&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>We need to improve the diversity of our leadership</title><link>https://2i2c.org/blog/dei-leadership-strategy/</link><pubDate>Fri, 28 Jun 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/dei-leadership-strategy/</guid><description>&lt;p>As an organization committed to broadening access to interactive computing for global communities, we believe that a team embedded with diverse insights and lived experiences can more effectively advocate for underrepresented voices in our socio-technical partnerships.
A diversity of team experiences helps us deliver a service that broadens and empowers participation in open-source science for all communities and leads to
&lt;a href="https://hbr.org/2016/11/why-diverse-teams-are-smarter" target="_blank" rel="noopener" >more effective teams that make better decisions&lt;/a>.&lt;/p>
&lt;p>As a young and growing organization, we have had mixed success in building diversity within our team.
We&amp;rsquo;ve leaned into the values of our service that build trust and attract a broad coalition of community partners (and potential employees).
For example, we&amp;rsquo;ve used the following pillars in describing our service:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Transparency&lt;/strong> – our transparent and participatory model keeps our incentives aligned with community needs.&lt;/li>
&lt;li>&lt;strong>Empowerment&lt;/strong> – our service gives communities agency to design the service they need, and to manage it without 2i2c if they wish.&lt;/li>
&lt;li>&lt;strong>Partnership&lt;/strong> – our communities are partners working towards shared impact, not customers to grow revenue.&lt;/li>
&lt;li>&lt;strong>Sustainability&lt;/strong> – our service should have a self-sustaining model that ensures continuity, growth, and funder independence.&lt;/li>
&lt;/ol>
&lt;p>We&amp;rsquo;ve also invested in creating an inclusive organizational culture via documents like
&lt;a href="https://compass.2i2c.org" target="_blank" rel="noopener" >our Team Compass&lt;/a> and
&lt;a href="https://compass.2i2c.org/code-of-conduct/" target="_blank" rel="noopener" >our Code of Conduct&lt;/a>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. We&amp;rsquo;ve experimented with inclusive hiring practices to encourage a diverse pool of applicants for our open positions, such as
&lt;a href="https://2i2c.org/blog/product-community-lead-drop-in-notes/" >running open office hours for job postings&lt;/a> in the hopes that this would encourage more people to apply who might otherwise have been hesitant (something that often correlates with people from historically marginalized communities).&lt;/p>
&lt;h2 id="the-importance-of-diverse-_leadership_">
The importance of diverse &lt;em>leadership&lt;/em>
&lt;a class="header-anchor" href="#the-importance-of-diverse-_leadership_">#&lt;/a>
&lt;/h2>&lt;p>However, over the past few months, we have reflected on our organization&amp;rsquo;s structure and future plans. In particular, we recognize that there is a worrying lack of women in staff leadership roles. This imbalance does not live up to our values of diversity in our team and service.&lt;/p>
&lt;p>We need to do better.&lt;/p>
&lt;p>2i2c is at a moment of maturation and growth as an organization, kicked off by
&lt;a href="https://2i2c.org/blog/dei-leadership-strategy/../2023/organizational-report/index.md" >our organizational audit from 2023&lt;/a> as well as
&lt;a href="https://2i2c.org/blog/report-czi/" >our three-year retrospective&lt;/a>.
We believe that improving the diversity of leadership throughout the organization is a necessary part of that maturation over the next three years.&lt;/p>
&lt;p>Below are a few ideas for how we aim to make improvements, and we invite feedback from others who are interested in helping us improve this aspect of our organization.&lt;/p>
&lt;h2 id="what-we-plan-to-do">
What we plan to do
&lt;a class="header-anchor" href="#what-we-plan-to-do">#&lt;/a>
&lt;/h2>&lt;p>Over the next few months, we will work on a long-term DEI strategy in tandem with our sustainability strategy as we work
&lt;a href="https://2i2c.org/blog/funding-community-networks/" >towards scalable and sustainable networks of community hubs&lt;/a>.&lt;/p>
&lt;p>Here are some steps we aim to take to improve the diversity of our leadership across the organization:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Define our goals for diversity&lt;/strong>. First, we need a better understanding of the most important axes of diversity that we wish to design around. Gender is clearly a critical gap to cover, but there are many other important axes of diversity as well. For example, as an organization that serves a global community, it is important that we have global perspectives represented in our leadership.&lt;/li>
&lt;li>&lt;strong>Define mechanisms for leadership and governance that includes representation along these axes&lt;/strong>. Leadership at a staff level is one way to ensure representation of diverse perspectives, but there are many other ways to bring voices into the conversation. We aim to explore new ways of bringing diverse voices into the strategic direction of the organization and provide mechanisms for holding us accountable to our values. For example, we intend to grow a &lt;em>board&lt;/em> to guide 2i2c&amp;rsquo;s strategy and hold its Executive Director accountable for achieving impact - this is another opportunity to bring diverse perspectives into our leadership.&lt;/li>
&lt;li>&lt;strong>Make a plan for improving leadership diversity within our team&lt;/strong>. Whatever mechanisms we create for diverse leadership, we know that one of them needs to be improving our diversity at a staff leadership level. Our staff are the ones that spend the most time working on - and have the most leverage over - our strategy and mission, and it&amp;rsquo;s important that our staff leadership is a good representation of the diverse perspectives of the communities we serve. This might mean investing more heavily in reaching broad applicant pools for new positions, seeking external consultation for how we can avoid unintentionally sending exclusionary signals to others in our communications and outreach and developing incentives to retain our talent over time.&lt;/li>
&lt;li>&lt;strong>Continue improving our systems of delivery and work&lt;/strong>. Finally, we believe that a crucial aspect of improving the diversity in our organization is to continue transforming our systems for delivery, reliability, and accountability across the organization. This effort is a crucial step for fostering an inclusive and equitable culture. We have
&lt;a href="https://2i2c.org/blog/delivery-improvements/" >made a lot of progress in improving our delivery systems&lt;/a> and will continue this improvement as an organization.&lt;/li>
&lt;/ol>
&lt;p>We hope that this post both makes transparent a distinct lack of diversity within our organizational leadership and provides clarity for some of our plans to improve.
We are excited about the organization that we have built so far, as well as being fiercely proud of our open-source culture and development practises.
We still know that we must do better, and we&amp;rsquo;re fully committed to doing so over the coming years.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>We often refer to the
&lt;a href="https://projectinclude.org" target="_blank" rel="noopener" >Project Include&lt;/a> documentation in creating an inclusive culture and set of policies.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Ephemeral Interactive Computing for NASA Communities</title><link>https://2i2c.org/blog/nasa-ephemeral-hubs/</link><pubDate>Thu, 27 Jun 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/nasa-ephemeral-hubs/</guid><description>&lt;p>We are pleased to announce that we have deployed two ephemeral hubs for NASA communities!&lt;/p>
&lt;h2 id="what-did-we-do">
What did we do?
&lt;a class="header-anchor" href="#what-did-we-do">#&lt;/a>
&lt;/h2>&lt;p>As part of the deliverables for our NASA High Priority Open-Source Science (HPOSS) award, we deployed two new ephemeral hubs:&lt;/p>
&lt;ol>
&lt;li>a
&lt;a href="https://binder.opensci.2i2c.cloud/" target="_blank" rel="noopener" >public small BinderHub&lt;/a> that offers a &amp;ldquo;reader&amp;rdquo; experience where learners can interactively view GitHub repositories that deliver light scientific content with small compute and no barriers to authentication&lt;/li>
&lt;li>a
&lt;a href="https://hub.big.binder.opensci.2i2c.cloud/" target="_blank" rel="noopener" >big BinderHub&lt;/a> that offers an &amp;ldquo;explorer&amp;rdquo; experience where learners can log in to access more substantial compute resources to interactively investigate large datasets and run large workflows from any GitHub repository.&lt;/li>
&lt;/ol>
&lt;p>These services enrich the interactive computing ecosystem for NASA communities by&lt;/p>
&lt;ul>
&lt;li>improving the shareability and reproducibility of scientific information&lt;/li>
&lt;li>broadening participation for historically excluded and under-resourced science communities&lt;/li>
&lt;li>enabling activities such as hackathons, demonstrations or training, during workshops and conferences.&lt;/li>
&lt;/ul>
&lt;h2 id="how-did-we-do-it">
How did we do it?
&lt;a class="header-anchor" href="#how-did-we-do-it">#&lt;/a>
&lt;/h2>&lt;p>Ephemeral interactive computing services benefited from some of our previous development work in collaboration with GESIS (see our
&lt;a href="https://2i2c.org/blog/nasa-ephemeral-hubs/blog/2024/jupyterhub-binderhub-gesis/index.mdindex" >detailed blog post&lt;/a> for more information). The research and development of this project achieved wide-reaching impact across many NASA communities we currently serve, including
&lt;a href="https://www.nasa.gov/centers-and-facilities/marshall/nasa-boosts-open-science-through-innovative-training/" target="_blank" rel="noopener" >TOPST ScienceCore&lt;/a>,
&lt;a href="https://2i2c.org/blog/openscapes-sbg-workshop/" >Openscapes&lt;/a>,
&lt;a href="https://2i2c.org/blog/ghg-summer-school/" >US Greenhouse Gas Center&lt;/a>,
&lt;a href="https://www.earthdata.nasa.gov/esds/veda" target="_blank" rel="noopener" >VEDA&lt;/a> and
&lt;a href="https://cryointhecloud.com/" target="_blank" rel="noopener" >CryoCloud&lt;/a>; as well as networks beyond the NASA scope, such as the NSF-funded
&lt;a href="https://projectpythia.org/" target="_blank" rel="noopener" >Project Pythia&lt;/a> and HHMI-funded
&lt;a href="https://lorenfranklab.github.io/spyglass/latest/" target="_blank" rel="noopener" >Spyglass&lt;/a> projects.&lt;/p>
&lt;h2 id="what-next">
What next?
&lt;a class="header-anchor" href="#what-next">#&lt;/a>
&lt;/h2>&lt;p>We will focus on bolstering the community- and knowledge-building needed for making the best use of these binder services in the next phase of our HPOSS work to accelerate broader participation in science. This includes opportunities such as running workshops and tutorials, as well as disseminating best practices for collaborative research. Further engineering developments will proceed in collaboration with the NASA VEDA project to set up a binder service, improve the sharing of custom environments, and refine QGIS integrations for analysing geospatial data.&lt;/p>
&lt;h2 id="can-i-use-this-ephemeral-hub-service">
Can I use this ephemeral hub service?
&lt;a class="header-anchor" href="#can-i-use-this-ephemeral-hub-service">#&lt;/a>
&lt;/h2>&lt;p>The answer is yes!&lt;/p>
&lt;ul>
&lt;li>For the
&lt;a href="https://binder.opensci.2i2c.cloud/" target="_blank" rel="noopener" >public small BinderHub&lt;/a> anyone can view GitHub repositories that deliver light scientific content with small compute and no barriers to authentication&lt;/li>
&lt;li>For the
&lt;a href="https://hub.big.binder.opensci.2i2c.cloud/" target="_blank" rel="noopener" >big BinderHub&lt;/a> you will need to be member of a NASA community. This requires a GitHub account for membership of the GitHub Team
&lt;a href="https://github.com/orgs/2i2c-nasa-binder-access/teams/big-binder-team" target="_blank" rel="noopener" >2i2c-nasa-binder-access:big-binder-team&lt;/a> for authorization. Please send us an email at
&lt;a href="https://2i2c.org/blog/nasa-ephemeral-hubs/mailto:binder-requests@2i2c.org" >binder-requests@2i2c.org&lt;/a> to be added to the GitHub Team.&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>NASA NSPIRES F.15 High Priority Open-Source Science Award NNH22ZDA001N-HPOSS&lt;/li>
&lt;/ul></description></item><item><title>Neurohackademy Summer School in Neuroimaging and Data Science 2024</title><link>https://2i2c.org/blog/neurohackademy-summer-school/</link><pubDate>Fri, 21 Jun 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/neurohackademy-summer-school/</guid><description>&lt;p>
&lt;figure id="figure-neurohackademy-summer-schoolhttpsneurohackademyorg">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Landing page of the Neurohackademy Summer School website" srcset="
/blog/neurohackademy-summer-school/featured_hu1407b37436d36983b293b82682368c44_1577145_a369b47b7aa7f955400b7fd0997eb469.webp 400w,
/blog/neurohackademy-summer-school/featured_hu1407b37436d36983b293b82682368c44_1577145_3ae80ab519c8c6c39c0b0848d85adda8.webp 760w,
/blog/neurohackademy-summer-school/featured_hu1407b37436d36983b293b82682368c44_1577145_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/neurohackademy-summer-school/featured_hu1407b37436d36983b293b82682368c44_1577145_a369b47b7aa7f955400b7fd0997eb469.webp"
width="760"
height="469"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
&lt;a href="https://neurohackademy.org/" target="_blank" rel="noopener" >Neurohackademy Summer School&lt;/a>
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>2i2c are pleased to support the
&lt;a href="https://neurohackademy.org/" target="_blank" rel="noopener" >Neurohackademy Summer School&lt;/a> in neuroimaging and data science again!&lt;/p>
&lt;p>Following the success of our collaboration in previous years (see the
&lt;a href="https://escience.washington.edu/events/neurohackademy-2023/" target="_blank" rel="noopener" >event page for 2023&lt;/a>), this year’s course will be held July 29th – August 10th, 2024 and will be hosted by the
&lt;a href="http://escience.washington.edu/" target="_blank" rel="noopener" >University of Washington eScience Institute&lt;/a>.&lt;/p>
&lt;p>We provide an interactive computing platform for participants to get hands on experience in data pipelining, machine learning and data visualization techniques. Take a look at the following links to learn more about the neurohackathon:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://www.washington.edu/news/2018/08/23/hack-week-pnas/" target="_blank" rel="noopener" >Hack week: Study supports collaborative, participant-driven approach for researchers to learn data science from their peers&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://escience.washington.edu/neurohackademy-debuts-successfully/" target="_blank" rel="noopener" >NeuroHackademy debuts successfully&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://psych.uw.edu/newsletter/summer-2022/faculty/hackathon-combines-neuroscience-and-data-science" target="_blank" rel="noopener" >Hackathon Combines Neuroscience and Data Science&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://escience.washington.edu/neurohackademy-participants-offer-perspectives/" target="_blank" rel="noopener" >NeuroHackademy participants offer perspectives&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://escience.washington.edu/participants-offer-insight-on-neurohackademy/" target="_blank" rel="noopener" >Participants offer insight on Neurohackademy&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>Funded by grant
&lt;a href="https://pubmed.ncbi.nlm.nih.gov/38763989/" target="_blank" rel="noopener" >R25MH112480&lt;/a> from the US National Institute of Mental Health awarded to
&lt;a href="https://arokem.org/" target="_blank" rel="noopener" >Ariel Rokem&lt;/a> and
&lt;a href="https://nben.net/" target="_blank" rel="noopener" >Noah Benson&lt;/a>.&lt;/p>
&lt;p>The Neurohackademy Summer School is sponsored by&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="http://escience.washington.edu/" target="_blank" rel="noopener" >University of Washington eScience Institute&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/moore/" >Gordon and Betty Moore Foundation&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/sloan/" >Alfred P. Sloan Foundation&lt;/a>&lt;/li>
&lt;li>
&lt;a href="http://www.washington.edu/" target="_blank" rel="noopener" >University of Washington&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.utexas.edu/" target="_blank" rel="noopener" >The University of Texas at Austin&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.nimh.nih.gov/" target="_blank" rel="noopener" >National Institute of Mental Health&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.nsf.gov/" target="_blank" rel="noopener" >National Science Foundation&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>US Greenhouse Gas Center supports summer school at CIRA</title><link>https://2i2c.org/blog/ghg-summer-school/</link><pubDate>Thu, 20 Jun 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/ghg-summer-school/</guid><description>&lt;p>
&lt;figure id="figure-summer-school-for-inverse-modeling-of-greenhouse-gases-2024">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Summer school for inverse modeling of greenhouse gases 2024" srcset="
/blog/ghg-summer-school/featured_hu910bfdf83fbf7c9eab4e8bb2082bdb51_881389_bb5617210c332c674e7b8d13d11f36dd.webp 400w,
/blog/ghg-summer-school/featured_hu910bfdf83fbf7c9eab4e8bb2082bdb51_881389_9a919b8ecb9303737e1adc44b7652fe3.webp 760w,
/blog/ghg-summer-school/featured_hu910bfdf83fbf7c9eab4e8bb2082bdb51_881389_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/ghg-summer-school/featured_hu910bfdf83fbf7c9eab4e8bb2082bdb51_881389_bb5617210c332c674e7b8d13d11f36dd.webp"
width="760"
height="484"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Summer school for inverse modeling of greenhouse gases 2024
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>The Cooperative Institute for Research in the Atmosphere (
&lt;a href="https://www.cira.colostate.edu/" target="_blank" rel="noopener" >CIRA&lt;/a>) is an interdisciplinary cooperation between NOAA research scientists and Colorado State University. CIRA is hosting a
&lt;a href="https://www.cira.colostate.edu/conferences/rmtgw/" target="_blank" rel="noopener" >summer school&lt;/a> for inverse modeling of greenhouse gases using atmospheric data assimilation techniques. The
&lt;a href="https://earth.gov/ghgcenter" target="_blank" rel="noopener" >US Greenhouse Gas Center&lt;/a> is supporting the workshop by providing 40+ attendees access to their interactive computing hub operated by 2i2c (see
&lt;a href="https://2i2c.org/blog/ghg-summer-school/blog/2023/us-ghg-center-launches/index.mdindex" >our blog post about their launch&lt;/a>).&lt;/p>
&lt;p>Hub administrators have
&lt;a href="https://github.com/NASA-IMPACT/ssim-ghg-workshop-2024-python-image" target="_blank" rel="noopener" >built a customized software environment&lt;/a> with container technology for use at the workshop. In doing so, this bypasses the need for participants to individually install software on their own machines and the online hub provides a &lt;em>consistent&lt;/em> and &lt;em>reproducible&lt;/em> interactive computing environment that is easily &lt;em>accessible&lt;/em> and &lt;em>scalable&lt;/em>.&lt;/p>
&lt;p>
&lt;figure id="figure-login-screen-of-the-ghg-hub-showing-the-custom-built-ssim-ghg-image-option">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Login screen of the GHG hub showing the custom built SSIM-GHG image option." srcset="
/blog/ghg-summer-school/ghg-hub_hu1407b37436d36983b293b82682368c44_266729_f3db3a3eff9a7520e5096c6f79193712.webp 400w,
/blog/ghg-summer-school/ghg-hub_hu1407b37436d36983b293b82682368c44_266729_c96acc1e28fe6f859f9fdeb219f4ad5a.webp 760w,
/blog/ghg-summer-school/ghg-hub_hu1407b37436d36983b293b82682368c44_266729_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/ghg-summer-school/ghg-hub_hu1407b37436d36983b293b82682368c44_266729_f3db3a3eff9a7520e5096c6f79193712.webp"
width="760"
height="469"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Login screen of the GHG hub showing the custom built SSIM-GHG image option.
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>2i2c would like to credit the following individuals for their great efforts supporting this workshop:&lt;/p>
&lt;ul>
&lt;li>Sanjay Bhangar (
&lt;a href="https://2i2c.org/collaborators/devseed/" >Development seed&lt;/a>)&lt;/li>
&lt;li>Slesa Adhikari (NASA IMPACT)&lt;/li>
&lt;/ul></description></item><item><title>Hacking the Project Pythia Cook-off with MyST Markdown</title><link>https://2i2c.org/blog/project-pythia-cookoff/</link><pubDate>Tue, 18 Jun 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/project-pythia-cookoff/</guid><description>&lt;p>
&lt;figure id="figure-photo-courtesy-of-dr-debanjana-das">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./cover-featured.png" alt="Group selfie of Project Pythia Cook-off participants." loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Photo courtesy of Dr Debanjana Das
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h2 id="what-is-project-pythia">
What is Project Pythia?
&lt;a class="header-anchor" href="#what-is-project-pythia">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://projectpythia.org/" target="_blank" rel="noopener" >Project Pythia&lt;/a> is the education working group for
&lt;a href="https://pangeo.io/index.html" target="_blank" rel="noopener" >Pangeo&lt;/a>, a community platform for Big Data geoscience in which 2i2c operates a cloud hub. The core aim of Project Pythia is to spearhead the creation and curation of community-driven, open-source documentation, in the form of &amp;ldquo;cookbooks&amp;rdquo;, to enable the adoption of &lt;em>open&lt;/em>, &lt;em>scalable&lt;/em> and &lt;em>reproducible&lt;/em> workflows for geoscientists.&lt;/p>
&lt;h2 id="what-did-2i2c-do">
What did 2i2c do?
&lt;a class="header-anchor" href="#what-did-2i2c-do">#&lt;/a>
&lt;/h2>&lt;p>Jenny, James and Angus from the 2i2c team participated in the annual
&lt;a href="https://projectpythia.org/pythia-cookoff-2024/" target="_blank" rel="noopener" >Project Pythia Cook-off 2024&lt;/a>, a hackathon where cookbook authors and collaborators can spend dedicated time on creating and maintaining their content using
&lt;a href="https://jupyterbook.org/en/stable/intro.html" target="_blank" rel="noopener" >Jupyter Book&lt;/a> and deploying their cookbooks with GitHub actions.&lt;/p>
&lt;p>2i2c teamed up with the infrastructure breakout group during the hackathon, led by Katelyn FitzGerald (
&lt;a href="https://2i2c.org/collaborators/pythia/" >UCAR&lt;/a>) and Kevin Tyle (
&lt;a href="https://2i2c.org/collaborators/pythia/" >University at Albany&lt;/a>), and members of the
&lt;a href="https://curvenote.com" target="_blank" rel="noopener" >Curvenote&lt;/a> team also joined the group.&lt;/p>
&lt;h2 id="day-1">
Day 1
&lt;a class="header-anchor" href="#day-1">#&lt;/a>
&lt;/h2>&lt;p>2i2c deployed and demonstrated a dedicated BinderHub service for Project Pythia that allowed hackathon participants to &amp;ldquo;self-serve&amp;rdquo; images of their software environment, which were specified by including a list of packages in an &lt;code>environment.yml&lt;/code> file placed in their GitHub cookbook repository. Participants could then pull the image from a container registry into their 2i2c hub (or indeed, any other JupyterHub server) to share and reproduce their computational environments with ease.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Screenshot of Project Pythia BinderHub service" srcset="
/blog/project-pythia-cookoff/binder_huace4be54dd679dccbefe8a204243ae9f_316548_df8a60e24fed7ae98d7c9debdacd84cb.webp 400w,
/blog/project-pythia-cookoff/binder_huace4be54dd679dccbefe8a204243ae9f_316548_d4c17b4ebb63b573d14775841212814c.webp 760w,
/blog/project-pythia-cookoff/binder_huace4be54dd679dccbefe8a204243ae9f_316548_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/project-pythia-cookoff/binder_huace4be54dd679dccbefe8a204243ae9f_316548_df8a60e24fed7ae98d7c9debdacd84cb.webp"
width="760"
height="498"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="day-2">
Day 2
&lt;a class="header-anchor" href="#day-2">#&lt;/a>
&lt;/h2>&lt;p>During the first half of the day, we quickly identified a number of issues that were proving to be a maintenance headache for the Project Pythia infrastructure group:&lt;/p>
&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> Configuration files for each cookbook were difficult to update at scale. Project Pythia currently have a gallery of over 30 cookbooks!&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Changes to Sphinx-based themes inherited from upstream were prone to breaking custom Project Pythia branding downstream.&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Executable content was not able to run on the Project Pythia&amp;rsquo;s dedicated BinderHub hosted on
&lt;a href="https://jetstream-cloud.org/index.html" target="_blank" rel="noopener" >JetStream2&lt;/a> (operated by NSF).&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Cookbooks frequently cross-referenced materials from other cookbooks to build upon pre-existing knowledge, but this was not easy to author and the reader experience was not as smooth as it could be.&lt;/li>
&lt;/ul>
&lt;p>Following the announcement that
&lt;a href="https://2i2c.org/blog/project-pythia-cookoff/../myst-jupyter-book/index" >Jupyter Book 2.0 will use MyST&lt;/a> last month, Rowan (Curvenote) and Angus (2i2c) delivered a compelling demonstration of the
&lt;a href="https://mystmd.org/" target="_blank" rel="noopener" >MyST&lt;/a> ecosystem centered around modern web-first technologies (JavaScript/TypeScript) that offers improved interactivity and accessibility.&lt;/p>
&lt;p>In the second half of the day, we decided to use the hackathon to explore migrating the Pythia cookbooks from using a Sphinx-based to a MyST-based document structure and engine. Within one afternoon, the group migrated four cookbooks to use MyST MD&lt;/p>
&lt;ol>
&lt;li>
&lt;a href="https://projectpythia-mystmd.github.io/pythia-foundations/" target="_blank" rel="noopener" >Pythia Foundations&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://projectpythia-mystmd.github.io/HRRR-AWS-cookbook/" target="_blank" rel="noopener" >High Resolution Rapid Refresh on AWS&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://projectpythia-mystmd.github.io/radar-cookbook/" target="_blank" rel="noopener" >Radar Cookbook&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://projectpythia-mystmd.github.io/advanced-viz-cookbook/" target="_blank" rel="noopener" >Advanced Visualization&lt;/a>.&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Screenshot of a side by side comparison of the Sphinx (left) and MyST (right) based cookbook." srcset="
/blog/project-pythia-cookoff/side-by-side_hu9cd3b350a3f864d97093bd955d197fa3_1447042_509dac579014377108a7eefe4a851c99.webp 400w,
/blog/project-pythia-cookoff/side-by-side_hu9cd3b350a3f864d97093bd955d197fa3_1447042_f00d1b26e9d5356ac678b757badb0a71.webp 760w,
/blog/project-pythia-cookoff/side-by-side_hu9cd3b350a3f864d97093bd955d197fa3_1447042_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/project-pythia-cookoff/side-by-side_hu9cd3b350a3f864d97093bd955d197fa3_1447042_509dac579014377108a7eefe4a851c99.webp"
width="760"
height="438"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>This moment was palpably exciting! It was evident that MyST MD supported backwards compatible content out of the box, which alleviated fears of sunk cost into existing Sphinx-based cookbooks. The migration workflow was as simple as executing the following commands&lt;/p>
&lt;p>&lt;code>conda install mystmd&lt;/code>&lt;/p>
&lt;p>&lt;code>myst&lt;/code>.&lt;/p>
&lt;h2 id="day-3">
Day 3
&lt;a class="header-anchor" href="#day-3">#&lt;/a>
&lt;/h2>&lt;p>We spent this day tackling support for managing a gallery of Project Pythia cookbooks at scale. See the
&lt;a href="https://executablebooks.org/en/latest/blog/2024-06-14-project-pythia-mystmd/" target="_blank" rel="noopener" >Executable Books blog post&lt;/a> for technical details on how we&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://github.com/projectpythia-mystmd/pythia-config" target="_blank" rel="noopener" >Centralized configuration&lt;/a>&lt;/li>
&lt;li>Prototyped a
&lt;a href="https://projectpythia-mystmd.github.io/" target="_blank" rel="noopener" >gallery&lt;/a> plugin in Python&lt;/li>
&lt;li>Fixed a number of bugs related to integrated computation with
&lt;a href="https://mystmd.org/guide/integrating-jupyter#connecting-to-a-binder" target="_blank" rel="noopener" >Binder&lt;/a> and
&lt;a href="https://mystmd.org/guide/integrating-jupyter#jupyterlite" target="_blank" rel="noopener" >JupyterLite&lt;/a>&lt;/li>
&lt;li>Embraced the referencing and reuse of content with
&lt;a href="https://mystmd.org/guide/external-references#tbl-syntax-xref" target="_blank" rel="noopener" >simple markdown syntax for hover-references&lt;/a>.&lt;/li>
&lt;/ul>
&lt;video mute autoplay loop >
&lt;source src="https://2i2c.org/blog/project-pythia-cookoff/hover-ref.mp4" type="video/mp4">
&lt;/video>
&lt;h2 id="day-4">
Day 4
&lt;a class="header-anchor" href="#day-4">#&lt;/a>
&lt;/h2>&lt;p>Looking to the future, we spent time reflecting on our experiences and discussing the potential, transformative impact MyST MD tooling could have in the hands of the scientific community at large, including the communities served by 2i2c. Knowledge-sharing based on static figures and PDFs would fall obsolete and give way to a dynamic, web-first approach to sharing interactive narratives backed by compute from a Jupyter server.&lt;/p>
&lt;p>Throughout the course of the hackathon, the rate of iterated development for both end users of the community cookbook and the developers of the open-source tooling was astounding. For example, we were able to quickly expose small bugs (
&lt;a href="https://github.com/executablebooks/mystmd/issues/1297" target="_blank" rel="noopener" >e.g. support for HTML video tags&lt;/a>) in the MyST MD tooling, which were immediately fixed upstream and released within minutes. The feedback loop that connected the user experience with the software tooling was incredibly synergistic, with immediate impact both upstream and downstream that 2i2c hopes to continue replicating across many facets of their operations.&lt;/p>
&lt;p>Beyond the Project Pythia Cook-off, the breakout group will continue conversations around strengthening their community of practice and hopefully advocating for wider adoption of MyST MD amongst the scientific community (say hello to some of our group members at
&lt;a href="https://www.scipy2024.scipy.org/" target="_blank" rel="noopener" >SciPy 2024&lt;/a> in July!).&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/pythia/" >University at Albany&lt;/a> (NSF award 2324302): Led the funding acquisition, helped organize and facilitate the event&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/pythia/" >UCAR&lt;/a> (NSF award 2324303): Led the planning and logistics for the event&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> for organizing this workshop.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book&lt;/a> for providing development and collaboration at this workshop.&lt;/li>
&lt;li>2i2c / Code for Science and Society (NSF award 2324304): Provided tailored compute services and on-site support&lt;/li>
&lt;li>
&lt;a href="https://curvenote.com" target="_blank" rel="noopener" >Curvenote&lt;/a>: Contributed engineering cycles to MyST MD development.&lt;/li>
&lt;/ul></description></item><item><title>Towards scalable and sustainable networks of community hubs</title><link>https://2i2c.org/blog/funding-community-networks/</link><pubDate>Tue, 18 Jun 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/funding-community-networks/</guid><description>&lt;p>Over the past several years, 2i2c has built a platform for serving community-centric hubs that provide a digital home for workflows in creating and sharing knowledge.
See
&lt;a href="https://2i2c.org/report-czi-2021" target="_blank" rel="noopener" >our three-year retrospective&lt;/a> for a report about the growth and impact this service has had.&lt;/p>
&lt;p>During that time, we&amp;rsquo;ve experimented with several models for funding and sustaining this infrastructure.
We&amp;rsquo;ve tried everything from direct cost-recovery from individual communities, to institutional contracts that cover several hubs, to grant-based models that fund many communities at the same time.&lt;/p>
&lt;p>There are pros and cons associated with each, and we believe that a combination of all of them is important for a long-term service sustainability model for 2i2c.
However, with this post we&amp;rsquo;d like to share the community funding model that strikes the right balance between short-term sustainability and scalability.&lt;/p>
&lt;p>In short: 2i2c aims to serve &lt;strong>networks of communities&lt;/strong> that are joined by a domain or workflow, and &lt;strong>fund the network at once&lt;/strong> rather than through one-on-one contracts.&lt;/p>
&lt;figure id="figure-a-model-of-the-funding-and-service-relationships-we-aim-to-build">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="A model of the funding and service relationships we aim to build." srcset="
/blog/funding-community-networks/funding-diagram_hu03104e3329f60536c0d9cac31ab009cf_113717_75288fec891167d72970cf5d6c05681d.webp 400w,
/blog/funding-community-networks/funding-diagram_hu03104e3329f60536c0d9cac31ab009cf_113717_a4a200a963dac9b7889f9db6602dfb18.webp 760w,
/blog/funding-community-networks/funding-diagram_hu03104e3329f60536c0d9cac31ab009cf_113717_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/funding-community-networks/funding-diagram_hu03104e3329f60536c0d9cac31ab009cf_113717_75288fec891167d72970cf5d6c05681d.webp"
width="760"
height="357"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
A model of the funding and service relationships we aim to build.
&lt;/figcaption>&lt;/figure>
&lt;p>We believe that this model strikes a balance between &amp;ldquo;scalable and very simple hubs&amp;rdquo; (which require a lot of administrative toil) and &amp;ldquo;fully bespoke hubs&amp;rdquo; (which are expensive and unscalable).
By using a single funding contract to serve many communities, we can reduce the amount of sales and contracting toil for each community.
This will let us raise funds more quickly, and focus more of our time on delivering service.&lt;/p>
&lt;h2 id="we-are-seeking-community-leaders-to-collaborate">
We are seeking community leaders to collaborate
&lt;a class="header-anchor" href="#we-are-seeking-community-leaders-to-collaborate">#&lt;/a>
&lt;/h2>&lt;p>If you&amp;rsquo;re part of one or more communities that would benefit from cloud infrastructure for creating and sharing knowledge, and believe a network like this would benefit you, please reach out!
We are seeking leaders collaborate in designing service for networks like the ones described above, and identifying potential funding sources for it.&lt;/p>
&lt;p>If you&amp;rsquo;re interested in collaborating on this, send an e-mail to
&lt;a href="https://2i2c.org/blog/funding-community-networks/mailto:partnerships@2i2c.org" >&lt;code>partnerships@2i2c.org&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;p>You can find more information about this fundraising and service strategy in
&lt;a href="https://compass.2i2c.org/partnerships/fundraising/" target="_blank" rel="noopener" >our Team Compass documentation&lt;/a>.&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by a grant from
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Low storage alerting for the UToronto cluster</title><link>https://2i2c.org/blog/utoronto-storage-monitoring/</link><pubDate>Fri, 14 Jun 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/utoronto-storage-monitoring/</guid><description>&lt;p>
&lt;figure id="figure-the-utoronto-hub-landing-page">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./cover-featured.png" alt="The UToronto hub landing page" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The UToronto hub landing page
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>2i2c has operated The University of Toronto hub since 2021 and this hub supports over 6000 educators and learners in a day! With a community of this size, file storage can quickly grow out of control and cause issues.&lt;/p>
&lt;p>The 2i2c engineering team have implemented a
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/3320" target="_blank" rel="noopener" >low storage alerting system&lt;/a> for Microsoft Azure, so that they can pre-emptively take remedial action before the filesystem is about to run out of diskspace.&lt;/p>
&lt;p>Great job team 🚀&lt;/p>
&lt;p>
&lt;figure id="figure-utoronto-hub-usage">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="UToronto hub usage" srcset="
/blog/utoronto-storage-monitoring/usage_hu6ed2c2eb2e5ce90c08322c45dfdcb7ee_34488_b1f40ae663fa914ef485f5f6c4fa0916.webp 400w,
/blog/utoronto-storage-monitoring/usage_hu6ed2c2eb2e5ce90c08322c45dfdcb7ee_34488_7767ad069a24cee752376284042add84.webp 760w,
/blog/utoronto-storage-monitoring/usage_hu6ed2c2eb2e5ce90c08322c45dfdcb7ee_34488_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/utoronto-storage-monitoring/usage_hu6ed2c2eb2e5ce90c08322c45dfdcb7ee_34488_b1f40ae663fa914ef485f5f6c4fa0916.webp"
width="756"
height="500"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
UToronto hub usage
&lt;/figcaption>&lt;/figure>
&lt;/p></description></item><item><title>Howard Hughes Medical Institute publishes preprint on Spyglass, a framework for reproducible and shareable neuroscience research</title><link>https://2i2c.org/blog/hhmi-spyglass/</link><pubDate>Tue, 21 May 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/hhmi-spyglass/</guid><description>&lt;p>
&lt;figure id="figure-spyglasshttpsgithubcomlorenfranklabspyglass-landing-page">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Spyglass landing page" srcset="
/blog/hhmi-spyglass/featured_hu9bbdd91483aa7d8a05b53d4fefa551f9_403364_4662f31a035cb3116c48097b09e1331d.webp 400w,
/blog/hhmi-spyglass/featured_hu9bbdd91483aa7d8a05b53d4fefa551f9_403364_3c6468acdb2ef24c0c8f2dda2d6ae2c8.webp 760w,
/blog/hhmi-spyglass/featured_hu9bbdd91483aa7d8a05b53d4fefa551f9_403364_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/hhmi-spyglass/featured_hu9bbdd91483aa7d8a05b53d4fefa551f9_403364_4662f31a035cb3116c48097b09e1331d.webp"
width="760"
height="423"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
&lt;a href="https://github.com/LorenFrankLab/spyglass" target="_blank" rel="noopener" >Spyglass&lt;/a> landing page
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://github.com/LorenFrankLab/spyglass" target="_blank" rel="noopener" >Spyglass&lt;/a> is a framework for reproducible and shareable neuroscience research produced by
&lt;a href="https://github.com/LorenFrankLab" target="_blank" rel="noopener" >Loren Frank’s lab&lt;/a> at the University of California, San Francisco. They recently released a
&lt;a href="https://www.biorxiv.org/content/10.1101/2024.01.25.577295v4.full.pdf&amp;#43;html" target="_blank" rel="noopener" >preprint&lt;/a> about their toolbox, and are using a 2i2c hub to provide accessible interactive cloud environments that demonstrate its functionality and helps researchers get started.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/hhmi/" >HHMI&lt;/a> for funding and collaborating on this work.&lt;/li>
&lt;/ul></description></item><item><title>Jupyter Book 2.0 will use MyST</title><link>https://2i2c.org/blog/myst-jupyter-book/</link><pubDate>Tue, 21 May 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/myst-jupyter-book/</guid><description>&lt;p>See
&lt;a href="https://executablebooks.org/en/latest/blog/2024-05-20-jupyter-book-myst/" target="_blank" rel="noopener" >the Executable Books blog&lt;/a> for a post on the future directions of the Jupyter Book project, which will be built on top of the
&lt;a href="https://mystmd.org" target="_blank" rel="noopener" >MyST Markdown engine&lt;/a>.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>This post relates to our ongoing collaboration with the
&lt;a href="https://2i2c.org/collaborators/jupyter-book/" >Jupyter Book&lt;/a> project.&lt;/li>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/pythia/" >Project Pythia&lt;/a> for funding part of our work on Jupyter Book.&lt;/li>
&lt;/ul></description></item><item><title>Researchers at LEAP-Pangeo investigate overlooked sub-grid air-sea heat flux in climate models</title><link>https://2i2c.org/blog/leap-pangeo-paper/</link><pubDate>Tue, 21 May 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/leap-pangeo-paper/</guid><description>&lt;p>
&lt;figure id="figure-figure-from-the-preprinthttpsdoiorg1031223x5wq47-showing-large-and-small-scale-air-sea-fluxes-are-separated-by-julius-busecke-et-al-licensed-under-cc-by-40httpcreativecommonsorglicensesby40">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Figure from the preprint showing large and small scale air-sea fluxes are separated" srcset="
/blog/leap-pangeo-paper/cover-featured_hu6edb8577905cfaa5c2fc46afdd58c36d_413101_25f661e46a188a929e897b02fefa0cec.webp 400w,
/blog/leap-pangeo-paper/cover-featured_hu6edb8577905cfaa5c2fc46afdd58c36d_413101_9415a82d3fdc1acbd0d9fedb1275e252.webp 760w,
/blog/leap-pangeo-paper/cover-featured_hu6edb8577905cfaa5c2fc46afdd58c36d_413101_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/leap-pangeo-paper/cover-featured_hu6edb8577905cfaa5c2fc46afdd58c36d_413101_25f661e46a188a929e897b02fefa0cec.webp"
width="760"
height="328"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Figure from the
&lt;a href="https://doi.org/10.31223/X5WQ47" target="_blank" rel="noopener" >preprint&lt;/a> showing large and small scale air-sea fluxes are separated. By Julius Busecke &lt;em>et al.&lt;/em>, licensed under
&lt;a href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener" >CC BY 4.0&lt;/a>
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>Julius Busecke &lt;em>et al.&lt;/em> of the
&lt;a href="https://leap-stc.github.io/intro.html" target="_blank" rel="noopener" >LEAP-Pangeo&lt;/a>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> hub, have recently published a preprint&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> that investigates &amp;ldquo;The Overlooked Sub-Grid Air-Sea Flux in Climate Models&amp;rdquo; using 2i2c infrastructure.&lt;/p>
&lt;p>See Julius&amp;rsquo;
&lt;a href="https://x.com/JuliusBusecke/status/1792930908900630735" target="_blank" rel="noopener" >social media post&lt;/a> for a more bite-sized outline of the work done.&lt;/p>
&lt;p>Well done all! 🎉&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>This research was conducted using the
&lt;a href="https://2i2c.org/collaborators/pangeo/" >Pangeo&lt;/a> ecosystem and infrastructure provided by 2i2c.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>NSF Science and Technology Center (STC) Learning the Earth with Artificial intelligence and Physics (LEAP) (Award # 2019625)&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>
&lt;a href="https://doi.org/10.31223/X5WQ47" target="_blank" rel="noopener" >doi.org/10.31223/X5WQ47&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>An update to 2i2c's value proposition</title><link>https://2i2c.org/blog/value-proposition/</link><pubDate>Mon, 06 May 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/value-proposition/</guid><description>&lt;p>2i2c recently finished
&lt;a href="https://2i2c.org/report-czi-2021" target="_blank" rel="noopener" >it&amp;rsquo;s three year retrospective&lt;/a> after closing out its original seed grant.
As part of this process, we&amp;rsquo;re revisiting our organizational strategy, structure, and overall plan, in order to incorporate the learning that we&amp;rsquo;ve done over our first three years.&lt;/p>
&lt;p>Our &lt;strong>value proposition&lt;/strong> is a key framing for 2i2c&amp;rsquo;s intended impact, key stakeholders, and platform strategy.
We recently completed a team exercise to refine this statement for 2i2c, and are excited to share it with you below:&lt;/p>
&lt;style>
.fancy-title {
padding-left: 1rem;
border-left: .25rem solid #1d4ef5;
margin-bottom: 1rem;
}
.fancy-title-title {
font-size: 1.5rem;
margin-bottom: .5rem;
font-weight: bold;
}
.fancy-title-subtitle {
font-size: 1rem;
font-style: italic;
}
&lt;/style>
&lt;div class="fancy-title">
&lt;p class="fancy-title-title">
A global network of community hubs for interactive learning and discovery
&lt;/p>
&lt;p class="fancy-title-subtitle">
Our interactive computing platform gives your community a digital home to create and share knowledge, and a global network of communities to learn from.
&lt;/p>
&lt;/div>
&lt;p>This is an exciting direction that leans into and builds upon the way we&amp;rsquo;ve described our service so far.
It recognizes that the value in our service doesn&amp;rsquo;t end with simple access to an interactive computing environment, but lies in how that environment&amp;rsquo;s tools empower a community to create and share knowledge with one another.&lt;/p>
&lt;p>We believe that this is an exciting direction to build towards, because it is based in the value of the collection of communities we serve, and the way that this network can be greater than the sum of its parts.
We&amp;rsquo;re excited to lean into this direction in how we shape our platform, what open source contributions we make, and where we aim to have impact in the coming years.&lt;/p>
&lt;p>To begin, we&amp;rsquo;ve interwoven some ideas from this value proposition into 2i2c.org, and the way that we describe our service.
We&amp;rsquo;d love feedback from anyone who has an idea, a critique, or &amp;ldquo;yes, and&amp;rdquo; to share.&lt;/p>
&lt;h2 id="a-recent-talk-with-this-value-proposition">
A recent talk with this value proposition
&lt;a class="header-anchor" href="#a-recent-talk-with-this-value-proposition">#&lt;/a>
&lt;/h2>&lt;p>As part of this work, 2i2c&amp;rsquo;s Executive Director,
&lt;a href="https://2i2c.org/content/authors/chris-holdgraf/" >Chris Holdgraf&lt;/a>, gave a talk about 2i2c to the
&lt;a href="https://incentivizingopen.org" target="_blank" rel="noopener" >Incentivizing Open and Collaborative Research&lt;/a> (ICOR) community. Here are some links in case others are interested:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://docs.google.com/presentation/d/1C-TNSI2h0181y6-z5tL9AWSRsWp9IfZqCDtcIZEs1MM/edit?usp=sharing" target="_blank" rel="noopener" >Slides for viewing&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://incentivizingopen.org/2024/05/data-sharing-and-analysis-in-collaborative-open-research-environments/" target="_blank" rel="noopener" >More information for the talk&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://vimeo.com/944769875#t=400s" target="_blank" rel="noopener" >Video link&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Here&amp;rsquo;s the video below for quick reference:&lt;/p>
&lt;iframe src="https://player.vimeo.com/video/944769875#t=400s?h=e0f92e7926" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen>&lt;/iframe>
&lt;p>&lt;a href="https://vimeo.com/944769875">Data Sharing and Analysis in Collaborative Open Research Environments&lt;/a> from &lt;a href="https://vimeo.com/user219434759">Michael Markie&lt;/a> on &lt;a href="https://vimeo.com">Vimeo&lt;/a>.&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by a grant from
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a> and fees from
&lt;a href="https://2i2c.org/members/" >our Member Communities&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Improvements to our team's planning and delivery</title><link>https://2i2c.org/blog/delivery-improvements/</link><pubDate>Mon, 15 Apr 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/delivery-improvements/</guid><description>&lt;p>&lt;em>This is a follow-up to
&lt;a href="https://2i2c.org/blog/delivery-improvements/../../2023/organizational-report" >our 2023 report of organizational strengths and weaknesses&lt;/a>, describing some improvements we&amp;rsquo;ve made on our team&amp;rsquo;s coordination and delivery&lt;/em>.&lt;/p>
&lt;p>In 2023, we
&lt;a href="https://2i2c.org/blog/delivery-improvements/../../2023/organizational-report" >released a report describing our organizational strengths and weaknesses&lt;/a>.
This uncovered a key challenge for our team: &lt;strong>improving our coordination and delivery&lt;/strong>.
Over the previous two years, our service had grown significantly in its scope and complexity.
We were working on more than 7 active grants and were serving more than 70 active communities with around 7,000 monthly active users.&lt;/p>
&lt;p>This was taxing our small team, and we found ourselves struggling to efficiently deliver on our work.
For example, a
&lt;a href="https://2i2c.org/blog/delivery-improvements/../../2024/jupyterhub-binderhub-gesis" >collaboration with GESIS to bring image building functionality to JupyterHub&lt;/a> took longer than we wished, and we felt that our planning and execution was not transparent enough to their team. In addition, in
&lt;a href="https://catalystproject.cloud" target="_blank" rel="noopener" >a collaboration to serve communities in Latin America and Africa&lt;/a> we felt that 2i2c was not responsive enough to onboarding and deploying infrastructure for new communities.&lt;/p>
&lt;h2 id="steps-weve-taken-to-improve-delivery">
Steps we&amp;rsquo;ve taken to improve delivery
&lt;a class="header-anchor" href="#steps-weve-taken-to-improve-delivery">#&lt;/a>
&lt;/h2>&lt;p>At the beginning of 2024, we hired
&lt;a href="https://2i2c.org/jobs/2023/delivery-manager/" >our first Delivery Manager and Chief of Staff role&lt;/a> as well as
&lt;a href="https://2i2c.org/jobs/2023/product-lead/" >our first Product Lead role&lt;/a>.
Both of these roles are meant to develop systems and team practices that improve our planning and delivery.&lt;/p>
&lt;p>In Quarter 1 of 2024, we designed and initiated an organizational transformation with the following goals:&lt;/p>
&lt;ul>
&lt;li>Provide clarity about our overall organizational goals and strategy.&lt;/li>
&lt;li>Define our near-term goals and major projects that drive our work.&lt;/li>
&lt;li>Define and prioritize the major work items that feed into these goals.&lt;/li>
&lt;li>Break this major work items into actionable items that our team can work on from day to day.&lt;/li>
&lt;li>Provide visibility for all of this information across the entire organization.&lt;/li>
&lt;/ul>
&lt;p>Below is a brief description of the major changes that we&amp;rsquo;ve made.
These are still a work in progress, and organizational transformation takes months, if not years, but we hope that this provides a useful snapshot in time as we kick off this process.&lt;/p>
&lt;h3 id="our-system-of-work">
Our system of work
&lt;a class="header-anchor" href="#our-system-of-work">#&lt;/a>
&lt;/h3>&lt;p>Our team-wide system of work can be found in the Team Compass at the link below:&lt;/p>
&lt;p>
&lt;a href="https://compass.2i2c.org/cross-functional/workflow/" target="_blank" rel="noopener" >compass.2i2c.org/cross-functional/workflow/&lt;/a>&lt;/p>
&lt;p>This system of work attempts to link our strategic goals with concrete chunks of work to deliver.
You can see an overview of this system below:&lt;/p>
&lt;figure id="figure-our-work-system-shows-how-initiatives-are-made-up-of-lists-of-actions-that-accomplish-them-these-actions-are-distributed-across-our-teams-operational-boards-for-delivery">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Our work system shows how initiatives are made up of lists of actions that accomplish them. These actions are distributed across our team&amp;#39;s operational boards for delivery."
src="https://2i2c.org/blog/delivery-improvements/system.svg"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Our work system shows how initiatives are made up of lists of actions that accomplish them. These actions are distributed across our team&amp;rsquo;s operational boards for delivery.
&lt;/figcaption>&lt;/figure>
&lt;p>It is roughly broken down into these major areas:&lt;/p>
&lt;p>&lt;strong>Our value proposition&lt;/strong>: Our system of delivery starts with a value proposition.
This is a north-star statement for the value that 2i2c aims to provide to our communities in order to achieve our mission.
It is a guiding principle for where we prioritize our time and improve our service.&lt;/p>
&lt;p>While updating our delivery model, we decided it was time to update the value proposition we&amp;rsquo;d been informally using.
We&amp;rsquo;re in the process of &lt;em>validating this value proposition with communities&lt;/em>, and will share a draft for public comment soon!&lt;/p>
&lt;p>&lt;strong>Strategic goals and major projects&lt;/strong>: Next we define strategic goals that describe the most important progress we must make as an organization.
This considers our current capabilities and challenges, as well as the major projects that we&amp;rsquo;re already committed to (like grants).
Our initiatives (described below) should each represent progress towards one or more of our goals and major projects.&lt;/p>
&lt;p>&lt;strong>Strategic initiatives&lt;/strong>: These are major thrusts of work that represent progress towards our goals.
They range in time from weeks to months, and generally require coordination and action across each of 2i2c&amp;rsquo;s functional areas.
Initiatives exist in a dedicated board, where we shape and scope them with enough information to understand them and prioritize.
Once an initiative is in progress, it begins driving work on a two-week planning cycle.
All in-progress initiatives should make up a significant percentage of 2i2c&amp;rsquo;s total work allocation.&lt;/p>
&lt;p>&lt;strong>Operational boards&lt;/strong>: Operational boards are used to track our day-to-day workstreams.
We organize into two-week sprints, with a collection of work pulled into each sprint according to in-progress initiatives and the other types of reactive and operational work on our plate (for example, responding to support tickets is reactive work).
Within each initiative, we coordinate across our teams in order to understand the next steps needed and who is responsible for doing it.
This helps teams plan the work for their next iteration.&lt;/p>
&lt;p>This system is very much still a work in progress, and we&amp;rsquo;ve already identified a number of ways that we&amp;rsquo;d like to improve it moving forward.
For example, we&amp;rsquo;d like to find more efficient ways of coordinating across our team, and encouraging team members to own their own work.&lt;/p>
&lt;h3 id="changes-to-our-team-culture">
Changes to our team culture
&lt;a class="header-anchor" href="#changes-to-our-team-culture">#&lt;/a>
&lt;/h3>&lt;p>In addition to our system around planning work, we&amp;rsquo;ve also identified a number of ways that we can improve our team&amp;rsquo;s culture related to work.
As a distributed organization, one of our biggest challenges has been the additional friction that comes with communicating across many time zones.
It&amp;rsquo;s much harder to solve a problem or get help when responses come with long gaps of time.&lt;/p>
&lt;p>As a result, we&amp;rsquo;ve defined several practices that will help our team members grow their autonomy and independence, while still moving towards the same targets and goals.
This is ongoing work that we aim to continue developing over the next few months.&lt;/p>
&lt;p>&lt;strong>Professional growth&lt;/strong>.
First, we&amp;rsquo;ve started an audit of 2i2c&amp;rsquo;s organizational roles and the responsibilities and the pathways for growth with each of them.
This began with our engineering team, but will continue with other areas of the organization as well.
We believe that defining professional growth trajectories will help identify the gaps in our team&amp;rsquo;s skills that make it more difficult to act efficiently and independently.&lt;/p>
&lt;p>&lt;strong>Giving and receiving feedback&lt;/strong>.
We&amp;rsquo;ve defined team practices around giving feedback, and are encouraging a team culture of regular and constructive feedback to one another.
We know that this will be a long-term investment in team practices, and we believe that any team (especially a distributed one) must be able to rely on its team members to help one another grow.
We&amp;rsquo;ve begun this effort by
&lt;a href="https://compass.2i2c.org/operations/team-practices/feedback/" target="_blank" rel="noopener" >creating a guide to giving feedback for 2i2c&lt;/a> which we hope will be useful for others as well.&lt;/p>
&lt;p>&lt;strong>Decision making&lt;/strong>.
We&amp;rsquo;ve defined a
&lt;a href="https://compass.2i2c.org/operations/governance/" target="_blank" rel="noopener" >set of principles around decision making at 2i2c&lt;/a> that encourage more autonomy and creativity.
In a knowledge-driven field such as ours, it is important that team members have the freedom to be creative and take risks, and that we design systems that are resilient to mistakes.
We aim to make mistakes &lt;em>Safe to Fail&lt;/em> to encourage creativity and learning while de-risking major negative consequences.
This document is a first step towards improving our team-wide practices at taking more initiative and action.&lt;/p>
&lt;p>&lt;strong>Iterative delivery and process improvement&lt;/strong>.
Across each level of the organisation, we have been experimenting more deliberately with Agile delivery practices. These experiments shape our approach to planning (at both the team and organization-level), visualizing and managing our work streams, and improving our internal product delivery processes. We are agnostic to a specific Agile framework, and have found the most value in blending elements of
&lt;a href="https://asana.com/resources/what-is-kanban" target="_blank" rel="noopener" >Kanban&lt;/a>,
&lt;a href="https://www.agilealliance.org/glossary/scrum/" target="_blank" rel="noopener" >Scrum&lt;/a> and
&lt;a href="https://flightlevels.io" target="_blank" rel="noopener" >Flight levels&lt;/a>. We will continue to experiment with these practices, seeking to find a happy medium for 2i2c. We&amp;rsquo;ll share more on this soon :)&lt;/p>
&lt;p>&lt;strong>Coaching&lt;/strong>.
Some members of our team have also begun benefiting from having regular 1:1 coaching to help their interpersonal development. Our team&amp;rsquo;s coaching support includes work to empower improving self-awareness, overcoming self-limiting challenges and gaining technical leadership mastery.
Coupled with our growing practices around team feedback, we aim to build a culture where team members have both internal and external support to help them grow.&lt;/p>
&lt;div class="alert alert-">
&lt;div>
This work was done in partnership with
&lt;p>&lt;a href="http://www.apriljohnson.io/" target="_blank" rel="noopener" >April Johnson, a Transformation Consultant and Coach&lt;/a>.
If you’re interested in working with April around any of this work we highly recommend doing so!&lt;/p>
&lt;/div>
&lt;/div>
&lt;h3 id="a-continuous-process-of-improvement">
A continuous process of improvement
&lt;a class="header-anchor" href="#a-continuous-process-of-improvement">#&lt;/a>
&lt;/h3>&lt;p>We are still in the early days of this transformation. We hope that these practices will improve both our operational efficiency and also create a more enjoyable work environment where team members are empowered to have impact in the ways that they see best. We&amp;rsquo;re excited to lean into these challenges and grow as a team, because this is how we can grow the impact of 2i2c and deliver more value for the communities that we serve.&lt;/p></description></item><item><title>Security report for jupyter-server-proxy: CVE-2024-28179</title><link>https://2i2c.org/blog/cve-jupyter-server-proxy/</link><pubDate>Tue, 19 Mar 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/cve-jupyter-server-proxy/</guid><description>
&lt;h2 id="what-happened">
What happened?
&lt;a class="header-anchor" href="#what-happened">#&lt;/a>
&lt;/h2>&lt;p>A few weeks ago, the JupyterHub team discovered a security vulnerability in
&lt;a href="https://jupyter-server-proxy.readthedocs.io/en/latest/" target="_blank" rel="noopener" >the &lt;code>jupyter-server-proxy&lt;/code> package&lt;/a> that would allow potential unauthenticated access to a JupyterHub via WebSockets, allowing unauthenticated users to run arbitrary code on the JupyterHub.
&lt;code>jupyter-server-proxy&lt;/code> is used by many communities to provide alternative user interfaces like RStudio and remote desktops.&lt;/p>
&lt;p>This vulnerability was detected by the JupyterHub team, with leadership from 2i2c&amp;rsquo;s engineers. It was resolved through upstream contributions to the JupyterHub project, and we have deployed a fix that mitigates this vulnerability for all the hubs 2i2c manages.&lt;/p>
&lt;h2 id="does-this-impact-my-2i2c-community-hub">
Does this impact my 2i2c community hub?
&lt;a class="header-anchor" href="#does-this-impact-my-2i2c-community-hub">#&lt;/a>
&lt;/h2>&lt;p>We do not believe that any of 2i2c&amp;rsquo;s communities were impacted by this vulnerability, and
&lt;a href="https://github.com/2i2c-org/infrastructure/blob/f86d128a0d045163e72802f6df287a6f46d4b738/helm-charts/basehub/values.yaml#L296" target="_blank" rel="noopener" >a patch&lt;/a> has now been pushed to all community hubs to resolve this issue.&lt;/p>
&lt;p>If your community was vulnerable to this problem, you might experience slightly slower startup latency while we work out a long-term solution.&lt;/p>
&lt;p>Since this is a vulnerability in the docker image used by our communities, we will be reaching out over the next few weeks to put a more permanent fix in place.&lt;/p>
&lt;h2 id="where-can-i-learn-more">
Where can I learn more?
&lt;a class="header-anchor" href="#where-can-i-learn-more">#&lt;/a>
&lt;/h2>&lt;p>See
&lt;a href="https://github.com/jupyterhub/jupyter-server-proxy/security/advisories/GHSA-w3vc-fx9p-wp4v" target="_blank" rel="noopener" >the JupyterHub security advisory for CVE-2024-28179&lt;/a> for more information about the security vulnerability, including details on the mitigation we have put in place to protect our communities.&lt;/p>
&lt;h2 id="conclusion">
Conclusion
&lt;a class="header-anchor" href="#conclusion">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;re grateful that the JupyterHub community was quick to acknowledge, respond, and resolve this security vulnerability after it was brought to their attention.
We&amp;rsquo;re also proud that 2i2c&amp;rsquo;s engineers helped the JupyterHub team throughout the process.&lt;/p>
&lt;p>This allowed our team to resolve the problem before it impacted any of 2i2c&amp;rsquo;s communities.
Because 2i2c community infrastructure is managed in a central location, we were able to resolve this for over 80 communities with a single team rather than expecting each community to learn about and fix this problem on their own.&lt;/p>
&lt;p>We also believe this reflects the healthy upstream relationships that we hope to encourage with our team&amp;rsquo;s
&lt;a href="https://compass.2i2c.org/open-source/" target="_blank" rel="noopener" >Open Source strategy and practices&lt;/a>.
By working with the JupyterHub community and pushing changes upstream, we&amp;rsquo;ve resolved this issue for &lt;em>any&lt;/em> user of &lt;code>jupyter-server-proxy&lt;/code>, not just 2i2c&amp;rsquo;s own ecosystem.
In particular, because of 2i2c&amp;rsquo;s position running hubs for many communities via Kubernetes, we were able to identify a solution that did not require every user image to be updated (as described in section &lt;strong>For JupyterHub admins of Z2JH installations&lt;/strong>).&lt;/p>
&lt;p>We believe that all of these lead to a healthier, safer ecosystem of open source tools ❤️.&lt;/p></description></item><item><title>A three year retrospective report of 2i2c's impact</title><link>https://2i2c.org/blog/report-czi/</link><pubDate>Fri, 01 Mar 2024 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/report-czi/</guid><description>&lt;p>We&amp;rsquo;re pleased to share a three-year retrospective report that was created to close-out 2i2c&amp;rsquo;s original
&lt;a href="https://2i2c.org/blog/czi-core-support/" >seed funding grant provided by the Chan Zuckerberg Initiative&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>See the Zenodo entry here: &lt;a href="https://doi.org/10.5281/zenodo.10790818">&lt;img src="https://zenodo.org/badge/DOI/10.5281/zenodo.10790818.svg" alt="DOI" style="margin:0;display:inline-flex;">&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/report-czi-2021" target="_blank" rel="noopener" >See the MyST website for the report at &lt;code>2i2c.org/report-czi-2021&lt;/code>&lt;/a>.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/report-czi-2021/build/report-c7e3595ff6c09f5cc22cc52b8177cd4c.pdf" target="_blank" rel="noopener" >Download a PDF version generated by MyST here&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>This report was written with the
&lt;a href="https://mystmd.org" target="_blank" rel="noopener" >new MyST Markdown document engine&lt;/a> and shows off some of the functionality that we&amp;rsquo;ve been working on in collaboration with the MyST team.&lt;/p>
&lt;p>We&amp;rsquo;re incredibly grateful for the seed funding that CZI provided to kickstart 2i2c&amp;rsquo;s mission and operations, and excited about more impact to come!&lt;/p></description></item><item><title>Integrating BinderHub with JupyterHub: Empowering users to manage their own environments</title><link>https://2i2c.org/blog/jupyterhub-binderhub-gesis/</link><pubDate>Wed, 03 Jan 2024 16:56:14 -0800</pubDate><guid>https://2i2c.org/blog/jupyterhub-binderhub-gesis/</guid><description>&lt;p>&lt;em>Thanks to
&lt;a href="https://www.gesis.org/en/institute/staff/person/arnim.bleier" target="_blank" rel="noopener" >Arnim Bleier&lt;/a>,
&lt;a href="https://jnywong.github.io/" target="_blank" rel="noopener" >Jenny Wong&lt;/a>,
&lt;a href="https://github.com/GeorgianaElena" target="_blank" rel="noopener" >Georgiana Elena&lt;/a>,
&lt;a href="https://github.com/damianavila" target="_blank" rel="noopener" >Damián Avila&lt;/a>,
&lt;a href="https://colliand.com/" target="_blank" rel="noopener" >Jim Colliander&lt;/a> and
&lt;a href="https://github.com/jmunroe" target="_blank" rel="noopener" >James Munroe&lt;/a> for contributing to this blog post&lt;/em>&lt;/p>
&lt;p>
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >mybinder.org&lt;/a> is a very popular service that allows end users to specify and share the environment (languages, packages, etc) required for their notebooks to run correctly by placing
&lt;a href="https://repo2docker.readthedocs.io/en/latest/config_files.html#config-files" target="_blank" rel="noopener" >configuration files&lt;/a> they are already familiar with (like &lt;code>requirements.txt&lt;/code> or &lt;code>environment.yml&lt;/code>) along with their notebooks. While not without its own set of challenges, this is extremely powerful because it puts control of the &lt;em>environment&lt;/em> in the hands of the people who write the code. They can customize the environment to fit the needs of their code, instead of having to fit their code into the environment that admins have made available.&lt;/p>
&lt;p>But, mybinder.org (and the
&lt;a href="https://github.com/jupyterhub/binderhub/" target="_blank" rel="noopener" >BinderHub&lt;/a> software that powers it) is built for &lt;em>sharing&lt;/em> your work after you are done with it, &lt;em>not&lt;/em> for actively doing work. BinderHubs often do not have persistent storage nor persistent user identity, and UX is centered around &lt;em>ephemeral&lt;/em> interactivity that can be shared with others (via a link), rather than &lt;em>persistent&lt;/em> interactivity that a single user repeatedly comes back to.
&lt;a href="https://jupyter.org/hub" target="_blank" rel="noopener" >JupyterHub&lt;/a> is more commonly used for this kinda workflow, but doesn&amp;rsquo;t currently have the ability for users to easily build their own environments. Admins who are &lt;em>running&lt;/em> the JupyterHub can make
&lt;a href="https://z2jh.jupyter.org/en/stable/jupyterhub/customizing/user-environment.html#using-multiple-profiles-to-let-users-select-their-environment" target="_blank" rel="noopener" >multiple environments&lt;/a> available for users to choose from, but this still puts admins in the critical path for environment customization.&lt;/p>
&lt;p>Our
&lt;a href="https://2i2c.org/blog/gesis-2i2c-collaboration-update/" >collaboration&lt;/a> with
&lt;a href="https://2i2c.org/collaborators/gesis/" >GESIS&lt;/a>,
&lt;a href="https://www.nfdi4datascience.de" target="_blank" rel="noopener" >NFDI4DS&lt;/a>, and
&lt;a href="https://www.cessda.eu" target="_blank" rel="noopener" >CESSDA&lt;/a>, aims to bring this flexibility to JupyterHub directly. We aim to empower users to decide for themselves which applications and dependencies are installed on a per-project basis. Our work enables communities with heterogeneous requirements to share a single Hub. Our approach frees administrators from being overwhelmed by installation requests and transforms the JupyterHub platform into a platform for collaborative computational reproducibility. In this update, we report on our progress and upcoming steps in this project.&lt;/p>
&lt;h2 id="what-does-a-binderhub-do-exactly">
What does a BinderHub do, exactly?
&lt;a class="header-anchor" href="#what-does-a-binderhub-do-exactly">#&lt;/a>
&lt;/h2>&lt;p>It is helpful to understand that BinderHub primarily has 3 responsibilities:&lt;/p>
&lt;ol>
&lt;li>Present a UI to the end user for them to provide details on what to build (this is what you see when you go to mybinder.org)&lt;/li>
&lt;li>Call out to
&lt;a href="https://github.com/jupyterhub/repo2docker" target="_blank" rel="noopener" >repo2docker&lt;/a> in a scalable way to actually &lt;em>build and push&lt;/em> an image containing the environment for the given repository, and show the user logs as this build process happens. This also allows users to debug issues with their build more easily.&lt;/li>
&lt;li>Talk to a JupyterHub instance to launch a user server with the built docker image, and redirect the user to this.&lt;/li>
&lt;/ol>
&lt;p>(2) is really the &lt;em>core&lt;/em> feature of BinderHub, and we settled on figuring out how to make that available to JupyterHub users. It was really important to us that this was also done in a way that can be sustainably used by &lt;em>everyone&lt;/em>, not just 2i2c. This blog post discusses the various improvements to the broad ecosystem of projects in the Jupyter ecosystem to get this done.&lt;/p>
&lt;h2 id="demo">
Demo
&lt;a class="header-anchor" href="#demo">#&lt;/a>
&lt;/h2>&lt;p>But first, a very quick demo of how this looks like right now now!&lt;/p>
&lt;!-- generated from original .mov screen recording with `ffmpeg -i screencast.mov -c:v libx264 screencast.mp4` -->
&lt;p>&lt;video src="./screencast.mp4" autoplay muted controls>&lt;/video>&lt;/p>
&lt;p>This is very much a work in progress, but the basic flow can be seen clearly. Users see a Server Options menu after they log into JupyterHub. They can specify the two primary things that determine the server configuration:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>The resources allocated (RAM, CPU and maybe GPU)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The environment (container image) used, which can be specified in one of 3 ways:&lt;/p>
&lt;p>a. A pre-selected list of environments (container images), provided by the administrators who set up this JupyterHub
b. A blank text box where you can enter any publicly available docker image they want
c. A mybinder.org style way to specify a GitHub repository, which will be then dynamically built into a docker image for the user!&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>So what did we need to do to accomplish this, in a way that&amp;rsquo;s very upstream friendly and usable by everyone (and not just 2i2c)?&lt;/p>
&lt;h2 id="a-standalone-binderhub-service-helm-chart">
A Standalone &lt;code>binderhub-service&lt;/code> helm chart
&lt;a class="header-anchor" href="#a-standalone-binderhub-service-helm-chart">#&lt;/a>
&lt;/h2>&lt;p>The default upstream
&lt;a href="https://github.com/jupyterhub/binderhub/tree/main/helm-chart" target="_blank" rel="noopener" >BinderHub helm chart&lt;/a> &lt;em>includes&lt;/em> a JupyterHub as a dependency, and configures itself to be used primarily in a manner similar to
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >mybinder.org&lt;/a>. As the person who helped make that choice early on, I can tell you why it was made - for convenience! And it &lt;em>was&lt;/em> very convenient, as it allowed us to get mybinder.org going fast. However, it makes it difficult to install a BinderHub service &lt;em>alongside&lt;/em> an existing JupyterHub. To this end, we have created a standalone
&lt;a href="https://github.com/2i2c-org/binderhub-service/" target="_blank" rel="noopener" >BinderHub helm chart&lt;/a>, designed to be installed &lt;em>alongside&lt;/em> an existing JupyterHub, so we can use it &lt;em>purely&lt;/em> to build images. This allows the BinderHub instance to be used as a
&lt;a href="https://jupyterhub.readthedocs.io/en/stable/reference/services.html" target="_blank" rel="noopener" >JupyterHub Service&lt;/a>, which is what we want.&lt;/p>
&lt;p>While this helm chart is currently under the 2i2c GitHub org, the hope is that it can eventually migrate to a
&lt;a href="https://github.com/jupyterhub/team-compass/issues/519" target="_blank" rel="noopener" >jupyterhub-contrib&lt;/a> organization (once it is created), or it can become the upstream helm chart for BinderHub if enough work can be done in BinderHub to allow it to serve use cases like mybinder.org.&lt;/p>
&lt;p>As part of this work, we also added a way for BinderHub to run in
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1647" target="_blank" rel="noopener" >API only mode&lt;/a>, so we can fully turn off the UI &lt;em>and&lt;/em> launching ability of BinderHub. This change decoupled the
&lt;a href="#what-does-a-binderhub-do-exactly" >three responsibilities of BinderHub&lt;/a> we discussed previously, allowing us to bring our own UI and JupyterHub. BinderHub could now be used &lt;em>purely&lt;/em> for its scalable image building features, which is exactly what we want!&lt;/p>
&lt;h2 id="sustainably-extending-kubespawners-profilelist">
Sustainably extending KubeSpawner&amp;rsquo;s &lt;code>profileList&lt;/code>
&lt;a class="header-anchor" href="#sustainably-extending-kubespawners-profilelist">#&lt;/a>
&lt;/h2>&lt;p>We identified KubeSpawner&amp;rsquo;s &lt;code>profileList&lt;/code> feature as the ideal location for UI to dynamically build environments (container images), making it just another &amp;rsquo;environment choice&amp;rsquo; people can choose, along with picking the resources their server needs. From an end-user perspective, it was also the logical place for them to specify a repository to build into an environment, as they could already choose some pre-built environments from here. They can also select other arbitrary resources they want (such as memory, GPU, etc) from here as well. From a maintainer perspective, it helps with long-term maintenance of the JupyterHub projects.&lt;/p>
&lt;p>The implementation of &lt;code>profileList&lt;/code> however, was not easy to extend at this point. So
&lt;a href="https://github.com/jupyterhub/kubespawner/pull/724" target="_blank" rel="noopener" >this PR&lt;/a> improved how easy it was to extend it in more complex ways, without making the implementation in KubeSpawner itself complicated. Even though this had &lt;em>no&lt;/em> visible end-user effects, it was an extremely important step in allowing us to experiment with UI in a &lt;em>sustainable&lt;/em> way without having to rely on upstream. These kinds of changes can sometimes be hard to sell to stakeholders but are extremely important in ensuring a continuous and sustainable relationship with upstream.&lt;/p>
&lt;h2 id="implementing-unlisted_choice-feature-in-kubespawner">
Implementing &lt;code>unlisted_choice&lt;/code> feature in KubeSpawner
&lt;a class="header-anchor" href="#implementing-unlisted_choice-feature-in-kubespawner">#&lt;/a>
&lt;/h2>&lt;p>The profileList feature was built to allow JupyterHub &lt;em>admins&lt;/em> to specify an explicit list of container images the end-user can choose from. It did not have a way for any choice that was &lt;em>not&lt;/em> pre-approved by the admin to be used. We needed this feature since the BinderHub API will build a new docker image for each environment the user wants, and so this can not be chosen from a pre-approved list. We had to safely add this feature to KubeSpawner in such a way that it was generally useful to everyone. Many other communities had been asking for such a feature anyway - the ability to simply &amp;rsquo;type in&amp;rsquo; an image and have that be used.&lt;/p>
&lt;p>
&lt;a href="https://www.earthdata.nasa.gov/esds/veda" target="_blank" rel="noopener" >NASA VEDA&lt;/a> was one such community, so we partnered with
&lt;a href="https://github.com/batpad/" target="_blank" rel="noopener" >Sanjay Bhangar&lt;/a> from
&lt;a href="https://developmentseed.org/" target="_blank" rel="noopener" >Development Seed&lt;/a> (an organization that helps run NASA VEDA) to implement this feature. Engineers from 2i2c contributed heavily to this feature as well, and after &lt;em>several&lt;/em> PRs (
&lt;a href="https://github.com/jupyterhub/kubespawner/pull/735" target="_blank" rel="noopener" >1&lt;/a>,
&lt;a href="https://github.com/jupyterhub/kubespawner/pull/766" target="_blank" rel="noopener" >2&lt;/a>,
&lt;a href="https://github.com/jupyterhub/kubespawner/pull/773" target="_blank" rel="noopener" >3&lt;/a>,
&lt;a href="https://github.com/jupyterhub/kubespawner/pull/774" target="_blank" rel="noopener" >4&lt;/a> and
&lt;a href="https://github.com/jupyterhub/kubespawner/pull/777" target="_blank" rel="noopener" >5&lt;/a>), this feature is now available for everyone to use!&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./screenshot-featured.png" alt="Screenshot of Kubernetes Profiles with Unlisted Choice" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>A key component of doing &lt;em>sustainable&lt;/em> upstream work is that every addition needs to be useful by itself for a broad group of people. This change was very helpful for many communities that wanted to allow their users the freedom to pick whatever image they want to use, regardless of wether they wanted to use dynamic image building or not. The broad interest allowed us to build a coalition with other interested parties, and get the change accepted upstream more easily!&lt;/p>
&lt;h2 id="jupyterhub-fancy-profiles">
&lt;code>jupyterhub-fancy-profiles&lt;/code>
&lt;a class="header-anchor" href="#jupyterhub-fancy-profiles">#&lt;/a>
&lt;/h2>&lt;p>Once we had all these pieces in place, it was time to actually work on the frontend UI that would allow users to build images dynamically and launch them. Since this will replace the &amp;lsquo;profileList&amp;rsquo; feature, it should also allow them to select different resources (RAM, CPU, etc) as needed, as well as type in an existing image if they desire. So it was a full re-implementation of the &lt;code>profileList&lt;/code> frontend.&lt;/p>
&lt;p>This is ongoing now at the
&lt;a href="https://github.com/yuvipanda/jupyterhub-fancy-profiles" target="_blank" rel="noopener" >jupyterhub-fancy-profiles&lt;/a> project. It is a pure frontend web application, using modern frontend tooling (
&lt;a href="https://react.dev/" target="_blank" rel="noopener" >React&lt;/a>,
&lt;a href="https://webpack.js.org/" target="_blank" rel="noopener" >webpack&lt;/a>,
&lt;a href="https://babeljs.io/" target="_blank" rel="noopener" >Babel&lt;/a>, etc) and written in JavaScript. It&amp;rsquo;s gone through a few revisions, but the demo provided earlier in the blog post is in its current state. Because the default profileList implementation is pure HTML / CSS with very &lt;em>minimal&lt;/em> JS, it is limited in what kind of UX it could have. &lt;code>jupyterhub-fancy-profiles&lt;/code> aims to be very helpful &lt;em>even&lt;/em> when dynamic image-building features are not enabled on a JupyterHub. We hope to roll this out to a few JupyterHubs and improve it over time based on feedback.&lt;/p>
&lt;h2 id="jupyterhubbinderhub-clienthttpswwwnpmjscompackagejupyterhubbinderhub-client-npm-package">
&lt;a href="https://www.npmjs.com/package/@jupyterhub/binderhub-client" target="_blank" rel="noopener" >&lt;code>jupyterhub/@binderhub-client&lt;/code>&lt;/a> npm package
&lt;a class="header-anchor" href="#jupyterhubbinderhub-clienthttpswwwnpmjscompackagejupyterhubbinderhub-client-npm-package">#&lt;/a>
&lt;/h2>&lt;p>While building &lt;code>jupyterhub-fancy-profiles&lt;/code>, we wanted to use the &lt;em>same&lt;/em> javascript code used by BinderHub frontend to interact with the BinderHub API, instead of re-implementing it. However, the existing BinderHub JavaScript code was not easily consumable by external projects. We refactored the code, added tests, migrated to use modern JS practices and published the
&lt;a href="https://www.npmjs.com/package/@jupyterhub/binderhub-client" target="_blank" rel="noopener" >&lt;code>jupyterhub/@binderhub-client&lt;/code> NPM package&lt;/a> that can be used not just by &lt;code>jupyerhub-fancy-profiles&lt;/code> but any external project for talking to the BinderHub API.&lt;/p>
&lt;p>This had to be done in such a way that current BinderHub installations (such as mybinder.org) do not break. That took quite a few pull requests:
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1689" target="_blank" rel="noopener" >1&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1693" target="_blank" rel="noopener" >2&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1694" target="_blank" rel="noopener" >3&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1741" target="_blank" rel="noopener" >4&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1742" target="_blank" rel="noopener" >5&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1758" target="_blank" rel="noopener" >6&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1761" target="_blank" rel="noopener" >7&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1771" target="_blank" rel="noopener" >8&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1773" target="_blank" rel="noopener" >9&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1775" target="_blank" rel="noopener" >10&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1778" target="_blank" rel="noopener" >11&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1779" target="_blank" rel="noopener" >12&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1781" target="_blank" rel="noopener" >13&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1782" target="_blank" rel="noopener" >14&lt;/a>,
&lt;a href="https://github.com/jupyterhub/binderhub/pull/1783" target="_blank" rel="noopener" >15&lt;/a>. This refactoring work was very helpful to us, and also appreciated by the broader community.&lt;/p>
&lt;h2 id="defending-against-cryptojacking-with-cryptnono">
Defending against cryptojacking with &lt;code>cryptnono&lt;/code>
&lt;a class="header-anchor" href="#defending-against-cryptojacking-with-cryptnono">#&lt;/a>
&lt;/h2>&lt;p>For Open Science to flourish, we need to allow access to resources without login / paywalls wherever possible. A new menace against this has been
&lt;a href="https://www.interpol.int/en/Crimes/Cybercrime/Cryptojacking" target="_blank" rel="noopener" >cryptojacking&lt;/a> - where attackers use up any and all available free compute to mine cryptocurrencies. This has affected &lt;em>many&lt;/em> folks on the internet, including
&lt;a href="https://www.bleepingcomputer.com/news/security/github-actions-being-actively-abused-to-mine-cryptocurrency-on-github-servers/" target="_blank" rel="noopener" >GitHub Actions&lt;/a> and mybinder.org, the primary public BinderHub installation. mybinder.org has some extra protections against cryptojacking that aren&amp;rsquo;t easily usable elsewhere, and this has unfortunately meant that the demo JupyterHubs we have with these features enabled have been behind a login wall. I personally believe login walls are long term antithetical to open science, and so this was an important problem to solve.&lt;/p>
&lt;p>
&lt;a href="https://github.com/cryptnono/cryptnono" target="_blank" rel="noopener" >cryptnono&lt;/a> is an open source project designed to help fight cryptojacking, and as part of this grant we ported some of this functionality out of mybinder.org specific code into cryptnono, so other deployments may also benefit from it! We also migrated to using the super efficient
&lt;a href="https://ebpf.io/" target="_blank" rel="noopener" >ebpf&lt;/a> Linux Kernel subsystem, allowing for more complex heuristics to catch a much broader range of cryptomining activity. We have been slowly tweaking the config on mybinder.org, and it has proven to be very effective! This will be very helpful for &lt;em>anyone&lt;/em> who wants to provide a JupyterHub (or any other computational service) without a login wall. If you are interested in using cryptnono in this fashion, please
&lt;a href="https://github.com/cryptnono/cryptnono/issues" target="_blank" rel="noopener" >reach out to us&lt;/a> so we can work together!&lt;/p>
&lt;h2 id="explored-pathways-that-were-then-discarded">
Explored pathways that were then discarded
&lt;a class="header-anchor" href="#explored-pathways-that-were-then-discarded">#&lt;/a>
&lt;/h2>&lt;p>List of things that were tried and then decided as not good pathways:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://github.com/consideRatio/repo2docker-service" target="_blank" rel="noopener" >repo2docker-service&lt;/a>, a separate JupyterHub service that could &lt;em>only&lt;/em> build images. As we worked on it, we realized that it was replicating a lot of features that BinderHub already has, so we pivoted to working on BinderHub directly instead.&lt;/li>
&lt;li>Building off of
&lt;a href="https://github.com/plasmabio/tljh-repo2docker" target="_blank" rel="noopener" >tljh-repo2docker&lt;/a>. While this already had a nice UI, it would be hard to port it to run on a distributed Kubernetes environment without it becoming a &amp;lsquo;hard fork&amp;rsquo;.&lt;/li>
&lt;/ul>
&lt;p>While these did slow down the implementation of the project, it has allowed us to be very confident that the methods we have chosen are long-term sustainable.&lt;/p>
&lt;h2 id="want-to-try-this-out">
Want to try this out?
&lt;a class="header-anchor" href="#want-to-try-this-out">#&lt;/a>
&lt;/h2>&lt;p>We have a demo of this running at
&lt;a href="https://imagebuilding-demo.2i2c.cloud" target="_blank" rel="noopener" >imagebuilding-demo.2i2c.cloud&lt;/a>, but unfortunately as we are still fine-tuning &lt;code>cryptnono&lt;/code> config, at this moment it is not open to the public. Please
&lt;a href="https://2i2c.org/blog/jupyterhub-binderhub-gesis/mailto:yuvipanda@2i2c.org" >contact me&lt;/a> with your GitHub account if you want access, and promise to not be a cryptominer and you shall be granted access.&lt;/p>
&lt;p>Want to set this up on your own JupyterHub? There is some
&lt;a href="https://github.com/2i2c-org/binderhub-service/pull/72" target="_blank" rel="noopener" >work in progress&lt;/a> documentation and more is being worked on. Drop a line in the linked pull request and we&amp;rsquo;ll be happy to help. The eventual goal is for &lt;em>anyone&lt;/em> to be able to simply follow documentation and set this up for themselves.&lt;/p>
&lt;p>We also have user facing documentation on using this service on
&lt;a href="https://docs.2i2c.org/user/environment/dynamic-imagebuilding#dynamic-image-building" target="_blank" rel="noopener" >docs.2i2c.org&lt;/a>.&lt;/p>
&lt;h2 id="future-work">
Future work
&lt;a class="header-anchor" href="#future-work">#&lt;/a>
&lt;/h2>&lt;p>This is not complete of course, and there is a lot of future work to be done.&lt;/p>
&lt;ol>
&lt;li>mybinder.org also helps you distribute your &lt;em>content&lt;/em>, not just the environment for your code to run in. Since JupyterHub usually comes with a persistent home directory for the user,
&lt;a href="https://github.com/jupyterhub/nbgitpuller/" target="_blank" rel="noopener" >nbgitpuller&lt;/a> is commonly used for this purpose instead. We should explore ways to integrate nbgitpuller (and other ways to distribute content) in the future.&lt;/li>
&lt;li>More thorough documentation for how you can recreate what is in the demo for yourself in your own JupyterHub installation.&lt;/li>
&lt;li>Better UX for specifying images, including figuring out how to &amp;lsquo;save&amp;rsquo; them for future reuse.&lt;/li>
&lt;li>Better compatibility with mybinder.org, particularly in allowing other sources of environments (not just GitHub, but Zenodo, raw git repositories, etc) and URL compatibility.&lt;/li>
&lt;li>Better authentication workflow between the frontend and the BinderHub API.&lt;/li>
&lt;/ol>
&lt;h2 id="credit">
Credit
&lt;a class="header-anchor" href="#credit">#&lt;/a>
&lt;/h2>&lt;p>All this work would not be possible without a large group of collaborators!&lt;/p>
&lt;ul>
&lt;li>From 2i2c:
&lt;a href="https://github.com/consideRatio" target="_blank" rel="noopener" >Erik Sundell&lt;/a>,
&lt;a href="https://github.com/GeorgianaElena" target="_blank" rel="noopener" >Georgiana Elena&lt;/a>,
&lt;a href="https://words.yuvi.in/" target="_blank" rel="noopener" >Yuvi&lt;/a>,
&lt;a href="https://github.com/jmunroe" target="_blank" rel="noopener" >James Munroe&lt;/a>, and
&lt;a href="https://github.com/damianavila" target="_blank" rel="noopener" >Damián Avila&lt;/a>.&lt;/li>
&lt;li>The
&lt;a href="https://github.com/gesiscss/persistent_BinderHub/" target="_blank" rel="noopener" >persistent BinderHub&lt;/a> project was the direct inspiration for all this work, with particular thanks to
&lt;a href="https://github.com/bitnik" target="_blank" rel="noopener" >Kenan Erdogan&lt;/a>.&lt;/li>
&lt;li>The
&lt;a href="https://github.com/plasmabio/tljh-repo2docker" target="_blank" rel="noopener" >tljh-repo2docker&lt;/a> project, which explores similar ideas in the context of running only on a single node.&lt;/li>
&lt;li>The broad JupyterHub and MyBinder.org community, particularly
&lt;a href="https://github.com/manics" target="_blank" rel="noopener" >Simon Li&lt;/a> and
&lt;a href="https://github.com/minrk/" target="_blank" rel="noopener" >MinRK&lt;/a>.&lt;/li>
&lt;li>Funding generously provided by
&lt;a href="http://gesis.org" target="_blank" rel="noopener" >GESIS&lt;/a> in cooperation with NFDI4DS (project number:
&lt;a href="https://gepris.dfg.de/gepris/projekt/460234259?context=projekt&amp;amp;task=showDetail&amp;amp;id=460234259&amp;amp;" target="_blank" rel="noopener" >460234259&lt;/a>) and
&lt;a href="https://www.cessda.eu" target="_blank" rel="noopener" >CESSDA&lt;/a>.&lt;/li>
&lt;li>
&lt;a href="https://www.gesis.org/en/institute/staff/person/arnim.bleier" target="_blank" rel="noopener" >Arnim Bleier&lt;/a> from GESIS was &lt;em>instrumental&lt;/em> in making this project happen.&lt;/li>
&lt;/ul></description></item><item><title>Digital public goods for Earth system management: U.S. Greenhouse Gas Center launches</title><link>https://2i2c.org/blog/us-ghg-center-launches/</link><pubDate>Tue, 05 Dec 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/us-ghg-center-launches/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>Abstract&lt;/strong>&lt;/p>
&lt;p>The International Interactive Computing Collaboration (
&lt;a href="https://2i2c.org" target="_blank" rel="noopener" >2i2c.org&lt;/a>), working with
&lt;a href="https://www.earthdata.nasa.gov/dashboard/" target="_blank" rel="noopener" >NASA VEDA&lt;/a>,
&lt;a href="https://developmentseed.org/" target="_blank" rel="noopener" >Development Seed&lt;/a> and other partners, operates an interactive computing platform for The U.S. Greenhouse Gas Center. The U.S. GHG Center,
&lt;a href="https://www.nasa.gov/news-release/nasa-partners-launch-us-greenhouse-gas-center-to-share-climate-data/" target="_blank" rel="noopener" >announced yesterday&lt;/a> at the 28th annual United Nations Climate Conference (COP-28) in Dubai, is an interagency collaboration of the
&lt;a href="https://www.epa.gov/" target="_blank" rel="noopener" >Environmental Protection Agency (EPA)&lt;/a>, the
&lt;a href="https://www.nasa.gov/" target="_blank" rel="noopener" >National Aeronautics and Space Administration (NASA)&lt;/a>, the
&lt;a href="https://www.nist.gov/" target="_blank" rel="noopener" >National Institute of Standards and Technology (NIST)&lt;/a>, and the
&lt;a href="https://www.nist.gov/" target="_blank" rel="noopener" >National Ocean and Atmospheric Administration (NOAA)&lt;/a>. This note places the launch of the U.S. GHG Center in a scientific, international, and national context and argues that similar digital public goods are needed for humanity to understand and manage the Earth system.&lt;/p>
&lt;/blockquote>
&lt;h2 id="scientific-context">
Scientific Context
&lt;a class="header-anchor" href="#scientific-context">#&lt;/a>
&lt;/h2>&lt;p>It was controversial in 1827 when Joseph Fourier (the discoverer of the
&lt;a href="https://en.wikipedia.org/wiki/Thermal_conduction#Fourier%27s_law" target="_blank" rel="noopener" >law of heat conduction&lt;/a>) argued &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> that the atmosphere keeps the Earth warm, like a puffy down comforter, but it&amp;rsquo;s not now. Gases in the atmosphere trap heat near Earth. How much heat is trapped depends on the gas mixture. Putting more heat-trapping gases in is like putting a wool blanket on top of the down comforter. Human activity since industrialization is injecting lots more heat-trapping gas into the atmosphere and changing the Earth&amp;rsquo;s climate.&lt;/p>
&lt;p>The science is clear. The up-to-date consensus view of the global scientific community is expressed in the
&lt;a href="https://www.ipcc.ch/assessment-report/ar6/" target="_blank" rel="noopener" >Sixth Assessment Report&lt;/a> of the Intergovernmental Panel on Climate Change (IPCC):&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./featured-image.png" alt="image-10-x33-y350.png" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="international-context">
International Context
&lt;a class="header-anchor" href="#international-context">#&lt;/a>
&lt;/h2>&lt;p>The international community officially recognized human-influenced climate change at the World Climate Conference (WCC-1) &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> in 1979. The
&lt;a href="https://library.wmo.int/viewer/54699/download?file=1979_wcc1-declaration.pdf&amp;amp;type=pdf&amp;amp;navigator=1" target="_blank" rel="noopener" >1979 declaration&lt;/a>is remarkably prescient and detailed. A complex and interconnected collection of scientific and diplomatic activities were catalyzed by WCC-1. Some important milestones from this history are captured in the chart and numbered list below.&lt;/p>
&lt;div class="mermaid">gantt
dateFormat YYYY-MM-DD
title International Climate Change Milestones
section Study
WCC-1 (1979) :crit, done, admin0, 1979-02-12, 1979-02-23
WCP :crit, adminA, 1979-06-01, 2025-12-31
CMIP1: crit, done, adminT, 1995-01-01,1995-12-31
CMIP2: crit, done, adminR, 1997-01-01, 1998-12-31
CMIP2+: crit,done,adminS, 2000-05-09, 2001-12-31
CMIP3 :crit, done, adminP, 2004-10-01, 2006-12-31
CMIP5 :crit, done, adminO, 2008-09-01, 2013-03-15
CMIP6 :crit, done, adminQ, 2014-02-01, 2024-12-31
IPCC :crit, admin1, 1988-12-06, 2025-12-31
IPCC-AR1 :crit, done, adminH, 1990-08-01, 1992-06-30
IPCC-AR2 :crit, done, adminI, 1995-01-01,1995-12-31
IPCC-AR3 :crit,done, adminJ, 2001-01-01, 2001-12-31
IPCC-AR4 :crit, done,adminK, 2007-01-01,2007-12-31
IPCC awarded Nobel Prize :crit, done, adminN, 2007-10-12, 2007-11-12
IPCC-AR5 :crit,done,adminL, 2014-01-01,2014-12-31
IPCC-AR6 :crit,done,adminM,2023-01-01,2023-12-31
section Treaties
Rio Earth Summit (1992) :crit, done, adminC, 1992-06-03, 1992-06-14
UNFCC :crit, admin2, 1994-03-21, 2025-12-31
Berlin (COP-1) :crit, done, adminE, 1995-03-28, 1995-04-07
Byrd-Hagel Resolution :crit, done, adminX, 1997-07-25, 1997-07-30
Kyoto (COP-3) :crit, done, adminD, 1997-12-01, 1997-12-10
Kyoto Protocol :crit, done, admin3, 1997-12-11, 2020-12-31
Paris (COP-21) :crit, done, adminF, 2015-11-30, 2015-12-12
Paris Agreement :crit, adminG, 2016-11-04, 2025-12-31
Glasgow (COP-26) :crit, done, adminV, 2021-10-31, 2021-11-12
Dubai (COP-28) :crit, adminW, 2023-11-20, 2023-12-12
ETF :crit, adminU, 2024-01-01, 2025-12-31
&lt;/div>
&lt;p>The table above describes a subset (for a more systematic review see &lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>, &lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>) of key milestones in global efforts to understand and address climate change. A glossary of acronyms and additional background:&lt;/p>
&lt;ol>
&lt;li>The First World Climate Conference (&lt;strong>WCC-1&lt;/strong>) &lt;sup id="fnref1:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> was held in 1979.&lt;/li>
&lt;li>The World Climate Programme (
&lt;a href="https://public.wmo.int/en/programmes/world-climate-programme" target="_blank" rel="noopener" >WCP&lt;/a>), an activity overseen by the
&lt;a href="https://public.wmo.int/en" target="_blank" rel="noopener" >World Meteorological Organization&lt;/a> was established after WCC-1. WCP, in partnership with other organizations, operates programs (e.g. the
&lt;a href="https://wcrp-cmip.org/" target="_blank" rel="noopener" >World Climate Research Program (WCRP)&lt;/a>) that organize and integrate international scientific efforts to understand the climate. The WMO also operates the
&lt;a href="https://ig3is.wmo.int/en/who-we-are" target="_blank" rel="noopener" >Integrated Global Greenhouse Gas Information System (IG3IS)&lt;/a>, a natural partner for the emerging work described below.&lt;/li>
&lt;li>WCRP manages the
&lt;a href="https://wcrp-cmip.org/" target="_blank" rel="noopener" >Common Model Intercomparison Project (CMIP)&lt;/a>. CMIP serves as a kind of &lt;strong>league for intercomparing models&lt;/strong> of the Earth&amp;rsquo;s climate system developed by teams who approach the problems with different methods and designs. Intercomparison, an approach that enables finding the consensus views of teams with divergent approaches to problems, is used in other modeling scenarios.&lt;/li>
&lt;li>Research papers on the climate are rapidly produced by scholars from essentially all knowledge disciplines. This overwhelming stream of content, like snowflakes in a blizzard, is coalesced into coherent and carefully scrutinized &lt;strong>
&lt;a href="https://www.ipcc.ch/reports/" target="_blank" rel="noopener" >IPCC Assessment Reports&lt;/a>&lt;/strong> by the
&lt;a href="https://www.ipcc.ch/" target="_blank" rel="noopener" >Intergovernmental Panel on Climate Change (IPCC)&lt;/a>.&lt;/li>
&lt;li>The
&lt;a href="https://en.wikipedia.org/wiki/Earth_Summit" target="_blank" rel="noopener" >Earth Summit&lt;/a> held in Rio de Janeiro in 1992 led to the
&lt;a href="https://unfccc.int/" target="_blank" rel="noopener" >United Nations Framework Convention on Climate Change (UNFCC)&lt;/a>. The UNFCCC is an international treaty that recognizes the dangers to the climate system caused by human activity, calls for ongoing study, and establishes recurring
&lt;a href="https://unfccc.int/process/bodies/supreme-bodies/conference-of-the-parties-cop" target="_blank" rel="noopener" >Conference of the Parties (COP)&lt;/a> meetings.&lt;/li>
&lt;li>
&lt;a href="https://unfccc.int/event/cop-3" target="_blank" rel="noopener" >COP-3 (Kyoto)&lt;/a> led to the
&lt;a href="https://unfccc.int/kyoto_protocol" target="_blank" rel="noopener" >Kyoto Protocol Treaty&lt;/a>.&lt;/li>
&lt;li>The
&lt;a href="https://en.wikipedia.org/wiki/Byrd%E2%80%93Hagel_Resolution" target="_blank" rel="noopener" >Byrd-Hagel Resolution&lt;/a> was a unanimous United States Senate Resolution that stipulated the United States would not sign treaties promising greenhouse gas reductions by developed countries that did not mandate similar reductions from developing countries. This killed USA participation in the Kyoto Protocol Treaty.&lt;/li>
&lt;li>The
&lt;a href="https://unfccc.int/process-and-meetings/the-paris-agreement" target="_blank" rel="noopener" >Paris Agreement&lt;/a>, established at
&lt;a href="https://unfccc.int/event/cop-21" target="_blank" rel="noopener" >COP-21 (Paris)&lt;/a>, effectively replaces the Kyoto Protocol, includes specifications by participant countries on greenhouse gas reductions called &lt;em>National Determined Contributions&lt;/em> (NDCs). The United States entered the Paris Agreement under President Obama, exited under President Trump and rejoined under President Biden.&lt;/li>
&lt;li>
&lt;a href="https://www.un.org/en/climatechange/cop26" target="_blank" rel="noopener" >COP-26 (Glasgow)&lt;/a>established an accountability system for the Paris Agreement called the
&lt;a href="https://unfccc.int/FAQ-moving-towards-the-ETF" target="_blank" rel="noopener" >Enhanced Transparency Framework (ETF)&lt;/a>. Participant countries to the Paris Agreement will
&lt;a href="https://unfccc.int/process-and-meetings/transparency-and-reporting/preparing-for-the-ETF" target="_blank" rel="noopener" >submit their first Biennial Transparency Reports (BTR1) under the ETF&lt;/a> in 2024.&lt;/li>
&lt;/ol>
&lt;h2 id="-usa-context">
🇺🇸 U.S.A. Context
&lt;a class="header-anchor" href="#-usa-context">#&lt;/a>
&lt;/h2>&lt;p>The
&lt;a href="https://www.epa.gov/ghgemissions/inventory-us-greenhouse-gas-emissions-and-sinks" target="_blank" rel="noopener" >United States Environmental Protection Agency (EPA) annually releases&lt;/a> the &lt;em>Inventory of U.S. Greenhouse Gas Emissions and Sinks&lt;/em> reports. These reports are submitted to the United Nations in accordance with the UNFCCC. The EPA
&lt;a href="https://www.epa.gov/ghgemissions/greenhouse-gas-inventory-tools" target="_blank" rel="noopener" >openly shares&lt;/a> software, tools, data, and
&lt;a href="https://www.epa.gov/ghgemissions/capacity-building-national-greenhouse-gas-inventories" target="_blank" rel="noopener" >builds capacity&lt;/a> to assist other nations to assemble their own greenhouse gas inventories.&lt;/p>
&lt;p>An
&lt;a href="https://obamawhitehouse.archives.gov/sites/default/files/omb/inforeg/for-agencies/Social-Cost-of-Carbon-for-RIA.pdf" target="_blank" rel="noopener" >Interagency Working Group (IWG) on the Social Cost of Carbon&lt;/a> was set up by the Obama Administration in 2010. The IWG, renamed as the
&lt;a href="https://www.epa.gov/sites/default/files/2016-12/documents/sc_co2_tsd_august_2016.pdf" target="_blank" rel="noopener" >Interagency Working Group on Social Cost of Greenhouse Gases in 2016&lt;/a>, synthesizes research on
&lt;a href="https://en.wikipedia.org/wiki/Integrated_assessment_modelling" target="_blank" rel="noopener" >integrated assessment modelling&lt;/a> to quantify the dollar costs associated to damage caused by an incremental increase in GHG emissions in a given year. Quantifying the impacts of GHG emissions in monetary terms is vital to effective rulemaking across the Federal Government. This
&lt;a href="https://www.epa.gov/sites/default/files/2016-12/documents/social_cost_of_carbon_fact_sheet.pdf" target="_blank" rel="noopener" >EPA fact sheet on the social costs of carbon&lt;/a> provides further background. A 2017 consensus report &lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> of the National Academies of Science Engineering and Medicine (NASEM) offered recommendations for ongoing research to improve the assignment of social costs to GHG emissions.&lt;/p>
&lt;p>Other federal agencies have developed expertise, data, and analyses that give insights into GHG emissions that compliment and potentially extend the &lt;em>Inventory&lt;/em> reports developed annually by the EPA. How should the United States integrate federal agency efforts to monitor and measure greenhouse gas emissions? A 2022 NASEM consensus report &lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> investigated this question. In January of this year, the
&lt;a href="https://www.whitehouse.gov/ceq/news-updates/2023/01/06/biden-harris-administration-releases-new-guidance-to-disclose-climate-impacts-in-environmental-reviews/" target="_blank" rel="noopener" >Biden Administration&lt;/a> released guidance&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> for federal agencies on incorporating GHG emissions information in policies and reports. Shortly thereafter, a draft federal strategy to advance an integrated greenhouse gas monitoring system was
&lt;a href="https://nspires.nasaprs.com/external/solicitations/summary.do?solId=%7bDDD1BC85-9276-8FB7-C362-A00E3E427E0D%7d&amp;amp;path=&amp;amp;method=init" target="_blank" rel="noopener" >released by NASA with a request for public input&lt;/a>.&lt;/p>
&lt;p>Some important insights from the NASEM consensus report, the draft federal strategy, and the IWG reports:&lt;/p>
&lt;ol>
&lt;li>Data streams on greenhouse gas emissions can be sorted into two broad categories:
&lt;ul>
&lt;li>&lt;strong>Activity-based:&lt;/strong> Activity-based data, sometimes called &amp;ldquo;bottom-up&amp;rdquo; data, quantify GHG emissions by measuring activities that generate GHG emissions. Economic or business activity data (gallons of diesel sold in a county on Tuesday; miles flown by a 747 in October) can be converted into quantified GHG emissions information.&lt;/li>
&lt;li>&lt;strong>Atmospheric-based:&lt;/strong> Atmosphere-based data, sometimes called &amp;ldquo;top-down&amp;rdquo; data, quantify GHG emissions by performing atmospheric measurements. For example, the
&lt;a href="https://ocov2.jpl.nasa.gov/" target="_blank" rel="noopener" >Orbiting Carbon Observatory (OCO2)&lt;/a> remotely senses $CO_2$ from space.&lt;/li>
&lt;li>A hybrid approach that blends activity-based and atmospheric-based GHG data has the potential to provide new insights.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Interoperable and easily accessed tools and data products for analyzing GHG emissions information and assigning costs should be made available across the Federal government.&lt;/li>
&lt;li>GHG emissions information is needed in scenarios outside the international context of participating nations reporting for UNFCCC and Paris Agreement ETF compliance:
&lt;ul>
&lt;li>&lt;strong>Subnational governments&lt;/strong> &amp;ndash; cities, states, provinces, counties &amp;ndash; want GHG data products to measure their progress on emission reduction programs.&lt;/li>
&lt;li>&lt;strong>Facilities&lt;/strong> &amp;ndash; harbours, toll roads, power plants, factories, universities &amp;ndash; similarly want GHG data products.&lt;/li>
&lt;li>&lt;strong>Companies&lt;/strong> &amp;ndash; airlines, trucking, construction &amp;ndash; want GHG data products.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Reliable and transparent GHG emissions information is required to enable effective environmental-social-governance (ESG) investment without “greenwashing”.&lt;/li>
&lt;li>Accurate and improving quantifications of the social costs associated to GHG emissions require ongoing research.&lt;/li>
&lt;/ol>
&lt;h2 id="the-us-greenhouse-gas-center">
The U.S. Greenhouse Gas Center
&lt;a class="header-anchor" href="#the-us-greenhouse-gas-center">#&lt;/a>
&lt;/h2>&lt;p>The launch of U.S. GHG Center, an interagency collaboration of the 
&lt;a href="https://www.epa.gov/" target="_blank" rel="noopener" >Environmental Protection Agency (EPA)&lt;/a>, the 
&lt;a href="https://www.nasa.gov/" target="_blank" rel="noopener" >National Aeronautics and Space Administration (NASA)&lt;/a>, the 
&lt;a href="https://www.nist.gov/" target="_blank" rel="noopener" >National Institute of Standards and Technology (NIST)&lt;/a>, and the 
&lt;a href="https://www.nist.gov/" target="_blank" rel="noopener" >National Ocean and Atmospheric Administration (NOAA)&lt;/a>, was
&lt;a href="https://www.nasa.gov/news-release/nasa-partners-launch-us-greenhouse-gas-center-to-share-climate-data/" target="_blank" rel="noopener" >announced on 2023-12-04&lt;/a> at COP-28 (Dubai)&lt;/p>
&lt;p>How much GHG emission is generated through oil and gas production? How much GHG emission is generated by urban centers? Do landfills contribute significant GHG emissions? How do human-generated GHG emissions compare to natural sources of GHG emissions? The U.S. GHG Center is designed to assemble the data, tools, and people to scientifically address these kinds of questions.&lt;/p>
&lt;h2 id="openness-amplified-knowledge-sharing">
Openness: Amplified Knowledge Sharing
&lt;a class="header-anchor" href="#openness-amplified-knowledge-sharing">#&lt;/a>
&lt;/h2>&lt;p>The U.S. Greenhouse Gas Center builds on
&lt;a href="https://www.epa.gov/ghgemissions/greenhouse-gas-inventory-tools" target="_blank" rel="noopener" >EPA&amp;rsquo;s leadership to openly share the data and tools for the &lt;em>Inventory&lt;/em>&lt;/a>and the
&lt;a href="https://www.whitehouse.gov/ostp/news-updates/2023/01/11/fact-sheet-biden-harris-administration-announces-new-actions-to-advance-open-and-equitable-research/" target="_blank" rel="noopener" >2023 Year of Open Science&lt;/a>. Instead of building a walled garden with proprietary technology from a vendor selected through RFP, the Center launched a prototype platform using curated open source tools integrated with public federal data. This &lt;strong>open toolchain approach&lt;/strong> amplifies the open data efforts developed over the past two decades.&lt;/p>
&lt;p>The U.S. GHG Center&amp;rsquo;s interactive computing platform is &lt;strong>open source science infrastructure&lt;/strong>. The platform is:&lt;/p>
&lt;ol>
&lt;li>
&lt;a href="https://github.com/2i2c-org/infrastructure" target="_blank" rel="noopener" >transparently operated&lt;/a> by
&lt;a href="https://2i2c.org" target="_blank" rel="noopener" >2i2c&lt;/a> on a cloud data center under a
&lt;a href="https://2i2c.org/right-to-replicate/" target="_blank" rel="noopener" >right to replicate that ensures zero vendor lock-in&lt;/a> with data integrations and visualizations built with using software from a
&lt;a href="https://jupyter.org/" target="_blank" rel="noopener" >vibrant open source ecosystem&lt;/a> by
&lt;a href="https://developmentseed.org/" target="_blank" rel="noopener" >Development Seed&lt;/a>,
&lt;a href="https://www.earthdata.nasa.gov/dashboard/" target="_blank" rel="noopener" >NASA VEDA&lt;/a>, and collaborators;&lt;/li>
&lt;li>proximate to and optimized &lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> for analyzing geospatial data (e.g.
&lt;a href="https://registry.opendata.aws/collab/nasa/" target="_blank" rel="noopener" >NASA&lt;/a>,
&lt;a href="https://repository.library.noaa.gov/view/noaa/37529" target="_blank" rel="noopener" >NOAA&lt;/a>);&lt;/li>
&lt;li>designed to be a &lt;em>digital public good.&lt;/em>&lt;/li>
&lt;/ol>
&lt;p>Research, data and recommendations developed by scientists and engineers that influence policies set by democratic governments should be accessible by voters. No entity should own the ways humans communicate and learn about the Earth system. The U.S. Greenhouse Gas Center&amp;rsquo;s generous approach to digital infrastructure &amp;ndash; an open toolchain adjacent to open data &amp;ndash; is vital for democracy and should be replicated across government agencies worldwide.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>This work was developed in collaboration with
&lt;a href="https://2i2c.org/collaborators/devseed/" >Development Seed&lt;/a> and
&lt;a href="https://2i2c.org/collaborators/nasa-veda/" >NASA VEDA&lt;/a>, key partners in building the U.S. Greenhouse Gas Center&amp;rsquo;s open source science infrastructure.&lt;/p>
&lt;h2 id="references">
References
&lt;a class="header-anchor" href="#references">#&lt;/a>
&lt;/h2>&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Mémoire sur les températures du globe terrestre et des espaces planétaires. in &lt;em>Oeuvres de Fourier: Publiées par les soins de Gaston Darboux&lt;/em> (eds. Fourier, J. B. J. &amp;amp; Darboux, J. G.) vol. 2 95–126 (Cambridge University Press, 2013).&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>World Climate Conference. &lt;em>World Climate Conference - Declaration and supporting documents&lt;/em>.
&lt;a href="https://library.wmo.int/records/item/54699-world-climate-conference-declaration-and-supporting-documents" target="_blank" rel="noopener" >library.wmo.int/records/item/54699-world-climate-conference-declaration-and-supporting-documents&lt;/a> (1979).&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>Gupta, J. A history of international climate change policy. &lt;em>WIREs Climate Change&lt;/em> &lt;strong>1&lt;/strong>, 636–653 (2010).&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>Zillman, J. A history of climate activities. &lt;em>WMO Bulletin&lt;/em> &lt;strong>58&lt;/strong>, (2009).&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;em>Valuing Climate Changes: Updating Estimation of the Social Cost of Carbon Dioxide&lt;/em>. (National Academies Press, 2017). doi:
&lt;a href="https://doi.org/10.17226/24651" target="_blank" rel="noopener" >10.17226/24651&lt;/a>.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;em>Greenhouse Gas Emissions Information for Decision Making: A Framework Going Forward&lt;/em>. (National Academies Press, 2022). doi:
&lt;a href="https://doi.org/10.17226/26641" target="_blank" rel="noopener" >10.17226/26641&lt;/a>.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>CEQguidance. National Environmental Policy Act Guidance on Consideration of Greenhouse Gas Emissions and Climate Change. &lt;em>Federal Register&lt;/em>
&lt;a href="https://www.federalregister.gov/documents/2023/01/09/2023-00158/national-environmental-policy-act-guidance-on-consideration-of-greenhouse-gas-emissions-and-climate" target="_blank" rel="noopener" >www.federalregister.gov/documents/2023/01/09/2023-00158/national-environmental-policy-act-guidance-on-consideration-of-greenhouse-gas-emissions-and-climate&lt;/a> (2023).&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>Abernathey, R. P. &lt;em>et al.&lt;/em> Cloud-Native Repositories for Big Scientific Data. &lt;em>Computing in Science &amp;amp; Engineering&lt;/em> &lt;strong>23&lt;/strong>, 26–35 (2021).&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>2i2c supports Jupyter Docker Stacks ARM builds</title><link>https://2i2c.org/blog/docker-stacks-support/</link><pubDate>Fri, 01 Dec 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/docker-stacks-support/</guid><description>&lt;p>The
&lt;a href="https://jupyter-docker-stacks.readthedocs.io/" target="_blank" rel="noopener" >Jupyter Docker Stacks&lt;/a> project provides a collection of ready-to-use Docker images for Jupyter environments. These images are used by many in the Jupyter community, including 2i2c which uses them as base images for our JupyterHub deployments.&lt;/p>
&lt;p>The project recently began publishing
&lt;a href="https://github.com/jupyter/docker-stacks/issues/1019" target="_blank" rel="noopener" >ARM-compatible images&lt;/a> alongside the standard x86 images, making it easier for users with ARM-based systems (like M1 Macs) to use these environments. However, building and hosting these ARM images comes with additional cloud computing costs that were being personally covered by
&lt;a href="https://github.com/mathbunnyru" target="_blank" rel="noopener" >@mathbunnyru&lt;/a>, one of the project&amp;rsquo;s maintainers.&lt;/p>
&lt;p>A part of 2i2c&amp;rsquo;s mission is supporting upstream communities that we rely on, especially where the upstream project has limited resources. For this reason, we&amp;rsquo;ve decided to support Jupyter Docker Stack&amp;rsquo;s ARM building costs, with a total budget of &lt;code>$2000&lt;/code> (approximately &lt;code>$150&lt;/code> per month). As a regular user and beneficiary of the Jupyter Docker Stacks, we believe it&amp;rsquo;s important to contribute to the maintenance and sustainability of this crucial piece of infrastructure that benefits the entire Jupyter community.&lt;/p>
&lt;p>We hope this support helps the Docker Stacks project remain healthy, and continue providing high-quality, multi-architecture images that work across different computing platforms. We&amp;rsquo;ll revisit this decision as the landscape of technology providers changes and other options arise.&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/jupyter/" >Project Jupyter&lt;/a> (particularly the &lt;code>jupyter-stacks&lt;/code> team) for this project.&lt;/li>
&lt;/ul></description></item><item><title>Community Update: October 2023</title><link>https://2i2c.org/blog/update-october/</link><pubDate>Fri, 10 Nov 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/update-october/</guid><description>&lt;p>Over the past few months, we&amp;rsquo;ve been investigating ways to improve our reporting both internally and externally.
We&amp;rsquo;ve decided to experiment with a &lt;strong>monthly community update&lt;/strong> to create a regular cadence of transparency and highlights from 2i2c for our broader community.
This is the first such update, so bear with us as we work out the kinks!&lt;/p>
&lt;p>Our goal with these updates is to share what stands out at 2i2c - what we&amp;rsquo;ve learned, what we&amp;rsquo;re proud of, where we&amp;rsquo;ve struggled, and where we&amp;rsquo;ve had an impact.
We hope this can be a historical record of &amp;ldquo;what stands out&amp;rdquo; to our team and that it is useful for our broader community to see.
We also want this to be relatively short and to the point to make it sustainable to both write and read.&lt;/p>
&lt;p>&lt;strong>We&amp;rsquo;d love feedback&lt;/strong> on what else you&amp;rsquo;d like to see.
If you have any ideas, please send an email to &lt;code>hello@2i2c.org&lt;/code>.&lt;/p>
&lt;h2 id="rough-numbers">
Rough Numbers
&lt;a class="header-anchor" href="#rough-numbers">#&lt;/a>
&lt;/h2>&lt;p>First off, a few numbers on the scale and status of our interactive computing hub service:&lt;/p>
&lt;p>We are currently running around &lt;strong>73 JupyterHubs&lt;/strong> that are collectively averaging more than &lt;strong>4000 average monthly users&lt;/strong>.
We have several communities in the educational sector, so October was a peak in the Fall semester of activity.&lt;/p>
&lt;p>We&amp;rsquo;re recovering roughly &lt;strong>40% of our monthly staffing costs through recurring service revenue&lt;/strong>.
The remainder we&amp;rsquo;re making up with a combination of grants and more focused development contracts.&lt;/p>
&lt;p>Assuming minimal growth in our service and fundraising, our &lt;strong>runway is roughly until August 2025&lt;/strong> - however, we anticipate this to shrink in the short-term once we make critical new hires in the coming months.&lt;/p>
&lt;h2 id="organization-updates">
Organization Updates
&lt;a class="header-anchor" href="#organization-updates">#&lt;/a>
&lt;/h2>&lt;p>&lt;em>This section describes some major organization-wide efforts we&amp;rsquo;ve started or progressed over the last month.&lt;/em>&lt;/p>
&lt;h3 id="improving-our-quarterly-sprints-and-goals">
Improving Our Quarterly Sprints and Goals
&lt;a class="header-anchor" href="#improving-our-quarterly-sprints-and-goals">#&lt;/a>
&lt;/h3>&lt;p>This month our team kicked off the second round of our new quarterly sprints and goals process.
This is an attempt to focus our team around a few goals and sub-teams dedicated to them throughout each quarter.
Our hope is that this allows us to make strategic &amp;ldquo;pushes&amp;rdquo; in directions that feel important for 2i2c&amp;rsquo;s operations and the communities we serve.&lt;/p>
&lt;p>This quarter, we incorporated a lot of learning that took place after our first iteration in Q3 2023.
We are hoping to sharpen up the timing of events throughout the process, including communicating internally and externally about our status (thus, this blog post series).&lt;/p>
&lt;p>In the next quarter, we aim to build off of this work, and to identify where our future new hires of
&lt;a href="https://2i2c.org/jobs/2023/delivery-manager/" >Delivery Manager / Interim Chief of Staff&lt;/a> and our
&lt;a href="https://2i2c.org/jobs/2023/product-lead/" >Product Lead&lt;/a> will fit in.&lt;/p>
&lt;h3 id="three-new-jobs-posted">
Three New Jobs Posted
&lt;a class="header-anchor" href="#three-new-jobs-posted">#&lt;/a>
&lt;/h3>&lt;p>In October, we began a short hiring push to address many of the organizational challenges noted in
&lt;a href="https://2i2c.org/blog/update-october/../organizational-report/" >our organizational structure and strategy audit&lt;/a>.
We aim to have each of these positions filled by the end of the year and begin incorporating new team members into our organization.
Here&amp;rsquo;s a list of the three job postings:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/jobs/2023/delivery-manager/" >Delivery Manager / Interim Chief of Staff&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/2023/product-lead/" >Product Lead&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/2023/23qq4-open-source-infrastructure-engineer/" >Open Source Infrastructure Engineer: Cloud Engineering&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="product-strategy-work">
Product Strategy Work
&lt;a class="header-anchor" href="#product-strategy-work">#&lt;/a>
&lt;/h3>&lt;p>We kicked off a collaboration with
&lt;a href="https://richardpope.org/" target="_blank" rel="noopener" >Richard Pope&lt;/a> to provide us with some short-term product strategy work.
In Q3, our team took stock of the many different kinds of services and technology that we deploy, aiming to refine this into a long-term product model.&lt;/p>
&lt;p>Richard will join us for several months to take these outputs and help us craft them into a model for where 2i2c is delivering value that we can build upon for the coming years.
We&amp;rsquo;ll provide more updates for the community as this work continues.&lt;/p>
&lt;h3 id="continued-onboarding-of-communities-in-our-catalyst-project-collaboration">
Continued Onboarding of Communities in Our Catalyst Project Collaboration
&lt;a class="header-anchor" href="#continued-onboarding-of-communities-in-our-catalyst-project-collaboration">#&lt;/a>
&lt;/h3>&lt;p>We continued onboarding communities onto infrastructure managed by 2i2c as part of a
&lt;a href="https://2i2c.org/blog/update-october/../../2022/czi-global-communities-announcement/" >CZI-funded project to serve communities in Latin America and Africa&lt;/a>.
The grant team began its operations last April and spent the first several months creating an onboarding pipeline and rubric for identifying and connecting with communities.
As of October, we&amp;rsquo;ve onboarded our first few communities - there is still a lot of content, training material, and documentation to create, and we will begin iterating on this in collaboration with our early-adopted communities in Q4 2023 and Q1 2024.&lt;/p>
&lt;h2 id="partnerships-and-impact">
Partnerships and Impact
&lt;a class="header-anchor" href="#partnerships-and-impact">#&lt;/a>
&lt;/h2>&lt;p>&lt;em>This section describes notable new partnerships and developments with communities in our interactive computing hub service.&lt;/em>&lt;/p>
&lt;p>We began several new partnerships with communities in the research space this month.&lt;/p>
&lt;p>The
&lt;a href="https://www.earthdata.nasa.gov/esds/veda" target="_blank" rel="noopener" >NASA Visualization, Exploration, and Data Analysis (VEDA)&lt;/a> project is an open-source science cyberinfrastructure for data processing, visualization, exploration, and geographic information systems (GIS) capabilities.&lt;/p>
&lt;p>The
&lt;a href="https://us-ghg-center.github.io/ghgc-docs/" target="_blank" rel="noopener" >US Greenhouse Gas Center&lt;/a> provides a cloud-based system for exploring and analyzing U.S. government and other curated greenhouse gas datasets.&lt;/p>
&lt;p>In addition, we&amp;rsquo;ve celebrated considerable growth in one of our partner communities:
&lt;a href="https://cryointhecloud.com/" target="_blank" rel="noopener" >CryoCloud&lt;/a>.
This community focuses its work around studying the Cryosphere using satellite imagery data.
They&amp;rsquo;ve grown their community hub to roughly 300 users in a year and have piloted several novel interfaces for data analysis in a JupyterHub context, such as using
&lt;a href="https://qgis.org/" target="_blank" rel="noopener" >QGIS&lt;/a> via a Linux desktop browser.&lt;/p>
&lt;p>2i2c team members also gave several talks in October, and you can find links to each of these below:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://www.youtube.com/watch?v=coKoUoUzLPk" target="_blank" rel="noopener" >Chris Holdgraf on 2i2c&amp;rsquo;s overall purpose and operations thus far&lt;/a>, delivered at the
&lt;a href="https://pslmodels.org/index.html" target="_blank" rel="noopener" >Policy Simulation Library demo day&lt;/a>.&lt;/li>
&lt;li>
&lt;a href="https://www.youtube.com/watch?v=SHUSoXgRAho" target="_blank" rel="noopener" >Jim Colliander on the impact 2i2c wishes to have and what it means for open science&lt;/a>, delivered to
&lt;a href="https://wiki.esipfed.org/Main_Page" target="_blank" rel="noopener" >the ESIP community&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="what-weve-learned-and-what-stood-out">
What We&amp;rsquo;ve Learned and What Stood Out
&lt;a class="header-anchor" href="#what-weve-learned-and-what-stood-out">#&lt;/a>
&lt;/h2>&lt;p>&lt;em>These are things that we&amp;rsquo;ve learned in the past month that we&amp;rsquo;re using to improve our service moving forward&lt;/em>.&lt;/p>
&lt;p>&lt;strong>Communities like to define and select their own environments&lt;/strong>.
We began rolling out new functionality to allow communities to &lt;strong>define their user environments on-the-fly&lt;/strong>.
This brings mybinder.org-style environment creation into a JupyterHub, and gives both more control and more visibility into the environments that communities use.
We noticed that this also begins to blur the line between different workflows and types of communities that can be served on a single hub.
It means that a hub is no longer strictly tied to a small number of user environments created for it.
We&amp;rsquo;ll explore the implications of this in the coming months.&lt;/p>
&lt;p>&lt;strong>We need to improve our billing and invoicing infrastructure&lt;/strong>.
This month we began going through another backlog of cloud infrastructure invoices to send out to communities.
For many communities, 2i2c pays a cloud bill on their behalf and passes through costs directly to them.
This allows them to know exactly what they&amp;rsquo;re paying for.
However, it is also starting to generate a lot of work!
We aim to explore ways to automate and standardize this process in the future.&lt;/p>
&lt;p>&lt;strong>Digital Public Goods is a concept that resonates with many community leaders&lt;/strong>.
Jim and Chris both gave talks that leaned heavily into the notion of open tools and services as &amp;ldquo;Digital Public Goods&amp;rdquo;.
As public goods, it is important that they remain &amp;ldquo;driven by the public&amp;rdquo; and that they have sustainable and scalable models to grow the value that these goods provide.
We&amp;rsquo;ve noted that this topic resonates heavily with people across the research and education spectrum, and we&amp;rsquo;re considering how to lean into these values more heavily in 2i2c.&lt;/p></description></item><item><title>Open organizational report: Strengths and challenges for 2i2c's team</title><link>https://2i2c.org/blog/organizational-report/</link><pubDate>Wed, 08 Nov 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/organizational-report/</guid><description>&lt;p>Over the last several months 2i2c has been working with an organizational consulting group called
&lt;a href="https://www.makeadifference.digital/" target="_blank" rel="noopener" >Difference Digital&lt;/a> to help us identify the major opportunities and challenges in our organizational structure and strategy.
The result of this work is a report that describes in detail the major strengths, weaknesses, challenges, and opportunities that 2i2c faces. It also recommends major actions to take as an organization.&lt;/p>
&lt;p>2i2c values organizational transparency and a willingness to be honest about where you&amp;rsquo;re struggling.
Stress is a natural part of both individuals and organizations, and should be embraced with the goal of learning and improving.
Moreover, as a young organization 2i2c has benefitted heavily from the documents and learning that &lt;em>other&lt;/em> organizations have made publicly available.
We wouldn&amp;rsquo;t be where we are without building on the backs of others who are willing to share what they&amp;rsquo;ve learned.&lt;/p>
&lt;p>So, we are making this organizational audit and report public for anyone to see.
We hope that it provides transparency into 2i2c&amp;rsquo;s current status, and that it serves as a useful resource for other non-profits that are growing and facing similar challenges.&lt;/p>
&lt;p>
&lt;a href="https://zenodo.org/records/10081003" target="_blank" rel="noopener" >Here&amp;rsquo;s a link to the report on Zenodo&lt;/a>.&lt;/p>
&lt;p>For more background on this report, check out the short description below.&lt;/p>
&lt;hr>
&lt;p>In April of this year we had our first in-person team meeting.
We were excited and grateful to have the opportunity to speak to each other face-to-face.
We also learned that many people on our team were stressed out!
Our service had grown slow-but-steadily over the previous year, and we were feeling the tension that comes with growing your partnerships without significantly changing your team&amp;rsquo;s capacity or structure.&lt;/p>
&lt;p>So, we decided to work with an organizational consulting group called
&lt;a href="https://www.makeadifference.digital/" target="_blank" rel="noopener" >makeadifference.digital&lt;/a> to help us identify where we need to make improvements.
They spent several weeks having one-on-one conversations with each member of the team, as well as doing a broader organizational analysis and comparison to other technical organizations at a similar stage of their lifecycle.&lt;/p>
&lt;p>The result of this work was a report that outlines the major opportunities and strengths, as well as challenges and gaps in capacity, that our team currently faces.
It makes a number of recommendations for how we should shift our practices, and importantly it also notes that the only way to gain that capacity is by hiring for new people and skills.&lt;/p>
&lt;p>
&lt;a href="https://zenodo.org/records/10081003" target="_blank" rel="noopener" >Here&amp;rsquo;s a link to the report on Zenodo&lt;/a>.&lt;/p>
&lt;p>The immediate result of this work is that we currently have three jobs posted:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/jobs/2023/product-lead/" >A Product Lead role&lt;/a> to help us build a &amp;ldquo;product function&amp;rdquo; within 2i2c&amp;rsquo;s team.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/2023/delivery-manager/" >A Delivery Manager / Chief of Staff role&lt;/a> to oversee and manage 2i2c&amp;rsquo;s system of work.&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/2023/23qq4-open-source-infrastructure-engineer/" >A cloud and operations engineering role&lt;/a> to grow our cloud engineering team&amp;rsquo;s capacity in serving communities.&lt;/li>
&lt;/ul>
&lt;p>Our next steps are to fill these positions, and to then begin the work of implementing many of the recommendations that are contained in the report.
We&amp;rsquo;re confident that this is a natural part of being a small and growing organization, and we are grateful for the expertise of
&lt;a href="https://www.makeadifference.digital" target="_blank" rel="noopener" >makeadifference.digital&lt;/a> in guiding us through this work.&lt;/p>
&lt;p>&lt;em>Note: if you&amp;rsquo;d like to work with
&lt;a href="https://www.makeadifference.digital" target="_blank" rel="noopener" >makeadifference.digital&lt;/a>, you can reach out to them at
&lt;a href="https://2i2c.org/blog/organizational-report/mailto:hello@makeadifference.digital" >&lt;code>hello@makeadifference.digital&lt;/code>&lt;/a>&lt;/em>.&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by a grant from
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Community update Q3 2023: Service growth and growing pains</title><link>https://2i2c.org/blog/2023-q3-update/</link><pubDate>Tue, 31 Oct 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/2023-q3-update/</guid><description>&lt;p>It&amp;rsquo;s been two quarters since our last major update - this isn&amp;rsquo;t quite as frequent as we&amp;rsquo;re hoping to post updates from our team, but we&amp;rsquo;re making adjustments to have more regular communication for reasons that will hopefully be a bit clearer below!
In that time, we&amp;rsquo;ve been hard at work serving and growing our interactive computing service, as well as doing some introspection as a team and identifying major next steps moving forward.
More on that in the following sections, but first a short service update.&lt;/p>
&lt;h2 id="how-has-our-service-evolved-over-the-past-few-months">
How has our service evolved over the past few months?
&lt;a class="header-anchor" href="#how-has-our-service-evolved-over-the-past-few-months">#&lt;/a>
&lt;/h2>
&lt;h3 id="new-partnerships-and-service-growth">
New partnerships and service growth
&lt;a class="header-anchor" href="#new-partnerships-and-service-growth">#&lt;/a>
&lt;/h3>&lt;p>Our service has grown several new partner communities over the last two quarters. A few notable communities are
&lt;a href="https://nasa-veda.2i2c.cloud/" target="_blank" rel="noopener" >the NASA VEDA project&lt;/a>, a
&lt;a href="https://smithsonian.2i2c.cloud/" target="_blank" rel="noopener" >team at the Smithsonian&lt;/a>,
&lt;a href="https://ncar-cisl.2i2c.cloud/" target="_blank" rel="noopener" >a team at NCAR&lt;/a>, and the
&lt;a href="https://hub.ghg.center/" target="_blank" rel="noopener" >U.S. Greenhouse Gases Center&lt;/a>. We are running about &lt;strong>71 hubs across 24 clusters, with about 4000 weekly users&lt;/strong> (
&lt;a href="https://2i2c.org/kpis/cloud/" target="_blank" rel="noopener" >more usage stats here&lt;/a>).&lt;/p>
&lt;p>We also began operations on a major collaboration to serve communities in Latin America and Africa, called
&lt;a href="https://zenodo.org/records/7025288" target="_blank" rel="noopener" >the Catalyst Project&lt;/a>.
This team met together for the first time in April, and we&amp;rsquo;ve been laying a foundation for service growth in the first several months.
We are just onboarding our first communities and hope to grow that service in the coming year.&lt;/p>
&lt;p>Finally, we&amp;rsquo;ve been fortunate to receive some grants around creating content and designing workflows that utilize cloud infrastructure. For example, a
&lt;a href="https://nasa.github.io/Transform-to-Open-Science/open-science-101/" target="_blank" rel="noopener" >NASA TOPS grant&lt;/a> and an upcoming collaboration with
&lt;a href="https://projectpythia.org/" target="_blank" rel="noopener" >Project Pythia&lt;/a> around geospatial workflows.&lt;/p>
&lt;h3 id="financial-picture">
Financial picture
&lt;a class="header-anchor" href="#financial-picture">#&lt;/a>
&lt;/h3>&lt;p>At this point, we&amp;rsquo;re &lt;strong>recovering roughly 40% of our operating costs&lt;/strong> through recurring fees of our managed hub service (making up the remainder in development contracts and grants), and &lt;strong>we&amp;rsquo;ve currently got around 2 years of runway&lt;/strong>.&lt;/p>
&lt;p>However, both of these will be lowered soon because we are about to hire for several more positions.
Improvements to our product model will allow us to estimate and recover our service costs more effectively, but we also intend to raise some funds next year to support our efforts in making our service more robust, sustainable, and valuable to communities.&lt;/p>
&lt;p>It&amp;rsquo;s always difficult to strike a proper balance of team (and cost) growth against the financial buffer needed to assure your partners you&amp;rsquo;ll stick around, but we&amp;rsquo;re confident that the new hires described below will serve critical needs for our team and mission.&lt;/p>
&lt;p>For more context on why and how we&amp;rsquo;re trying to make up that capacity, read on&amp;hellip;&lt;/p>
&lt;h2 id="how-service-growth-can-lead-to-team-stress">
How service growth can lead to team stress
&lt;a class="header-anchor" href="#how-service-growth-can-lead-to-team-stress">#&lt;/a>
&lt;/h2>&lt;p>Over the past year we&amp;rsquo;ve had a slow-but-steady stream of new communities interested in working with 2i2c for managing cloud infrastructure for interactive computing.
We&amp;rsquo;ve taken a &amp;ldquo;let&amp;rsquo;s make it work somehow&amp;rdquo; approach to all of our community partnerships thus far, with the idea that we must use these partnerships to learn what communities want and identify common patterns.&lt;/p>
&lt;p>This is exciting, and we&amp;rsquo;re fortunate to see the interest and growth in our service.
It suggests to us that something about our model is fundamentally right.
Communities really love the
&lt;a href="https://2i2c.org/right-to-replicate" target="_blank" rel="noopener" >Right to Replicate&lt;/a>, and our participatory service model based around upstream contributions, transparency, and shared responsibility is attractive to many in research and education.&lt;/p>
&lt;p>However, each new community is also a new set of stresses on the technical and social infrastructure of our team.
Without the capacity to manage the demands of the service, you run the risk of over-extending &amp;ndash; and in a worst case scenario, burning out &amp;ndash; your team.&lt;/p>
&lt;p>This became clear in our first in-person team meeting last May.
At that meeting, we realized that many on the team were spending too much of their time &amp;ldquo;reacting&amp;rdquo; to demands from the service.
We also learned that the scope and complexity of our various workstreams had gotten to a size where our informal team structures of work prioritization were no longer adequate.&lt;/p>
&lt;h2 id="growing-the-complexity-of-our-team-to-match-the-complexity-of-our-service">
Growing the complexity of our team to match the complexity of our service
&lt;a class="header-anchor" href="#growing-the-complexity-of-our-team-to-match-the-complexity-of-our-service">#&lt;/a>
&lt;/h2>&lt;p>So, for the past several months we&amp;rsquo;ve been working on a plan to evolve 2i2c&amp;rsquo;s team structure in order to more effectively manage the complexity of our service, and balance long- and short-term thinking.&lt;/p>
&lt;p>This began with an organizational audit carried out by
&lt;a href="https://www.makeadifference.digital/" target="_blank" rel="noopener" >makeadifference.digital&lt;/a>, a consulting group that focuses on tech-for-good and non-profit products and services.
They conducted interviews with everybody on the team, and concluded that we have a few key functions missing that were creating or compounding the stresses people felt.&lt;/p>
&lt;p>We hope to make some of their key findings public soon (Update: this is now available at
&lt;a href="https://2i2c.org/blog/organizational-report/" >this blog post about the organizational report&lt;/a>), and in the meantime here is an overview of some highlights:&lt;/p>
&lt;h3 id="we-need-a-dedicated-product-functionality">
We need a dedicated product functionality
&lt;a class="header-anchor" href="#we-need-a-dedicated-product-functionality">#&lt;/a>
&lt;/h3>&lt;p>First, we realized that we have a number of new &amp;ldquo;signals&amp;rdquo; pushing our service in many different directions.
Some are external - from communities we work with or from funders. Some are internal - from different team member visions of where work is needed.
After growing our service and our team, there are now too many perspectives and voices to balance in an unstructured and purely organic way.&lt;/p>
&lt;p>So we&amp;rsquo;re creating a &lt;strong>dedicated &amp;ldquo;product function&amp;rdquo; within 2i2c&lt;/strong>.
Its goal will be to serve as an integrator across the many stakeholders that are interested in 2i2c&amp;rsquo;s service, and synthesize a collective product strategy and system of prioritization to move the organization forward.
They&amp;rsquo;ll help 2i2c grow a culture of iteration and decisions that are driven by the needs of our community partners and users.&lt;/p>
&lt;p>We&amp;rsquo;re
&lt;a href="https://2i2c.org/jobs/2023/product-lead/" target="_blank" rel="noopener" >hiring a Product Lead&lt;/a> to kick off this effort.
If you think you&amp;rsquo;d be interested in this role, please consider applying!&lt;/p>
&lt;h3 id="we-need-a-more-structured-system-of-work-and-execution">
We need a more structured system of work and execution
&lt;a class="header-anchor" href="#we-need-a-more-structured-system-of-work-and-execution">#&lt;/a>
&lt;/h3>&lt;p>Next, we realized that there are many different workstreams we must balance simultaneously.
There are new communities to be onboarded, infrastructure bugs to be fixed, questions to be answered, and strategic priorities to improve the service.
Expecting each team member to individually find the right balance between all of these is increasingly unrealistic.
We need capacity to oversee this system of work and bring some structure to it.&lt;/p>
&lt;p>So, we&amp;rsquo;re creating a &lt;strong>Delivery Manager role&lt;/strong> to oversee the system of work that our engineering team uses for its planning and execution.
In addition, this role will serve at an organization-wide capacity as an &lt;strong>interim Chief of Staff&lt;/strong>.
This will allow them to improve and standardize practices organization-wide, and coordinate major projects that span our team.&lt;/p>
&lt;p>You can find a
&lt;a href="https://2i2c.org/jobs/2023/delivery-manager/" target="_blank" rel="noopener" >job posting for a Delivery Manager / interrim Chief of Staff&lt;/a> role.
If you think you&amp;rsquo;d be interested, please apply!&lt;/p>
&lt;h3 id="we-need-more-capacity-to-support-our-team-and-its-individuals">
We need more capacity to support our team and its individuals
&lt;a class="header-anchor" href="#we-need-more-capacity-to-support-our-team-and-its-individuals">#&lt;/a>
&lt;/h3>&lt;p>In addition to moving forward our workstreams, we also have a unique challenge in team support and dynamics.
2i2c is a small team, it is also distributed across 10 time zones!
This adds a lot of extra challenge in getting the team to communicate with one another, support one another as individuals, and learn and grow as a team.
We believe that it&amp;rsquo;s critical to support one another, and to have systems in 2i2c that recognize these challenges in distributed collaboration to design around them.&lt;/p>
&lt;p>So, we&amp;rsquo;re exploring how to create a &lt;strong>&amp;ldquo;People Operations&amp;rdquo; function within 2i2c&lt;/strong> that can dedicate their time to supporting 2i2c&amp;rsquo;s team as a group as individuals.
This might mean defining creative ways for team-building, creating mechanisms to surface where team members are struggling or need support, and growing best-practices in inclusive asynchronous team culture.&lt;/p>
&lt;p>We&amp;rsquo;re in the process of designing this role, and hope to have it out in the coming months!&lt;/p>
&lt;h3 id="we-need-more-engineering-capacity">
We need more engineering capacity
&lt;a class="header-anchor" href="#we-need-more-engineering-capacity">#&lt;/a>
&lt;/h3>&lt;p>Finally, we also realized we need more cloud engineering capacity on our team, particularly in a timezone that overlaps with the American continents.
This will give our team a bit more breathing room to balance reactive and project-based work, and have more capacity to focus on personal growth and learning.&lt;/p>
&lt;p>You can find our
&lt;a href="https://2i2c.org/jobs/2023/23qq4-open-source-infrastructure-engineer/" target="_blank" rel="noopener" >Open Source Infrastructure Engineer&lt;/a> job post here if you&amp;rsquo;re interested.&lt;/p>
&lt;h2 id="whats-up-next-for-our-team">
What&amp;rsquo;s up next for our team?
&lt;a class="header-anchor" href="#whats-up-next-for-our-team">#&lt;/a>
&lt;/h2>&lt;p>Finally, we&amp;rsquo;ve also adopted a new quarterly planning system to align our team around key goals that deserve focused attention in each quarter.
This will let us be more intentional about considering our work in the context of 2i2c&amp;rsquo;s broader opportunities and challenges.&lt;/p>
&lt;p>For the final quarter of 2023, we&amp;rsquo;re focusing on these key goals:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Begin to standardize and refine our product offering&lt;/strong>.
In advance of our Product Lead role, we are doing a bit of work to more precisely describe and structure our &lt;em>current&lt;/em> service offering.
Our goal is to lay a foundation that our upcoming Product Lead can then use to learn about 2i2c&amp;rsquo;s product and make progress more quickly.&lt;/li>
&lt;li>&lt;strong>Pay down technical debt&lt;/strong>.
Our engineering team is going to focus on streamlining their operations and reducing toil, in order to reduce the number of &amp;ldquo;unexpected distractions&amp;rdquo; that come with inefficient infrastructure and processes.
It will also make the service more reliable and transparent for our communities.&lt;/li>
&lt;li>&lt;strong>Build foundational resources for hub champions to support their community.&lt;/strong>
Our Partnerships team will lead an effort to build basic infrastructure and content that communities can use to create their own knowledge bases around hubs. This will be ongoing work so the goal here is to create a foundation to build upon in the future.&lt;/li>
&lt;/ul>
&lt;p>We hope that this has been an informative update from our team, and we appreciate everybody&amp;rsquo;s input and collaboration over the past few months.
We think that the tensions described in this post are healthy - they&amp;rsquo;re reflective of an organization that is growing and reaching organizational milestones.
We&amp;rsquo;re excited to tackle them and to continue growing our impact and partnerships.&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by a grant from
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a> and fees from
&lt;a href="https://2i2c.org/members/" >our Member Communities&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Product Lead</title><link>https://2i2c.org/jobs/2023/product-lead/</link><pubDate>Sun, 29 Oct 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/jobs/2023/product-lead/</guid><description>&lt;p>We’re looking for a Product Lead who will be instrumental in shaping 2i2c’s product vision, strategy, and execution.
You’ll own the product vision, align it with user needs, and translate it into a clear product roadmap which defines cross-functional priorities and guides our partnerships and engineering teams, enabling efficient product delivery and continuous improvement.&lt;/p>
&lt;p>&lt;strong>For more information and to apply, see
&lt;a href="https://boards.greenhouse.io/codeforsciencesociety/jobs/4122980007?gh_jid=4122980007" target="_blank" rel="noopener" >our Greenhouse application page for this job&lt;/a>&lt;/strong>.&lt;/p>
&lt;div class="job-info">
&lt;p>❌❌❌&lt;br>
This posting is closed to new applications.&lt;br>
See &lt;a href="https://2i2c.org/jobs">the jobs page&lt;/a> for our open positions.&lt;br>
❌❌❌&lt;/p>
&lt;p>&lt;i class="fa fa-info-circle">&lt;/i> &lt;strong>About the position&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Salary&lt;/strong>: $95,000-125,000&lt;/li>
&lt;li>&lt;strong>Location&lt;/strong>: Remote, preference for working hours that maximizes overlap in time zones with the existing team (currently distributed from UTC-7 through UTC+3)&lt;/li>
&lt;li>&lt;strong>Deadline&lt;/strong>: We will begin reviewing applications around &lt;strong>November 5th&lt;/strong>, and will accept them on a rolling basis until the position is filled.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Major duties&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Define and own the product vision and strategy assuming ‘the voice of the user’, and doing so collaboratively and inclusively.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Create a clear product roadmap that guides the engineering and partnerships teams.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Collaborate closely with our engineers and users in partner organizations to translate the product roadmap into actionable plans and tasks.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>For more general information about 2i2c, see the links below:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://compass.2i2c.org/" target="_blank" rel="noopener" >Our Team Compass&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/code-of-conduct/index.html" target="_blank" rel="noopener" >Our Code of Conduct&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/organization/mission.html" target="_blank" rel="noopener" >Our Mission and Values&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/#what-its-like-to-work-at-2i2c" target="_blank" rel="noopener" >What it&amp;rsquo;s like to work at 2i2c&lt;/a>&lt;/li>
&lt;/ul>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://boards.greenhouse.io/codeforsciencesociety/jobs/4122980007?gh_jid=4122980007" class="btn btn-primary px-3 py-3">Click here to Apply&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/div></description></item><item><title>Product Lead</title><link>https://2i2c.org/jobs/2023/product-operations-lead/</link><pubDate>Sun, 29 Oct 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/jobs/2023/product-operations-lead/</guid><description>&lt;p>Please see the
&lt;a href="https://2i2c.org/jobs/2023/product-lead/" >Product Lead page&lt;/a>.&lt;/p>
&lt;meta http-equiv="refresh" content="0; url=../product-lead/" /></description></item><item><title>UNITEFA forms the first community of the Catalyst Project at UNC, through the CCAD (in Spanish)</title><link>https://2i2c.org/blog/external-unitefa-catalyst/</link><pubDate>Mon, 23 Oct 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/external-unitefa-catalyst/</guid><description/></item><item><title>Delivery Manager / Chief of Staff</title><link>https://2i2c.org/jobs/2023/delivery-manager/</link><pubDate>Fri, 13 Oct 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/jobs/2023/delivery-manager/</guid><description>&lt;p>We’re looking for a &lt;strong>Delivery Manager&lt;/strong> who will serve as a key facilitator in ensuring the successful and efficient delivery of
&lt;a href="https://2i2c.org/service/" target="_blank" rel="noopener" >our product&lt;/a>. Acting as a servant leader, you’ll guide our engineering team, promote collaboration, and eliminate obstacles to deliver high-quality results that are aligned with our mission and goals.&lt;/p>
&lt;p>&lt;strong>For more information and to apply, see
&lt;a href="https://boards.greenhouse.io/codeforsciencesociety/jobs/4119969007?gh_jid=4119969007" target="_blank" rel="noopener" >our Greenhouse application page for this job&lt;/a>&lt;/strong>.&lt;/p>
&lt;div class="job-info">
&lt;p>❌❌❌&lt;br>
This posting is closed to new applications.&lt;br>
See &lt;a href="https://2i2c.org/jobs">the jobs page&lt;/a> for our open positions.&lt;br>
❌❌❌&lt;/p>
&lt;p>&lt;i class="fa fa-info-circle">&lt;/i> &lt;strong>About the position&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Salary&lt;/strong>: $85,000 - $107,000&lt;/li>
&lt;li>&lt;strong>Location&lt;/strong>: Remote, preference for working hours that maximizes overlap in time zones with the existing team (currently distributed from UTC-7 through UTC+3)&lt;/li>
&lt;li>&lt;strong>Deadline&lt;/strong>: We will begin reviewing applications around &lt;strong>October 23rd&lt;/strong>, and will accept them on a rolling basis until the position is filled.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Major duties&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Ensure the successful and efficient delivery of our product (
&lt;a href="https://2i2c.org/service/" target="_blank" rel="noopener" >2i2c.org/service/&lt;/a>)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Organize and oversee cross-functional work across the team&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Detailed planning and day-to-day management of engineering tasks&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>For more general information about 2i2c, see the links below:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://compass.2i2c.org/" target="_blank" rel="noopener" >Our Team Compass&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/code-of-conduct/index.html" target="_blank" rel="noopener" >Our Code of Conduct&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/organization/mission.html" target="_blank" rel="noopener" >Our Mission and Values&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/#what-its-like-to-work-at-2i2c" target="_blank" rel="noopener" >What it&amp;rsquo;s like to work at 2i2c&lt;/a>&lt;/li>
&lt;/ul>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://boards.greenhouse.io/codeforsciencesociety/jobs/4119969007?gh_jid=4119969007" class="btn btn-primary px-3 py-3">Click here to Apply&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/div></description></item><item><title>Open Source Infrastructure Engineer</title><link>https://2i2c.org/jobs/2023/23qq4-open-source-infrastructure-engineer/</link><pubDate>Tue, 10 Oct 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/jobs/2023/23qq4-open-source-infrastructure-engineer/</guid><description>&lt;p>We are looking for an experienced Open Source Infrastructure Engineer who will help shape the future
of data-intensive scientific research and make a big impact on democratizing the design and access
to cloud-based resources for research and education purposes. This engineer will be part of an awesome
engineering team pushing forward the development and reliable operations of our cloud-based infrastructure.&lt;/p>
&lt;p>&lt;strong>For more information and to apply, see
&lt;a href="https://boards.greenhouse.io/codeforsciencesociety/jobs/4120089007?gh_jid=4120089007" target="_blank" rel="noopener" >our Greenhouse application page for this job&lt;/a>&lt;/strong>.&lt;/p>
&lt;!-- Defined in layouts/shortcodes/job_details.html -->
&lt;div class="job-info">
&lt;p>❌❌❌&lt;br>
This posting is closed to new applications.&lt;br>
See &lt;a href="https://2i2c.org/jobs">the jobs page&lt;/a> for our open positions.&lt;br>
❌❌❌&lt;/p>
&lt;p>&lt;i class="fa fa-info-circle">&lt;/i> &lt;strong>About the position&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Salary&lt;/strong>: $121,600 - $130,500&lt;/li>
&lt;li>&lt;strong>Location&lt;/strong>: Remote, required overlapping for US Pacific timezones&lt;/li>
&lt;li>&lt;strong>Deadline&lt;/strong>: We will begin reviewing applications around &lt;strong>October 16th&lt;/strong>, and will accept them on a rolling basis until the position is filled.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Major duties&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Cloud infrastructure management and operations&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Site Reliability Engineering&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Development of open source infrastructure for hosted JupyterHub service&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>For more general information about 2i2c, see the links below:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://compass.2i2c.org/" target="_blank" rel="noopener" >Our Team Compass&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/code-of-conduct/index.html" target="_blank" rel="noopener" >Our Code of Conduct&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/organization/mission.html" target="_blank" rel="noopener" >Our Mission and Values&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/#what-its-like-to-work-at-2i2c" target="_blank" rel="noopener" >What it&amp;rsquo;s like to work at 2i2c&lt;/a>&lt;/li>
&lt;/ul>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://boards.greenhouse.io/codeforsciencesociety/jobs/4120089007?gh_jid=4120089007" class="btn btn-primary px-3 py-3">Click here to Apply&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/div></description></item><item><title>A new design and logo for 2i2c</title><link>https://2i2c.org/blog/new-design/</link><pubDate>Thu, 07 Sep 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/new-design/</guid><description>&lt;p>We are thrilled to announce a revitalized visual brand for 2i2c.
As we continue to grow and evolve, it&amp;rsquo;s essential that our branding communicates who we are, what we stand for, and how we envision our future.
We hope that this new design will unify our visual style across the many places where 2i2c operates.&lt;/p>
&lt;p>In pursuit of these objectives, we teamed up with
&lt;a href="https://www.linkedin.com/in/zacharia-adell-230a3399" target="_blank" rel="noopener" >Zack Adell&lt;/a>, a designer based in Nairobi who has worked with several similar projects over the years (having most-recently overhauled the
&lt;a href="https://investinopen.org/blog/introducing-our-new-logo-and-visual-identity/" target="_blank" rel="noopener" >Invest in Open Infrastructure brand design&lt;/a>).
After several rounds of brainstorming, design reviews, and fine-tuning, we&amp;rsquo;ve landed on a visual identity that resonates with our organization.&lt;/p>
&lt;h2 id="meet-our-new-logo-and-design-system">
Meet Our New Logo and design system
&lt;a class="header-anchor" href="#meet-our-new-logo-and-design-system">#&lt;/a>
&lt;/h2>&lt;p>Zack has created
&lt;a href="https://docs.google.com/presentation/d/1O36_yjTSKiXB9_yAnj4QnF_sob1z_GQmcfIVrZ_ymeY/edit?usp=sharing" target="_blank" rel="noopener" >a set of Brand Guidelines&lt;/a> that will guide our use of color and visual style in 2i2c&amp;rsquo;s materials.&lt;/p>
&lt;p>Below is our new logo in square and wide form:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Our square logo" srcset="
/blog/new-design/logo_hu8fbfbe36da3efb766b43fe939cc064d6_2589_18d63144cbd324a1ceb9e14cf1709356.webp 400w,
/blog/new-design/logo_hu8fbfbe36da3efb766b43fe939cc064d6_2589_b42f1a4723f97232019c88b7ddec2e46.webp 760w,
/blog/new-design/logo_hu8fbfbe36da3efb766b43fe939cc064d6_2589_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/new-design/logo_hu8fbfbe36da3efb766b43fe939cc064d6_2589_18d63144cbd324a1ceb9e14cf1709356.webp"
width="194"
height="194"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Our wide logo" srcset="
/blog/new-design/logo-wide_hub646ed832318eca84c20b2d69731c405_12206_5ec910812c1f77900e2be5558b1ba1be.webp 400w,
/blog/new-design/logo-wide_hub646ed832318eca84c20b2d69731c405_12206_dfc595c50eef325b539c8ddd78405ad2.webp 760w,
/blog/new-design/logo-wide_hub646ed832318eca84c20b2d69731c405_12206_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/new-design/logo-wide_hub646ed832318eca84c20b2d69731c405_12206_5ec910812c1f77900e2be5558b1ba1be.webp"
width="760"
height="213"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Our logo comprises the &lt;code>International Interactive Computing Collaboration&lt;/code> wordmark, characterized by our interactive &lt;code>i&lt;/code>.
We can fly it just about anywhere.
A mark of constant progress &amp;amp; community-driven technology, it isn&amp;rsquo;t stuck to the borders that separate people.
It brings us closer together.&lt;/p>
&lt;p>Our primary and secondary color palette is below:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Primary color palette" srcset="
/blog/new-design/logo-colors-primary_hu04e8c7f8ff494896e02d5377f3431ba1_31284_d0987a0fab296fa56cb1cb44902c0578.webp 400w,
/blog/new-design/logo-colors-primary_hu04e8c7f8ff494896e02d5377f3431ba1_31284_93f87f1073fa608a97afc342d1ba52c2.webp 760w,
/blog/new-design/logo-colors-primary_hu04e8c7f8ff494896e02d5377f3431ba1_31284_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/new-design/logo-colors-primary_hu04e8c7f8ff494896e02d5377f3431ba1_31284_d0987a0fab296fa56cb1cb44902c0578.webp"
width="760"
height="379"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Secondary color palette" srcset="
/blog/new-design/logo-colors-secondary_hubd76cae690a0c031fa0d8ccff93645f8_46064_cac430a7d82273b52e897297794316b3.webp 400w,
/blog/new-design/logo-colors-secondary_hubd76cae690a0c031fa0d8ccff93645f8_46064_d97a0cca3ab0b3f1564e625583632d46.webp 760w,
/blog/new-design/logo-colors-secondary_hubd76cae690a0c031fa0d8ccff93645f8_46064_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/new-design/logo-colors-secondary_hubd76cae690a0c031fa0d8ccff93645f8_46064_cac430a7d82273b52e897297794316b3.webp"
width="760"
height="379"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Color is the first visual thing we remember and a powerful asset in building brand recognition.
Our color is blue.
Our community blue says the sky is not the limit. It&amp;rsquo;s energetic and vibrant, just like the community we serve.
And it&amp;rsquo;s our primary colour, supported by a lively secondary palette that&amp;rsquo;s as at home on digital platforms as it is on billboards.&lt;/p>
&lt;p>We&amp;rsquo;ve chosen two fonts to use in the majory of the text that we write.
&lt;code>Poppins&lt;/code> for big, bold sentences, and &lt;code>Work Sans&lt;/code> for more versatile and everyday use.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Examples of our two primary font choices" srcset="
/blog/new-design/typography_hu1025cdee0b378cb9780a4d041a387b0f_44573_2297a983267710b55676c8cf6486579a.webp 400w,
/blog/new-design/typography_hu1025cdee0b378cb9780a4d041a387b0f_44573_7f4b639c1f42b27e100d3e439f3ffcad.webp 760w,
/blog/new-design/typography_hu1025cdee0b378cb9780a4d041a387b0f_44573_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/new-design/typography_hu1025cdee0b378cb9780a4d041a387b0f_44573_2297a983267710b55676c8cf6486579a.webp"
width="760"
height="252"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Finally, you might notice these curving, criss-crossing strands in some of our materials.
For example, in our new social media header:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Twitter header image" srcset="
/blog/new-design/header-twitter_hud0e5b3f1408a671aba832891517b14bc_60234_9522f0abd74212be93bbe05768cbcba4.webp 400w,
/blog/new-design/header-twitter_hud0e5b3f1408a671aba832891517b14bc_60234_3e56b6071c8d88e613707255b03b2179.webp 760w,
/blog/new-design/header-twitter_hud0e5b3f1408a671aba832891517b14bc_60234_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/new-design/header-twitter_hud0e5b3f1408a671aba832891517b14bc_60234_9522f0abd74212be93bbe05768cbcba4.webp"
width="760"
height="253"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>They&amp;rsquo;re the strands that intersect and show how our work and values are interconnected to our community.
We like them because they represent 2i2c&amp;rsquo;s core mission, which is to build connections between people, computation, and data in order to share open knowledge.
We&amp;rsquo;ll try and think of creative ways to incorporate them into our visual style.&lt;/p>
&lt;p>We believe our new visual identity is more than just a fresh coat of paint.
It&amp;rsquo;s a reaffirmation of our commitment to our stakeholders and an exciting milestone in our ongoing journey.
We can&amp;rsquo;t wait for you to see it in action, and are excited to hear what you think about it!&lt;/p>
&lt;blockquote>
&lt;p>❗ &lt;strong>Note&lt;/strong>&lt;/p>
&lt;p>If you&amp;rsquo;d like to get in touch with Zack Adell, please reach out on
&lt;a href="https://www.linkedin.com/in/zacharia-adell-230a3399/" target="_blank" rel="noopener" >his LinkedIn profile&lt;/a>, or
&lt;a href="https://www.instagram.com/iamzackadell/" target="_blank" rel="noopener" >his Instagram account&lt;/a>.&lt;/p>
&lt;/blockquote></description></item><item><title>A QGIS desktop in the cloud with JupyterHub</title><link>https://2i2c.org/blog/qgis-greenland/</link><pubDate>Sat, 05 Aug 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/qgis-greenland/</guid><description>&lt;p>
&lt;figure id="figure-the-qgreenland-researcher-workshophttpsqgreenland-workshop-2023-researchergithubio">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="QGreenland Researcher Workshop" srcset="
/blog/qgis-greenland/featured_hu9562f6f382c010541578bd7b61c7cb4a_187505_ba903db7827843ac9c98f5a33564cef8.webp 400w,
/blog/qgis-greenland/featured_hu9562f6f382c010541578bd7b61c7cb4a_187505_9436f231da2c0221d6b03477aee6170c.webp 760w,
/blog/qgis-greenland/featured_hu9562f6f382c010541578bd7b61c7cb4a_187505_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/qgis-greenland/featured_hu9562f6f382c010541578bd7b61c7cb4a_187505_ba903db7827843ac9c98f5a33564cef8.webp"
width="760"
height="498"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The
&lt;a href="https://qgreenland-workshop-2023-researcher.github.io/" target="_blank" rel="noopener" >QGreenland Researcher Workshop&lt;/a>
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>JupyterHub is a versatile platform that can serve a desktop with Geospatial Information Systems (GIS) software in the cloud. This was demonstrated by the QGreenland Researcher Workshop that was hosted by the NASA
&lt;a href="https://2i2c.org/collaborators/cryocloud/" >CryoCloud&lt;/a> hub. The hands-on workshop trained 25-30 researchers, from Germany, India, France, Canada, Poland and the United States, on how to work with geospatial data in an open science framework.&lt;/p>
&lt;h2 id="qgreenland-overview">
QGreenland Overview
&lt;a class="header-anchor" href="#qgreenland-overview">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://qgreenland.org/" target="_blank" rel="noopener" >QGreenland&lt;/a> is an open-source geospatial data package designed for QGIS, a community-owned GIS platform. It focuses on Greenland, offering researchers and educators a comprehensive toolset for FAIR (findable, accessible, interoperable and reproducible) data analysis. The package integrates a variety of datasets into a single, easy-to-use data-viewing and analysis platform, supporting both offline and online use. This makes it particularly valuable for remote fieldwork and areas with limited internet access.&lt;/p>
&lt;h2 id="workshop-success">
Workshop Success
&lt;a class="header-anchor" href="#workshop-success">#&lt;/a>
&lt;/h2>&lt;p>The QGreenland workshop demonstrated several key benefits of using JupyterHub for cloud-based GIS:&lt;/p>
&lt;ul>
&lt;li>Accessibility: Participants from across the world could access the same powerful GIS tools through a web browser, eliminating the need for complex local installations while enhancing reproducibility&lt;/li>
&lt;li>Cloud block storage: Using a JupyterHub in the cloud allowed for faster data access than a traditional NFS file store by provisioning each user with an elastic block store disk, reducing load times from 5 minutes to under 3 seconds.&lt;/li>
&lt;li>Cost Efficiency: Utilizing the
&lt;a href="https://2i2c.org/collaborators/cryocloud/" >CryoCloud&lt;/a> JupyterHub instance managed by 2i2c drastically cut down setup costs and time, with only minimal cloud operating expenses of roughly $1/person/day.&lt;/li>
&lt;/ul>
&lt;h2 id="conclusion">
Conclusion
&lt;a class="header-anchor" href="#conclusion">#&lt;/a>
&lt;/h2>&lt;p>The success of the QGreenland workshop underscores the potential of integrating interactive software applications in JupyterHub. This approach not only democratizes access to advanced geospatial tools but also fosters a collaborative research environment. We look forward to supporting more workshops for QGreenland in the future!&lt;/p>
&lt;p>&lt;em>Want to know more? Check out the companion post by QGreenland on the
&lt;a href="https://blog.jupyter.org/desktop-gis-software-in-the-cloud-with-jupyterhub-ddced297019a" target="_blank" rel="noopener" >Jupyter Blog&lt;/a>&lt;/em>&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://cires.colorado.edu/people/trey-stafford" target="_blank" rel="noopener" >Trey Stafford&lt;/a>
&lt;a href="https://cires.colorado.edu/" target="_blank" rel="noopener" >(CIRES)&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://cires.colorado.edu/people/matthew-fisher" target="_blank" rel="noopener" >Matthew Fisher&lt;/a>
&lt;a href="https://cires.colorado.edu/" target="_blank" rel="noopener" >(CIRES)&lt;/a>&lt;/li>
&lt;li>*Fisher, M., *T. Stafford, T. Moon, and A. Thurber (2023). QGreenland (v3) [software], National Snow and Ice Data Center.&lt;/li>
&lt;li>Snow, Tasha, Millstein, Joanna, Scheick, Jessica, Sauthoff, Wilson, Leong, Wei Ji, Colliander, James, Pérez, Fernando, James Munroe, Felikson, Denis, Sutterley, Tyler, &amp;amp; Siegfried, Matthew. (2023).
&lt;a href="https://book.cryointhecloud.com" target="_blank" rel="noopener" >CryoCloud JupyterBook&lt;/a> (2023.01.26). Zenodo.
&lt;a href="https://doi.org/10.5281/zenodo.7576602" target="_blank" rel="noopener" >10.5281/zenodo.7576602&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>* Denotes co-equal lead authorship&lt;/p></description></item><item><title>Technical Content Specialist</title><link>https://2i2c.org/jobs/2023/technical-content-specialist/</link><pubDate>Wed, 12 Jul 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/jobs/2023/technical-content-specialist/</guid><description>&lt;p>2i2c manages, supports, and builds community-centric infrastructure for interactive computing in the cloud with partner communities in research and education.&lt;/p>
&lt;p>We’re looking for a Technical Content Specialist that will create and curate documentation that supports interactive computing and cloud based open science. It intersects job titles such as “technical writer” and “content creator” while emphasizing previous experience working with open source science and related tools and a desire to share that knowledge.&lt;/p>
&lt;!-- Insert metadata for this job -->
&lt;!-- defined in layouts/shortcodes/job_details.html -->
&lt;div class="job-info">
&lt;p>❌❌❌&lt;br>
This posting is closed to new applications.&lt;br>
See &lt;a href="https://2i2c.org/jobs">the jobs page&lt;/a> for our open positions.&lt;br>
❌❌❌&lt;/p>
&lt;p>&lt;i class="fa fa-info-circle">&lt;/i> &lt;strong>About the position&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Salary&lt;/strong>: $75,000 - $85,000&lt;/li>
&lt;li>&lt;strong>Location&lt;/strong>: Fully remote&lt;/li>
&lt;li>&lt;strong>Deadline&lt;/strong>: We will begin reviewing applications around &lt;strong>August 2, 2023&lt;/strong>, and will accept them on a rolling basis until the position is filled.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Major duties&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Create documentation for cloud-based interactive computing.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Curate documentation and resources from open source and open science projects.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>For more general information about 2i2c, see the links below:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://compass.2i2c.org/" target="_blank" rel="noopener" >Our Team Compass&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/code-of-conduct/index.html" target="_blank" rel="noopener" >Our Code of Conduct&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/organization/mission.html" target="_blank" rel="noopener" >Our Mission and Values&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/#what-its-like-to-work-at-2i2c" target="_blank" rel="noopener" >What it&amp;rsquo;s like to work at 2i2c&lt;/a>&lt;/li>
&lt;/ul>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://forms.gle/H43CsVUoF7e2C2Nm8" class="btn btn-primary px-3 py-3">Click here to Apply&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/div>
&lt;p>If you’re interested in advancing your career at an impact-driven non-profit that is dedicated to open communities and public knowledge, then read on…&lt;/p>
&lt;h2 id="about-you">
About you…
&lt;a class="header-anchor" href="#about-you">#&lt;/a>
&lt;/h2>&lt;p>Below are several skills that will make somebody well-suited for this role. &lt;strong>You should apply even if you do not have all of these skills&lt;/strong>. We expect any new hires to learn and grow into this role over time. If you aren’t sure whether you have the right skills for this job, you should just apply! This is a fully remote role with a preference for working hours that overlap timezones with the existing team (currently distributed from UTC-7 through UTC+3).&lt;/p>
&lt;h3 id="necessary-qualities">
Necessary qualities
&lt;a class="header-anchor" href="#necessary-qualities">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>Demonstrated excellence in communicating complex technical information to learners with a different levels of background and experience&lt;/li>
&lt;li>Demonstrated experience in using open-science tools (e.g. Python or R) in a scientific or scholarly domain&lt;/li>
&lt;li>Willingness to continually learn and share emerging technologies and techniques in the interactive computing and open science ecosystems&lt;/li>
&lt;/ul>
&lt;h3 id="useful-qualities">
Useful qualities
&lt;a class="header-anchor" href="#useful-qualities">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>Experience with open source workflows, research and educational contexts, and an understanding of the value that cloud-based infrastructure provides&lt;/li>
&lt;li>Experience with the Jupyter ecosystem and other tools for interactive computing&lt;/li>
&lt;li>Experience working with distributed service teams that use asynchronous methods of communication&lt;/li>
&lt;li>Experience collaborating and coordinating work via online platforms and distributed revision control&lt;/li>
&lt;li>Ability to communicate in Spanish, Portuguese, or French&lt;/li>
&lt;/ul>
&lt;h2 id="what-youll-do">
What you’ll do…
&lt;a class="header-anchor" href="#what-youll-do">#&lt;/a>
&lt;/h2>&lt;p>As a Technical Content Specialist, you’ll be responsible for…&lt;/p>
&lt;ul>
&lt;li>Working as part of the 2i2c Partnerships Team towards Community Success&lt;/li>
&lt;li>Creating documentation (tutorials, how-tos, explainers, and reference materials) that are shared across our communities using cloud-based interactive computing&lt;/li>
&lt;li>Curating documentation resources from open source and open science projects&lt;/li>
&lt;li>Developing training materials for communities such as
&lt;ul>
&lt;li>Version control for collaborative cloud-based workflows&lt;/li>
&lt;li>Environment management for hub administrators&lt;/li>
&lt;li>Best practices for analysis-ready cloud optimized data&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Assisting the 2i2c Engineering Team by editing technical documentation and documenting solutions from our support desk&lt;/li>
&lt;li>Authoring content for 2i2c for use in marketing, blog posts, and website copy.&lt;/li>
&lt;/ul>
&lt;h2 id="our-benefits-and-compensation">
Our benefits and compensation
&lt;a class="header-anchor" href="#our-benefits-and-compensation">#&lt;/a>
&lt;/h2>&lt;p>We believe it is important for mission-driven non-profits to also provide competitive benefits and compensation packages. See
&lt;a href="https://2i2c.org/jobs/#our-compensation-philosophy" target="_blank" rel="noopener" >our compensation philosophy page&lt;/a> for more information about our compensation and benefits.&lt;/p>
&lt;h2 id="how-to-apply">
How to apply
&lt;a class="header-anchor" href="#how-to-apply">#&lt;/a>
&lt;/h2>&lt;p>2i2c is committed to hiring processes that are inclusive of people with many lived experiences and qualities. We try to structure our hiring process so that it is predictable, doesn’t take too long, and doesn’t take too much effort.&lt;/p>
&lt;p>If you’d like to apply for this position, please upload your resume and cover letter using this
&lt;a href="https://forms.gle/H43CsVUoF7e2C2Nm8" target="_blank" rel="noopener" >application form&lt;/a>. We will begin reviewing applications after &lt;strong>August 2, 2023&lt;/strong> and will fill this position on a rolling basis once we find a candidate with the right fit for the job.&lt;/p></description></item><item><title>On the Jupyter Blog: From intern to mentor.</title><link>https://2i2c.org/blog/external-jupyter-georgiana-mentor/</link><pubDate>Fri, 30 Jun 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/external-jupyter-georgiana-mentor/</guid><description>
&lt;h2 id="6------1-----------------------">
6&amp;mdash;&amp;mdash;1&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash;
&lt;a class="header-anchor" href="#6------1-----------------------">#&lt;/a>
&lt;/h2></description></item><item><title>Community update Q1 2023: Growing our community partner network and our team</title><link>https://2i2c.org/blog/2023-q1-update/</link><pubDate>Fri, 28 Apr 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/2023-q1-update/</guid><description>&lt;p>It&amp;rsquo;s a month after the end of Q1 2023, and we&amp;rsquo;d like to share a belated update about what we were up to in the first quarter of this year (we have good excuses for being late, including new tiny humans, I promise).&lt;/p>
&lt;p>This quarter we grew our engineering team significantly, and started to refine our team processes and structures to accommodate this extra complexity.
We expanded our managed cloud service with new community partners, and made a number of improvements to our technical infrastructure and organizational processes for managing this service.&lt;/p>
&lt;p>Read on below to learn more about what we&amp;rsquo;ve been up to!&lt;/p>
&lt;h2 id="new-community-partnerships">
New community partnerships
&lt;a class="header-anchor" href="#new-community-partnerships">#&lt;/a>
&lt;/h2>&lt;p>We added several new community partnerships to our managed hub service.
We&amp;rsquo;ve deployed new hub infrastructure for each of the following groups:&lt;/p>
&lt;ul>
&lt;li>Our
&lt;a href="https://act.utoronto.ca/jupyterhub-support/" target="_blank" rel="noopener" >University of Toronto Jupyter service&lt;/a> now has a dedicated R hub.&lt;/li>
&lt;li>We ran an event hub for the
&lt;a href="https://www.drakkar-ocean.eu/" target="_blank" rel="noopener" >Drakkar Ocean project&lt;/a>&lt;/li>
&lt;li>We deployed a hub for the
&lt;a href="https://www.earthdata.nasa.gov/esds/veda" target="_blank" rel="noopener" >NASA Visuaslization Exploration and Data Analysis (VEDA) project&lt;/a>.&lt;/li>
&lt;li>We deployed a hub for the
&lt;a href="https://www.linkedin.com/company/quantifiedcarbon/about/" target="_blank" rel="noopener" >QuantifiedCarbon&lt;/a> organization.&lt;/li>
&lt;li>We ran an event hub for
&lt;a href="https://oceanhackweek.org/" target="_blank" rel="noopener" >OceanHackWeek 2023&lt;/a>.&lt;/li>
&lt;li>We onboarded several new community colleges to our &amp;ldquo;JupyterHubs Education in Community Colleges&amp;rdquo; collaboration with
&lt;a href="https://www.cloudbank.org/welcome-cloudbank" target="_blank" rel="noopener" >CloudBank&lt;/a> and
&lt;a href="https://data.berkeley.edu/" target="_blank" rel="noopener" >UC Berkeley CDSS&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="service-improvements">
Service improvements
&lt;a class="header-anchor" href="#service-improvements">#&lt;/a>
&lt;/h2>&lt;p>Below are a few highlights for ways in which we improved our
&lt;a href="https://docs.2i2c.org" target="_blank" rel="noopener" >Managed Cloud Service&lt;/a> for our partner communities.&lt;/p>
&lt;h3 id="we-simplified-our-authentication-workflow-with-cilogon">
We simplified our authentication workflow with CILogon
&lt;a class="header-anchor" href="#we-simplified-our-authentication-workflow-with-cilogon">#&lt;/a>
&lt;/h3>&lt;p>Authentication services allow us to identify a user when they log onto a hub, which determines their ability to access hub resources.
Previously we had used a combination of
&lt;a href="https://auth0.com/" target="_blank" rel="noopener" >Auth0&lt;/a>,
&lt;a href="https://www.cilogon.org/" target="_blank" rel="noopener" >CILogon&lt;/a>, or
&lt;a href="https://infrastructure.2i2c.org/hub-deployment-guide/configure-auth/github-orgs.html" target="_blank" rel="noopener" >GitHub&lt;/a> for authentication.&lt;/p>
&lt;p>However, over the past year we&amp;rsquo;ve been happy with our use of CILogon so far, especially because of its non-profit status and alignment with many research and education institutions that we work with.
This quarter, we decided to streamline our authentication process by dropping the use of Auth0 and grow our partnership with CILogon.&lt;/p>
&lt;p>💡 &lt;em>Learn more&lt;/em>&lt;/p>
&lt;ul>
&lt;li>See
&lt;a href="https://www.ncsa.illinois.edu/security-made-simple-with-ncsas-cilogon/" target="_blank" rel="noopener" >CILogon&amp;rsquo;s write up about it&amp;rsquo;s partnership with 2i2c&lt;/a>&lt;/li>
&lt;li>See
&lt;a href="https://2i2c.org/blog/cilogon-integration/" >our blog post about our use of CILogon&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="we-exposed-user-activity-dashboards-in-jupyterhub-so-communities-know-how-many-people-are-using-the-service">
We exposed user activity dashboards in JupyterHub so communities know how many people are using the service
&lt;a class="header-anchor" href="#we-exposed-user-activity-dashboards-in-jupyterhub-so-communities-know-how-many-people-are-using-the-service">#&lt;/a>
&lt;/h3>&lt;p>We tend to work with &lt;em>leaders&lt;/em> of communities that utilize our service and infrastructure for many others in their network.
For example, a teacher with a classroom of students, or a researcher with a global network of collaborators.&lt;/p>
&lt;p>In these cases, it&amp;rsquo;s useful to track how many users are actively using a platform over various metrics of time.
This can tell you whether your community finds a service useful, and whether this is growing or shrinking.&lt;/p>
&lt;p>We use
&lt;a href="https://grafana.com/" target="_blank" rel="noopener" >Grafana&lt;/a> to automatically generate dashboards of activity for all of our community hubs and clusters.
However, tracking &lt;strong>daily, weekly, and monthly active users&lt;/strong> was not part of JupyterHub&amp;rsquo;s core functionality.&lt;/p>
&lt;p>So, we decided to upstream this functionality into JupyterHub and expose it via
&lt;a href="https://github.com/jupyterhub/grafana-dashboards" target="_blank" rel="noopener" >the JupyterHub Grafana project&lt;/a>.
All 2i2c hubs now track daily, weekly, and monthly unique active users.
And importantly, anybody else deploying the
&lt;a href="https://z2jh.jupyter.org" target="_blank" rel="noopener" >Zero to JupyterHub for Kubernetes&lt;/a> can use this feature now too.&lt;/p>
&lt;p>💡 &lt;em>Learn more&lt;/em>&lt;/p>
&lt;p>See
&lt;a href="https://blog.jupyter.org/accurately-counting-daily-weekly-monthly-active-users-on-jupyterhub-6fbec6c6ce2f" target="_blank" rel="noopener" >Yuvi&amp;rsquo;s blog post about this feature&lt;/a>.&lt;/p>
&lt;h3 id="we-made-our-support-process-more-structured-with-a-new-support-widget">
We made our support process more structured with a new support widget
&lt;a class="header-anchor" href="#we-made-our-support-process-more-structured-with-a-new-support-widget">#&lt;/a>
&lt;/h3>&lt;p>We&amp;rsquo;ve added a support widget to our
&lt;a href="https://docs.2i2c.org" target="_blank" rel="noopener" >service documentation site&lt;/a>.
This will allow users to provide structured support requests directly to our team, allowing us to triage and respond more quickly.&lt;/p>
&lt;p>Here&amp;rsquo;s our support button and widget in action:&lt;/p>
&lt;figure id="figure-our-fancy-new-support-button">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Our fancy new support button!" srcset="
/blog/2023-q1-update/support-button_huc6edb6fc8aa30b7e67f78e518989373a_56211_0ed26ef9f563f0dc976ee4d02c001ce3.webp 400w,
/blog/2023-q1-update/support-button_huc6edb6fc8aa30b7e67f78e518989373a_56211_8db53f3f77821bda9f9eca01d90e927f.webp 760w,
/blog/2023-q1-update/support-button_huc6edb6fc8aa30b7e67f78e518989373a_56211_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/2023-q1-update/support-button_huc6edb6fc8aa30b7e67f78e518989373a_56211_0ed26ef9f563f0dc976ee4d02c001ce3.webp"
width="500"
height="736"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Our fancy new support button!
&lt;/figcaption>&lt;/figure>
&lt;h3 id="we-upgraded-kubernetes-across-all-of-our-aws-clusters">
We upgraded Kubernetes across all of our AWS clusters
&lt;a class="header-anchor" href="#we-upgraded-kubernetes-across-all-of-our-aws-clusters">#&lt;/a>
&lt;/h3>&lt;p>
&lt;a href="https://kubernetes.org" target="_blank" rel="noopener" >Kubernetes&lt;/a> is at the core of our cloud infrastructure and scalability.
We use either a shared or a dedicated Kubernetes cluster for each of our community partners, and it is the foundation upon which all of their Jupyter infrastructure rests.&lt;/p>
&lt;p>One of the biggest challenges with managing an ongoing cloud service is keeping the underlying infrastructure upgraded.
This brings in new stability and functionality, but also often involves manual steps and toil.
This quarter, we upgraded each of our AWS JupyterHubs to
&lt;a href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md" target="_blank" rel="noopener" >Kubernetes 1.24&lt;/a> and will continue this effort with other providers in the coming quarters.&lt;/p>
&lt;h3 id="we-streamlined-our-hub-uptime-checks-to-be-more-efficient">
We streamlined our hub uptime checks to be more efficient
&lt;a class="header-anchor" href="#we-streamlined-our-hub-uptime-checks-to-be-more-efficient">#&lt;/a>
&lt;/h3>&lt;p>The best kinds of failures are ones that your operations team recognizes and solves before any users run into the problem themselves.
We use the
&lt;a href="https://cloud.google.com/monitoring/uptime-checks" target="_blank" rel="noopener" >Google Cloud Platform HTTP uptime checker&lt;/a> to
&lt;a href="https://infrastructure.2i2c.org/topic/monitoring-alerting/uptime-checks.html#simple-https-uptime-checks" target="_blank" rel="noopener" >run regular uptime checks for each of the community hubs that we use&lt;/a>.
This allows us to get quick alerts if any of our community hubs is down for some reason.&lt;/p>
&lt;p>We made several optimizations to this process so that we can more efficiently monitor hub uptime and trigger alerts to our engineering team if action is needed.&lt;/p>
&lt;h2 id="organizational-updates">
Organizational updates
&lt;a class="header-anchor" href="#organizational-updates">#&lt;/a>
&lt;/h2>&lt;p>We made a number of broader improvements to our team processes and policies, and even got a shout-out from a few community partners!&lt;/p>
&lt;h3 id="we-defined-organizational-principles-around-engaging-in-healthy-ways-with-open-source-communities">
We defined organizational principles around engaging in healthy ways with open source communities
&lt;a class="header-anchor" href="#we-defined-organizational-principles-around-engaging-in-healthy-ways-with-open-source-communities">#&lt;/a>
&lt;/h3>&lt;p>2i2c interacts with many open source communities throughout its work, due to the fact that the majority of the improvements we make are done via &lt;strong>upstream contributions&lt;/strong>.
We define
&lt;a href="https://compass.2i2c.org/organization/mission/#key-stakeholders" target="_blank" rel="noopener" >several key open source communities&lt;/a> that we interact with, and we needed a philosophy and set of practices to ensure that our relationship with them remains healthy and supportive.&lt;/p>
&lt;p>💡 &lt;em>Learn more&lt;/em>&lt;/p>
&lt;p>Check out &lt;em>
&lt;a href="https://2i2c.org/blog/open-source-funding-principles/" >Principles and considerations for ethically accepting funding for open source&lt;/a>&lt;/em> for our first take on this, and
&lt;a href="https://compass.2i2c.org/open-source/strategy/" target="_blank" rel="noopener" >our Open Source Strategy&lt;/a> page for our current team policies around this.&lt;/p>
&lt;h3 id="we-responded-to-a-nasa-rfi-on-scientific-data-and-computing-architecture-to-support-open-science">
We responded to a NASA RFI on &amp;ldquo;Scientific Data and Computing Architecture to Support Open Science&amp;rdquo;
&lt;a class="header-anchor" href="#we-responded-to-a-nasa-rfi-on-scientific-data-and-computing-architecture-to-support-open-science">#&lt;/a>
&lt;/h3>&lt;p>NASA recently put out a Request for Information around open science and open source infrastructure:
&lt;a href="https://nspires.nasaprs.com/external/solicitations/summary.do?solId=%7B78AA81B6-A7B9-D934-20F8-7B3151DA59A2%7D&amp;amp;path=&amp;amp;method=init" target="_blank" rel="noopener" >NASA RFI NNH23ZDA005L: Scientific Data and Computing Architecture to Support Open Science&lt;/a>.
We responded with some of our ideas around how to build more open, inclusive, collaborative scientific communities with cloud infrastructure and open source tools.&lt;/p>
&lt;p>💡 &lt;em>Learn more&lt;/em>&lt;/p>
&lt;p>
&lt;a href="https://zenodo.org/record/7662828#.ZFEROBXMKrN" target="_blank" rel="noopener" >Check out our submission, &amp;ldquo;Building the open source stack&amp;rdquo;&lt;/a>.&lt;/p>
&lt;h3 id="we-added-two-new-team-members-and-a-new-team-role">
We added two new team members and a new team role
&lt;a class="header-anchor" href="#we-added-two-new-team-members-and-a-new-team-role">#&lt;/a>
&lt;/h3>&lt;p>Our
&lt;a href="https://2i2c.org/organization/#faces" target="_blank" rel="noopener" >Product and Services Team&lt;/a> continues to grow!
We added a new team member to improve and manage our cloud infrastructure service:
&lt;a href="https://2i2c.org/author/erik-sundell/" target="_blank" rel="noopener" >Erik Sundell&lt;/a>.
As our team has grown, we have also had to manage more complexity in communicating and coordinating across a globally-distributed team of engineers.
To help us manage this system, we&amp;rsquo;ve
&lt;a href="https://compass.2i2c.org/engineering/roles/engineering-manager/" target="_blank" rel="noopener" >created a new Engineering Manager Role&lt;/a> and promoted
&lt;a href="https://2i2c.org/author/damian-avila/" target="_blank" rel="noopener" >Damian Avila&lt;/a> as our team&amp;rsquo;s first engineering manager.&lt;/p>
&lt;h3 id="openscapes-wrote-up-a-blog-post-about-our-cloud-service-collaboration">
OpenScapes wrote up a blog post about our cloud service collaboration
&lt;a class="header-anchor" href="#openscapes-wrote-up-a-blog-post-about-our-cloud-service-collaboration">#&lt;/a>
&lt;/h3>&lt;p>We got a nice shout-out from Luis Lopez at the OpenScapes project, describing the benefits of the cloud service that we run for their communities.
Check out his blog post:
&lt;a href="https://www.openscapes.org/blog/11/17/nasa-earthdata-cloud-infrastructure/#cloud-optimized-data-formats" target="_blank" rel="noopener" >The why, what, and how of our NASA Openscapes cloud infrastructure: 2i2c JupyterHub and corn environment&lt;/a>.&lt;/p>
&lt;h2 id="onward-to-q2">
Onward to Q2
&lt;a class="header-anchor" href="#onward-to-q2">#&lt;/a>
&lt;/h2>&lt;p>Many thanks to the 2i2c team, our partner communities, our funders, and the many others that have provided us support and guidance.
We hope that this update provides a helpful idea of our priorities and major efforts, and we look forward to giving you a new update in Q2!&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by a grant from
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a> and fees from
&lt;a href="https://2i2c.org/members/" >our Member Communities&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>CILogon usage at 2i2c</title><link>https://2i2c.org/blog/cilogon-integration/</link><pubDate>Fri, 24 Feb 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/cilogon-integration/</guid><description>
&lt;h2 id="about-cilogon">
About CILogon
&lt;a class="header-anchor" href="#about-cilogon">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://www.cilogon.org" target="_blank" rel="noopener" >CILogon&lt;/a> is an open source service provider that allows users to log in against over 4000 various identity providers, including campus identity providers. The available identity providers are members of
&lt;a href="https://incommon.org/federation/" target="_blank" rel="noopener" >InCommon&lt;/a>, a federation of universities and other organizations that provide single sign-on access to various resources.&lt;/p>
&lt;h2 id="cilogon-and-2i2c">
CILogon and 2i2c
&lt;a class="header-anchor" href="#cilogon-and-2i2c">#&lt;/a>
&lt;/h2>&lt;p>For the past year, 2i2c has been successfully using CILogon for more than fifteen of the hubs it manages.&lt;/p>
&lt;p>Currently, most of the hubs that use it are hubs for communities in education that want to manage their hub access through their own institutional providers.&lt;/p>
&lt;p>With using a tool like CILogon, we allow hub access to be managed both through the communities&amp;rsquo; institutional providers, but also through social providers like GitHub and Google. Because both authentication mechanisms can coexist, there&amp;rsquo;s no need to provide specific credentials for 2i2c staff in order to have access to the hub. This reduces both the burden on institution&amp;rsquo;s IT departments, but also the complexity of a hub deployment.&lt;/p>
&lt;p>Moreover, as we migrate away from our current Auth0 setup, the number of hubs using CILogon will further increase in the following year.&lt;/p>
&lt;h2 id="the-setup">
The setup
&lt;a class="header-anchor" href="#the-setup">#&lt;/a>
&lt;/h2>&lt;p>The setup that 2i2c uses, is based on two important tools, the CILogon administrative client and the JupyterHub CILogonOAuthenticator.&lt;/p>
&lt;h3 id="the-cilogon-administrative-client">
The CILogon administrative client
&lt;a class="header-anchor" href="#the-cilogon-administrative-client">#&lt;/a>
&lt;/h3>&lt;p>The
&lt;a href="https://cilogon.github.io/oa4mp/server/manuals/dynamic-client-registration.html" target="_blank" rel="noopener" >2i2c administrative client&lt;/a> provided by CILogon allowed us to automatically manage the CILogon OAuth applications needed for authenticating into the hub.&lt;/p>
&lt;p>For each hub that uses CILogon, we dynamically create an OAuth
&lt;a href="https://cilogon.github.io/oa4mp/server/manuals/dynamic-client-registration.html" target="_blank" rel="noopener" >client application&lt;/a> in CILogon and store the credentials safely, using the script at
&lt;a href="https://github.com/2i2c-org/infrastructure/blob/3312f373f0aa59fbc98dc1c8161aa9623b68726b/deployer/cilogon_app.py" target="_blank" rel="noopener" >cilogon_app.py&lt;/a>. The script can also used for &lt;code>updating&lt;/code> the callback URLs of an existing OAuth application, &lt;code>deleting&lt;/code> a CILogon OAuth application when a hub is removed or changes authentication methods, &lt;code>getting&lt;/code> details about an existing OAuth application, &lt;code>getting all&lt;/code> existing 2i2c CILogon OAuth applications.&lt;/p>
&lt;h3 id="the-jupyterhub-cilogonoauthenticator">
The JupyterHub CILogonOAuthenticator
&lt;a class="header-anchor" href="#the-jupyterhub-cilogonoauthenticator">#&lt;/a>
&lt;/h3>&lt;p>For CILogon&amp;rsquo;s integration with JupyterHub&amp;rsquo;s authentication workflow, we&amp;rsquo;re using the
&lt;a href="https://github.com/jupyterhub/oauthenticator/blob/main/oauthenticator/cilogon.py" target="_blank" rel="noopener" >&lt;strong>CILogonOAuthenticator&lt;/strong>&lt;/a>, which is part of the
&lt;a href="https://oauthenticator.readthedocs.io/en/latest/" target="_blank" rel="noopener" >JupyterHub OAuthenticator project&lt;/a>. This is what allows JupyterHub to use common OAuth providers for authentication, and it&amp;rsquo;s also a base for writing other Authenticators with any OAuth 2.0 provider.&lt;/p>
&lt;p>As part of this 2i2c integration with the JupyterHub CILogonOAuthenticator some important upstream fixes and enhancements to the
&lt;a href="https://github.com/jupyterhub/oauthenticator" target="_blank" rel="noopener" >&lt;code>oauthenticator&lt;/code>&lt;/a> were identified and performed. For example, the
&lt;a href="https://github.com/jupyterhub/oauthenticator/security/advisories/GHSA-r7v4-jwx9-wx43" target="_blank" rel="noopener" >GHSA-r7v4-jwx9-wx43&lt;/a> vulnerability was reported and fixed, and a
&lt;a href="https://oauthenticator.readthedocs.io/en/latest/how-to/migrations/upgrade-to-15.html" target="_blank" rel="noopener" >migration guide&lt;/a> containing a description of the breaking changes that were made, together with a step by step guide for the users on how to update their usage of JupyterHub CILogonOAuthenticator was provided.&lt;/p>
&lt;p>Read more about how CILogon is setup for use at 2i2c from
&lt;a href="https://infrastructure.2i2c.org/hub-deployment-guide/configure-auth/cilogon.html" target="_blank" rel="noopener" >the docs&lt;/a>.&lt;/p>
&lt;h2 id="celebration">
Celebration
&lt;a class="header-anchor" href="#celebration">#&lt;/a>
&lt;/h2>&lt;p>Thanks to the 2i2c - CILogon partnership, during this past year we were able to integrate CILogon into 2i2c&amp;rsquo;s infrastructure and to observe its importance, usefulness and great support for 2i2c and the communities we server.&lt;/p>
&lt;p>We are now happy to announce that the 2i2c - CILogon partnership has been expanded to another year!&lt;/p>
&lt;p>&lt;strong>Acknowledgements&lt;/strong>: The upstream
&lt;a href="https://oauthenticator.readthedocs.io/en/latest" target="_blank" rel="noopener" >&lt;code>jupyterhub-oauthenticator&lt;/code>&lt;/a> project mentioned in this post as being used at 2i2c is a JupyterHub package, kindly developed and maintained by the
&lt;a href="https://discourse.jupyter.org/c/jupyterhub/" target="_blank" rel="noopener" >JupyterHub community&lt;/a> and the 2i2c integration described was developed by
&lt;a href="https://2i2c.org/organization/" >the 2i2c engineering team&lt;/a>. Also, this post was edited by
&lt;a href="https://jbasney.net/" target="_blank" rel="noopener" >Jim Basney&lt;/a>.&lt;/p></description></item><item><title>Principles and considerations for ethically accepting funding for open source</title><link>https://2i2c.org/blog/open-source-funding-principles/</link><pubDate>Sun, 08 Jan 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/open-source-funding-principles/</guid><description>&lt;p>&lt;em>This is a brainstorm to consider the principles and guidelines that 2i2c should follow in defining its strategy towards open source communities.
See
&lt;a href="https://compass.2i2c.org/open-source/" target="_blank" rel="noopener" >our open source policy documentation&lt;/a> for the product of this brainstorm.&lt;/em>&lt;/p>
&lt;p>Over the past year the 2i2c team has focused its efforts on deploying, configuring, running, and managing cloud infrastructure that supports open source workflows in research and education. We&amp;rsquo;ve also done a lot of &lt;em>upstream contribution&lt;/em> as a part of our work.&lt;/p>
&lt;p>However, we have shied away from taking direct funding for direct development work in open source projects. This is for two primary reasons:&lt;/p>
&lt;ol>
&lt;li>Our focus has been on managing cloud infrastructure, not developing it. We want to facilitate access to open workflows in interactive computing, which is a different skillset and kind of work than &lt;em>creating&lt;/em> those tools.&lt;/li>
&lt;li>While 2i2c is aligned with the interests of open communities, we are still a distinct organization with our own mission and strategy. We want to be conscious that 2i2c team members have &lt;em>more than one hat&lt;/em>, and that their 2i2c hat is necessarily not the same thing as their open source hat. As such, we don&amp;rsquo;t want to leverage our &amp;ldquo;other hats&amp;rdquo; to drive resources to 2i2c without being thoughtful about it.&lt;/li>
&lt;/ol>
&lt;p>In the last year we&amp;rsquo;ve found that running infrastructure for research and education gives us great visibility into the kinds of things that these communities want to do, and ways to improve the infrastructure. It also means we can potentially be a conduit of &lt;em>resources&lt;/em> from those communities into open source development workflows. For example, we recently
&lt;a href="https://2i2c.org/blog/open-source-funding-principles/../../2022/gesis-2i2c-collaboration-update/" >partnered with GESIS to make improvements in Binder and JupyterHub&lt;/a>.&lt;/p>
&lt;p>So, this post is a brainstorm to identify some of the major considerations that we should take before agreeing to this kind of work. Its goals is to drive policy that streamlines our ability to seek and accept funding for open source work. It tries to answer this question:&lt;/p>
&lt;blockquote>
&lt;p>How can a stakeholder accept funding on behalf of an open source community in a way that is inclusive, equitable, and effective.&lt;/p>
&lt;/blockquote>
&lt;h2 id="some-assumptions">
Some assumptions
&lt;a class="header-anchor" href="#some-assumptions">#&lt;/a>
&lt;/h2>&lt;p>First off I want to note that this only applies to open source projects that I&amp;rsquo;d call &amp;ldquo;Open communities&amp;rdquo;. For example, those that follow
&lt;a href="https://openscholarlyinfrastructure.org/" target="_blank" rel="noopener" >the principles of open scholarly infrastructure&lt;/a>. The ideas here don&amp;rsquo;t apply to open source projects that are run by single organizations or people. You can assume I&amp;rsquo;m talking about projects that:&lt;/p>
&lt;ul>
&lt;li>Have inclusive multi-stakeholder governance and operations.&lt;/li>
&lt;li>Care about having a broad contributor and leadership base, and want to follow best-practices in inclusive and equitable operations.&lt;/li>
&lt;li>Need funding to drive major new efforts, or to sustain pre-existing maintenance and community management work.&lt;/li>
&lt;/ul>
&lt;p>Why is this important? In short, because open projects should care about good governance, and about building sustainable and diverse multi-stakeholder communities around their operations and strategy. While it&amp;rsquo;s easy to ignore these considerations and just bring in money however you can (open source is perpetually under-funded, after all), it&amp;rsquo;s crucial that we think about how to do so in a way that aligns with the values of open communities, and that doesn&amp;rsquo;t simply propagate a &amp;ldquo;rich get richer&amp;rdquo; dynamic. Ultimately, the unique value of open communities is not in the technology they create, but in the &lt;em>way that they create it&lt;/em>.&lt;/p>
&lt;h2 id="tldr-an-overview-of-major-considerations">
&lt;code>tl;dr&lt;/code>: An overview of major considerations
&lt;a class="header-anchor" href="#tldr-an-overview-of-major-considerations">#&lt;/a>
&lt;/h2>&lt;p>After working with several open source projects over the years, there are a few issues that I&amp;rsquo;ve seen come up again and again. Here&amp;rsquo;s a quick summary and I&amp;rsquo;ll note each in more detail below.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Governance&lt;/strong>: funding should &lt;em>follow&lt;/em> major decisions, not make them. It should represent the interests of the project rather than those of a single stakeholder or payer.&lt;/li>
&lt;li>&lt;strong>Transparency&lt;/strong>: stakeholders that accept funding should be transparent in their &lt;em>accounting&lt;/em> (the sources of funding, deliverables attached with it, and operational costs), their &lt;em>plans&lt;/em> (the work they plan to do and how they want to do it) and in their &lt;em>strategy&lt;/em> (the reason they&amp;rsquo;re applying for funding in the first place, and how the work fits in with their other operations).&lt;/li>
&lt;li>&lt;strong>Accountability&lt;/strong>: stakeholders that accept funding should be accountable to the open communities that they are supporting. There should be mechanisms for open communities to provide feedback about and influence their operations, ideally in a powerful position like a board seat.&lt;/li>
&lt;li>&lt;strong>Equity&lt;/strong>: funding should be shared with others in the project, particularly those that need it or that couldn&amp;rsquo;t get funding on their own. Moreover, people should be paid for their time - if funding requires work from others, they should be compensated somehow.&lt;/li>
&lt;li>&lt;strong>Inclusion&lt;/strong>: funding &lt;em>opportunities&lt;/em> should be shared with others in a project, particularly those from historically disadvantaged communities. Stakeholders with funding &amp;ldquo;connections&amp;rdquo; should use them to boost others in the community as &lt;em>partners&lt;/em>, not just as contractors&lt;/li>
&lt;/ul>
&lt;p>Here is a more in-depth discussion of each below.&lt;/p>
&lt;h2 id="governance-funding-should-follow-decisions">
Governance: funding should follow decisions
&lt;a class="header-anchor" href="#governance-funding-should-follow-decisions">#&lt;/a>
&lt;/h2>&lt;p>As a general rule, &lt;strong>funding should not be a decision&lt;/strong>, it should only be fuel that helps &lt;strong>execute a decision that has already been made&lt;/strong> by the community. Moreover, responsibilities attached to funding should only be given to people with the power to actually carry them out.&lt;/p>
&lt;p>The most common mistake that I&amp;rsquo;ve seen in open communities is when funding &lt;em>creates&lt;/em> an unintended decision on behalf of many others.&lt;/p>
&lt;p>For example, a new funder shows up with an agenda and offers it to a subset of maintainers. Those maintainers accept, implicitly making a decision to do the bidding of the funder (this could be a grant, a contract, etc). They begin doing the work, and run into resistance from &lt;em>other&lt;/em> maintainers who weren&amp;rsquo;t on-board with these changes in the first place. This creates a stressful situation where one party has legally committed to doing some work, but they may not have the buy-in from others in the community to let it happen. This is particularly problematic when the funding commitment was not advertised publicly to others in the project early on.&lt;/p>
&lt;p>Here are a few tips to ensure that funding is aligned with good governance principles:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Make it clear who is allowed to accept money for a project&lt;/strong>. First and foremost, projects should be explicit about who is allowed to accept money that involves doing open source work for them (e.g., only steering council members can approve new funding). Moreover, they should define basic policies about how that money can be used (e.g. does the project have a cap on the amount that can be paid to individuals).&lt;/li>
&lt;li>&lt;strong>Tell others about your funding opportunity and get buy-in.&lt;/strong> If a stakeholder wants to take advantage of a funding opportunity, they should first tell others on the team about the opportunity and what they hope to do. This is the bare minimum - give others an opportunity to object to your plan and/or ask for clarifications or modifications.&lt;/li>
&lt;li>&lt;strong>Make decisions before funding opportunities arise&lt;/strong>. If the community has already agreed that something is a good idea, then it is much simpler if funding simply helps &lt;em>implement&lt;/em> something rather than &lt;em>propose&lt;/em> something new.&lt;/li>
&lt;/ol>
&lt;h2 id="transparency--make-it-easy-for-others-to-see-your-interests-and-operations">
Transparency: make it easy for others to see your interests and operations
&lt;a class="header-anchor" href="#transparency--make-it-easy-for-others-to-see-your-interests-and-operations">#&lt;/a>
&lt;/h2>&lt;p>Most open projects are community-led, while funding tends to be awarded to one or more stakeholders &lt;em>within&lt;/em> that community. At a minimum, communities should ask stakeholders to provide transparency about why they&amp;rsquo;re looking for funding, what they&amp;rsquo;re agreeing to do, and how they spend the money.&lt;/p>
&lt;p>Transparency is a way of building trust with other stakeholders by being clear about what you&amp;rsquo;re up to. It makes it easier for others to hold you accountable, and makes it easier for others to understand whether your actions are in line with the goals and values of the community.&lt;/p>
&lt;p>Here are a few tips to follow:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Share your budget with the community&lt;/strong>. Money is always a sensitive subject, but communities have a right to know if funding is being spent towards roles and operations that align with their interests. Some communities may also have policies about how much funding can be awarded to an individual person, and making this clear (even if it is in aggregate) helps others understand what you&amp;rsquo;re doing with funds.&lt;/li>
&lt;li>&lt;strong>Declare conflicts of interest&lt;/strong>. We all have multiple hats when working with an open source project (unless we&amp;rsquo;re paid full-time by the project itself). Any participating organization has their own mission, strategy, and interests. Some of these may be aligned with a community, and some may be aligned with a funding opportunity. It&amp;rsquo;s important to declare how these interests align and where they differ, especially as it pertains to power dynamics and how funding is used.&lt;/li>
&lt;li>&lt;strong>Carry out project planning and execution in public&lt;/strong>. Dedicated staff have more time than normal to decide and act quickly. If they don&amp;rsquo;t leave a paper trail for their work, it becomes difficult for those with less time to remain engaged and follow along. Make sure that you make your intentions, and the results of your actions, easily discoverable by those who do not have the same amount of time as you do to engage.&lt;/li>
&lt;/ol>
&lt;h2 id="accountability-allow-others-to-decide-if-youve-done-a-good-job">
Accountability: allow others to decide if you&amp;rsquo;ve done a good job
&lt;a class="header-anchor" href="#accountability-allow-others-to-decide-if-youve-done-a-good-job">#&lt;/a>
&lt;/h2>&lt;p>Accountability is a complement to transparency - you need to show others what you&amp;rsquo;re up to, and let them tell you if you&amp;rsquo;re doing a good job. At a minimum this should happen at the level of the specific funding opportunity, but ideally you should give key community members visibility and agency into your organization&amp;rsquo;s broader strategy.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Ask for feedback about your strategic plan and how this funding fits into it&lt;/strong>. Tell a community about what you&amp;rsquo;re up to, and why you think this funding is in both of your interests to receive. Let them know how it fits in with the big picture.&lt;/li>
&lt;li>&lt;strong>Give strategic oversight to community members that work for a different stakeholder&lt;/strong>. Give special attention to at least one community member that does not work for the same organization (for example, by creating an advisory board and briefing them on your progress and planning). This will help a more neutral perspective represent the interests of the community and avoid potential conflicts of interest.&lt;/li>
&lt;li>&lt;strong>Perform an audit of your work and share it with others&lt;/strong>. Do your best to objectively assess your own progress towards your goals, and whether you believe you&amp;rsquo;ve represented the community&amp;rsquo;s interests in working towards them. Other community members may not have the resources to do this on their own, and you should use your dedicated funding to perform this yourself (while understandably declaring a conflict of interest in assessing your own work).&lt;/li>
&lt;/ol>
&lt;h2 id="equity-share-resources-and-knowledge-with-others">
Equity: share resources and knowledge with others
&lt;a class="header-anchor" href="#equity-share-resources-and-knowledge-with-others">#&lt;/a>
&lt;/h2>&lt;p>Open communities are a vehicle for building collaborations that span countries, economic situations, and use-cases. They are powerful because of their diverse and multi-stakeholder nature. However, they also exist in a society that is deeply inequitable and that perpetuates centers of wealth and power. This means that most open communities will have a subset of stakeholders with connections and resources that are unavailable to others. To ensure that we follow the principles of open culture, it is crucial that we find ways to push against this inequitable system by sharing resources with one another wherever possible.&lt;/p>
&lt;p>Moreover, getting funding often means &lt;em>centralizing the ability to act in a small subset of people&lt;/em>. This runs the risk that decision-making (see above) and organizational knowledge become centralized with those individuals. If you&amp;rsquo;re paid full-time to work on an open source project, there&amp;rsquo;s a good chance you will personally come to understand the codebase better than anybody else just because you have the time to learn it. This can turn into an anti-pattern where those with access to resources have an unfair power advantage in their perspective over the project.&lt;/p>
&lt;p>Finally, running open source projects requires work on &lt;em>both&lt;/em> the creating and the receiving end. You can pay somebody to write a bunch of code, but somebody else still has to review it, lead discussions, and ultimately decide to merge.&lt;/p>
&lt;p>Here are a few tips to follow:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Share funding with others.&lt;/strong> If your work is going to require reviews and input from others, find a way to compensate them for their time (if they wish). Prioritize sharing resources with orgs from historically marginalized or disadvantaged communities. When dedicated resources are available, use them for these kinds of groups.&lt;/li>
&lt;li>&lt;strong>Prioritize documentation and knowledge sharing.&lt;/strong> It can be attractive to work on shiny new things, but it is &lt;em>crucial&lt;/em> that you put in the work to share knowledge with others in a community so that your funding doesn&amp;rsquo;t become a source of knowledge and power centralization. Document your planning and work, and use that funding to make extra efforts to share your experience with others.&lt;/li>
&lt;li>&lt;strong>Define practices for making changes that require at least two stakeholders&lt;/strong>. This helps ensure that those funded to work on open source cannot overpower others in the community just because of their dedicated time. It also encourages healthier collaboration and communication between stakeholders.&lt;/li>
&lt;/ol>
&lt;h2 id="inclusion-bring-others-along-with-you">
Inclusion: bring others along with you
&lt;a class="header-anchor" href="#inclusion-bring-others-along-with-you">#&lt;/a>
&lt;/h2>&lt;p>A differentiating aspect of open communities is the way in which they &lt;em>share power among stakeholders&lt;/em>. Funding is inherently tied to power, as it gives you the ability to pay people to do things. Moreover, a stakeholder that &lt;em>controls&lt;/em> funding also controls what it is used for. As a result, it&amp;rsquo;s not enough to simply share funding with others in a project, &lt;em>if that funding comes with strings attached&lt;/em>. It is also important to share opportunities for funding with others, and to build coalitions of equals when pursuing new funding.&lt;/p>
&lt;p>Collaborators should be given agency over what they want to do with funding. They should be part of grant planning, project planning, etc. They should be seen as co-leads in discussion and announcements. Obviously any funding opportunity will come with obligations, but the important thing is who gets to decide what the team commits to in the first place, and how they plan to accomplish their goals.&lt;/p>
&lt;p>Here are a few tips to follow:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Invite others to participate in funding opportunities, especially if they need it&lt;/strong>. If you identify a funding opportunity, tell others about it. Invite them to collaborate with you on a proposal, or encourage them to write their own proposal.&lt;/li>
&lt;li>&lt;strong>Treat other stakeholders as partners, not contractors&lt;/strong>. Treat collaborators as co-equals that have a say in leadership, strategy, and planning. Funding shouldn&amp;rsquo;t solely come in the form of &amp;ldquo;strings attached&amp;rdquo; and contract work. It should center others as collaborators and leads that bring their own ideas to the table.&lt;/li>
&lt;li>&lt;strong>Find ways to give power to those who historically do not have it&lt;/strong>. Consider the power dynamics of who applies for funding and actively invite participation from those that need it or that wouldn&amp;rsquo;t have access to these resources on their own. If you have a personal connection, use it to bring others to the table. If you&amp;rsquo;re at a well-known organization, use it to boost the profile of others.&lt;/li>
&lt;/ol>
&lt;h2 id="how-do-i-actually-implement-any-of-this">
How do I actually implement any of this?
&lt;a class="header-anchor" href="#how-do-i-actually-implement-any-of-this">#&lt;/a>
&lt;/h2>&lt;p>The ideas in this post are principles and goals to strive for. They also touch on very complex subjects, and following them all perfectly is unrealistic given the state of most organizations. The point is not to define a specific roadmap of actions that must be followed, but to note a few major anti-patterns and ways to avoid them. Fundamentally, your goal should be to &lt;strong>build trust with a community&lt;/strong> and to &lt;strong>live up to the community&amp;rsquo;s mission and values&lt;/strong>. Do what you can, and be honest and open with others in your efforts. A little bit of transparency and effort goes a long way.&lt;/p>
&lt;p>As for 2i2c, we hope to use the ideas in this post to define a strategy and set of policies for how to engage with directed funding for open source. We&amp;rsquo;ll share new ideas in the coming weeks.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>This post draws on our practical experience in collaborative funding arrangements, including our partnership with
&lt;a href="https://2i2c.org/collaborators/gesis/" >GESIS&lt;/a> to make improvements in Binder and JupyterHub infrastructure.&lt;/p>
&lt;h2 id="references-and-more-reading">
References and more reading
&lt;a class="header-anchor" href="#references-and-more-reading">#&lt;/a>
&lt;/h2>&lt;p>There are many resources that discuss how to equitably and inclusively seek funding as part of collaborations&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. Here are a few that I found useful in writing this blog post:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://awid.org/sites/default/files/2022-02/AWID_Funding_Ecosystem_2019_FINAL_Eng.pdf" target="_blank" rel="noopener" >AWID - Towards a feminist funding ecosystem guide&lt;/a>&lt;/li>
&lt;li>
&lt;a href="http://astraeafoundation.org/microsites/feminist-funding-principles/" target="_blank" rel="noopener" >The Astraea Foundation - Feminist Funding Principles&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.openglobalrights.org/what-we-can-learn-from-feminists-who-fund-themselves/" target="_blank" rel="noopener" >OpenGlobalRights - What we can learn from feminists who fund themselves&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://learningforfunders.candid.org/content/guides/deciding-together/" target="_blank" rel="noopener" >Candid Learning for Funders - Deciding Together&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.openandequitable.org/participate" target="_blank" rel="noopener" >Open Research Funders Group - Open and Equitable Model Funding Program&lt;/a>&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>And many thanks to several people in the
&lt;a href="https://investinopen.org" target="_blank" rel="noopener" >Invest in Open Infrastructure&lt;/a>,
&lt;a href="https://the-turing-way.netlify.app" target="_blank" rel="noopener" >The Turing Way&lt;/a>,
&lt;a href="https://chanzuckerberg.com/" target="_blank" rel="noopener" >the Chan Zuckerberg Initiative&lt;/a>, and
&lt;a href="https://codeforsociety.org" target="_blank" rel="noopener" >Code for Science and Society&lt;/a> Slacks that helped me brainstorm these ideas.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>2022 in review: growing our partner communities and expanding our operations</title><link>https://2i2c.org/blog/2022-year-in-review/</link><pubDate>Wed, 04 Jan 2023 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/2022-year-in-review/</guid><description>&lt;p>2022 was a busy year for 2i2c - we not only grew our operations as well as our organization, but also grew our understanding of our mission and where we can have impact.
This is a brief reflection on this experience, and an attempt to identify our opportunities for impact and growth in 2023.&lt;/p>
&lt;h2 id="our-major-goals-in-2022">
Our major goals in 2022
&lt;a class="header-anchor" href="#our-major-goals-in-2022">#&lt;/a>
&lt;/h2>&lt;p>We wrapped up 2021 with two major new changes.
We had just finished
&lt;a href="https://2i2c.org/blog/2021-q3-update/" >moving fiscal sponsors&lt;/a> and had just finished a prototype of our
&lt;a href="https://docs.2i2c.org/" target="_blank" rel="noopener" >alpha service offerings&lt;/a>.&lt;/p>
&lt;figure id="figure-our-2x2-matrix-of-service-offerings-and-prices-created-at-the-end-of-2021-see-the-documentationhttpsdocs2i2corg-for-more-details">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Our 2x2 matrix of service offerings and prices created at the end of 2021. See [the documentation](https://docs.2i2c.org/) for more details." srcset="
/blog/2022-year-in-review/service-offerings_hud86bb36b87665d8af5b9475bb4af827d_70357_ca07880d61fe95c1e2530320063223d4.webp 400w,
/blog/2022-year-in-review/service-offerings_hud86bb36b87665d8af5b9475bb4af827d_70357_f76fd27d82d63db094825cdaf4a98bd1.webp 760w,
/blog/2022-year-in-review/service-offerings_hud86bb36b87665d8af5b9475bb4af827d_70357_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/2022-year-in-review/service-offerings_hud86bb36b87665d8af5b9475bb4af827d_70357_ca07880d61fe95c1e2530320063223d4.webp"
width="75%"
height="379"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Our 2x2 matrix of service offerings and prices created at the end of 2021. See
&lt;a href="https://docs.2i2c.org/" target="_blank" rel="noopener" >the documentation&lt;/a> for more details.
&lt;/figcaption>&lt;/figure>
&lt;p>Our biggest challenge in 2022 was to &lt;strong>identify the bottlenecks in this service model&lt;/strong>, and to begin &lt;strong>building the infrastructure to operate and scale it&lt;/strong>.
This included team infrastructure, technical infrastructure, and administrative infrastructure.&lt;/p>
&lt;p>Let&amp;rsquo;s see what we did to accomplish this goal.&lt;/p>
&lt;h2 id="highlights-from-2022">
Highlights from 2022
&lt;a class="header-anchor" href="#highlights-from-2022">#&lt;/a>
&lt;/h2>&lt;p>In 2022, we &lt;strong>thoughtfully grew the number of communities we worked with&lt;/strong>, and used this to make iterative improvements in our model.
As a result, we learned some important things and made significant improvements to our service model and infrastructure.
Here are a few highlights.&lt;/p>
&lt;h3 id="we-grew-the-number-of-our-partner-communities">
We grew the number of our partner communities
&lt;a class="header-anchor" href="#we-grew-the-number-of-our-partner-communities">#&lt;/a>
&lt;/h3>&lt;p>As noted above, we needed to grow the number and diversity of communities we worked with to understand where our model needed to change.
At the end of 2022, we now have &lt;strong>43 community partner hubs across 17 clusters&lt;/strong> (and at least one on AWS, Azure, and Google Cloud).
This amounts to roughly &lt;strong>~2,500 active users&lt;/strong> each week.
We also ran more dedicated infrastructure for more than &lt;strong>11 workshops and events&lt;/strong>.&lt;/p>
&lt;h3 id="we-grew-our-revenue-from-community-partnerships">
We grew our revenue from community partnerships
&lt;a class="header-anchor" href="#we-grew-our-revenue-from-community-partnerships">#&lt;/a>
&lt;/h3>&lt;p>One of our goals is to reach self-sustainability without requiring grant funding for most of the communities we serve.
In 2022 we built administrative infrastructure to more efficiently recover monthly costs, and were able to bring in funding for our team from community partnerships.
Here&amp;rsquo;s a plot of our monthly non-grant revenue over the last several months:&lt;/p>
&lt;figure id="figure-our-monthly-non-grant-revenue-over-the-last-several-months-june-is-much-larger-because-we-filled-a-backlog-of-invoices-from-previous-months-that-werent-billed-yet">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Our monthly non-grant revenue over the last several months. June is much larger because we filled a backlog of invoices from previous months that weren&amp;#39;t billed yet." srcset="
/blog/2022-year-in-review/monthly-revenue_hu52f3d4af599b8e1f34d9708deec9db23_10871_5415cfc779ac7efa966b4f4ea0d9c931.webp 400w,
/blog/2022-year-in-review/monthly-revenue_hu52f3d4af599b8e1f34d9708deec9db23_10871_c35678ad000b0ba462007f9c960f9542.webp 760w,
/blog/2022-year-in-review/monthly-revenue_hu52f3d4af599b8e1f34d9708deec9db23_10871_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/2022-year-in-review/monthly-revenue_hu52f3d4af599b8e1f34d9708deec9db23_10871_5415cfc779ac7efa966b4f4ea0d9c931.webp"
width="75%"
height="336"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Our monthly non-grant revenue over the last several months. June is much larger because we filled a backlog of invoices from previous months that weren&amp;rsquo;t billed yet.
&lt;/figcaption>&lt;/figure>
&lt;h3 id="we-got-grant-funding-to-serve-communities-in-latin-america-and-africa">
We got grant funding to serve communities in Latin America and Africa
&lt;a class="header-anchor" href="#we-got-grant-funding-to-serve-communities-in-latin-america-and-africa">#&lt;/a>
&lt;/h3>&lt;p>We also learned that some partnerships may &lt;em>require&lt;/em> subsidization from a third party, such as historically marginalized communities and those without dedicated resources.
To explore sustainable ways to serve these communities, we applied for and received a new grant to serve communities in Latin America and Africa!
Here&amp;rsquo;s the
&lt;a href="https://2i2c.org/blog/2022-year-in-review/../../2022/czi-global-communities-announcement/" >blog post announcing this grant&lt;/a> and our
&lt;a href="https://2i2c.org/blog/2022-year-in-review/../../2022/czi-global-communities-proposal/" >open grant narrative from the proposal&lt;/a>.&lt;/p>
&lt;h3 id="we-improved-our-continuous-integration-and-deployment-system">
We improved our continuous integration and deployment system
&lt;a class="header-anchor" href="#we-improved-our-continuous-integration-and-deployment-system">#&lt;/a>
&lt;/h3>&lt;p>Our ability to sustainably grow our service requires being able to &lt;em>technically&lt;/em> serve many communities from a relatively small team.
We centralized and standardized configuration and operations of many community hubs in one transparent space for all of our partner communities.
This allowed us to more easily grow the number of communities we served from one repository.
You can
&lt;a href="https://2i2c.org/blog/ci-cd-improvements/" >read a write-up about these improvements in this blog post&lt;/a>.&lt;/p>
&lt;h3 id="we-defined-a-shared-responsibility-model">
We defined a Shared Responsibility Model
&lt;a class="header-anchor" href="#we-defined-a-shared-responsibility-model">#&lt;/a>
&lt;/h3>&lt;p>Our goal is to frame each community hub as a partnership with a clear breakdown of responsibility to give communities more agency over the infrastructure and service.
The Shared Responsibility Model provides a framework for assigning responsibility for various tasks with our partner communities.
See
&lt;a href="https://docs.2i2c.org/community-lead/about/shared-responsibility" target="_blank" rel="noopener" >our Shared Responsibility Model docs here&lt;/a>.&lt;/p>
&lt;h3 id="we-defined-a-formal-incident-response-process">
We defined a formal Incident Response process
&lt;a class="header-anchor" href="#we-defined-a-formal-incident-response-process">#&lt;/a>
&lt;/h3>&lt;p>Cloud infrastructure inevitably degrades over time, and running ongoing services is largely about quickly responding to issues and resolving them quickly.
To do so, we need clear processes to follow in order to quickly identify and respond to major incidents in the infrastructure.
Our Incident Response process defines formal team roles and alerting mechanisms that are served by
&lt;a href="https://www.pagerduty.com/" target="_blank" rel="noopener" >PagerDuty&lt;/a>, following best-practices in industry.
This will make our service more reliable and make our processes more transparent for our partner communities.
&lt;a href="https://compass.2i2c.org/projects/managed-hubs/incidents" target="_blank" rel="noopener" >Here&amp;rsquo;s our current incident response process&lt;/a>.&lt;/p>
&lt;h3 id="we-expanded-our-service-offerings-to-include-community-and-workflow-guidance">
We expanded our service offerings to include community and workflow guidance
&lt;a class="header-anchor" href="#we-expanded-our-service-offerings-to-include-community-and-workflow-guidance">#&lt;/a>
&lt;/h3>&lt;p>We recognized that many communities need more than just infrastructure running in the cloud - they will also benefit from usecase and community guidance.
We&amp;rsquo;re exploring a new range of roles that we could fill, starting with hiring a new team member to help us lead these efforts.
&lt;a href="https://2i2c.org/blog/job-product-community-lead/" >Here&amp;rsquo;s a blog post about the Product and Community Lead&lt;/a>.&lt;/p>
&lt;h3 id="we-began-a-collaboration-with-gesis-to-develop-environment-building-in-jupyterhub">
We began a collaboration with GESIS to develop environment building in JupyterHub
&lt;a class="header-anchor" href="#we-began-a-collaboration-with-gesis-to-develop-environment-building-in-jupyterhub">#&lt;/a>
&lt;/h3>&lt;p>This marks our first efforts into &lt;em>development-focused work&lt;/em> as opposed to operating cloud infrastructure.
We will use this experience to learn how to pair focused development with cloud operations (more on that below).
It will also make it more likely that we can implement often-requested improvements to the JupyterHub / BinderHub ecosystems.
&lt;a href="https://2i2c.org/blog/gesis-2i2c-collaboration-update/" >Here&amp;rsquo;s a blog post about this collaboration&lt;/a>.&lt;/p>
&lt;h3 id="we-helped-maintain-several-upstream-open-source-projects">
We helped maintain several upstream open source projects
&lt;a class="header-anchor" href="#we-helped-maintain-several-upstream-open-source-projects">#&lt;/a>
&lt;/h3>&lt;p>We made a number of contributions to key open source communities as part of our organizational mission.
These spanned technical improvements as well as organizational and community efforts.
One highlight is that several team members have participated in
&lt;a href="https://blog.jupyter.org/introducing-jupyterhubs-outreachy-interns-december-2022-cohort-23aaf4613556" target="_blank" rel="noopener" >JupyterHub&amp;rsquo;s latest round of Outreachy interns&lt;/a>.&lt;br>
See
&lt;a href="https://jupyterhub-team-compass.readthedocs.io/en/latest/resources/community-strategy.html" target="_blank" rel="noopener" >the JupyterHub community strategy&lt;/a> page for more information.&lt;/p>
&lt;p>As a brief summary, here is a plot of the issues in key open source repositories that were closed in 2022 that were authored by a 2i2c team member.&lt;/p>
&lt;figure id="figure-upstream-issues-opened-by-a-team-member-that-were-closed-in-2022">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Upstream issues opened by a team member that were closed in 2022." srcset="
/blog/2022-year-in-review/upstream-contributions_hu1b9709167dd33b4eeab235a03d00b820_10660_611c6fc32c4ed94a301b5068c436bcf9.webp 400w,
/blog/2022-year-in-review/upstream-contributions_hu1b9709167dd33b4eeab235a03d00b820_10660_689eb8f10a38b27bce3b7c2e3755323e.webp 760w,
/blog/2022-year-in-review/upstream-contributions_hu1b9709167dd33b4eeab235a03d00b820_10660_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/2022-year-in-review/upstream-contributions_hu1b9709167dd33b4eeab235a03d00b820_10660_611c6fc32c4ed94a301b5068c436bcf9.webp"
width="75%"
height="272"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Upstream issues opened by a team member that were closed in 2022.
&lt;/figcaption>&lt;/figure>
&lt;h3 id="we-refined-our-organizational-strategy">
We refined our organizational strategy
&lt;a class="header-anchor" href="#we-refined-our-organizational-strategy">#&lt;/a>
&lt;/h3>&lt;p>Finally, the experience from this year gave us a lot to think about regarding our role and potential for impact in the research and education ecosystem and the open source community.
We
&lt;a href="https://2i2c.org/blog/strategic-update/" >updated our strategy&lt;/a> in order to focus on a more holistic and collaborative approach to the work with our partner communities.
We&amp;rsquo;ll continue to refine this strategy moving forward.&lt;/p>
&lt;h2 id="things-to-accomplish-in-2023">
Things to accomplish in 2023
&lt;a class="header-anchor" href="#things-to-accomplish-in-2023">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;re excited about all of the progress we made in 2022, and to continue that progress in 2023.
Here are a few areas where we wish to focus our efforts as we begin the new year to keep this momentum going.&lt;/p>
&lt;h3 id="sharpen-our-shared-responsibility-model">
Sharpen our Shared Responsibility Model
&lt;a class="header-anchor" href="#sharpen-our-shared-responsibility-model">#&lt;/a>
&lt;/h3>&lt;p>Our Shared Responsibility Model is in a kind of &amp;ldquo;alpha&amp;rdquo; phase right now. We have some of the high-level skeleton there, but there&amp;rsquo;s a lot of detail to fill in. Thus far, communities have really liked the idea but we need to make it clearer how we break-down specific jobs and how to decide when to give more or less responsibility to another community.
We&amp;rsquo;d also like to define more intersection points with our partner communities at the level of strategic and service planning so that our communities have a say in our vision and strategic plan.&lt;/p>
&lt;h3 id="grow-our-community-support-operations">
Grow our community support operations
&lt;a class="header-anchor" href="#grow-our-community-support-operations">#&lt;/a>
&lt;/h3>&lt;p>We&amp;rsquo;ve begun exploring how to support communities in their &lt;em>usage&lt;/em> of cloud infrastructure, but still have a long way to go to understand what role we should play here.
For example, how can we assist communities in cloud workflows without becoming domain experts ourselves?
How can we guide communities in a sustainable and scalable way?
How can we recover the costs of doing this work?
We hope to use our experiences in
&lt;a href="https://2i2c.org/blog/2022-year-in-review/../../2022/czi-global-communities-announcement/" >our upcoming project to serve communities in Latin America and Africa&lt;/a> to explore these questions.&lt;/p>
&lt;h3 id="define-a-cost-recovery-model-that-balances-sustainability-and-accessibility">
Define a cost recovery model that balances sustainability and accessibility
&lt;a class="header-anchor" href="#define-a-cost-recovery-model-that-balances-sustainability-and-accessibility">#&lt;/a>
&lt;/h3>&lt;p>Our current cost recovery model is intentionally very simple - we charge a fixed monthly cost for human time, and pass-through cloud costs directly.
We charge a bit more for more complex deployments and use-cases.&lt;/p>
&lt;p>However, we&amp;rsquo;ve learned that this is both too expensive for simple deployments, and too cheap for really complex deployments.
It&amp;rsquo;s also inaccessible to organizations that do not have the resources to pay, which correlates heavily with historically marginalized communities.
We&amp;rsquo;ll need to refine this model to be both scalable and sustainable, but also accessible to the variety of communities we want to serve.&lt;/p>
&lt;h3 id="incorporate-a-dedicated-software-development-practice-that-aligns-with-open-values">
Incorporate a dedicated software development practice that aligns with open values
&lt;a class="header-anchor" href="#incorporate-a-dedicated-software-development-practice-that-aligns-with-open-values">#&lt;/a>
&lt;/h3>&lt;p>In 2022 we learned that our position in &lt;em>running&lt;/em> infrastructure in the cloud gives us visibility into the ways that researchers and educators want open source tools to be &lt;em>improved&lt;/em>.
In some cases our partner organizations are also willing to contribute resources to help make this happen, or we can identify third parties to fund development work.&lt;/p>
&lt;p>Thus far we have focused our efforts on &lt;em>deploying and managing&lt;/em> cloud infrastructure.
We do make improvements to software as a part of this, but there&amp;rsquo;s a big difference between running a cloud service and making significant &lt;em>enhancements&lt;/em> to software.&lt;/p>
&lt;p>We&amp;rsquo;d like to use our position to help funnel more resources into open source development, but there are a few tricky things to figure out.
For example: How can we accept funding to do open source work in a way that doesn&amp;rsquo;t effectively make us sole decision-makers or gatekeepers for doing development? How can we incorporate software development team practices into a team that has thus-far focused on operating cloud infrastructure?&lt;/p>
&lt;p>Thanks for reading this update about our work in 2022.
We&amp;rsquo;re excited about what we&amp;rsquo;ve accomplished thus far, as well how we hope to expand our impact in the near future.&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by a grant from
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a> and fees from
&lt;a href="https://2i2c.org/members/" >our Member Communities&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>New project: Open science cloud infrastructure and training for communities in Latin America and Africa</title><link>https://2i2c.org/blog/czi-global-communities-announcement/</link><pubDate>Tue, 20 Dec 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/czi-global-communities-announcement/</guid><description>&lt;p>We are excited to announce that the team and proposal
&lt;a href="https://2i2c.org/blog/czi-global-communities-proposal/" >described in this blog post&lt;/a> has been awarded funding by the
&lt;a href="https://2i2c.org/collaborators/czi/" >Chan Zuckerberg Initiative&lt;/a>! We informally call this project
&lt;a href="https://2i2c.org/collaborators/catalyst/" >The Catalyst Project&lt;/a>.&lt;/p>
&lt;p>&lt;em>This announcement may be cross-posted on the websites of several collaborating organizations of this grant. &lt;strong>Para leer este post en español,
&lt;a href="https://www.metadocencia.org/post/infraestructura-nube/" target="_blank" rel="noopener" >vea el blog de MetaDocencia&lt;/a>&lt;/strong>.&lt;/em>&lt;/p>
&lt;p>Our goal is to create a collaborative cloud infrastructure service that enables community-based cloud-native workflows in the biosciences. We will promote values of open and inclusive community practices, infrastructure that enables these practices, and a “train the trainers” approach that empowers community leaders to share expertise in cloud infrastructure with others in their communities. Our focus will be on communities in Latin America and Africa, and we hope to learn how this model could be extended to other global communities that are historically marginalized from large-scale scientific infrastructure projects.&lt;/p>
&lt;p>2i2c will be providing cloud infrastructure operation and support for the communities that we partner with in this effort.
We will also assist with creating content to teach cloud-native workflows and assist community leaders in learning this content so that they can share these skills with others.&lt;/p>
&lt;p>This is a collaborative effort between
&lt;a href="http://2i2c.org" target="_blank" rel="noopener" >2i2c&lt;/a>,
&lt;a href="https://carpentries.org/" target="_blank" rel="noopener" >The Carpentries&lt;/a>,
&lt;a href="http://cscce.org" target="_blank" rel="noopener" >CSCCE&lt;/a>,
&lt;a href="https://investinopen.org" target="_blank" rel="noopener" >Invest in Open Infrastructure&lt;/a>,
&lt;a href="https://metadocencia.org" target="_blank" rel="noopener" >MetaDocencia&lt;/a>, and
&lt;a href="http://openlifesci.org" target="_blank" rel="noopener" >Open Life Science&lt;/a>. For more detailed information, see
&lt;a href="https://2i2c.org/blog/czi-global-communities-proposal/" >the blog post with our full grant narrative&lt;/a>.&lt;/p>
&lt;h2 id="we-are-hiring">
We are hiring
&lt;a class="header-anchor" href="#we-are-hiring">#&lt;/a>
&lt;/h2>&lt;p>As a part of this effort, we will also hire several new team members! There are currently two job postings open. Here are links for more information in case you are interested:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org/jobs/2022/open-source-infrastructure-engineer/" target="_blank" rel="noopener" >Cloud infrastructure engineer&lt;/a> to join &lt;strong>2i2c’s Site Reliability Engineering team&lt;/strong> that will operate and support the cloud infrastructure in this project.&lt;/li>
&lt;li>
&lt;a href="https://openlifesci.org/posts/2022/12/19/ECB-PM-job-description/" target="_blank" rel="noopener" >Programme manager role&lt;/a> to join &lt;strong>Open Life Science&lt;/strong> and support this project via project management and operational support.&lt;/li>
&lt;/ul>
&lt;p>We may be hiring other positions related to this effort, so
&lt;a href="https://forms.gle/5boZswKNUn2NcTUv9" target="_blank" rel="noopener" >please stay tuned for more information&lt;/a> if you are interested.&lt;/p>
&lt;h2 id="where-to-follow-along">
Where to follow along
&lt;a class="header-anchor" href="#where-to-follow-along">#&lt;/a>
&lt;/h2>&lt;p>If you’d like to follow along with this work, please
&lt;a href="https://forms.gle/5boZswKNUn2NcTUv9" target="_blank" rel="noopener" >share your e-mail address in this short form&lt;/a>. We’ll send updates as we work out longer-term spaces for communication or documentation.&lt;/p>
&lt;div class="about-us">
&lt;blockquote>
&lt;p>💡 Follow our work!
&lt;a href="https://2i2c.org/mailing-list/" >Sign up for our mailing list&lt;/a> for updates about 2i2c.
&lt;a href="https://2i2c.org/blog/czi-global-communities-announcement/mailto:hello@2i2c.org" >Send us an e-mail about collaborating or partnering&lt;/a> on a project.
See our
&lt;a href="https://docs.2i2c.org" target="_blank" rel="noopener" >Service Documentation&lt;/a> or our
&lt;a href="https://compass.2i2c.org" target="_blank" rel="noopener" >Team Compass&lt;/a> to learn about our service and organization.&lt;/p>
&lt;/blockquote>
&lt;/div></description></item><item><title>GESIS - 2i2c collaborate to build a persistent BinderHub experience</title><link>https://2i2c.org/blog/gesis-2i2c-collaboration-update/</link><pubDate>Mon, 28 Nov 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/gesis-2i2c-collaboration-update/</guid><description>
&lt;h1 id="introduction">
Introduction
&lt;a class="header-anchor" href="#introduction">#&lt;/a>
&lt;/h1>&lt;p>
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >Mybinder.org&lt;/a> enables researchers across the world to replicate computational environments in the cloud. It allows researchers to turn static code into interactive literate coding environments with a click of a button within seconds. The
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >mybinder.org&lt;/a> service is powered by
&lt;a href="https://binderhub.readthedocs.io" target="_blank" rel="noopener" >BinderHub&lt;/a>, an open-source tool developed by
&lt;a href="https://jupyter.org" target="_blank" rel="noopener" >the Jupyter Project&lt;/a> that many organizations have deployed for their own communities. It does this by _dynamically building _the software environment needed to reproduce a computation (using a tool called
&lt;a href="https://repo2docker.readthedocs.io" target="_blank" rel="noopener" >repo2docker&lt;/a>), and making this environment available to users.&lt;/p>
&lt;p>BinderHub was developed for use-cases that are &lt;em>temporary&lt;/em> and &lt;em>fully open&lt;/em> by design. BinderHub sessions are destroyed after a fixed amount of time and there is no persistent storage or authentication. However, many research institutions also need more “standard” service features like authentication and persistent storage.&lt;/p>
&lt;p>Over the past several years, the
&lt;a href="http://notebooks.gesis.org" target="_blank" rel="noopener" >GESIS Notebooks&lt;/a> team made the first steps towards bridging this gap through their
&lt;a href="https://github.com/gesiscss/persistent_binderhub" target="_blank" rel="noopener" >Persistent BinderHub&lt;/a> implementation. This was a modified and authenticated BinderHub that &lt;em>included&lt;/em> persistent storage across sessions. The Persistent BinderHub service was very successful at GESIS and with its partner communities, and the team wishes to build this functionality into the JupyterHub community’s core technology so that these features can be enjoyed for more use-cases and by many communities.&lt;/p>
&lt;p>To enable this vision, we have partnered with GESIS in cooperation with
&lt;a href="https://www.nfdi4datascience.de/" target="_blank" rel="noopener" >NFDI4DS&lt;/a> (GAN: 460234259),
&lt;a href="https://www.cessda.eu/" target="_blank" rel="noopener" >CESSDA&lt;/a>, and members of the
&lt;a href="https://jupytearth.org/" target="_blank" rel="noopener" >JMTE&lt;/a> project. This collaboration has three primary goals:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Generalize the Persistent BinderHub functionality/experience to run on cloud-agnostic infrastructure&lt;/strong>, so that other stakeholders in NFDI, CESSDA, and the broader scientific community may benefit from this functionality and experience.&lt;/li>
&lt;li>&lt;strong>Upstream this functionality by making contributions into Jupyter community projects&lt;/strong>, so that it will be maintained and improved by a community moving forward, thus improving its reliability and sustainability.&lt;/li>
&lt;li>&lt;strong>Improve the implementation and user experience around Persistent BinderHub&lt;/strong>, in order to make it more reliable, scalable, productive, and enjoyable to use.&lt;/li>
&lt;/ul>
&lt;p>We began this collaboration several months ago, and have focused our efforts on exploring potential implementation pathways for this functionality. We believe that we now have a path forward for this functionality, and this blog post is a brief report of our efforts and future plans as we undertake this effort. See
&lt;a href="https://github.com/orgs/2i2c-org/projects/33" target="_blank" rel="noopener" >this GitHub Projects Board for issues that implement this effort&lt;/a>.&lt;/p>
&lt;h3 id="exploration-1-adding-persistent-storage-directly-into-binderhub">
Exploration 1: Adding persistent storage directly into BinderHub
&lt;a class="header-anchor" href="#exploration-1-adding-persistent-storage-directly-into-binderhub">#&lt;/a>
&lt;/h3>&lt;p>Our initial intention was to incorporate persistent storage and authentication from the GESIS Persistent BinderHub into the
&lt;a href="http://binderhub.readthedocs.io/" target="_blank" rel="noopener" >BinderHub codebase&lt;/a>. We began by holding a series of meetings to discuss technical requirements from our experience in the JupyterHub/BinderHub ecosystem, and also conducted an audit of the
&lt;a href="https://www.google.com/url?q=https://github.com/gesiscss/persistent_binderhub/blob/9936fc2251abafd00921b3b53954fb60c8640347/persistent_binderhub/values.yaml" target="_blank" rel="noopener" >Persistent BinderHub codebase&lt;/a>. The Persistent BinderHub implementation is a
&lt;a href="https://github.com/gesiscss/persistent_binderhub/blob/9936fc2251abafd00921b3b53954fb60c8640347/persistent_binderhub/values.yaml" target="_blank" rel="noopener" >modified Helm Chart&lt;/a> that configures a JupyterHub to expose its authentication and persistent storage functionality, overriding the BinderHub default behavior. We were concerned that building this functionality &lt;em>natively&lt;/em> into BinderHub would be challenging given that the BinderHub codebase was designed for ephemeral user sessions.&lt;/p>
&lt;p>So, we decided to take another approach:&lt;/p>
&lt;h3 id="exploration-2-add-dynamic-image-building-to-jupyterhub">
Exploration 2: Add dynamic image building to JupyterHub
&lt;a class="header-anchor" href="#exploration-2-add-dynamic-image-building-to-jupyterhub">#&lt;/a>
&lt;/h3>&lt;p>We realized that there is a way to make this functionality more broadly useful and more maintainable, while still achieving the end-user experience that the GESIS team needed. Instead of modifying BinderHub to incorporate JupyterHub’s storage and authentication features, &lt;strong>we would give JupyterHub the ability do dynamically generate user environments using
&lt;a href="http://repo2docker.readthedocs.io/" target="_blank" rel="noopener" >repo2docker&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>This would give JupyterHub users more flexibility over the environments served by their hub, and expose Binder-style workflows to the “typical” JupyterHub workflow. BinderHub could then be simplified to re-use JupyterHub’s image building functionality as a part of its own service. We also identified a prototype of this functionality in the
&lt;a href="https://github.com/plasmabio/tljh-repo2docker" target="_blank" rel="noopener" >tljh-repo2docker&lt;/a> project that
&lt;a href="https://quantstack.net/" target="_blank" rel="noopener" >QuantStack&lt;/a> had built for the
&lt;a href="https://plasmabio.org/" target="_blank" rel="noopener" >PlasmaBio project&lt;/a>. This implementation was seen as successful, and something others in the community had wanted to generalize for some time.&lt;/p>
&lt;h1 id="our-implementation-plan">
Our implementation plan
&lt;a class="header-anchor" href="#our-implementation-plan">#&lt;/a>
&lt;/h1>
&lt;h2 id="two-phases-of-implementation">
Two phases of implementation
&lt;a class="header-anchor" href="#two-phases-of-implementation">#&lt;/a>
&lt;/h2>&lt;p>With this alternative implementation route in place, we identified two major steps to accomplish this project:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Build a back-end for dynamic environment building&lt;/strong>. JupyterHub needs to understand how to call repo2docker’s image generation from a Docker-based environment. It needs to expose this ability via APIs that others can build interfaces on top of.&lt;/li>
&lt;li>**Build a front-end that is user-friendly and accessible. **Once the back-end is functional, we must build a front-end experience that feels familiar to BinderHub users and is easy and intuitive to use.&lt;/li>
&lt;/ol>
&lt;p>Here are a few tasks that we’re carrying out next to make progress on the above two items.&lt;/p>
&lt;ul>
&lt;li>Build a working prototype for image generation via a &lt;em>JupyterHub Service&lt;/em> (see below for current status)&lt;/li>
&lt;li>Research the &lt;code>tljh-repo2docker&lt;/code> code base to understand how we could build upon its UX and functionality.&lt;/li>
&lt;li>Understand the typical process that GESIS and NFDI users follow in their BinderHub workflows, to ensure that it can be replicated via this new implementation.&lt;/li>
&lt;li>Perform UI/UX research validation to inform the implementation from a user’s perspective.&lt;/li>
&lt;/ul>
&lt;p>As a follow-up, we’ll likely re-work the BinderHub codebase to utilize JupyterHub’s new repo2docker service, rather than defining its own custom repo2docker functionality.&lt;/p>
&lt;h2 id="back-end-implementation-as-a-jupyterhub-service">
Back-end implementation as a JupyterHub Service
&lt;a class="header-anchor" href="#back-end-implementation-as-a-jupyterhub-service">#&lt;/a>
&lt;/h2>&lt;p>We’re planning to use
&lt;a href="https://jupyterhub.readthedocs.io/en/stable/reference/services.html" target="_blank" rel="noopener" >JupyterHub Services&lt;/a> to add the back-end functionality for dynamic image building to a JupyterHub. Services are a way to expose functionality via a JupyterHub REST API, and would allow us to expose basic image generation on-the-fly with
&lt;a href="https://repo2docker.readthedocs.io/" target="_blank" rel="noopener" >repo2docker&lt;/a>. We aim for basic functionality to be as close as possible to repo2docker’s default behavior, but to make this functionality _composable and customizable _if a JupyterHub administrator wants to provide different out-of-the-box functionality.&lt;/p>
&lt;p>While details may still change, we believe that the major architectural plan has now been settled. We have
&lt;a href="https://github.com/consideratio/repo2docker-service" target="_blank" rel="noopener" >an experimental codebase&lt;/a> with a basic implementation of the repo2docker service described above. As part of this effort, this team has also made a number of improvements to repo2docker’s codebase and project infrastructure. We hope that this effort will continue to push resources and attention to repo2docker by growing the number of users and stakeholders that rely on the project for their success.&lt;/p>
&lt;h2 id="front-end-implementation-that-uses-this-service">
Front-end implementation that uses this service
&lt;a class="header-anchor" href="#front-end-implementation-that-uses-this-service">#&lt;/a>
&lt;/h2>&lt;p>Once the back-end setup exists, we can use it to begin prototyping user interactions that can trigger and use repo2docker’s image generation. Bringing dynamic environment image building into JupyterHub is a significant improvement in its functionality, and may introduce new kinds of workflows that we hadn’t initially imagined. Understanding, interpreting, and extending the original “Persistent BinderHub” workflow will require a more thorough understanding of user stories and needs in order to identify new workflows that feel natural not only in a JupyterHub scenario but also in a Binder-like scenario.&lt;/p>
&lt;p>For example, here are a few major UI/UX questions we must answer:&lt;/p>
&lt;ul>
&lt;li>When a user builds an image, should it also become available to &lt;em>other users&lt;/em> as well?&lt;/li>
&lt;li>How can a user store, find, and delete old images that they’ve built?&lt;/li>
&lt;li>What about new versions of the same image?&lt;/li>
&lt;li>Should we simply mimic the mybinder.org UX, or should this be improved as well?&lt;/li>
&lt;/ul>
&lt;p>We must answer these and several other questions next. With that vision in place, we’d like to &lt;strong>expand our efforts in UI/UX and user research&lt;/strong>. This will help inform the technical implementation of this work as we expand on our prototype, and help us choose the right way to expose this functionality to users. We welcome collaboration around this work - if you know of an organization that is interested in collaboration, please reach out.&lt;/p>
&lt;h1 id="collaborate-and-follow-along">
Collaborate and follow along
&lt;a class="header-anchor" href="#collaborate-and-follow-along">#&lt;/a>
&lt;/h1>&lt;p>Below you’ll find a rough project plan to give an idea for the major actions needed and a timeline for when we hope they’ll be completed. We’ll track further updates and progress on this project in this
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1382" target="_blank" rel="noopener" >dedicated GitHub issue&lt;/a> and this
&lt;a href="https://github.com/orgs/2i2c-org/projects/33/views/1" target="_blank" rel="noopener" >dedicated GitHub project board&lt;/a>.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Timeline" srcset="
/blog/gesis-2i2c-collaboration-update/timeline_hudeeefb93f7f3a1e165384e58a83520c2_38800_b202cb12b799a3679bccc2f7a9c99bb7.webp 400w,
/blog/gesis-2i2c-collaboration-update/timeline_hudeeefb93f7f3a1e165384e58a83520c2_38800_20231ea28ed8e0417f6b5ace54172373.webp 760w,
/blog/gesis-2i2c-collaboration-update/timeline_hudeeefb93f7f3a1e165384e58a83520c2_38800_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/gesis-2i2c-collaboration-update/timeline_hudeeefb93f7f3a1e165384e58a83520c2_38800_b202cb12b799a3679bccc2f7a9c99bb7.webp"
width="760"
height="555"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>After a few months working on this project, we are even more excited about the potential for dynamically building environments in a JupyterHub. We believe that it adds a new class of workflows to JupyterHubs that were not possible before, and will be immediately useful to the hundreds of communities that deploy JupyterHub for their communities.&lt;/p></description></item><item><title>The why, what, and how of our NASA Openscapes cloud infrastructure: 2i2c JupyterHub and corn environment</title><link>https://2i2c.org/blog/external-openscapes-corn/</link><pubDate>Thu, 17 Nov 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/external-openscapes-corn/</guid><description>&lt;p>We recently shared a demo of our infrastructure stack with the
&lt;a href="https://2i2c.org/collaborators/openscapes/" >OpenScapes community&lt;/a>. Check out
&lt;a href="https://openscapes.org/blog/2022-11-17-nasa-earthdata-cloud-infrastructure/" target="_blank" rel="noopener" >the blog post about it here&lt;/a>.&lt;/p></description></item><item><title>Grant progress report: CZI Foundational grant year 2</title><link>https://2i2c.org/blog/czi-year2-progress-report/</link><pubDate>Sun, 13 Nov 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/czi-year2-progress-report/</guid><description>&lt;p>We recently completed a progress report for Year 2 of our primary CZI funding grant.
This funding covers some core operations of 2i2c as well as engineering capacity to run our cloud infrastructure for JupyterHubs.&lt;/p>
&lt;p>Below is a link to the 3-page grant narrative that summarizes some of our major progress and milestones from year two:&lt;/p>
&lt;p>
&lt;a href="https://zenodo.org/record/7319289" target="_blank" rel="noopener" >zenodo.org/record/7319289&lt;/a>&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a> for funding this work.&lt;/li>
&lt;/ul></description></item><item><title>Celebrating our progress in Q3 2022</title><link>https://2i2c.org/blog/2022-q3-update/</link><pubDate>Sun, 16 Oct 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/2022-q3-update/</guid><description>&lt;p>Quarter 3 of 2022 has wrapped up, and the 2i2c team has been busy making improvements across our infrastructure, organization, and operations.
This is a quick post to celebrate the work we&amp;rsquo;ve done over the past three months, and to briefly share what we&amp;rsquo;re working on next.&lt;/p>
&lt;p>Below we&amp;rsquo;ll provide a brief update about major developments this quarter, broken down by functional areas of 2i2c.&lt;/p>
&lt;div class="alert alert-">
&lt;div>
&lt;p>These are the main highlights from this quarter - if you&amp;rsquo;d like to check out more of the work that we&amp;rsquo;ve done, see:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://github.com/pulls?q=is%3Apr&amp;#43;merged%3A2022-07-01..2022-10-01&amp;#43;org%3A2i2c-org&amp;#43;archived%3Afalse&amp;#43;sort%3Aupdated-desc&amp;#43;" target="_blank" rel="noopener" >All the PRs we’ve merged in Q3&lt;/a>&lt;/li>&lt;/p>
&lt;li>
&lt;p>&lt;a href="https://github.com/issues?page=4&amp;amp;q=is%3Aissue&amp;#43;closed%3A2022-07-01..2022-10-01&amp;#43;org%3A2i2c-org&amp;#43;sort%3Aupdated-desc" target="_blank" rel="noopener" >All closed issues in Q3&lt;/a>&lt;/li>&lt;/p>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;h2 id="community-impact">
Community impact
&lt;a class="header-anchor" href="#community-impact">#&lt;/a>
&lt;/h2>&lt;p>These are a few ways in which we&amp;rsquo;ve collaborated with communities and demonstrated impact over the last few months.&lt;/p>
&lt;p>&lt;strong>New JupyterHubs for communities&lt;/strong>. We&amp;rsquo;ve deployed JupyterHubs for several new partner communities. Here&amp;rsquo;s a quick list:&lt;/p>
&lt;ul>
&lt;li>PaleoCube and PaleoHack Hubs
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1418" target="_blank" rel="noopener" >infrastructure#1418&lt;/a>&lt;/li>
&lt;li>NeuroHackademy 2022
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1505" target="_blank" rel="noopener" >infrastructure#1505&lt;/a>&lt;/li>
&lt;li>Alabama Water Institute CIROH hub
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1444" target="_blank" rel="noopener" >infrastructure#1444&lt;/a>&lt;/li>
&lt;li>OceanHackWeek 2022
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1515" target="_blank" rel="noopener" >infrastructure#1515&lt;/a>&lt;/li>
&lt;li>COESSING Pangeo-Style Hub
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1516" target="_blank" rel="noopener" >infrastructure#1516&lt;/a>&lt;/li>
&lt;li>Temple University Education Hub
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1648" target="_blank" rel="noopener" >infrastructure#1648&lt;/a>&lt;/li>
&lt;li>Callysto Hub
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/" target="_blank" rel="noopener" >infrastructure#1439&lt;/a>&lt;/li>
&lt;li>London Interdisciplinary School
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1485" target="_blank" rel="noopener" >infrastructure#1485&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>We also ran hubs for several &lt;strong>community events&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>NeuroHackademy:
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1300" target="_blank" rel="noopener" >infrastructure#1300&lt;/a>&lt;/li>
&lt;li>OceanHackWeek 2022
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1576" target="_blank" rel="noopener" >infrastructure#1576&lt;/a>&lt;/li>
&lt;li>COESSING workshop:
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1516" target="_blank" rel="noopener" >infrastructure#1516&lt;/a>&lt;/li>
&lt;li>Eddy Symposium:
&lt;a href="https://github.com/2i2c-org/team-compass/issues/467" target="_blank" rel="noopener" >infrastructure#467&lt;/a>&lt;/li>
&lt;li>Allen Institute Summer Workshop on the Dynamic Brain
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1621" target="_blank" rel="noopener" >infrastructure#1621&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Please see
&lt;a href="https://docs.2i2c.org/community-lead/about/service-model" target="_blank" rel="noopener" >our service documentation&lt;/a> for more details.&lt;/p>
&lt;h2 id="organization-wide-updates">
Organization wide updates
&lt;a class="header-anchor" href="#organization-wide-updates">#&lt;/a>
&lt;/h2>&lt;p>These are large-scale organizational and strategic efforts that impact all of 2i2c.&lt;/p>
&lt;p>&lt;strong>We applied for a CZI Grant&lt;/strong>: In partership with The Carpentries, CSCCE, MetaDocencia, Invest in Open Infrastructure, and OpenLifeScience, we
&lt;a href="https://2i2c.org/blog/czi-global-communities-proposal/" >applied for a CZI grant to provide cloud infrastructure services to global communities&lt;/a>.&lt;/p>
&lt;p>&lt;strong>We grew our team&lt;/strong>: We&amp;rsquo;ve hired two new team members to lead new major efforts with 2i2c.
&lt;a href="https://2i2c.org/author/james-munroe/" target="_blank" rel="noopener" >&lt;strong>James Munroe&lt;/strong>&lt;/a> will lead efforts around &lt;em>community guidance and product design&lt;/em>, and
&lt;a href="https://2i2c.org/author/jim-colliander/" target="_blank" rel="noopener" >&lt;strong>Jim Colliander&lt;/strong>&lt;/a> will lead efforts around &lt;em>partnerships and sustainability&lt;/em>. We also
&lt;a href="https://github.com/2i2c-org/team-compass/issues/436" target="_blank" rel="noopener" >updated our Hiring and Candidate Search documentation&lt;/a> in the process.&lt;/p>
&lt;p>&lt;strong>We&amp;rsquo;re refining our strategy&lt;/strong>: We&amp;rsquo;ve begun a process of revisiting and refining our strategy after a year of major operations, see
&lt;a href="https://2i2c.org/blog/2022-q3-update/../strategic-update/" >our strategic update blog post for more information&lt;/a>.&lt;/p>
&lt;p>&lt;strong>We completed the
&lt;a href="https://cscce.org" target="_blank" rel="noopener" >CSCCE&lt;/a> community management training&lt;/strong>. Two of our team members (James and Sarah) both completed a several-week community management course that was offered in partnership with
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Our team member Sarah began a part-time role as the JupyterHub Community Strategic Lead&lt;/strong>. Sarah will be leading community strategy efforts within JupyterHub for the next two years thanks to a grant to the JupyterHub team from CZI.
&lt;a href="https://github.com/jupyterhub/team-compass/issues/536" target="_blank" rel="noopener" >Check out this issue to follow our progress&lt;/a>.&lt;/p>
&lt;!--
TODO: Only post this if we get our engineering salary bands questions resolved before this post goes live.
**We are hiring an engineer**: Do you know an open source cloud engineer with experience in Kubernetes and has desire make research and education more impactful, accessible, and delightful? Check out our job ad [at ].
-->
&lt;h2 id="service-improvements">
Service improvements
&lt;a class="header-anchor" href="#service-improvements">#&lt;/a>
&lt;/h2>&lt;p>We made a number of improvements to our cloud infrastructure and the processes around our service.
Here&amp;rsquo;s a brief breakdown:&lt;/p>
&lt;p>&lt;strong>We expanded our shared clusters to new cloud providers and regions&lt;/strong>. We now have shared clusters already deployed on Google Cloud Platform on &lt;code>us-central1-b&lt;/code> and &lt;code>europe-west2&lt;/code>.&lt;/p>
&lt;p>&lt;strong>We defined an incident commander process&lt;/strong>. This will allow us to coordinate and respond to major outages in our cloud infrastructure more efficiently. See
&lt;a href="https://compass.2i2c.org/projects/managed-hubs/incidents" target="_blank" rel="noopener" >our incident response documentation&lt;/a> for more information.&lt;/p>
&lt;p>&lt;strong>We improved our cloud usage monitoring infrastructure&lt;/strong>. We&amp;rsquo;ve deployed
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/328" target="_blank" rel="noopener" >a centralized Grafana Dashboard&lt;/a> that aggregates cloud usage across all of our partner communities, and allows us to keep track of any unexpected behavior or outages across them all.&lt;/p>
&lt;h2 id="where-were-focusing-next">
Where we&amp;rsquo;re focusing next
&lt;a class="header-anchor" href="#where-were-focusing-next">#&lt;/a>
&lt;/h2>&lt;p>In the final quarter of this year, we&amp;rsquo;ve decided to focus our efforts on &lt;strong>growing capacity&lt;/strong> across all of the aspects of our team.
Now that we have brought on several more partner communities into our Managed JupyterHub Service, it has shown us where we have bottlenecks in our technology, process, and structure.
In 2023 we hope to significantly grow the number of communities we work with, and so we must grow our capacity to be able to take on these new partnerships.&lt;/p>
&lt;p>We aim to accomplish this in a few ways:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Make technical improvements&lt;/strong> to our cloud infrastructure that reduces the amount of human labor associated with regular actions. This will make our cloud infrastructure more scalable and reliable.&lt;/li>
&lt;li>&lt;strong>Improve our invoicing and partnership leads pipeline&lt;/strong> so that we can reduce the amount of administrative toil for ourselves and for the communities we work with in billing and cloud cost pass-through.&lt;/li>
&lt;li>&lt;strong>Refine our organizational strategy and structure&lt;/strong> so that we are better-able to agree on our most important objectives, and to execute on them efficiently as a distributed team.&lt;/li>
&lt;li>&lt;strong>Hire people!&lt;/strong> While improving our efficiency will certainly grow our capacity, we also hope to grow our capacity the old fashioned way: by hiring more team members. We&amp;rsquo;re identifying the biggest needs on our team now and will hope to have postings soon. Stay tuned!&lt;/li>
&lt;/ul>
&lt;h2 id="thanks">
Thanks
&lt;a class="header-anchor" href="#thanks">#&lt;/a>
&lt;/h2>&lt;p>Many thanks to the 2i2c team, our partner communities, our funders, and the many others that have provided us support and guidance. We hope that this update provides a helpful idea of our priorities and major efforts, and we look forward to giving you a new update in Q4!&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
If you are interested in partnering with 2i2c to have your own managed JupyterHub, please contact us at &lt;code>partnerships@2i2c.org&lt;/code>.
We have a shared cluster on Google Cloud, with plans to deploy one on AWS soon, and dedicated clusters can be run on any major cloud provider. Please see
&lt;p>&lt;a href="https://docs.2i2c.org/community-lead/about/service-model" target="_blank" rel="noopener" >our service documentation&lt;/a> for more details.&lt;/p>
&lt;/div>
&lt;/div></description></item><item><title>Open Source Infrastructure Engineer: Site Reliability Engineering and Cloud Infrastructure</title><link>https://2i2c.org/jobs/2022/open-source-infrastructure-engineer/</link><pubDate>Fri, 14 Oct 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/jobs/2022/open-source-infrastructure-engineer/</guid><description>&lt;p>2i2c manages, supports, and builds community-centric infrastructure for interactive computing in the cloud with partner communities in research and education.&lt;/p>
&lt;p>We’re looking for an Open Source Infrastructure Engineer that will join our &lt;strong>Site Reliability Engineering team and make our cloud infrastructure more reliable, scalable, and efficient&lt;/strong>. It will help build a future of data-intensive scientific research and democratize the design and access to cloud-based resources for research and education purposes.&lt;/p>
&lt;p>If you&amp;rsquo;re interested, learn more about 2i2c at the links below, and more about this job posting on the rest of this page.&lt;/p>
&lt;!-- Defined in layouts/shortcodes/job_details.html -->
&lt;div class="job-info">
&lt;p>❌❌❌&lt;br>
This posting is closed to new applications.&lt;br>
See &lt;a href="https://2i2c.org/jobs">the jobs page&lt;/a> for our open positions.&lt;br>
❌❌❌&lt;/p>
&lt;p>&lt;i class="fa fa-info-circle">&lt;/i> &lt;strong>About the position&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Salary&lt;/strong>: $120,000 - $135,000&lt;/li>
&lt;li>&lt;strong>Location&lt;/strong>: preferred at the US/Pacific time zone&lt;/li>
&lt;li>&lt;strong>Deadline&lt;/strong>: We will begin reviewing applications around &lt;strong>November 17th&lt;/strong>, and will accept them on a rolling basis until the position is filled.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Major duties&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Site Reliability Engineering&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Cloud infrastructure management, operations, and support.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Development of open source infrastructure for hosted JupyterHub service&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>For more general information about 2i2c, see the links below:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://compass.2i2c.org/" target="_blank" rel="noopener" >Our Team Compass&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/code-of-conduct/index.html" target="_blank" rel="noopener" >Our Code of Conduct&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/organization/mission.html" target="_blank" rel="noopener" >Our Mission and Values&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/#what-its-like-to-work-at-2i2c" target="_blank" rel="noopener" >What it&amp;rsquo;s like to work at 2i2c&lt;/a>&lt;/li>
&lt;/ul>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://forms.gle/RPqWHoweDnvUVp4d8" class="btn btn-primary px-3 py-3">Click here to Apply&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 id="who-we-are">
Who we are
&lt;a class="header-anchor" href="#who-we-are">#&lt;/a>
&lt;/h2>&lt;p>2i2c is a non-profit organization with a mission to make interactive computing more accessible, scalable, and powerful for research and education:
&lt;a href="https://2i2c.org/organization/" >2i2c.org/organization/&lt;/a>.&lt;/p>
&lt;p>We accomplish this mission by providing managed cloud services for interactive computing, by providing development and technical leadership to researchers and educators that utilize this infrastructure for specific communities, and by providing support for open source tools and communities in this ecosystem.&lt;/p>
&lt;p>We have deep ties to the open source community, and have been leaders and core contributors across dozens of projects - in particular in the Jupyter ecosystem. We also have deep ties to research and education - our team has spent years deploying infrastructure for universities, community colleges, and research teams, and now we’re bringing this experience to a wider audience with 2i2c.&lt;/p>
&lt;p>We believe strongly in communities that are inclusive, transparent, equitable, effective, and diverse, especially 2i2c itself. We believe that our values should permeate everything about 2i2c, including the work we do, the communities we serve, and our own organizational culture.&lt;/p>
&lt;p>2i2c is a fiscally sponsored project of
&lt;a href="http://www.codeforsociety.org/" target="_blank" rel="noopener" >Code for Science and Society&lt;/a>, a registered US 501(c)(3) nonprofit corporation.&lt;/p>
&lt;h2 id="what-youll-do">
What you’ll do
&lt;a class="header-anchor" href="#what-youll-do">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Ensure the reliable operation of the 2i2c infrastructure (leveraging production-ready cloud-based tools such as JupyterHub, BinderHub and Dask).&lt;/li>
&lt;li>Address support issues&lt;/li>
&lt;li>Explore emerging technologies in the Cloud / DevOps space, design and implement cloud computing architecture in partnership with our team.&lt;/li>
&lt;li>Participate in upstream open source communities we rely on (such as JupyterHub, BinderHub, Dask, etc) in partnership with the established leaders of those communities and collaborate with the Community Lead in the education and outreach around cloud computing.&lt;/li>
&lt;li>Work with a distributed and global team - team members are given a lot of autonomy, and expected to be proactive at communicating with one another and working with others to allocate effort that will maximize our impact.&lt;/li>
&lt;/ul>
&lt;h2 id="essential-requirements">
Essential requirements
&lt;a class="header-anchor" href="#essential-requirements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Experience deploying applications on cloud infrastructure.&lt;/li>
&lt;li>Experience deploying and developing with Linux container-based technologies, such as Docker and Kubernetes.&lt;/li>
&lt;li>Experience with continuous integration services (e.g. Circle CI, GitHub workflows).&lt;/li>
&lt;li>Experience developing tools in a general purpose programming language (eg. Python).&lt;/li>
&lt;li>Experience collaborating and coordinating work via online platforms, such as GitHub, GitLab, or BitBucket, and distributed revision control.&lt;/li>
&lt;li>Experience working with distributed service teams that use asynchronous methods of communication&lt;/li>
&lt;/ul>
&lt;h2 id="desirable-requirements">
Desirable requirements
&lt;a class="header-anchor" href="#desirable-requirements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Experience with major cloud providers.&lt;/li>
&lt;li>Experience in programming and software engineering with a track record of leadership in open, collaborative projects with broad community adoption.&lt;/li>
&lt;li>Experience working on geographically distributed open-source projects.&lt;/li>
&lt;li>Experience with the Jupyter ecosystem and other tools for interactive computing.&lt;/li>
&lt;li>Evidence of existing connections and relationships in the worldwide ecosystem of open source software for data-intensive research and ability to establish new ones.&lt;/li>
&lt;li>Experience with common data science methods, platforms, workflows, and infrastructures; with data management systems, practices, and standards; and the capacity to gain familiarity with new related topics.&lt;/li>
&lt;li>Experience engaging with highly technical researchers across a variety of methodological fields, research domains, and computational platforms.&lt;/li>
&lt;li>Experience building and maintaining continuous deployment pipelines.&lt;/li>
&lt;li>Interpersonal skills to work with researchers and students, including skills to communicate complex information in a clear and concise manner both verbally and in writing.&lt;/li>
&lt;/ul>
&lt;h2 id="what-it-is-like-to-work-at-2i2c-and-why-youll-like-working-with-us">
What it is like to work at 2i2c and why you’ll like working with us
&lt;a class="header-anchor" href="#what-it-is-like-to-work-at-2i2c-and-why-youll-like-working-with-us">#&lt;/a>
&lt;/h2>&lt;p>2i2c is a remote-first team that believes strongly in our organizational values and mission. We recommend that you visit our
&lt;a href="https://2i2c.org/jobs/" >jobs page&lt;/a>, to learn about what it’s like to work at 2i2c and why you should work with us. You will also find relevant information about our compensation philosophy and our commitment to equal opportunity. For an even deeper look into how 2i2c works, check out our
&lt;a href="https://compass.2i2c.org/" target="_blank" rel="noopener" >Team Compass&lt;/a>.&lt;/p>
&lt;h2 id="how-to-apply">
How to apply
&lt;a class="header-anchor" href="#how-to-apply">#&lt;/a>
&lt;/h2>&lt;p>Please fill out the following
&lt;a href="https://forms.gle/RPqWHoweDnvUVp4d8" target="_blank" rel="noopener" >application form&lt;/a>.
We will begin reviewing applications on November 17th, and will accept them on a rolling basis until the position is filled.&lt;/p>
&lt;p>We are eager to receive your application!&lt;/p></description></item><item><title>One year later: an update of 2i2c's mission, strategy, and impact</title><link>https://2i2c.org/blog/strategic-update/</link><pubDate>Sun, 09 Oct 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/strategic-update/</guid><description>&lt;p>&lt;em>This post is an exploration of 2i2c&amp;rsquo;s current strategy and direction after a year of major operations. It is a brainstorm from the Executive Director, shared as a blog post to invite feedback and provide transparency into our current thinking. Its goal is to explore the context of 2i2c&amp;rsquo;s stakeholders and their needs, and identify an opportunity and plan for having a positive impact with these communities. It is not a concrete proposal but a snapshot of thinking in time meant to trigger reflection. Over time we will incorporate some of these ideas
&lt;a href="https://compass.2i2c.org/" target="_blank" rel="noopener" >into our Team Compass&lt;/a>.&lt;/em>&lt;/p>
&lt;p>When we founded 2i2c, we largely did so from the &amp;ldquo;bottom up&amp;rdquo; - we identified several patterns around hosted infrastructure that were useful at
&lt;a href="https://datahub.berkeley.edu" target="_blank" rel="noopener" >UC Berkeley&lt;/a>,
&lt;a href="https://pangeo.io" target="_blank" rel="noopener" >Pangeo&lt;/a>, and similar communities, and we wished to make them more generalized, accessible, and scalable.&lt;/p>
&lt;p>We defined our mission as the following:&lt;/p>
&lt;blockquote>
&lt;p>Our mission is to make research and education more impactful, accessible, and delightful by developing, operating, and supporting infrastructure for interactive computing.&lt;/p>
&lt;/blockquote>
&lt;p>And a description about our immediate activities to make things a bit more concrete:&lt;/p>
&lt;blockquote>
&lt;p>2i2c designs, develops, and operates JupyterHubs in the cloud for communities of practice in research &amp;amp; education. It builds and supports open source infrastructure that serves these communities.&lt;/p>
&lt;/blockquote>
&lt;p>Around a year ago
&lt;a href="https://2i2c.org/blog/six-month-update/" >we began our pilot JupyterHubs project&lt;/a> to learn more about our biggest challenges and opportunities in making interactive computing more accessible and useful for research and education.
While both of these statements are still accurate, over the past year we&amp;rsquo;ve also learned more about the value that 2i2c provides. This post is an exploration of how these statements and our strategy may evolve in the near future.&lt;/p>
&lt;h2 id="what-did-we-miss-with-our-original-strategy">
What did we miss with our original strategy?
&lt;a class="header-anchor" href="#what-did-we-miss-with-our-original-strategy">#&lt;/a>
&lt;/h2>&lt;p>In short: it is too-focused on &lt;strong>actions&lt;/strong> rather than &lt;strong>impact&lt;/strong>.&lt;/p>
&lt;p>While running JupyterHubs is a key part of what 2i2c does, it is a means to an end rather than our end-goal.
Infrastructure is only useful if it changes workflows in a way that aligns with the goals and values that we wish to achieve.
We&amp;rsquo;ve historically defined these in a few scattered places. For example, here are the values listed on our website:&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>2i2c values fairness and justice as requirements for successful communities.&lt;/li>
&lt;li>2i2c values learning and discovery for all people.&lt;/li>
&lt;li>2i2c values collaborating and connecting to foster environments for learning and discovery.&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>However, it is difficult to tie our operations directly to values and goals without making them concrete, and without defining a plan that ties them to our work.&lt;/p>
&lt;p>Through our JupyterHubs pilot, we&amp;rsquo;ve learned how our actions-focused approach was missing some important aspects of these broader goals.
For example, we came to understand that a big part of 2i2c&amp;rsquo;s value isn&amp;rsquo;t just providing a JupyterHub, it is &lt;em>de-risking cloud native workflows&lt;/em> for communities that are inherently skeptical of what cloud infrastructure offers.
Doing this entails many things: teaching, making decisions on behalf of others, supporting and answering questions, building trust, and yes, managing infrastructure.&lt;/p>
&lt;h3 id="refining-our-strategy">
Refining our strategy
&lt;a class="header-anchor" href="#refining-our-strategy">#&lt;/a>
&lt;/h3>&lt;p>With this in mind, we&amp;rsquo;d like to &lt;strong>make our strategy more clearly-defined and tied to our operational choices&lt;/strong>. Here are a few ways we&amp;rsquo;d like to do this:&lt;/p>
&lt;ul>
&lt;li>Define our organization&amp;rsquo;s &lt;strong>values and vision&lt;/strong> for the impact we wish to have.&lt;/li>
&lt;li>Define the key &lt;strong>stakeholder communities&lt;/strong> that we wish to serve, the context of tools and services that are relevant to these stakeholders, and the assumptions we&amp;rsquo;re making.&lt;/li>
&lt;li>Define the &lt;strong>problems these stakeholders have&lt;/strong>, the ways in which their current workflow could be improved, and the opportunity to help them.&lt;/li>
&lt;li>Describe our &lt;strong>strategy&lt;/strong> to positively impact these stakeholders with our work.&lt;/li>
&lt;li>Define a collection of &lt;strong>goals and objectives&lt;/strong> to carry out this strategy in the near-term.&lt;/li>
&lt;/ul>
&lt;p>The rest of this post will take a crack at answering a few of these questions. It is intentionally messy, and meant both as a public snapshot of my thinking at this moment, and fodder for discussion and more specific proposals in the future.&lt;/p>
&lt;h2 id="context-our-key-stakeholders-and-the-impact-we-wish-to-have">
Context: Our key stakeholders and the impact we wish to have
&lt;a class="header-anchor" href="#context-our-key-stakeholders-and-the-impact-we-wish-to-have">#&lt;/a>
&lt;/h2>&lt;p>2i2c&amp;rsquo;s key stakeholders are communities of practice that are dedicated to creating and sharing public knowledge.
These are primarily made up of &lt;strong>researchers&lt;/strong> and &lt;strong>educators&lt;/strong> in the global community.&lt;/p>
&lt;p>For these stakeholders, we wish to catalyze and support a transformation in their data workflows that allows them to be more collaborative, inclusive, efficient, and powerful in the impact they wish to have.&lt;/p>
&lt;h3 id="assumptions-we-make-about-our-stakeholders">
Assumptions we make about our stakeholders
&lt;a class="header-anchor" href="#assumptions-we-make-about-our-stakeholders">#&lt;/a>
&lt;/h3>&lt;p>There are a few unique things about these communities that are important for us:&lt;/p>
&lt;ul>
&lt;li>Researchers and educators see their job as &lt;strong>creating and sharing knowledge with a heterogeneous and global community&lt;/strong>. They can&amp;rsquo;t make many assumptions about the organizational context or resources of this community, or their work will become inaccessible to others.&lt;/li>
&lt;li>They &lt;strong>work at vertically-oriented institutions&lt;/strong> (e.g., a university with an in-house IT department), but their communities are &lt;strong>organized horizontally across institutions&lt;/strong> (a researcher may identify more with colleagues in their field than with their co-workers at the university).&lt;/li>
&lt;li>As a result, these communities &lt;strong>value workflows that are maximally accessible, portable, modular, simple, and long-lasting&lt;/strong>. This allows them to define a shared set of practices across their institutional boundaries without requiring a lot of vertical decision-making.&lt;/li>
&lt;/ul>
&lt;p>Historically, this means that scientists must choose between workflows that are underpowered but accessible (e.g., collapsed into a PDF describing the work), or powerful but inaccessible to many (e.g., they rely on extensive training or resources only accessible to some institutions).&lt;/p>
&lt;h3 id="open-source-tools-have-boosted-standardization-and-collaboration-across-communities">
Open source tools have boosted standardization and collaboration across communities
&lt;a class="header-anchor" href="#open-source-tools-have-boosted-standardization-and-collaboration-across-communities">#&lt;/a>
&lt;/h3>&lt;p>Over the past ten years, the proliferation of open source tools has vastly expanded our potential to create public knowledge in a more accessible, modular, inclusive, and productive way.&lt;/p>
&lt;p>For example, core numerical computing infrastructure like
&lt;a href="https://numpy.org" target="_blank" rel="noopener" >NumPy&lt;/a> provides a foundation for more domain specific numerical libraries to build on. Tools like
&lt;a href="https://pandas.pydata.org/" target="_blank" rel="noopener" >Pandas&lt;/a> and
&lt;a href="https://xarray.dev/" target="_blank" rel="noopener" >XArray&lt;/a> allow for more sophisticated data structures that match the complex and heterogeneous data in the research community.&lt;/p>
&lt;p>This has led to many domain-specific communities of practice building upon the same APIs and infrastructure to solve their specific needs. By largely sharing the same stack, we have reduced duplication of effort and make it easier to speak the same language across data-rich fields.&lt;/p>
&lt;h3 id="but-a-local-workflow-with-open-source-tools-is-inaccessible-or-underpowered-for-many-people">
&amp;hellip;but a local workflow with open source tools is inaccessible or underpowered for many people
&lt;a class="header-anchor" href="#but-a-local-workflow-with-open-source-tools-is-inaccessible-or-underpowered-for-many-people">#&lt;/a>
&lt;/h3>&lt;p>However, this has also led to a few key problems:&lt;/p>
&lt;p>&lt;strong>Problem 1: The ecosystem of open source tools is huge and complex, and hard to tailor for specific domain workflows&lt;/strong>. It is hard to decide which tools to use for a workflow, and we do not have efficient community processes for creating and standardizing workflows.&lt;/p>
&lt;p>&lt;strong>Problem 2: For many users, it is still too difficult to set up a local environment&lt;/strong>. Installing the right libraries and their dependencies is complex and domain-specific. This leads to wasted time and confusion, especially for newcomers or learners in an educational context.&lt;/p>
&lt;p>Finally, there is another workflow-related problem that arises even when you do set up a proper environment:&lt;/p>
&lt;p>&lt;strong>Problem 3: Local workflows are not scalable enough for many communities&lt;/strong>. Working with 10GB of data can be challenging in a local context, working with 10TB of data quickly becomes impossible. This leads to communities that &amp;ldquo;share data&amp;rdquo; by making lots of local copies that are distributed to individual users. This harms data provenance and makes our work less reproducible and accessible. It limits the scope of questions we can ask with data and increases the friction for sharing our work with others. As our workflows require more computation and data, a &amp;ldquo;local, fixed hardware&amp;rdquo; approach will become more and more underpowered.&lt;/p>
&lt;h2 id="managed-cloud-services-can-solve-the-accessibility-problem-for-many-workflows-and-tools">
Managed cloud services can solve the accessibility problem for many workflows and tools
&lt;a class="header-anchor" href="#managed-cloud-services-can-solve-the-accessibility-problem-for-many-workflows-and-tools">#&lt;/a>
&lt;/h2>&lt;p>One way to resolve these problems is to rely on &lt;strong>managed infrastructure services&lt;/strong> to provide the environments needed for data analysis. A systems administrator can set up computing and data resources, and then expose these resources to many users as a service. This makes these complex and powerful environments more accessible, standardizes the workflows of users to make it easier for them to collaborate, and potentially serves as a gateway to more complex data and computing infrastructure.&lt;/p>
&lt;p>Historically, this work was done in-house by internal teams at research institutions. This led to many unique infrastructure setups with slight differences across institutions. It also led to data and workflows being institution-centric, even though many communities are organized &lt;em>across&lt;/em> institutions.&lt;/p>
&lt;p>&lt;strong>Cloud infrastructure can solve this problem&lt;/strong>. It provides a layer of infrastructure that can be used to standardize access and worfklows across communities of practice. It can be more accessible than on-prem infrastructure, as the cloud is already globally distributed in a way that local hardware can never be. Moreover, cloud infrastructure is also much more scalable, and can be used to access more sophisticated data and computing resources in a fluid manner.&lt;/p>
&lt;h3 id="but-the-cloud-services-landscape-is-not-designed-for-research-and-education-communities">
But the cloud services landscape is not designed for research and education communities
&lt;a class="header-anchor" href="#but-the-cloud-services-landscape-is-not-designed-for-research-and-education-communities">#&lt;/a>
&lt;/h3>&lt;p>Over the last 10 years, a huge ecosystem of cloud-native tools and services have grown to solve this problem in industry. These are often called the
&lt;a href="https://future.com/emerging-architectures-modern-data-infrastructure/" target="_blank" rel="noopener" >Modern Data Stack&lt;/a>. However, &lt;strong>modern cloud services are largely unused by research and education&lt;/strong>. Why is this?&lt;/p>
&lt;p>We believe it is because most cloud services do not meet many needs of research and educational communities:&lt;/p>
&lt;ul>
&lt;li>They tend to be offered by a single vendor, which results in a fear of lock-in or vendor-specific workflows that result in high-costs.&lt;/li>
&lt;li>They require users to learn non-standard workflows that are attached to the cloud service.&lt;/li>
&lt;li>They often require extensive knowledge of data and cloud resources to configure properly. They may require an internal dev-ops team to integrate cloud services and expose them for internal teams.&lt;/li>
&lt;li>They are often still institution-centric because cloud services are geared towards enterprise contracts within vertically-integrated organizations. Many research organizations are more like collections of little fiefdoms rather than a single kingdom.&lt;/li>
&lt;/ul>
&lt;p>In short, &lt;strong>many cloud services ask researchers and educators to give up too much agency and choice, and make them reliant on organizations they do not inherently trust&lt;/strong>. They are perceived as a risky alternative to the &amp;ldquo;we have control and have visibility into everything&amp;rdquo; nature of on-prem hardware.&lt;/p>
&lt;h3 id="examples-of-a-potential-model-for-community-centric-cloud-services">
Examples of a potential model for community-centric cloud services
&lt;a class="header-anchor" href="#examples-of-a-potential-model-for-community-centric-cloud-services">#&lt;/a>
&lt;/h3>&lt;p>Over the past several years we have seen several communities strike a balance that made cloud infrastructure more accessible while still retaining agency for the communities of practice that used and managed the infrastructure.
For example:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>The Pangeo Project&lt;/strong> is a
&lt;a href="https://pangeo.io" target="_blank" rel="noopener" >cloud-native geospatial analytics platform&lt;/a> that builds on the Dask, Zarr, and XArray stack to enable distributed and collaborative access to large-scale geospatial datasets.&lt;/li>
&lt;li>&lt;strong>The UC Berkeley DataHub&lt;/strong> is a
&lt;a href="https://docs.datahub.berkeley.edu/en/latest/" target="_blank" rel="noopener" >cloud-native educational community&lt;/a> that uses a managed service to provide interactive learning environments to thousands of students via the cloud.&lt;/li>
&lt;li>&lt;strong>The Syzygy service&lt;/strong> is a
&lt;a href="https://syzygy.ca/" target="_blank" rel="noopener" >federated network of educational hubs&lt;/a> that run entirely on open source infrastructure in the cloud, managed for universities in Canada.&lt;/li>
&lt;/ul>
&lt;p>Each of these communities roughly followed the same model:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Integrate&lt;/strong> a collection of open source tools and cloud services into a standardized cloud environment for a community.&lt;/li>
&lt;li>&lt;strong>Customize&lt;/strong> the environment and cloud resources via open source tools that provide remote interactive computing sessions. This is usually done with
&lt;a href="https://jupyterhub.readthedocs.io" target="_blank" rel="noopener" >JupyterHub&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Contribute&lt;/strong> to upstream tools and redeploy improvements to a community&amp;rsquo;s shared infrastucture in order to enhance the service.&lt;/li>
&lt;/ul>
&lt;p>Moreover, they use nearly identical technical stacks: some combination of Jupyter infrastructure to manage cloud infrastructure and provide interactive computing environments, a Scientific Python or R-based stack for the libraries users access, and a collection of online services to facilitate collaboration and workflows.&lt;/p>
&lt;p>These services required a combination of &lt;strong>dev-ops and cloud engineering&lt;/strong> skills to integrate the tools and manage the infrastructure, as well as &lt;strong>community guidance and teaching&lt;/strong> to standardize and share workflows across a community.&lt;/p>
&lt;p>So why couldn&amp;rsquo;t this model just be repeated across many other communities as well?&lt;/p>
&lt;h3 id="however-running-your-own-cloud-infrastructure-is-a-lot-of-work">
However, running your own cloud infrastructure is a lot of work
&lt;a class="header-anchor" href="#however-running-your-own-cloud-infrastructure-is-a-lot-of-work">#&lt;/a>
&lt;/h3>&lt;p>These initiatives demonstrate the potential of building community-centric cloud services on top of open source tools, but they were also unscalable to other communities. Observing these success stories also reveals a few more problems that we must resolve in order to make these services more generalizable and accessible to new communities:&lt;/p>
&lt;p>&lt;strong>Problem 4: Running your own cloud requires skills and resources that most organizations do not have&lt;/strong>. In order to make the most of the cloud and to provide it as a resource reliable-enough for important workflows, it is important to have a knowledgeable team with best-practices in distributed cloud management. However, hiring engineers in this space is very difficult, and the team structure and culture needed for these services is often at-odds with the way universities are structured.&lt;/p>
&lt;p>&lt;strong>Problem 5: Contributing to open source communities requires dedicated time and skills&lt;/strong>. When building services on top of open source tools, you will invariably need to improve the tools in order to fix bugs or to enhance your service. Doing this is very different from a contract with a traditional vendor, and requires building skills in how to communicate and interact with open source communities. For key open source infrastructure, it also requires an ongoing investment of time into upstream community work that is hard for many institutions to justify.&lt;/p>
&lt;p>&lt;strong>Problem 6: When institutions run their own clouds, they tend to re-invent institution-centric anti-patterns.&lt;/strong> For example, an institution might expose a cloud-based service but make it available only to individuals with an institutional account.
They might staff it with an under-resourced team (or just a single person). They might make small decisions that differ from institution to institution. All of this limits the effectiveness of the cloud for facilitating collaboration and sharing within communities of practice.&lt;/p>
&lt;p>Finally, while vendor-specific cloud services often come with a lot of training material, self-managed cloud services require institutions to build their own practices and guidance for how to use the infrastructure. This results in another major problem:&lt;/p>
&lt;p>&lt;strong>Problem 7: Communities need assistance in understanding what is possible with cloud-native workflows, and adapting these workflows to their domains.&lt;/strong> There is enormous value in integrating tools together and exposing them as a highly-accessible managed service via the cloud. However, most communities of practice are still new to cloud-native workflows, and they need considerable guidance to begin sharing their practices within a community.&lt;/p>
&lt;p>These are several major problems that we must overcome in order to make cloud infrastructure more accessible and useful to research and education communities while living up to our values of community agency and open workflows.&lt;/p>
&lt;h2 id="our-opportunity-for-impact">
Our opportunity for impact
&lt;a class="header-anchor" href="#our-opportunity-for-impact">#&lt;/a>
&lt;/h2>&lt;p>To summarize, we believe that there is the following opportunity for impact:&lt;/p>
&lt;ul>
&lt;li>Make communities in research and education do work that is more collaborative, reproducible, and impactful&amp;hellip;&lt;/li>
&lt;li>In a way that gives them agency and flexibility to do their work as they wish&amp;hellip;&lt;/li>
&lt;li>By integrating open tools and standards, managing them as a service with scalable cloud infrastructure, and guiding communities in deciding how to use these tools for their domain-specific problems&amp;hellip;&lt;/li>
&lt;/ul>
&lt;p>We believe that the best way to do this is via a mission-aligned non-profit service that is based on values of trust, shared responsibility, and transparency. This will allow us to treat our relationships with communities as &lt;strong>collaborators, not customers&lt;/strong> and share responsibility and agency with them. In this way we can act as a vehicle for &lt;strong>sharing resources and ideas across communities&lt;/strong> via our infrastructure and services.&lt;/p>
&lt;p>We can make such a service both &lt;strong>sustainable&lt;/strong> and &lt;strong>scalable&lt;/strong> because we are delivering direct value to communities with resources. There are many
&lt;a href="https://www.ffwd.org/playbook/choose-a-business-model/" target="_blank" rel="noopener" >potential business models&lt;/a> that are already in existence (for example, &lt;em>Software as a Service&lt;/em> or shared research infrastructure services like supercomputing centers). By generating resources in exchange for these services, we can &lt;strong>centralize cloud infrastructure services for many communities into a single, scalable team&lt;/strong>. By committing ourselves to an &lt;em>upstream-first service model&lt;/em>, we can &lt;strong>drive resources towards open source communities&lt;/strong> and make these tools more useful for our key stakeholders.&lt;/p>
&lt;p>A model like this naturally sets up a two-directional virtuous cycle where open source communities and public knowledge communities derive value from one another&amp;rsquo;s work.&lt;/p>
&lt;div class="mermaid">flowchart TD
RE[Communities in &lt;br /> Research and Education]
OS[Open Source Communities]
OS -- Builds open tools and &lt;br /> standards used by --> 2i2c
2i2c -- Integrates tools into &lt;br /> managed services for --> RE
2i2c -- Integrates feedback and &lt;br /> upstreams improvements to --> OS
RE -- Provides feedback &lt;br /> and resources for --> 2i2c
&lt;/div>
&lt;h3 id="how-should-2i2c-try-to-achieve-this-impact">
How should 2i2c try to achieve this impact
&lt;a class="header-anchor" href="#how-should-2i2c-try-to-achieve-this-impact">#&lt;/a>
&lt;/h3>&lt;p>With this in mind, we hope to focus our organizational efforts around building services that focus on the following actions.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Integrate&lt;/strong> open source tools and services into a cloud-native service that is optimized for scientific workflows and communities. The end-product should not feel like &amp;ldquo;a 2i2c product&amp;rdquo; but a service anybody with enough skills could build themselves.&lt;/li>
&lt;li>&lt;strong>Manage&lt;/strong> cloud infrastructure with an &amp;ldquo;upstream first&amp;rdquo; mentality to provide a high-quality and accessible service for global communities. This will allow communities to focus on their work instead of the infrastructure.&lt;/li>
&lt;li>&lt;strong>Support&lt;/strong> the communities that use this infrastructure so that questions and problems are dealt with quickly. This will de-risk the service (and the cloud more generally) with the knowledge that help is available.&lt;/li>
&lt;li>&lt;strong>Guide&lt;/strong> communities in using these tools to do their work more effectively and collaboratively. This will speed up the learning and sharing process so that communities are able to make the most of the cloud.&lt;/li>
&lt;li>&lt;strong>Collaborate&lt;/strong> with these communities and embody the values we want to see in the research community to build trust and lead others. This will build trust and strengthen relationships between our communities.&lt;/li>
&lt;/ul>
&lt;p>Over time, we may add new verbs (such as &lt;strong>develop&lt;/strong> open source software and &lt;strong>lead&lt;/strong> open source communities), but the ones above define our initial organizational focus.&lt;/p>
&lt;h3 id="our-most-important-actions-to-take">
Our most important actions to take
&lt;a class="header-anchor" href="#our-most-important-actions-to-take">#&lt;/a>
&lt;/h3>&lt;p>Accomplishing this requires blending aspects of cloud infrastructure management, domain and workflow expertise, and collaborative service design. As we move forward, these are the biggest challenges to overcome in developing this service further:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Build a top-notch global Site Reliability Engineering Team&lt;/strong>. First and foremost, the infrastructure that we manage must be reliable and scalable. If you ask communities to do their work in the cloud, they must be confident that it will be stable and highly available. If you wish to serve a global community, then you must build systems management capacity on a global level. This means investing heavily in our asynchronous coordination and communication processes, and building team skills in the modern cloud infrastructure stack and dev-ops practices.&lt;/li>
&lt;li>&lt;strong>Build centralized cloud deployment infrastructure for community-first services&lt;/strong>. We need the ability to centrally manage infrastructure that is delivered in a community-specific manner to many different communities of practice. This will allow us to achieve economies of scale in managing and running the infrastructure, while allowing communities to have agency over their tools to customize them for their needs. To do this we&amp;rsquo;ll need to use open source tools and cloud services that are designed for flexibility and modularity, create out-of-the-box infrastructure that gets communities 80% of the way there, and gives them the power to define the last 20% in a way that is sustainable for both them and our team.&lt;/li>
&lt;li>&lt;strong>Define two or three scientific workflows to focus on, and integrate the right tools and services into a distribution for each&lt;/strong>. We must identify a few scientific workflows to focus on, as well as the infrastructure stack that will be most-useful to the communities that require these workflows. We must integrate this infrastructure into a distribution that any community could pick up, but that has enough flexibility for each to solve their &amp;ldquo;last-mile problem&amp;rdquo; with customizations.&lt;/li>
&lt;li>&lt;strong>Define a support and guidance model for community-first services&lt;/strong>. Our support and guidance similarly needs to be generic enough to be scalable to many kinds of communities, but with the ability for communities to make their own customizations and have agency over their training and content. In this way we can be a centralized resource that communities can use to grow their own practice of cloud-native workflows.&lt;/li>
&lt;li>&lt;strong>Identify a collaborative service delivery model that doesn&amp;rsquo;t create too much overhead&lt;/strong>. We believe that community-centric infrastructure should be transparent and participatory, and provide agency to communities in shaping their service. On the other hand, we wish to serve many different communities, and thus we must minimize the amount of labor associated with serving any particular community. As a result we must build a collaborative model of roles and expectations around our services that balances participation from community representatives against our ability to act quickly to ensure the best service possible.&lt;/li>
&lt;li>&lt;strong>Identify a cost-recovery model that is globally accessible and scalable&lt;/strong>. We wish to serve a large and global collection of communities with our services, and so we must identify a way to recover our costs such that we are not restricted to serving only the wealthiest communities in the world, and such that &amp;ldquo;cost vs. resources generated&amp;rdquo; gives us the flexibility to grow to serve a large global community.&lt;/li>
&lt;li>&lt;strong>Create an upstream-first culture&lt;/strong>. If we wish to leverage open source tools in our work, we need to build team expertise in interacting with open source communities, deploying their technology in our services, and making improvements to our service by upstream contributions to open source tools.&lt;/li>
&lt;li>&lt;strong>Create an organizational culture that embodies the values we want to support&lt;/strong>. In order to build a better, more collaborative, more inclusive network of communities of practice, we need to embody the principles we wish to help grow in other communities. This will help us build trust with organizations that are inherently skeptical of &amp;ldquo;outsourcing&amp;rdquo; responsibilities to other organizations, and will make us more effective advocates for the same kinds of practices in other communities.&lt;/li>
&lt;/ol>
&lt;p>There are many other issues we must tackle, but we&amp;rsquo;ve identified these as being crucial to 2i2c accomplishing its mission. Over the coming months we will continue to refine our practices and service model. As we learn more, we&amp;rsquo;ll update our understanding of 2i2c&amp;rsquo;s situation and potential for impact, and our strategy for accomplishing our mission.&lt;/p>
&lt;p>We hope that this framing helps others understand our position relative to the communities we wish to serve, and the impact we wish to have. We welcome any feedback or suggestions about how we can refine these ideas to better-serve our communities.&lt;/p>
&lt;h2 id="appendix-future-growth">
Appendix: Future growth
&lt;a class="header-anchor" href="#appendix-future-growth">#&lt;/a>
&lt;/h2>&lt;p>Many people also ask what the growth model looks like for 2i2c.
Our pricing strategy above should include our goal of &lt;strong>building a financial buffer&lt;/strong> in order to boost the financial resiliency of the organization, and to provide us room to grow if there is an opportunity to expand our service.&lt;/p>
&lt;p>While we want to focus our efforts on the strategic goals described above, here is how I think 2i2c could grow its operations and expand its impact as a next step.
These are initiatives for which we might seek grant funding to experiment with sustainable and scalable models.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Create a software development team&lt;/strong>. Right now our technical efforts are focused on &lt;em>integrating&lt;/em> pre-existing tools and services, and &lt;em>managing&lt;/em> these services in the cloud. However there are many opportunities to &lt;em>create&lt;/em> and &lt;em>enhance&lt;/em> the ecosystem of tools that is out there. Doing dedicated software development is very different from Site Reliability Engineering, and we will need to build our financial and staffing capacity to dedicate team members to this work.&lt;/li>
&lt;li>&lt;strong>Expand the kinds of cloud services we offer&lt;/strong>. Currently we focus our efforts around providing &lt;em>research and analysis platforms&lt;/em> in the cloud. These are often connected to other cloud resources (like datasets) but we do not manage them ourselves. We believe there&amp;rsquo;s an opportunity to strategically grow the services we provide - most notably in the area of cloud data management and migration. However, this is beyond our current capacity and we will need to grow more before moving in this direction.&lt;/li>
&lt;li>&lt;strong>Create an open source support operation&lt;/strong>. There are many things that open source communities need beyond technical improvements. Providing community, operational, and strategic support is another way that 2i2c could use its resources and experience to benefit open source communities that we work with. However, we need to better-understand how to do this in a way that is sustainable for us, and that respects open source communities as independent organizations with their own mission, strategy, and expectations.&lt;/li>
&lt;li>&lt;strong>Create a cloud infrastructure training operation&lt;/strong>. Many communities we work with &lt;em>aspire to run their own cloud infrastructure&lt;/em>. They wish to work with a trusted partner like 2i2c in the short-term, but in the long term they want to build their own capacity in running similar services. 2i2c&amp;rsquo;s cloud services are a unique opportunity for others to get hands-on training to grow their skills. Perhaps there is a way for us to share this experience with members from other communities in a way that they can then bring back with them to other organizations. There will be an inherent tension between this and our sustainability model from ongoing services, but we believe it is an important opportunity to explore since it aligns with our values of community agency and choice.&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Open grant narrative: A Collaborative Interactive Computing Service Model for Global Communities</title><link>https://2i2c.org/blog/czi-global-communities-proposal/</link><pubDate>Sun, 28 Aug 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/czi-global-communities-proposal/</guid><description>&lt;p>We recently submitted a grant to
&lt;a href="https://chanzuckerberg.com/" target="_blank" rel="noopener" >Chan Zuckerberg Initiative&lt;/a> and wish to share some details about it as well as the grant narrative for others to read and re-use.&lt;/p>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://zenodo.org/record/7025288" target="_blank" rel="noopener" class="btn btn-primary px-3 py-3">Go to Zenodo record&lt;/a>
&lt;/li>
&lt;/ul>
&lt;p>Read on for a quick overview of the proposal.&lt;/p>
&lt;h2 id="collaborators">
Collaborators
&lt;a class="header-anchor" href="#collaborators">#&lt;/a>
&lt;/h2>&lt;p>This grant is a collaboration between several leading organizations in open infrastructure, community, and global leadership:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://2i2c.org" target="_blank" rel="noopener" >2i2c&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://carpentries.org/about/" target="_blank" rel="noopener" >The Carpentries&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.cscce.org/" target="_blank" rel="noopener" >Center for Scientific Collaboration and Community Engagement&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://investinopen.org/" target="_blank" rel="noopener" >Invest in Open Infrastructure&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.metadocencia.org/" target="_blank" rel="noopener" >MetaDocencia&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://openlifesci.org/" target="_blank" rel="noopener" >Open Life Science&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="problem-statement">
Problem statement
&lt;a class="header-anchor" href="#problem-statement">#&lt;/a>
&lt;/h2>&lt;p>Cloud infrastructure is a powerful way to broaden access to workflows and infrastructure across the globe.
However, it is also inaccessible to many for a variety of reasons:&lt;/p>
&lt;ul>
&lt;li>There is a large, diverse, and messy ecosystem of open source tools to facilitate cloud infrastructure.&lt;/li>
&lt;li>Most communities don&amp;rsquo;t already have skills in utilizing cloud workflows.&lt;/li>
&lt;li>Running infrastructure in the cloud takes dedicated time and expertise that many communities lack.&lt;/li>
&lt;li>Many communities do not have organized communities of practice around cloud infrastructure.&lt;/li>
&lt;/ul>
&lt;p>These issues are true for most scientific communities, but they are exacerbated in countries that are often marginalized in the global scientific community.&lt;/p>
&lt;h2 id="our-proposed-work">
Our proposed work
&lt;a class="header-anchor" href="#our-proposed-work">#&lt;/a>
&lt;/h2>&lt;p>For this reason, our goal in this grant is to &lt;strong>provide human and technical services to facilitate learning and knowledge transfer of cloud workflows for communities in Latin America and Africa&lt;/strong>.&lt;/p>
&lt;p>It defines four major areas of collaboration:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Cloud infrastructure management&lt;/strong> - to facilitate access to cloud resources via managed cloud services that integrate open source tools.&lt;/li>
&lt;li>&lt;strong>Application guidance and training&lt;/strong> - to provide community leaders with the skills to utilize this infrastructure for their needs. This includes language-localized content and training materials.&lt;/li>
&lt;li>&lt;strong>Training for trainers&lt;/strong> - to provide community leaders with skills to share these workflows with others in their communities.&lt;/li>
&lt;li>&lt;strong>Community leadership and management&lt;/strong> - to provide community leaders with skills to sustain and grow healthy communities of practice.&lt;/li>
&lt;/ul>
&lt;p>If this proposal is funded, over the course of two years the team will provide a combination of the services described above for communities in Latin America and Africa, with the goal of understanding how such services can be most useful for these communities, how we can structure them to provide community representation in the direction of these services, and how we can sustain and scale this model of community-focused services for a global community.&lt;/p>
&lt;p>Importantly, we wish to do this work in a way that centers the communities we work with as co-leaders and collaborators in these services.
We will explore ways to run these services and workshops so that they are transparent, inclusive, and give agency to the communities they support.
Ultimately, we hope that this can be an extensible model for many more communities in the future.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a> for the opportunity to submit this proposal.&lt;/li>
&lt;/ul></description></item><item><title>Reflections on the Jack Eddy Symposium</title><link>https://2i2c.org/blog/eddy-symposium-report/</link><pubDate>Thu, 14 Jul 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/eddy-symposium-report/</guid><description>
&lt;h1 id="reflections-on-the-jack-eddy-symposium">
Reflections on the Jack Eddy Symposium
&lt;a class="header-anchor" href="#reflections-on-the-jack-eddy-symposium">#&lt;/a>
&lt;/h1>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Eddy Symposium Hero Image" srcset="
/blog/eddy-symposium-report/cover-featured_hu65774d245d7022e22422f407a342fc61_85909_9ccc1a7885d2ffa87872e038c5a20b37.webp 400w,
/blog/eddy-symposium-report/cover-featured_hu65774d245d7022e22422f407a342fc61_85909_611be7acd5ceece2ca1898c4ce5b28ee.webp 760w,
/blog/eddy-symposium-report/cover-featured_hu65774d245d7022e22422f407a342fc61_85909_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://2i2c.org/blog/eddy-symposium-report/cover-featured_hu65774d245d7022e22422f407a342fc61_85909_9ccc1a7885d2ffa87872e038c5a20b37.webp"
width="760"
height="338"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>2i2c supported and participated in the
&lt;a href="https://cpaess.ucar.edu/meetings/eddy-symposium-2022" target="_blank" rel="noopener" >3rd Eddy Cross Disciplinary Symposium&lt;/a> held recently in Vail Colorado. The event was hosted by the Cooperative Programs for the Advancement of Earth System Science (
&lt;a href="https://cpaess.ucar.edu/" target="_blank" rel="noopener" >CPAESS&lt;/a>) team at the
&lt;a href="https://www.ucar.edu/" target="_blank" rel="noopener" >University Corporation for Atmospheric Research (UCAR)&lt;/a> with support from NASA.&lt;/p>
&lt;h2 id="context">
Context
&lt;a class="header-anchor" href="#context">#&lt;/a>
&lt;/h2>&lt;p>The Symposium was framed by the interesting and interdisciplinary scientific career of the late
&lt;a href="https://en.wikipedia.org/wiki/John_A._Eddy" target="_blank" rel="noopener" >Jack Eddy&lt;/a>. Eddy&amp;rsquo;s legacy was highlighted and his influence has been extended by dynamic leadership from NASA Program Officer
&lt;a href="https://science.nasa.gov/about-us/organization-and-leadership/lead-program-scientist-for-lws" target="_blank" rel="noopener" >Madhulika Guhathakurta (Lika)&lt;/a>. Lika helped launch and has sustained NASA&amp;rsquo;s
&lt;a href="https://science.nasa.gov/heliophysics/programs/living-with-a-star" target="_blank" rel="noopener" >Living with a Star (LWS)&lt;/a> program over the past two decades. Prior to LWS, NASA had a variety of siloed efforts focused on near-Sun and near-Earth behavior. The LWS program led to an integration of these efforts under &amp;ldquo;system science&amp;rdquo; or &amp;ldquo;systems engineering&amp;rdquo; approaches and an expressed desired to connect LWS research activities with impacts on Earth (society, biology, culture, etc.). The program has expanded to include explorations of similar questions arising around other planets in our solar system and the recently discovered collection of exoplanets. Scientists from diverse disciplines (plasma physics, stellar evolution, atmospheric chemistry, space weather, planetary science,&amp;hellip;) work together on &amp;ldquo;cross disciplinary&amp;rdquo; research that helps us understand our lives near our star.&lt;/p>
&lt;p>The Symposium focused on three disciplinary areas (&lt;strong>Exoplanets&lt;/strong>; &lt;strong>Sun-Climate and Star-Climate interactions&lt;/strong>; &lt;strong>Risk and resilience of space weather&lt;/strong>) unified under the cross-cutting thread of &lt;strong>open science&lt;/strong>. Frequent references were made to the upcoming 2023 Year of Open Science and
&lt;a href="https://science.nasa.gov/open-science/transform-to-open-science" target="_blank" rel="noopener" >NASA&amp;rsquo;s Transform to Open Science (TOPS) mission&lt;/a>. Symposium attendees listened to talks surveying the four areas in the morning and participated in hackathon-style breakout projects during the afternoons. Work on the projects launched at the Eddy Symposium
&lt;a href="https://github.com/jack-eddy-symposium" target="_blank" rel="noopener" >continues&lt;/a>. The space weather group is investigating ways to make the power grid more resilient. The Sun-climate group is exploring plans to establish an institute focused on Sun-climate interactions and improve connections between climate and heliophysics research communities. The exoplanets team is developing tools to programmatically compare Sun-Earth and star-exoplanet interactions.&lt;/p>
&lt;h2 id="2i2cs-role">
2i2c&amp;rsquo;s role
&lt;a class="header-anchor" href="#2i2cs-role">#&lt;/a>
&lt;/h2>&lt;p>2i2c, with input from Symposium CoChair&amp;rsquo;s
&lt;a href="https://staff.ucar.edu/users/marsh" target="_blank" rel="noopener" >Dan Marsh&lt;/a> and
&lt;a href="http://www.ryanmcgranaghan.com/about.html" target="_blank" rel="noopener" >Ryan McGranaghan&lt;/a>, rapidly deployed a cloud-hosted JupyterHub for use during the event. The hub provided a shared space for participants to explore data, run analyses, and collaborate with one another using modern tools including Zarr, Xarray and Dask Gateway. Access to the interactive computing platform was granted to any member of the
&lt;a href="https://github.com/jack-eddy-symposium/" target="_blank" rel="noopener" >Symposium&amp;rsquo;s GitHub organization&lt;/a>. The work to set up that hub, openly chronicled in this GitHub issue (
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1329" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> 2i2c-org/infrastructure#1329&lt;/a> ), included swapping out a Pangeo-style software environment for a heliophysics-specific resource developed by
&lt;a href="http://heliocloud.org/" target="_blank" rel="noopener" >HelioCloud&lt;/a> with special thanks to
&lt;a href="https://www.nasa.gov/offices/oce/bios/mwm/Thomas-Brian-bio.html" target="_blank" rel="noopener" >Brian Thomas&lt;/a>!&lt;/p>
&lt;p>2i2c co-founder Fernando Pérez gave a talk on how he is
&lt;a href="https://docs.google.com/presentation/d/1i99eQqOVCSQyxoyscUo0dl3Ybgdex5qKo_KEO9YGxQg/edit?usp=drivesdk" target="_blank" rel="noopener" >&amp;ldquo;living la vida nube&amp;rdquo;&lt;/a>. Fernando described the ways he, research collaborators, and students are using the Jupyter ecosystem. Diverse and curated tools in Jupyter hubs for the
&lt;a href="https://jupytearth.org/" target="_blank" rel="noopener" >Jupyter Meets the Earth Project&lt;/a> and
&lt;a href="https://data.berkeley.edu/" target="_blank" rel="noopener" >Berkeley&amp;rsquo;s data science programs&lt;/a> were highlighted. The talk showcased how these tools have been integrated to support individuals and communities of practice in data-driven research. In response to requests from the organizers and participants, Fernando gave a demonstration on how to use the hub 2i2c set up for the Symposium and an introduction to version control using &lt;code>git&lt;/code>.&lt;/p>
&lt;p>2i2c co-founder Jim Colliander gave a talk titled
&lt;a href="https://bit.ly/eddy-science-commons" target="_blank" rel="noopener" >Governing the Science Commons&lt;/a>. Three key points from Jim&amp;rsquo;s talk were: the virtue that should guide the improvements to the scientific enterprise is intellectual generosity; implementation of intellectual generosity into science requires commons-based governance; the convergence of open source tools that support data-intensive collaborative research and learning (as showcased by Fernando) and agency interest (
&lt;a href="https://science.nasa.gov/open-science/transform-to-open-science" target="_blank" rel="noopener" >NASA TOPS&lt;/a>,
&lt;a href="https://unesdoc.unesco.org/ark:/48223/pf0000379949/PDF/379949eng.pdf.multi.page=1" target="_blank" rel="noopener" >UNESCO&lt;/a>) in open science is an inflection point for global change. The talk ended with a call to action for the diverse communities represented at the Symposium to improve the ways we do science.&lt;/p>
&lt;h2 id="things-we-learned">
Things we learned
&lt;a class="header-anchor" href="#things-we-learned">#&lt;/a>
&lt;/h2>&lt;p>Our experience with the Symposium taught 2i2c a few things.&lt;/p>
&lt;p>We learned that our engineering team can rapidly deploy interactive computing resources to support a research and education community. Along the way, we confirmed what we&amp;rsquo;ve been learning from Pangeo and the neuroscience communities: flexible methods to customize the software environment are necessary. We confirmed that our developing
&lt;a href="https://docs.2i2c.org/community-lead/about/shared-responsibility" target="_blank" rel="noopener" >shared responsibility model&lt;/a>, enabling domain-specific experts to provide curated toolchains for their communities while leveraging 2i2c&amp;rsquo;s infrastructure expertise, is the right approach.&lt;/p>
&lt;p>We learned that managing access to the hub using members in a GitHub organization works but involves some toil since organizers had to work through the GitHub invitation process for each participant. We are exploring others ways to systematically grant event participants access to a hub.&lt;/p>
&lt;p>The Eddy Symposium experience reminded us that some skill at using &lt;code>git&lt;/code> is vital for collaboration. Fernando&amp;rsquo;s brief introduction to &lt;code>git&lt;/code> provided
&lt;a href="https://jack-eddy-symposium.github.io/intro-git-jupyter/intro-git/git-visuals.html" target="_blank" rel="noopener" >the mental model of working on a directed acyclyic graph&lt;/a>. Roving support from Jim and Fernando during the afternoon hackathon sessions normalized the skill level across the groups but not without a few merge conflicts and frustration. Near the beginning of future workshops, we will follow an improved approach aimed at establishing good &lt;code>git&lt;/code> hygeine and familiarity with the collaboration workflow using a simple pull request.&lt;/p>
&lt;p>We are honored to have had the opportunity to collaborate with the Eddy Symposium team by managing infrastructure and participating in the workshop. We learned a lot about how to support the Helio and adjacent communities, and are proud of the ways in which our infrastructure helped them do their work more openly and effectively. We hope to build on these successes with these and other communities in the future!&lt;/p></description></item><item><title>Tech update: Multiple JupyterHubs, multiple clusters, one repository.</title><link>https://2i2c.org/blog/ci-cd-improvements/</link><pubDate>Tue, 19 Apr 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/ci-cd-improvements/</guid><description>&lt;p>2i2c manages the configuration and deployment of multiple Kubernetes clusters and JupyterHubs from
&lt;a href="https://github.com/2i2c-org/infrastructure" target="_blank" rel="noopener" >a single open infrastructure repository&lt;/a>.
This is a challenging problem, as it requires us to centralize information about a number of &lt;em>independent&lt;/em> cloud services, and deploy them in an efficient and reliable manner.
Our initial attempt at this had a number of inefficiencies, and we recently completed an overhaul of its configuration and deployment infrastructure.&lt;/p>
&lt;p>This post is a short description of what we did and the benefit that it had.
It covers the technical details and provides links to more information about our deployment setup.
We hope that it helps other organizations make similar improvements to their own infrastructure.&lt;/p>
&lt;h2 id="our-problem">
Our problem
&lt;a class="header-anchor" href="#our-problem">#&lt;/a>
&lt;/h2>&lt;p>2i2c&amp;rsquo;s problem is similar to that of many large organizations that have independent sub-communities within them.
We must centralize the operation and configuration of JupyterHubs in order to boost our efficiency in developing and operating them, but must also treat these hubs &lt;em>independently&lt;/em> because their user communities are not necessarily related, and because we want communities to
&lt;a href="https://2i2c.org/right-to-replicate/" >be able to replicate their infrastructure on their own&lt;/a>.&lt;/p>
&lt;p>A year ago, we built the first version of our deployment infrastructure at
&lt;a href="https://github.com/2i2c-org/infrastructure" target="_blank" rel="noopener" >&lt;i class='fa-brands fa-github'>&lt;/i> github.com/2i2c-org/infrastructure&lt;/a>.
Over the last year of operation, we identified a number of major shortcomings:&lt;/p>
&lt;ul>
&lt;li>Within a Kubernetes cluster, we deployed hubs sequentially, not in parallel. This grew out of a common practice of
&lt;a href="https://sre.google/workbook/canarying-releases/" target="_blank" rel="noopener" >Canary deployments&lt;/a> that allowed us to test changes on a &lt;strong>staging hub&lt;/strong> before rolling them out to a &lt;strong>production hub&lt;/strong>.&lt;/li>
&lt;li>We used a single configuration file for all hubs within a cluster, which led to confusion and difficulty in identifying a hub-specific configuration.&lt;/li>
&lt;li>Moreover, any change to a hub within a cluster caused a re-deploy of &lt;em>all hubs on that cluster&lt;/em>. This is because we did not know whether a given change touched cluster-wide configuration or hub-specific configuration.&lt;/li>
&lt;/ul>
&lt;h2 id="our-goal">
Our goal
&lt;a class="header-anchor" href="#our-goal">#&lt;/a>
&lt;/h2>&lt;p>So, we spent several weeks discussing a plan to resolve these major problems - here were our goals:&lt;/p>
&lt;ul>
&lt;li>We should be able to &lt;strong>upgrade a specific hub&lt;/strong> alone, by inspecting which configuration files have been added or modified.&lt;/li>
&lt;li>&lt;strong>Production hubs should be upgraded in parallel&lt;/strong> when they are effectively run independently.&lt;/li>
&lt;li>We should &lt;strong>use staging hubs as &amp;ldquo;canary&amp;rdquo; deployments&lt;/strong> and not continue upgrading production hubs if the staging hub fails.&lt;/li>
&lt;/ul>
&lt;h2 id="an-overview-of-our-changes">
An overview of our changes
&lt;a class="header-anchor" href="#an-overview-of-our-changes">#&lt;/a>
&lt;/h2>&lt;p>To accomplish this, we needed to identify which hub required an upgrade based on file additions/modifications.
This took a lot of discussion and iteration on design, and so we share it below in the hopes that it is helpful to others!&lt;/p>
&lt;h3 id="improvements-to-our-code-and-structure">
Improvements to our code and structure
&lt;a class="header-anchor" href="#improvements-to-our-code-and-structure">#&lt;/a>
&lt;/h3>&lt;p>We made a few major changes to
&lt;a href="https://github.com/2i2c-org/infrastructure" target="_blank" rel="noopener" >the infrastructure repository&lt;/a> to facilitate the deployment logic described above.
Here are the major changes we implemented:&lt;/p>
&lt;ul>
&lt;li>We separated each hub&amp;rsquo;s configuration into its own file, or set of files. For example,
&lt;a href="https://github.com/2i2c-org/infrastructure/blob/master/config/clusters/2i2c/staging.values.yaml" target="_blank" rel="noopener" >here is 2i2c&amp;rsquo;s &lt;code>staging&lt;/code> hub configuration&lt;/a>.&lt;/li>
&lt;li>We created a separate &lt;code>cluster.yaml&lt;/code> file that holds the canonical list of hubs deployed to that cluster and the configuration file(s) associated with each one. For example,
&lt;a href="https://github.com/2i2c-org/infrastructure/blob/master/config/clusters/2i2c/cluster.yaml" target="_blank" rel="noopener" >here is 2i2c&amp;rsquo;s GKE cluster configuration&lt;/a>, which contains a reference to the previously mentioned
&lt;a href="https://github.com/2i2c-org/infrastructure/blob/master/config/clusters/2i2c/cluster.yaml#L14-L26" target="_blank" rel="noopener" >staging hub&lt;/a>.&lt;/li>
&lt;li>We updated
&lt;a href="https://github.com/2i2c-org/infrastructure/tree/master/deployer" target="_blank" rel="noopener" >our deployer module&lt;/a> to do the following things:
&lt;ul>
&lt;li>Inspect the list of files modified in a Pull Request.&lt;/li>
&lt;li>From this list, calculate the name of a hub that required an upgrade, and the name of its respective cluster.&lt;/li>
&lt;li>Trigger a GitHub Actions workflow that deploys changes in parallel for each cluster/hub pair.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>In addition to these structural and code changes, we also developed new GitHub Actions workflows that control the entire process.&lt;/p>
&lt;h3 id="a-github-actions-workflow-for-upgrading-our-jupyterhubs">
A GitHub Actions workflow for upgrading our JupyterHubs
&lt;a class="header-anchor" href="#a-github-actions-workflow-for-upgrading-our-jupyterhubs">#&lt;/a>
&lt;/h3>&lt;p>We defined a new GitHub Actions workflow that carries out the logic described above.
These are all defined in
&lt;a href="https://github.com/2i2c-org/infrastructure/blob/master/.github/workflows/deploy-hubs.yaml" target="_blank" rel="noopener" >this &lt;code>deploy-hubs.yaml&lt;/code> configuration file&lt;/a>.
Here are the major jobs in this workflow, and what each does:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;code>generate-jobs&lt;/code>: Generate a list of clusters/hubs that must be upgraded, given the files that are changed in a Pull Request.&lt;/p>
&lt;ul>
&lt;li>Evaluate an input list of added/modified files in a PR&lt;/li>
&lt;li>Decide if the added/modified files warrant an upgrade of a hub&lt;/li>
&lt;li>Generate a list of hubs and clusters that require upgrades, and some extra details:
&lt;ul>
&lt;li>Does the support chart that is deployed to the cluster also need an upgrade?&lt;/li>
&lt;li>Does a staging hub on this cluster require an upgrade?&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>This produced two outputs to be used in subsequent steps:&lt;/p>
&lt;ul>
&lt;li>A &lt;strong>human-readable table&lt;/strong> including information on &lt;em>why&lt;/em> a given deployment requires an upgrade (using the excellent
&lt;a href="https://github.com/Textualize/rich" target="_blank" rel="noopener" >Rich library&lt;/a>).&lt;/li>
&lt;li>&lt;strong>JSON outputs&lt;/strong> that can be interpreted by GitHub Actions as sets of matrix jobs to run.&lt;/li>
&lt;/ul>
&lt;figure id="figure-our-staging-and-support-hub-job-matrix-tells-github-actions-to-deploy-staging-and-support-upgrades-that-act-as-canaries-and-stop-production-deploys-if-they-fail">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Our staging and support hub job matrix tells GitHub Actions to deploy staging and support upgrades that act as canaries and stop production deploys if they fail." srcset="
/blog/ci-cd-improvements/images/staging-hub-matrix_hu7a1bb3fb06e3f581f944c2d267a10ff9_107479_ca59e5ca8dcd2b1ebeab736126bdfc9f.webp 400w,
/blog/ci-cd-improvements/images/staging-hub-matrix_hu7a1bb3fb06e3f581f944c2d267a10ff9_107479_c650383168feaeb478769bd20033f23c.webp 760w,
/blog/ci-cd-improvements/images/staging-hub-matrix_hu7a1bb3fb06e3f581f944c2d267a10ff9_107479_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/ci-cd-improvements/images/staging-hub-matrix_hu7a1bb3fb06e3f581f944c2d267a10ff9_107479_ca59e5ca8dcd2b1ebeab736126bdfc9f.webp"
width="760"
height="529"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Our staging and support hub job matrix tells GitHub Actions to deploy staging and support upgrades that act as canaries and stop production deploys if they fail.
&lt;/figcaption>&lt;/figure>
&lt;/li>
&lt;li>
&lt;p>&lt;code>upgrade-support-and-staging&lt;/code>: Update the support and staging Helm charts on each cluster. These are &amp;ldquo;shared infrastructure&amp;rdquo; Helm charts that control services that are shared across all hubs.&lt;/p>
&lt;ul>
&lt;li>Accepts the JSON list described above to determine what to do next&lt;/li>
&lt;li>Parallelises over clusters&lt;/li>
&lt;li>Upgrades the support chart of each if required&lt;/li>
&lt;li>Upgrades a staging hub for the cluster if required (for canary deployments, this is always required if at least one production hub is to be upgraded on the cluster)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;code>filter-generate-jobs&lt;/code>: Allows us to treat the support / staging hubs as canary deployments for all the production hubs on a cluster.&lt;/p>
&lt;ul>
&lt;li>If a staging/support hub deploy fails, removes any jobs for the corresponding cluster.&lt;/li>
&lt;li>Allows production deploys to continue on &lt;em>other clusters&lt;/em>.&lt;/li>
&lt;/ul>
&lt;figure id="figure-our-production-hub-job-matrix-tells-github-actions-which-hubs-to-update-with-new-changes-these-are-triggered-if-a-clusters-stagingsupport-job-does-not-fail">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Our production hub job matrix tells GitHub Actions which hubs to update with new changes. These are triggered if a cluster&amp;#39;s staging/support job does not fail." srcset="
/blog/ci-cd-improvements/images/prod-hub-matrix_huad3521b0ae4afb8512dab5e3fdf016b6_36691_1ae3e22a321454a0fe1662b19a894e36.webp 400w,
/blog/ci-cd-improvements/images/prod-hub-matrix_huad3521b0ae4afb8512dab5e3fdf016b6_36691_bdf6ab31265f2e43b125c72339342841.webp 760w,
/blog/ci-cd-improvements/images/prod-hub-matrix_huad3521b0ae4afb8512dab5e3fdf016b6_36691_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/ci-cd-improvements/images/prod-hub-matrix_huad3521b0ae4afb8512dab5e3fdf016b6_36691_1ae3e22a321454a0fe1662b19a894e36.webp"
width="760"
height="515"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Our production hub job matrix tells GitHub Actions which hubs to update with new changes. These are triggered if a cluster&amp;rsquo;s staging/support job does not fail.
&lt;/figcaption>&lt;/figure>
&lt;/li>
&lt;li>
&lt;p>&lt;code>upgrade-prod-hubs&lt;/code>: Deploy updates to each production hub.&lt;/p>
&lt;ul>
&lt;li>Accepts the JSON list described above to determine what to do next&lt;/li>
&lt;li>Parallelises over each production hub that requires an upgrade&lt;/li>
&lt;li>Deploy the relevant changes to that hub&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h2 id="concluding-remarks">
Concluding Remarks
&lt;a class="header-anchor" href="#concluding-remarks">#&lt;/a>
&lt;/h2>&lt;p>We think that this is a nice balance of infrastructure complexity and flexibility.
It allows us to separate the configuration of each hub and cluster, which makes each more maintainable by us, and is more aligned with a community&amp;rsquo;s
&lt;a href="https://2i2c.org/right-to-replicate/" >Right to Replicate&lt;/a> their infrastructure.
It allows us to remove the interdependence of deploy jobs that do not &lt;em>need&lt;/em> to be dependent, which makes our deploys more efficient.
Finally, it allows us to make &lt;em>targeted deploys&lt;/em> more effectively, which reduces the amount of toil and unnecessary waiting associated with each change. (It also
&lt;a href="https://github.blog/2021-04-22-environmental-sustainability-github/" target="_blank" rel="noopener" >reduces our carbon footprint by reducing unnecessary GitHub Action time&lt;/a>).&lt;/p>
&lt;p>We hope that this is a useful resource for others to follow if they also maintain JupyterHubs for multiple communities.
If you have any ideas of how we could further improve this infrastructure, please reach out on GitHub!
If you know of a community that would like 2i2c to
&lt;a href="https://2i2c.org/service/" target="_blank" rel="noopener" >manage a hub for your community&lt;/a>, please
&lt;a href="https://2i2c.org/blog/ci-cd-improvements/mailto:hello@2i2c.org" >send us an email&lt;/a>.&lt;/p>
&lt;p>&lt;em>&lt;strong>Acknowledgements&lt;/strong>: The infrastructure described in this post was developed by
&lt;a href="https://2i2c.org/organization/team.md" >the 2i2c engineering team&lt;/a>, and this post was edited by
&lt;a href="https://2i2c.org/author/chris-holdgraf" >Chris Holdgraf&lt;/a>.&lt;/em>&lt;/p></description></item><item><title>Celebrating our progress in Q1 2022</title><link>https://2i2c.org/blog/q1-update/</link><pubDate>Mon, 04 Apr 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/q1-update/</guid><description>&lt;p>Quarter 1 of 2022 just wrapped up, and the 2i2c team has been busy making improvements across our infrastructure, organization, and operations.
This is a quick post to celebrate the work we&amp;rsquo;ve done over the past three months, and to briefly share what we&amp;rsquo;re working on next.&lt;/p>
&lt;p>These are the main highlights from this quarter - if you&amp;rsquo;d like to check out more of the work that we&amp;rsquo;ve done, see:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://github.com/pulls?q=is%3Apr&amp;#43;merged%3A%3E2022-01-01&amp;#43;org%3A2i2c-org&amp;#43;archived%3Afalse&amp;#43;sort%3Aupdated-desc&amp;#43;" target="_blank" rel="noopener" >All the PRs we&amp;rsquo;ve merged in Q1&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/issues?page=4&amp;amp;q=is%3Aissue&amp;#43;closed%3A%3E2022-01-01&amp;#43;org%3A2i2c-org&amp;#43;sort%3Aupdated-desc" target="_blank" rel="noopener" >All closed issues in Q1&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="infrastructure-improvements">
Infrastructure improvements
&lt;a class="header-anchor" href="#infrastructure-improvements">#&lt;/a>
&lt;/h2>&lt;p>This quarter we did a deep dive into a number of core infrastructure improvements for our
&lt;a href="https://2i2c.org/service/" target="_blank" rel="noopener" >Managed JupyterHubs Service&lt;/a>.
Here are a few highlights:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Infrastructure reliability and efficiency&lt;/strong>. We
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/879" target="_blank" rel="noopener" >improved the resiliency, reliability, and efficiency of our deployment infrastructure&lt;/a>. For example, we refactored our hub configuration so that each community is better-able to track it, we implemented validation steps to ensure that we don&amp;rsquo;t accidentally push incorrect config to the hubs, and we&amp;rsquo;ve significantly improved our CI/CD pipeline to push deployments out to our hubs more efficiently.&lt;/li>
&lt;li>&lt;strong>Automatic deployments to commercial cloud&lt;/strong>. With the ICESat hackweek as a test-case for AWS, we&amp;rsquo;ve finished automating the deployment of clusters and hubs to each major commercial cloud. (there&amp;rsquo;s not a specific issue for this as it has been a multi-month effort over many PRs and issues!)&lt;/li>
&lt;li>&lt;strong>CILogon authentication&lt;/strong>.
&lt;a href="https://cilogon.org/" target="_blank" rel="noopener" >CILogon&lt;/a> is a non-profit organization that provides &amp;ldquo;single-sign on&amp;rdquo; authentication services for the same communities that 2i2c serves. We&amp;rsquo;ve partnered with them to
&lt;a href="https://github.com/2i2c-org/infrastructure/pull/1089" target="_blank" rel="noopener" >prototype using CILogon for 2i2c&amp;rsquo;s hubs&lt;/a>, which should make it much easier for communities to user their own institutional sign-ons.&lt;/li>
&lt;/ul>
&lt;h2 id="communities-weve-served-and-lessons-learned">
Communities we&amp;rsquo;ve served and lessons learned
&lt;a class="header-anchor" href="#communities-weve-served-and-lessons-learned">#&lt;/a>
&lt;/h2>&lt;p>As described in
&lt;a href="https://compass.2i2c.org/organization/strategy" target="_blank" rel="noopener" >our Managed Hub Services strategy&lt;/a>, our goals for this phase of our organization are to balance &lt;em>serving communities of practice&lt;/em> and &lt;em>learning where we can improve our infrastructure and practices&lt;/em>.
With that in mind, here are a few highlights of communities we&amp;rsquo;ve served, and what we&amp;rsquo;ve learned from it:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>We grew a hub for
&lt;a href="https://jupyter.utoronto.ca/" target="_blank" rel="noopener" >the University of Toronto&lt;/a> to around 4000 monthly users&lt;/strong>. This has taught us a lot about where our support and operations can and cannot scale, and where we have gaps in our sustainability / pricing model.&lt;/li>
&lt;li>&lt;strong>We deployed CILogon on a hub for
&lt;a href="https://anu.pilot.2i2c.cloud/" target="_blank" rel="noopener" >a class at Australian National University&lt;/a>&lt;/strong>. This gives us an opportunity to work out any UX issues and improvements to be made before a deeper CILogon integration.&lt;/li>
&lt;li>&lt;strong>We deployed a dedicated database per user for
&lt;a href="https://utexas.pilot.2i2c.cloud/" target="_blank" rel="noopener" >a databases course at UT Austin&lt;/a>&lt;/strong>. This is helping us learn more about how to pair slightly more customized per-user infrastructure with our standard hub setups, as well as how our
&lt;a href="https://2i2c.org/right-to-replicate" target="_blank" rel="noopener" >Right to Replicate model&lt;/a> could be followed for more complex setups like a database.&lt;/li>
&lt;li>&lt;strong>We ran an event hub for
&lt;a href="https://twitter.com/scotty_h_q/status/1508557909751320577" target="_blank" rel="noopener" >the ICESat2 HackWeek&lt;/a> at the University of Washington&lt;/strong>. This helped refine our infrastructure and expertise with AWS, as well as improved our event &amp;ldquo;ready mode&amp;rdquo; practices.&lt;/li>
&lt;li>&lt;strong>We deployed a new hub for
&lt;a href="https://leap-stc.github.io/intro.html" target="_blank" rel="noopener" >the LEAP project&lt;/a>&lt;/strong>. This has given us an opportunity to prototype new processes for pass-through cloud costs to simplify our deployments.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Organizational improvements&lt;/strong>&lt;/p>
&lt;p>Beyond our technical and community impact work, we&amp;rsquo;ve made a lot of significant organizational improvements as well.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>We designed a
&lt;a href="https://2i2c.org/blog/job-product-community-lead/" >new role in Product and Community Management&lt;/a>&lt;/strong>. We&amp;rsquo;re excited for this new hire to spearhead efforts in guiding and developing relationships with the communities we serve, as well as guiding and collaborating with our engineering team in developing our services.&lt;/li>
&lt;li>&lt;strong>We designed
&lt;a href="https://github.com/2i2c-org/team-compass/issues/382" target="_blank" rel="noopener" >a new Project Manager role&lt;/a>&lt;/strong>. Our engineering team had been operating as a largely autonomous and independent group, but we&amp;rsquo;ve realized that we would benefit from someone to help coordinate our actions and plans, especially as we balance more operations/support issues in addition to new development. This new role is an experiment at growing this capacity within our team, in the hopes that we can dedicate a team member to it in the future.&lt;/li>
&lt;/ul>
&lt;h2 id="whats-next">
What&amp;rsquo;s next
&lt;a class="header-anchor" href="#whats-next">#&lt;/a>
&lt;/h2>&lt;p>We are still working out our major priorities for the oncoming quarter, but have a few major projects in the works that we&amp;rsquo;re hopeful to make progress on quickly.
Here are a few major examples:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Improve our process and operations around supporting our users&lt;/strong>. We are
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/1068" target="_blank" rel="noopener" >discussing first- and second-line support processes&lt;/a> to make our team more responsive and effective at resolving incidents.&lt;/li>
&lt;li>&lt;strong>Improve our invoicing and contracting process&lt;/strong>. We are
&lt;a href="https://github.com/2i2c-org/team-compass/issues/355" target="_blank" rel="noopener" >discussing how to reduce toil associated with invoicing&lt;/a> in order to make this practice more reliable and efficient, along with our fiscal sponsor
&lt;a href="https://codeforscience.org" target="_blank" rel="noopener" >Code for Science and Society&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Improving our reporting and monitoring infrastructure&lt;/strong>. We&amp;rsquo;d like to boost our ability to
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/328" target="_blank" rel="noopener" >monitor activity on each of our hubs&lt;/a> in order to identify when something abnormal is happening and get ahead of any potential problems (e.g., to avoid unintentionally large cloud bills). We&amp;rsquo;d also like to improve our usage reporting to more create more accurate cloud bills for hubs running on multi-tenant clusters.&lt;/li>
&lt;/ul>
&lt;p>There is a lot more planned for 2i2c, and if you&amp;rsquo;re curious to see what we&amp;rsquo;re up to, we invite you to
&lt;a href="https://compass.2i2c.org" target="_blank" rel="noopener" >check out our team compass&lt;/a> to learn about our practices, and
&lt;a href="https://github.com/2i2c-org/" target="_blank" rel="noopener" >watch our activity on GitHub&lt;/a> to see our work.&lt;/p>
&lt;p>Many thanks to the amazing 2i2c team, and the multiple open source and scholarly communities that we collaborate with to make all of this possible. In addition, we are grateful to
&lt;a href="https://2i2c.org/organization/funding.md" >our funders&lt;/a> for making this possible. We are looking forward to Q2! 🎉&lt;/p>
&lt;h2 id="acknowledgments">
Acknowledgments
&lt;a class="header-anchor" href="#acknowledgments">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by a grant from
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a> and fees from
&lt;a href="https://2i2c.org/members/" >our Member Communities&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Notes from our drop-in meeting about the Product and Community Lead role</title><link>https://2i2c.org/blog/product-community-lead-drop-in-notes/</link><pubDate>Tue, 22 Mar 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/product-community-lead-drop-in-notes/</guid><description>&lt;p>Yesterday we had a quick &amp;ldquo;drop-in&amp;rdquo; session to take questions about 2i2c&amp;rsquo;s
&lt;a href="https://2i2c.org/blog/job-product-community-lead/" >job posting for a Product and Community Lead&lt;/a>.
We spent the hour discussing a number of questions that others had about the position.
Below is a short overview of the questions and some responses, for those who were not able to attend.
These responses are a bit rough, since they are mostly off-the-cuff based on the questions asked.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Update 2022-03-24&lt;/strong>: We&amp;rsquo;ve added extra questions and answers below from our latest drop-in meeting.&lt;/p>
&lt;/blockquote>
&lt;h2 id="what-does-success-look-like-in-the-short-and-long-term">
What does success look like in the short and long term?
&lt;a class="header-anchor" href="#what-does-success-look-like-in-the-short-and-long-term">#&lt;/a>
&lt;/h2>&lt;p>This is an important question, with a few different kinds of answers.&lt;/p>
&lt;p>As noted, this is the first hire of its kind inside of 2i2c, and it should bring a strategic and organization-building eye to the work that it does.
To some extent, this role will be tasked with coming up with their own answers to these questions.
This person should build a near- and long-term strategy for how Product and Community Engagement should evolve to be most-effective in accomplishing our mission.
This will also mean defining goals and a strategy to meet these goals over time.&lt;/p>
&lt;p>With that in mind, here are a few ideas we have in mind for goals that will drive this role:&lt;/p>
&lt;p>&lt;strong>6 month goals&lt;/strong> for this role might be:&lt;/p>
&lt;ol>
&lt;li>Become familiar with 2i2c&amp;rsquo;s organization, culture, mission, and team.&lt;/li>
&lt;li>Define an early strategy for how you&amp;rsquo;d like to incorporate Product and Community engagement into 2i2c&amp;rsquo;s operations, and set some Objectives or Key Results that we should use to measure success. This should include a plan for the two major objectives of this role: guiding and connecting with the communities we serve, and building design and planning processes that bring this perspective into our engineering and services.&lt;/li>
&lt;li>A few iterations on the execution of this strategy, with some demonstration of impact as well as some documented lessons learned.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>2 year goals&lt;/strong> for this role might be:&lt;/p>
&lt;ol>
&lt;li>An organizational strategy and structure has been created, defining the various roles that make up this division of 2i2c and their functions.&lt;/li>
&lt;li>Clearly defined team processes for major programs efforts that this role oversees, as well as interconnections with other major divisions of 2i2c (e.g. engineering or sales). For example, a framework for training community leaders and mechanisms or platforms for communication and engagement with our communities.&lt;/li>
&lt;li>A team exists that carries out these efforts, led by the Product and Community Lead.&lt;/li>
&lt;li>Clear demonstrated impact in the communities we serve, according to the OKRs and goals that have been set in this division.&lt;/li>
&lt;/ol>
&lt;h2 id="how-does-2i2c-provide-mentorshiponboarding">
How does 2i2c provide mentorship/onboarding?
&lt;a class="header-anchor" href="#how-does-2i2c-provide-mentorshiponboarding">#&lt;/a>
&lt;/h2>&lt;p>You can find
&lt;a href="https://compass.2i2c.org/get-started" target="_blank" rel="noopener" >our onboarding process in our Team Compass&lt;/a>.
This roughly comes down to choosing an &amp;ldquo;Onboarding Champion&amp;rdquo; for the new team member, to help walk them through our team processes and get them access to the right information and accounts.
However, 2i2c is quite young, so has only had a few iterations in onboarding new team members.
We look forward to improving this process further via this new hire.&lt;/p>
&lt;h2 id="what-are-the-largest-challenges-that-someone-might-face-in-their-first-year-in-this-position">
What are the largest challenges that someone might face in their first year in this position?
&lt;a class="header-anchor" href="#what-are-the-largest-challenges-that-someone-might-face-in-their-first-year-in-this-position">#&lt;/a>
&lt;/h2>&lt;p>The largest challenge is largely related to ambiguity and fluidity of this role, due to the fact that 2i2c is small and relatively young.
As noted above, this position will have a great deal of autonomy, and will be expected to show leadership in defining the nature of this work within 2i2c.
This can either be exciting or scary depending on your comfort level with ambiguity!
We recognize that it is an anti-pattern to have roles without clearly-defined measures of success, so we&amp;rsquo;re committed to defining this quickly in partnership with the new hire.
However, we don&amp;rsquo;t want to be overly-prescriptive in this role, because we want it to have space to lead these efforts within 2i2c.&lt;/p>
&lt;h2 id="how-do-you-hope-to-protect-the-business-aspects-of-2i2c-if-all-the-tech-is-open-source">
How do you hope to protect the &amp;ldquo;business&amp;rdquo; aspects of 2i2c, if all the tech is open source?
&lt;a class="header-anchor" href="#how-do-you-hope-to-protect-the-business-aspects-of-2i2c-if-all-the-tech-is-open-source">#&lt;/a>
&lt;/h2>&lt;p>2i2c is to some extent committing to a limiting business model: by respecting the
&lt;a href="https://2i2c.org/right-to-replicate" target="_blank" rel="noopener" >Right to Replicate&lt;/a>, we &lt;em>encourage&lt;/em> other organizations to perform the exact same kinds of services that 2i2c offers.
However, we believe this is in-line with 2i2c&amp;rsquo;s mission, and would consider this to be a measure of impact rather than a sustainability problem.
In short: our goal is not to become a tech giant or start-up unicorn, we want to sustain a team with competitive pay, and we want to scale as there is more opportunity to serve new communities.
We believe that the complexity of integrating tools and managing cloud services means that there will always be enough of an opportunity to bring in ample funding for this model.
We also hope that our mission-driven nature and focus on research and education will bring in new kinds of funding opportunities that can sustain 2i2c and its mission.&lt;/p>
&lt;h2 id="how-would-applying-the-1000-true-fans-approach-work-in-terms-of-advocacy">
How would applying the &amp;ldquo;1000 true fans&amp;rdquo; approach work in terms of advocacy?
&lt;a class="header-anchor" href="#how-would-applying-the-1000-true-fans-approach-work-in-terms-of-advocacy">#&lt;/a>
&lt;/h2>&lt;p>The
&lt;a href="https://kk.org/thetechnium/1000-true-fans/" target="_blank" rel="noopener" >1000 true fans&lt;/a> approach suggests that it is enough to leverage the support of &amp;ldquo;1000 true fans&amp;rdquo; to sustain a product or service.
We hadn&amp;rsquo;t considered 2i2c in this light before, but believe it aligns well with our strategy.
A common pattern 2i2c follows is to build connections with &amp;ldquo;champions&amp;rdquo; in the communities that we wish to serve.
These individuals are passionate about open science, open source, and community-led workflows.
They advocate for 2i2c&amp;rsquo;s services, and also serve as leaders for the kinds of workflows that 2i2c wishes to enable.
We believe that our mission-alignment with research and education, and our focus on empowering community leaders, will position us to build support and dedicated collaborators across these sectors.
We also hope that by centering Jupyter infrastructure in the services we offer, we can benefit from the recognition and demand for this ecosystem via our services.&lt;/p>
&lt;h2 id="what-challenges-have-you-run-into-thus-far">
What challenges have you run into thus far?
&lt;a class="header-anchor" href="#what-challenges-have-you-run-into-thus-far">#&lt;/a>
&lt;/h2>&lt;p>There are many things we could respond with here!
In this meeting, we discussed two major challenges we continue to iterate on:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Walking the line between &amp;ldquo;software as a service&amp;rdquo; and &amp;ldquo;custom infrastructure&amp;rdquo;&lt;/strong>. 2i2c seeks to run infrastructure &lt;em>on behalf of&lt;/em> other communities, but in a scalable and sustainable way.
This means that we must centralize configuration and deployment, but use a standardized stack that benefits from economies of scale.
This is a complex problem, especially at the interface points with university bureacracies.
For example, many universities require a &lt;em>university email&lt;/em> in order to manage cloud infrastructure in their organization - doing this for each of 2i2c&amp;rsquo;s engineers is not a sustainable practice, and we must define creative ways to balance the security concerns of universities with our desire to run &lt;em>their&lt;/em> infrastructure.&lt;/li>
&lt;li>&lt;strong>Building a distributed organization from scratch&lt;/strong>. The other major challenge we&amp;rsquo;ve faced is simply the act of creating an organization from the ground up.
We have worked together for many years in open source communities, but there&amp;rsquo;s a new degree of complexity when you&amp;rsquo;re all working on the &lt;em>same&lt;/em> service and development efforts.
Throw in a largely asynchronous team split across many time zones, and there are a lot of coordination and planning challenges to overcome.
We have tried many things over the past year (see
&lt;a href="https://compass.2i2c.org/practices/" target="_blank" rel="noopener" >our latest team practices in the team compass&lt;/a>, but there is still a lot of improvement to make.&lt;/li>
&lt;/ol>
&lt;h2 id="how-crucial-is-a-deep-seated-knowledge-of-jupyter-for-this-role">
How crucial is a deep-seated knowledge of Jupyter for this role?
&lt;a class="header-anchor" href="#how-crucial-is-a-deep-seated-knowledge-of-jupyter-for-this-role">#&lt;/a>
&lt;/h2>&lt;p>While it&amp;rsquo;s not strictly required for somebody to have a knowledge of Jupyter, we think it will be an important part of this role (at least from a user&amp;rsquo;s perspective).
This position is not an engineer, and won&amp;rsquo;t be expected to understand the inner-workings of Jupyter&amp;rsquo;s infrastructure.
However, it will be crucial that this role understand what is possible with JupyterHub, Notebooks, Jupyter Book, etc, and develop and teach best-practices in applying these tools for research and education.
They&amp;rsquo;ll need to have a deep &lt;em>intuition&lt;/em> for how to use Jupyter tools, how they should be improved, and how they can be integrated together for new services (along with other tools in the open source community).
More important than anything is a deep interest in this ecosystem, and a desire to learn, but having prior experience with the Jupyter stack and similar workflows will be a big benefit.&lt;/p>
&lt;h2 id="what-level-of-technical-expertise-is-needed-for-this-position">
What level of technical expertise is needed for this position?
&lt;a class="header-anchor" href="#what-level-of-technical-expertise-is-needed-for-this-position">#&lt;/a>
&lt;/h2>&lt;p>Ideally, they should have the expertise of a &amp;ldquo;power user&amp;rdquo; of the infrastructure and usecases that we work with.
We don&amp;rsquo;t expect this role to have software development or cloud infrastructure engineering expertise, but they should understand what it is like to &lt;strong>use&lt;/strong> these tools from a user&amp;rsquo;s perspective, and have an intuition about how to improve the workflows.
They should be able to communicate with and collaborate with engineers effectively, so understanding development workflows will be helpful, but they do not need core expertise in software development.&lt;/p>
&lt;h2 id="is-it-kind-of-like-a-scientific--technical-writer">
Is it kind of like a scientific / technical writer?
&lt;a class="header-anchor" href="#is-it-kind-of-like-a-scientific--technical-writer">#&lt;/a>
&lt;/h2>&lt;p>The skills of a scientific or technical writer would certainly be relevant for this position.
For example, somebody that enjoyed technical documentation or scientific communication likely has one relevant skillset for this role.
However, the role will do much more than &lt;em>just&lt;/em> technical writing - they will also create and execute on organizational strategy, collaborate with our team around designing and planning our work, etc.&lt;/p>
&lt;h2 id="is-scientific-knowledge-in-a-specific-domain-important">
Is scientific knowledge in a specific domain important?
&lt;a class="header-anchor" href="#is-scientific-knowledge-in-a-specific-domain-important">#&lt;/a>
&lt;/h2>&lt;p>We don&amp;rsquo;t expect this person to have deep knowledge in any particular scientific field, though experience with scientific and educational workflows in general will be very beneficial.
2i2c&amp;rsquo;s goal is to build expertise in the aspects of interactive computing workflows that overlap between many research / educational communities.
We hope to work with leaders from these communities to leverage their domain expertise, and to empower them to lead others.
Similar to having technical expertise, the important thing is having an intuition for what it&amp;rsquo;s like to use the infrastructure, what &lt;em>kinds of problems&lt;/em> our target communities are trying to solve, and how to learn more about their perspectives.&lt;/p>
&lt;h2 id="does-the-role-involve-writing-grants-for-the-sustainability-of-the-project">
Does the role involve writing grants for the sustainability of the project?
&lt;a class="header-anchor" href="#does-the-role-involve-writing-grants-for-the-sustainability-of-the-project">#&lt;/a>
&lt;/h2>&lt;p>This role isn&amp;rsquo;t tasked specifically with identifying and writing grants, though it is likely that they will collaborate with others at 2i2c in crafting grant language or pursuing similar opportunities.
2i2c is a small organization and so we all tend to wear many hats, though we try to keep each person&amp;rsquo;s efforts focused on their core responsibilities.
In this case, those responsibilities are community guidance and engagement, as well as service / product design in collaboration with our team.&lt;/p>
&lt;h2 id="what-kinds-of-communications-would-this-role-oversee">
What kinds of communications would this role oversee?
&lt;a class="header-anchor" href="#what-kinds-of-communications-would-this-role-oversee">#&lt;/a>
&lt;/h2>&lt;p>This is hard to know right now and may evolve over time, but we expect this role will primarily communicate with pre-existing communities that we serve.
They will also foster communication between leaders within these communities.
They may interface with communities that 2i2c seeks to serve in the future (for example, in collaboration with sales and partnerships), but their focus will be on cultivating and guiding the communities we already work with.&lt;/p>
&lt;h2 id="term-for-this-position">
Term for this position
&lt;a class="header-anchor" href="#term-for-this-position">#&lt;/a>
&lt;/h2>&lt;p>We hire all team members on one-year contracts with an annual review and the expectation to renew the contract for another year (unless we explicitly say otherwise).&lt;/p>
&lt;h2 id="where-are-the-communities-you-work-with">
Where are the communities you work with?
&lt;a class="header-anchor" href="#where-are-the-communities-you-work-with">#&lt;/a>
&lt;/h2>&lt;p>Here are a few characteristics of the communities we &lt;em>currently&lt;/em> work with, though we aspire to broaden this group significantly (for example, we wish to expand our focus outside of North American and Europe):&lt;/p>
&lt;ul>
&lt;li>They tend to be focused in North America and in Europe (this is likely due to our pre-existing connections)&lt;/li>
&lt;li>They cover a broad range of use-cases, from small- and large-scale education in single institutions, to small- and large-scale research communities that are distributed across the globe.&lt;/li>
&lt;li>A common pattern is to work with &amp;ldquo;community champions&amp;rdquo; that are interested in our technology and serve as leaders to bring these workflows to their respective communities. We seek to build more connections with people like this, and cultivate our relationship with them.&lt;/li>
&lt;/ul>
&lt;p>Aspirationally, we hope to grow our reach to more communities outside of these countries, in order to achieve our mission of reaching a global audience.
Doing so will require more sophistication in our coordination and pricing, in order to match our services and support model with communities outside of North America and Europe.&lt;/p>
&lt;h2 id="2i2c-is-young-and-without-much-structure-how-do-you-plan-to-add-more-structure-over-time-what-support-will-this-role-have">
2i2c is young and without much structure. How do you plan to add more structure over time? What support will this role have?
&lt;a class="header-anchor" href="#2i2c-is-young-and-without-much-structure-how-do-you-plan-to-add-more-structure-over-time-what-support-will-this-role-have">#&lt;/a>
&lt;/h2>&lt;p>This is the first role of its kind, and so you&amp;rsquo;ll need to be comfortable with a relatively fluid environment.
We all believe strongly in building good organizational support structures, but we are a young organization that is still developing this capacity internally.
Your immediate primary support system will be the other strategic leadership of 2i2c - the Executive Director, Steering Council members (on an ad-hoc basis), and other team members.
Over time, we look forward to building more formal support networks between divisions of 2i2c and our team members.&lt;/p>
&lt;h2 id="does-this-person-need-to-be-on-an-americaeurope-time-zone">
Does this person need to be on an America/Europe time zone?
&lt;a class="header-anchor" href="#does-this-person-need-to-be-on-an-americaeurope-time-zone">#&lt;/a>
&lt;/h2>&lt;p>The team is currently distributed between US/Pacific and Eastern European time zones, and this also matches the majority of communities we currently work with, so it will be important for this person to have several hours overlap with at least one of those two (the more the better).
In the short run, it is likely that a person within these time zones will have the least barriers to team and community collaboration.
However, we do not have any strict rules about this.&lt;/p>
&lt;p>In the longer term, we are committed to building distributed team practices that do not cause team members to pay large penalties for being in a particular time zone, and we look forward to finding creative solutions to this challenge.&lt;/p>
&lt;h2 id="how-are-you-going-to-proceed-now-with-the-applications-youve-received">
How are you going to proceed now with the applications you’ve received?
&lt;a class="header-anchor" href="#how-are-you-going-to-proceed-now-with-the-applications-youve-received">#&lt;/a>
&lt;/h2>&lt;p>We will soon begin reviewing applications on a rolling basis, and will aim for a multi-step interview process that is respectful of the time of each applicant.
More details to come about this, and we&amp;rsquo;ll start sending out communications about applications soon.&lt;/p></description></item><item><title>Product and Community Lead</title><link>https://2i2c.org/jobs/2022/product-community-lead/</link><pubDate>Mon, 28 Feb 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/jobs/2022/product-community-lead/</guid><description>&lt;p>We are looking for a Product and Community Lead to ensure that the communities that 2i2c serves are empowered to have the most impact with our infrastructure.&lt;/p>
&lt;!-- Defined in layouts/shortcodes/job_details.html -->
&lt;div class="job-info">
&lt;p>❌❌❌&lt;br>
This posting is closed to new applications.&lt;br>
See &lt;a href="https://2i2c.org/jobs">the jobs page&lt;/a> for our open positions.&lt;br>
❌❌❌&lt;/p>
&lt;p>&lt;i class="fa fa-info-circle">&lt;/i> &lt;strong>About the position&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Salary&lt;/strong>: $120,000 - $130,000&lt;/li>
&lt;li>&lt;strong>Location&lt;/strong>: anywhere (prefer a time zone between US/Pacific and Central European)&lt;/li>
&lt;li>&lt;strong>Deadline&lt;/strong>: We will begin reviewing applications around &lt;strong>March 21st&lt;/strong>, and will accept them on a rolling basis until the position is filled.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Major duties&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Guide and learn from our user communities.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Guide our team to build services and infrastructure for these communities&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Lead strategic efforts to grow this work within 2i2c.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>For more general information about 2i2c, see the links below:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://compass.2i2c.org/" target="_blank" rel="noopener" >Our Team Compass&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/code-of-conduct/index.html" target="_blank" rel="noopener" >Our Code of Conduct&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/organization/mission.html" target="_blank" rel="noopener" >Our Mission and Values&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/#what-its-like-to-work-at-2i2c" target="_blank" rel="noopener" >What it&amp;rsquo;s like to work at 2i2c&lt;/a>&lt;/li>
&lt;/ul>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://airtable.com/shrbSTcFNAhKqyy6d?prefill_Applying%20for=Product%20and%20Community%20Lead" class="btn btn-primary px-3 py-3">Click here to Apply&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 id="position-summary">
Position summary
&lt;a class="header-anchor" href="#position-summary">#&lt;/a>
&lt;/h2>&lt;p>This role will guide and empower the communities that we serve, learn from them, and bring their perspective to guide our service and product development. It is similar to a mixture of product management and community and developer advocacy in a tech firm, but adjusted for research, education, and open source contexts. It is also similar to a
&lt;a href="https://the-turing-way.netlify.app/collaboration/research-infrastructure-roles/ram.html" target="_blank" rel="noopener" >&lt;strong>Research Applications Manager&lt;/strong>&lt;/a>, but with a focus on using and developing infrastructure.&lt;/p>
&lt;p>The skills required are a combination of communication, teaching, learning, service design and delivery, and technical acumen. The person that fills this role should feel comfortable learning and sharing ideas, empowering and guiding others, and communicating clearly and collaboratively with a variety of stakeholders including end-users and engineers.&lt;/p>
&lt;p>This is a leadership role for a strategy-minded practitioner. 2i2c is a young organization, and this role will have a large degree of autonomy and flexibility. We have defined the starting point, but we seek someone who can bring a strategic eye to this position. Over time we hope that the role will grow to define and lead this style of work within 2i2c more broadly.&lt;/p>
&lt;h2 id="what-youll-do">
What you’ll do
&lt;a class="header-anchor" href="#what-youll-do">#&lt;/a>
&lt;/h2>&lt;p>This role is a combination of connecting, guiding, leading, learning, communicating, and empowering stakeholders in the communities we serve, as well as the 2i2c engineering team. Here are some key focus areas with core responsibilities under each:&lt;/p>
&lt;h3 id="guiding-and-learning-from-communities-we-serve">
Guiding and learning from communities we serve
&lt;a class="header-anchor" href="#guiding-and-learning-from-communities-we-serve">#&lt;/a>
&lt;/h3>&lt;p>Our users are often not &amp;ldquo;power-users&amp;rdquo; with Jupyter, open source workflows, or cloud-native workflows. This role should work with users of these communities to guide them in using our infrastructure for maximal impact. Below are a few example responsibilities:&lt;/p>
&lt;p>&lt;strong>Understand the goals and needs of the communities we serve&lt;/strong>, as well as the major pain points and problems that they have. This understanding may not be directly communicated and will be gained through active observation. For example:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Create and engage in spaces for sharing information with users.&lt;/strong> For example, online forums and live community discussions.&lt;/li>
&lt;li>&lt;strong>Engage in community-specific spaces.&lt;/strong> This role may monitor and participate in community spaces in either research or education (e.g.,
&lt;a href="https://discourse.pangeo.io/" target="_blank" rel="noopener" >the Pangeo forum&lt;/a>,
&lt;a href="https://discourse.jupyter.org" target="_blank" rel="noopener" >the Jupyter forum&lt;/a>, or forums for education communities) to track relevant conversation and provide guidance as-needed.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Guide communities and their leaders for the use-cases that 2i2c wishes to enable&lt;/strong>, and how our infrastructure (Jupyter, JupyterHub, open source tools, etc) can be used to have the most impact. For example:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Develop user-facing materials&lt;/strong> (documentation, workshops, talks, etc) that demonstrate the basic use-cases that we support, and the best ways that the infrastructure can be used to accomplish community goals. For example “Teaching with Jupyter” or “An Introduction to Scalable Computing with Dask.”&lt;/li>
&lt;li>&lt;strong>Provide one-on-one or group guidance to our user communities&lt;/strong> (particularly leaders in those communities) with the goal of transferring knowledge that they can then share within their peers.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Foster deeper external relationships and engagements&lt;/strong> with key communities of practice and partners that are important for 2i2c’s strategy, such as the
&lt;a href="https://pangeo.io" target="_blank" rel="noopener" >Pangeo Project&lt;/a> (which is a key stakeholder for this role).&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Engage with potential communities and stakeholders&lt;/strong>, with a focus on demonstrating the use-cases we hope to support and generating new service contracts with these communities.&lt;/li>
&lt;li>&lt;strong>Communicate externally to demonstrate impact.&lt;/strong> For example, by participating in meetings, conferences, and other events where we have an opportunity to highlight the work that 2i2c does.&lt;/li>
&lt;li>&lt;strong>Interact extensively with open source communities&lt;/strong> that underlie our infrastructure, potentially serving in leadership roles and doing significant work to support these communities. There will be a particular focus on the Jupyter and PyData ecosystems.&lt;/li>
&lt;/ul>
&lt;h3 id="guide-product-and-service-design-and-implementation">
Guide product and service design and implementation
&lt;a class="header-anchor" href="#guide-product-and-service-design-and-implementation">#&lt;/a>
&lt;/h3>&lt;p>This role should understand the perspectives of our users and the use-cases we wish to enable, and bring this perspective to guide the evolution of our services and infrastructure. Below are a few example responsibilities:&lt;/p>
&lt;p>&lt;strong>Represent user communities and communicate their needs&lt;/strong> to the engineering team, leadership team, and other stakeholders. For example:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Discuss and shape ideas for development&lt;/strong> in collaboration with the engineering and sustainability teams within 2i2c. This may entail writing design documents and participating in GitHub issues and Pull Requests.&lt;/li>
&lt;li>&lt;strong>Discuss and shape how to evolve our services.&lt;/strong> Beyond focused development, this role should also help shape our strategic plan for evolving our service offerings, or designing services for new use-cases.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Coordinate with and guide our team in implementation&lt;/strong> as we carry out development and service design. For example:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Participate in team planning meetings and practices.&lt;/strong> For example, prioritization and planning in GitHub Issues, or in synchronous team meetings.&lt;/li>
&lt;li>&lt;strong>Collaborate with engineers throughout the implementation of enhancements to our infrastructure&lt;/strong>. For example, providing ongoing check-ins, guidance, and feedback via GitHub issues.&lt;/li>
&lt;/ul>
&lt;h3 id="strategic-leadership">
Strategic leadership
&lt;a class="header-anchor" href="#strategic-leadership">#&lt;/a>
&lt;/h3>&lt;p>This is the first position of its kind within 2i2c, and it will have freedom to shape its strategy and role with the organization. It should oversee the evolution and growth of this &lt;em>kind&lt;/em> of work within 2i2c, and develop organizational strategy for how to maximize our impact. Below are a few ways that this might occur (both independently and in partnership with others at 2i2c):&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Develop a product and service culture&lt;/strong> that balances intuition, community research, and data to create delightful experiences and maximize our impact.&lt;/li>
&lt;li>&lt;strong>Define key goals and evaluation criteria for the success of our communities&lt;/strong>, and work with others at 2i2c to measure and refine these goals, communicate our impact internally, and use this experience to refine our team processes and strategy.&lt;/li>
&lt;li>&lt;strong>Develop an organizational strategy&lt;/strong> for how 2i2c should grow its service and community engagement operations over time, including making new hires, defining new roles, and defining interconnections between these roles and the broader 2i2c team.&lt;/li>
&lt;li>&lt;strong>Develop a communications plan&lt;/strong> that communicates 2i2c’c impact and positions 2i2c as a leading advocate for community-owned interactive computing infrastructure.&lt;/li>
&lt;li>&lt;strong>Collaborate around sustainability and stakeholder engagement&lt;/strong>. 2i2c aims to sustain itself through a combination of paid services, grants, and stakeholder partnerships. This role will collaborate with others at 2i2c in defining and carrying out these efforts.&lt;/li>
&lt;/ul>
&lt;h2 id="relevant-skills--career-goals">
Relevant Skills &amp;amp; Career Goals
&lt;a class="header-anchor" href="#relevant-skills--career-goals">#&lt;/a>
&lt;/h2>&lt;p>Below are several skills that will make somebody well-suited for this role. There is significant scope to develop new skills and grow in the role, and some flexibility in emphasizing different aspects of the role based on the applicant’s skill sets and interests.&lt;/p>
&lt;ul>
&lt;li>Experience with &lt;strong>community management and engagement&lt;/strong>, with a focus on teaching and sharing knowledge with others.&lt;/li>
&lt;li>Experience with &lt;strong>product management and guidance&lt;/strong>, with a focus on collaboration with engineering teams at both a design and an implementation level.&lt;/li>
&lt;li>Experience with &lt;strong>technical communication and documentation skills&lt;/strong>.&lt;/li>
&lt;li>Experience at strategic development and building organizations or teams (particularly distributed or technology-focused ones).&lt;/li>
&lt;li>Experience with &lt;strong>data science workflows&lt;/strong> in research, education, and scholarship, with a focus on open workflows and
&lt;a href="https://www.go-fair.org/fair-principles/" target="_blank" rel="noopener" >FAIR principles&lt;/a>.&lt;/li>
&lt;li>Experience &lt;strong>using an open source language&lt;/strong> in a research/education setting.&lt;/li>
&lt;li>An interest in learning about &lt;strong>workflows with the open source language Python&lt;/strong>, and open source workflows around it for research and education.&lt;/li>
&lt;li>Experience or strong interest in &lt;strong>cloud infrastructure and data workflows&lt;/strong> for research or education, and how this can lead to more collaboration, openness, and productivity (for example, via managed services and
&lt;a href="https://eartharxiv.org/repository/view/2726/" target="_blank" rel="noopener" >Analysis Ready, Cloud Optimized datasets&lt;/a>).&lt;/li>
&lt;li>Experience with &lt;strong>distributed and complex open source communities&lt;/strong> and ability to communicate and collaborate effectively with these communities.&lt;/li>
&lt;/ul>
&lt;h2 id="a-note-on-scope-and-expectations">
A note on scope and expectations
&lt;a class="header-anchor" href="#a-note-on-scope-and-expectations">#&lt;/a>
&lt;/h2>&lt;p>We know that this role is very broad in scope, and that there is a lot of room for interpretation of the specific responsibilities and duties. This is somewhat intentional, and somewhat unavoidable, given that this is the first role of its kind within 2i2c. We will do everything we can to set these expectations intentionally, and to refine them as we learn more, in order to reduce this ambiguity and ensure that this role is sustainable.&lt;/p></description></item><item><title>New job posting: Product and Community Lead.</title><link>https://2i2c.org/blog/job-product-community-lead/</link><pubDate>Tue, 22 Feb 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/job-product-community-lead/</guid><description>&lt;p>The 2i2c team is looking to hire a new team member! We are seeking a product and community lead with the following two goals:&lt;/p>
&lt;ul>
&lt;li>Empower the communities we serve to have impact with our infrastructure.&lt;/li>
&lt;li>Guide our development and service design to reflect the needs of our users.&lt;/li>
&lt;/ul>
&lt;p>This role will work alongside our engineering team as a partner, and will serve as a high-bandwidth interface to the communities that we work with.&lt;/p>
&lt;p>You can find a link to the full job posting below, the rest of this post is a short rationale for this role, and how we hope it will fit within 2i2c&amp;rsquo;s team and strategy.&lt;/p>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://2i2c.org/jobs/2022/product-community-lead/" target="_blank" rel="noopener" class="btn btn-primary px-3 py-3">Learn more and apply&lt;/a>
&lt;/li>
&lt;/ul>
&lt;h2 id="why-a-new-role">
Why a new role?
&lt;a class="header-anchor" href="#why-a-new-role">#&lt;/a>
&lt;/h2>&lt;p>When 2i2c began a year ago, we hired a team of engineers that had experience in cloud infrastructure, Jupyter, and open source ecosystems. In that time, we&amp;rsquo;ve built out the infrastructure foundation for scalable interactive computing environments that are customizable for the community, and respects their
&lt;a href="https://2i2c.org/content/right-to-replicate/" >Right to Replicate&lt;/a>.&lt;/p>
&lt;p>However, solely providing infrastructure is not enough. Working with the modern open source stack, using the cloud to its advantage, and bringing these tools into specific domains requires a lot of extra experience and expertise. We believe that 2i2c is in a good position to &lt;strong>provide guidance and support to leaders in the communities that we serve&lt;/strong>, allowing them to get up-to-speed with the infrastructure more effectively so that they can have an impact.&lt;/p>
&lt;p>Moreover, we&amp;rsquo;ve also learned that it&amp;rsquo;s crucial to &lt;strong>develop infrastructure in collaboration with the communities that we&amp;rsquo;re serving&lt;/strong>. A team of engineers tends to focus on code and infrastructure, and having a role that focuses on connecting with communities will give them an excellent perspective on what those communities need.&lt;/p>
&lt;p>We hope that this role will combine these two aspects to create a culture of learning, sharing, and guiding between 2i2c&amp;rsquo;s team and the communities that we work with.&lt;/p>
&lt;h2 id="what-are-similar-roles">
What are similar roles?
&lt;a class="header-anchor" href="#what-are-similar-roles">#&lt;/a>
&lt;/h2>&lt;p>We tried to find similar roles in the private and non-profit sector, but couldn&amp;rsquo;t find anything that was a perfect fit. However, there were a few close matches.&lt;/p>
&lt;p>This role is kind-of like a &lt;strong>product manager&lt;/strong> - their job is to understand the communities that we work with, and to use this to help us make decisions about what to build, how to present it, and how to engage with stakeholders. They will need to help us prioritize the work that is most impactful for our mission, and help us navigate trade-offs in the evolution of our services.&lt;/p>
&lt;p>This role is also kind-of like a &lt;strong>customer success manager&lt;/strong> or a &lt;strong>developer advocate&lt;/strong> - they will guide and teach those in the communities we serve - particularly community leaders that go on to teach others - how to use our infrastructure most-effectively.&lt;/p>
&lt;p>In fact, the closest role we could find is a relatively new one: the
&lt;a href="https://the-turing-way.netlify.app/collaboration/research-infrastructure-roles/ram.html" target="_blank" rel="noopener" >&lt;strong>Research Applications Manager&lt;/strong>&lt;/a>. This is a role that has been pioneered by the Turing Institute, and is similarly described as a connector that brings together many perspectives and encourages a participatory, team-based approach to research.&lt;/p>
&lt;p>However, the reality is that the person in this role will ultimately get to shape the nature of their work within 2i2c. As a young organization, there is a lot of flexibility for creativity and experimentation in bringing new skillsets into our organization. We hope that the person who fills this role will be excited about growing a culture of team-based approaches to our engineering and collaborations, and to share this culture with the communities that we serve.&lt;/p>
&lt;h2 id="whats-next">
What&amp;rsquo;s next?
&lt;a class="header-anchor" href="#whats-next">#&lt;/a>
&lt;/h2>&lt;p>Effective today we are opening up applications for this position, and will begin reviewing them in 2 weeks on a rolling basis until the position is filled. For a more formal job posting, and instructions to apply, click the link below!&lt;/p>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://2i2c.org/jobs/2022/product-community-lead/" target="_blank" rel="noopener" class="btn btn-primary px-3 py-3">Learn more and apply&lt;/a>
&lt;/li>
&lt;/ul></description></item><item><title>2i2c’s first year, part 1: exploring Jupyter services.</title><link>https://2i2c.org/blog/2021-review-services/</link><pubDate>Tue, 25 Jan 2022 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/2021-review-services/</guid><description>&lt;p>Now that 2021 has come to an end, this marks the end of 2i2c’s first year of operations. In this year we have grown, experimented, and accomplished a lot - we have also faced challenges and learned as a team. Our primary goal in 2021 was to build a strong foundation for 2i2c.&lt;/p>
&lt;p>To reflect on our work thus far, we&amp;rsquo;re writing three blog posts that describe progress in major areas of work towards this foundation for 2i2c.
These three areas are:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Creating services for use-cases&lt;/strong> - these are our first managed infrastructure offerings for communities in research and education.&lt;/li>
&lt;li>&lt;strong>Developing cloud infrastructure and tools&lt;/strong> - this is the technical backbone that makes these services possible, built entirely on open source tools.&lt;/li>
&lt;li>&lt;strong>Building an organizational foundation&lt;/strong> - this is the creation of our team structures, processes, and culture that help us carry out our mission.&lt;/li>
&lt;/ul>
&lt;p>This first post will focus on &lt;strong>services that we&amp;rsquo;ve created in our first year&lt;/strong>.&lt;/p>
&lt;p>Ultimately, 2i2c&amp;rsquo;s mission is to facilitate use-cases in research and education via open source development and services. Throughout 2021 we ran several pilots to learn more about the needs of communities in research and education, and how we could build sustainable services that meet these needs. Here are some highlights for each major use-case we have targeted thus far:&lt;/p>
&lt;h2 id="educational-community-hubs">
Educational community hubs
&lt;a class="header-anchor" href="#educational-community-hubs">#&lt;/a>
&lt;/h2>&lt;p>A primary use-case that 2i2c seeks to enable is &lt;strong>collaborative, distributed educational spaces for learning with data&lt;/strong>. In 2021 we ran several pilots with educational communities:&lt;/p>
&lt;p>&lt;strong>A university-wide hub for the University of Toronto.&lt;/strong> This hub is used in a variety of classes throughout the university, and is made freely available to anyone with a UofT account. We hope to repeat this model for other university-wide communities, and have learned a lot about the challenges of working with particularly large educational communities.&lt;/p>
&lt;p>&lt;strong>Several hubs for community colleges across California.&lt;/strong> In partnership with UC Berkeley and CloudBank, we&amp;rsquo;ve run several hubs for nearly a dozen small community colleges teaching the
&lt;a href="http://data8.org" target="_blank" rel="noopener" >Data 8 curriculum&lt;/a> for their students. These hubs are lightweight and offer standardized environments for their students to use, in order to lower the cost of deploying and maintaining the hubs over time.&lt;/p>
&lt;h3 id="what-we-learned">
What we learned
&lt;a class="header-anchor" href="#what-we-learned">#&lt;/a>
&lt;/h3>&lt;p>The organizational context around educational use-cases is different from research communities. Compared with research groups, educucational groups have more variance in their size (classes as small as 10 people and as large as 500) and think about cost &lt;strong>by the student&lt;/strong>, not as a lump sum. This means that our initial hub-based pricing model may not map cleanly onto educational contexts, and we need to improve the match of scalability and price to these communities.&lt;/p>
&lt;p>Moreover, we&amp;rsquo;ve learned that for these communities, navigating all of the open source tools that are available for pedagogy is confusing! Everybody wants auto-grading but it&amp;rsquo;s unclear what is the &amp;ldquo;right tool for the job&amp;rdquo;. Tools like
&lt;a href="https://jupyterhub.github.io/nbgitpuller/" target="_blank" rel="noopener" >nbgitpuller&lt;/a> have heavy use at &amp;ldquo;power universities&amp;rdquo; like UC Berkeley, but many others don&amp;rsquo;t know that it exists! We will need to invest more time into building guides and documentation that help others leverage these tools.&lt;/p>
&lt;h2 id="research-in-the-cloud">
Research in the cloud
&lt;a class="header-anchor" href="#research-in-the-cloud">#&lt;/a>
&lt;/h2>&lt;p>In addition to educational use-cases, we ran several pilots for research communities in order to leverage cloud infrastructure for scaling their work or collaborating more effectively.&lt;/p>
&lt;p>&lt;strong>We migrated Pangeo’s cloud infrastructure to be run via 2i2c.&lt;/strong> The
&lt;a href="https://pangeo.io" target="_blank" rel="noopener" >Pangeo Community&lt;/a> had been operating and developing their own JupyterHub for several years, but were looking for another organization to provide more reliable/sustained operations and support for their Pangeo Cloud Service. This year we migrated the service
&lt;a href="https://2i2c.org/posts/2021/pangeo-goes-live/" >to run off of 2i2c’s deployment infrastructure&lt;/a>.&lt;/p>
&lt;p>&lt;strong>A scalable cloud hub for a SWOT satellite team&lt;/strong>. The
&lt;a href="https://meom-group.github.io/projects/swot-st/" target="_blank" rel="noopener" >MEOM research group at Grenoble&lt;/a> is doing work with the
&lt;a href="https://swot.jpl.nasa.gov/" target="_blank" rel="noopener" >NASA SWOT satellite project&lt;/a>. However, the datasets generated from this project are huge, and only storable via the cloud. We&amp;rsquo;ve set up a JupyterHub to provide cloud-based access to this data, running a Pangeo-like environment.&lt;/p>
&lt;h3 id="what-we-learned-1">
What we learned
&lt;a class="header-anchor" href="#what-we-learned-1">#&lt;/a>
&lt;/h3>&lt;p>Research communities tend to have more usecase-specific needs than educational ones. While introductory courses in data science tend to be similar across institutions, research needs are much more unique to the problem and team at hand. Moreover, they tend to want infrastructure that runs via institutional cloud accounts. This is possible due to the flexible nature of Jupyter and JupyterHub, but brings extra challenges in bureacracy and access permissions, given that 2i2c engineers usually are not members of these organizations already.&lt;/p>
&lt;p>Additionally, many research use-cases are based around the &lt;strong>location of the data&lt;/strong>. This is because data is the hardest thing to move from cloud to cloud. For this reason, it&amp;rsquo;s important to &lt;strong>bring interactive sessions to the data&lt;/strong>. Jupyter&amp;rsquo;s ecosystem makes this possible, but we&amp;rsquo;d like to do more to make this easier. For example, users should be able to launch interactive sessions across many clusters or datacenters, regardless of their hub&amp;rsquo;s location. They should also have more customized control over their environments.&lt;/p>
&lt;h2 id="distributed-events-and-hackweeks">
Distributed events and hackweeks
&lt;a class="header-anchor" href="#distributed-events-and-hackweeks">#&lt;/a>
&lt;/h2>&lt;p>Finally, we had a special use-case that is a hybrid of the previous two examples. Events and hackweeks are &lt;em>time-bounded&lt;/em>, &lt;em>focused on learning and doing&lt;/em>, but often &lt;em>with research workflows and communities&lt;/em>. They also tend to be more globally-distributed than a traditional research or education community.
See below for a few examples:&lt;/p>
&lt;p>The
&lt;a href="https://coessing.org/" target="_blank" rel="noopener" >&lt;strong>Coastal Ocean Environment Summer School in Ghana&lt;/strong>&lt;/a> workshop is a summer school run in Ghana to share skills and workflows with researchers across Africa. It builds on workflows in the Pangeo ecosystem, and teaches attendees how to work with cloud-native data. By using a cloud-based JupyterHub for their workshop, attendees had direct access to data and compute in a way that would have been much more difficult to set up on local infrastructure.&lt;/p>
&lt;p>The
&lt;a href="http://linked.earth/paleoHackathon/" target="_blank" rel="noopener" >&lt;strong>PaleoHackWeek hackathons&lt;/strong>&lt;/a> were two hackathons around paleo/climate data workflows. They brought together a distributed community and use the 2i2c hub to facilitate the use of the
&lt;a href="https://pyleoclim-util.readthedocs.io/en/master/" target="_blank" rel="noopener" >paleoclim package&lt;/a> throughout the hackweek.&lt;/p>
&lt;p>
&lt;a href="https://www.openscapes.org/" target="_blank" rel="noopener" >&lt;strong>OpenScapes&lt;/strong>&lt;/a> champions open practices in environmental science to help uncover data-driven solutions faster. They have several cohorts of scientific trainees learning more about adopting open and collaborative workflows, and use a hub managed by 2i2c to provide remote learning environments for their workshops.&lt;/p>
&lt;h3 id="what-we-learned-2">
What we learned
&lt;a class="header-anchor" href="#what-we-learned-2">#&lt;/a>
&lt;/h3>&lt;p>Initially we assumed that event-based hubs would be similar to educational use-cases. However, in practice they are more complex. First, event organizers have ever-changing communities of users on their hubs. They often want to provide access to many new users in each event, and expect only a small subset to continue using the infrastructure after an event. Finally, one-off events also generate spikes in activity that are more intense than educational use-cases, and warrant more dedicated attention from our engineers.&lt;/p>
&lt;h2 id="challenges-that-we-faced">
Challenges that we faced
&lt;a class="header-anchor" href="#challenges-that-we-faced">#&lt;/a>
&lt;/h2>&lt;p>As we piloted these use-cases, we also ran into a few challenges in designing services around our infrastructure.&lt;/p>
&lt;p>&lt;strong>Balancing standard deployments, custom deployments, and scalability&lt;/strong>. Our goal is to centralize our deployment and operations infrastructure in order to reduce the maintenance burden for each community hub. This will allow us to gain economies of scale and lower costs. However, there’s an inherent tension between scalability and customizability - in order to scale we must standardize the infrastructure we offer, but communities often want environments that are unique to their use-case.&lt;/p>
&lt;p>&lt;strong>Turning services into sustainability&lt;/strong>. We’ve learned that charging money for things does not come naturally to us. We’ve spent many years building technology and services that were offered freely to the public. This was easy to provide, but difficult to sustain. 2i2c’s goal is to offer similar services, but with a sustainability model that allows us to employ team members to do this work, and to grow in the future. Understanding how to pair the right technology, use-case, and service with a particular pricing model is an area where we must learn more.&lt;/p>
&lt;h2 id="whats-next">
What’s next
&lt;a class="header-anchor" href="#whats-next">#&lt;/a>
&lt;/h2>&lt;p>Piloting all of these services taught us a lot about the similarities and differences between each use case. Towards the end of 2021, this led to 2i2c&amp;rsquo;s first collection of &amp;ldquo;service offerings&amp;rdquo; for a Managed Jupyter Service. This includes a 2-by-2 matrix of service options, and a specific price point for each. We have begun offering this service to communities, in order to learn more about the model, the pricing, and any changes that should be made. In early 2022, we hope to expand this group to more communities so that we can test this model’s ability to scale.&lt;/p>
&lt;p>Our next post in this series will focus on the underlying technology that powers the services described above, stay tuned for more!&lt;/p></description></item><item><title>Pangeo Cloud goes live on 2i2c!</title><link>https://2i2c.org/blog/pangeo-goes-live/</link><pubDate>Tue, 16 Nov 2021 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/pangeo-goes-live/</guid><description>&lt;p>
&lt;a href="https://pangeo.io/cloud.html" target="_blank" rel="noopener" >Pangeo Cloud&lt;/a> is an experimental service providing public cloud-based data-science environments for data-intensive geoscience research.
We have recently finished re-creating the
&lt;a href="http://pangeo.io/" target="_blank" rel="noopener" >Pangeo&lt;/a> community JupyterHub hosted on GCP in the
&lt;a href="https://github.com/2i2c-org/infrastructure" target="_blank" rel="noopener" >2i2c-org/infrastructure&lt;/a> repository.
This is a huge milestone in our partnership with Pangeo to provide expertise and operations of cloud-based, vendor-agnostic Jupyter infrastructure and workflows.&lt;/p>
&lt;p>For users of Pangeo Cloud, the switch should have been a smooth one!
The new hub should behave nearly identically to the old one, and will be managed by 2i2c engineers moving forward, in partnership with the Pangeo community.
It will be available at the same URL (
&lt;a href="https://us-central1-b.gcp.pangeo.io" target="_blank" rel="noopener" >us-central1-b.gcp.pangeo.io&lt;/a>) and there&amp;rsquo;s no need to worry about your home directories, they were synced to the new hub only a few days before the migration took place.
Development and operations on this hub will all be done in the open and we invite participation and feedback from others in our infrastructure work.
Please see
&lt;a href="https://discourse.pangeo.io/t/migration-of-us-central1-b-gcp-pangeo-io-to-2i2c-infrastructure/1890" target="_blank" rel="noopener" >this Discourse thread&lt;/a> as an initial place to provide feedback.&lt;/p>
&lt;p>On &lt;strong>22nd November 2021&lt;/strong>, the old Pangeo GCP JupyterHub will be shut down, and the project will move forward on the new 2i2c Pangeo Hub.
Moving forward, we plan to collaborate together in order to find new pathways for development in the Jupyter ecosystem - we will share more ideas of things we will work on soon!&lt;/p>
&lt;h2 id="history-of-pangeo-cloud-hubs">
History of Pangeo Cloud Hubs
&lt;a class="header-anchor" href="#history-of-pangeo-cloud-hubs">#&lt;/a>
&lt;/h2>&lt;p>Pangeo has pioneered a new model in using open source and cloud-agnostic infrastructure to support scientific research in the cloud.&lt;/p>
&lt;p>The first Pangeo cloud JupyterHub (pangeo.pydata.org; now defuct) was deployed for the
&lt;a href="https://annual.ametsoc.org/2017/" target="_blank" rel="noopener" >2017 American Meteoroligical Society Meeting&lt;/a>; since then, the Pangeo community has iterated through several different versions of prototype cloud-based hubs.
This allowed for many new workflows that enabled a more open and collaborative pathway to doing world class research, and included access to datasets and computational resources that were previously unattainable.
Pangeo achieved this by working in partnership with open source communities and building technology that leveraged modular open source components for their platform.&lt;/p>
&lt;p>In the last several years, Pangeo have built a thriving community of practice around this infrastructure.
However as the community has grown, so has the need for more reliable and dedicated operational and developmental support since parts of the Pangeo stack require dedicated expertise and attention to managed.
Modern scalable cloud infrastructure is one example of this. Maintaining a complex JupyterHub with many users is a difficult task, and has required significant resources from the Pangeo Project up to this point.&lt;/p>
&lt;h2 id="the-pangeo-2i2c-partnership">
The Pangeo-2i2c Partnership
&lt;a class="header-anchor" href="#the-pangeo-2i2c-partnership">#&lt;/a>
&lt;/h2>&lt;p>
&lt;a href="https://2i2c.org" target="_blank" rel="noopener" >2i2c&lt;/a> is a non-profit team that develops and operates cloud infrastructure for interactive computing workflows.
We have extensive experience in Jupyter workflows in the cloud and a long history of contributions to projects in this ecosystem.
We have built a cloud deployment management system that allows us to centralise and configure the deployment of many independent JupyterHubs, empowering communities to leverage the same infrastructure (and team!) for JupyterHubs running in the cloud.&lt;/p>
&lt;p>Similarly to Pangeo, all of 2i2c&amp;rsquo;s core infrastructure is cloud- and vendor-agnostic, and follows a model of building open source tools and giving back to those communities.
Our partnership with Pangeo began through 2i2c&amp;rsquo;s core competency in these areas and the similarity between the two project&amp;rsquo;s technical stacks.&lt;/p>
&lt;p>We&amp;rsquo;ve begun a partnership whereby 2i2c will manage Pangeo&amp;rsquo;s cloud infrastructure and lead efforts to develop new features, in partnership with open source communities.
We sketched out a few ideas to focus on in this
&lt;a href="https://discourse.pangeo.io/t/notes-from-the-pangeo-2i2c-kick-off-meeting/1587" target="_blank" rel="noopener" >kick-off thread on Discourse&lt;/a>.
This approach allows each community to focus on it&amp;rsquo;s core strengths: Pangeo will continue to grow an open community and scientific software ecosystem around geospatial analytics, and 2i2c will oversee the development and operations of the core cloud infrastructure stack that powers Pangeo&amp;rsquo;s workflows.
In some areas we are still experimenting with different collaboration models to ensure that the needs of the Pangeo community are met in a way that is also sustainable for 2i2c.
Over the coming weeks, you may see some conversations (and threads for feedback!) about different support and operations models that work best for the community.
We are excited to use this as an opportunity to learn more about how to serve more complex and diverse communities like Pangeo.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>We are extremely grateful to the
&lt;a href="https://2i2c.org/collaborators/pangeo/" >Pangeo project&lt;/a> for giving us the opportunity to serve their community, as well as the
&lt;a href="https://2i2c.org/collaborators/moore/" >Moore Foundation&lt;/a> for funding this work. We look forward to a long partnership ahead! &amp;#x1f680;&lt;/p></description></item><item><title>Community update Q3 2021: A new fiscal sponsor, improving our infrastructure, nearing an alpha launch.</title><link>https://2i2c.org/blog/2021-q3-update/</link><pubDate>Sun, 10 Oct 2021 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/2021-q3-update/</guid><description>&lt;blockquote>
&lt;p>This is a (roughly) quarterly update for the 2i2c community, with the goal of providing transparency about what we&amp;rsquo;ve been up to, sharing what we are working on and where we have struggled, and discussing what we&amp;rsquo;re up to next. In addition, almost all of the work we do is public and discoverable across
&lt;a href="https://github.com/2i2c-org/" target="_blank" rel="noopener" >our GitHub repositories&lt;/a>, and is tracked by GitHub issues.
&lt;a href="https://github.com/search?q=org:2i2c-org&amp;#43;type:issue&amp;#43;is:closed&amp;#43;closed:2021-06-01..2021-10-01&amp;#43;-label:%22type:&amp;#43;team-sync%22&amp;#43;is:issue&amp;amp;type=issues" target="_blank" rel="noopener" >Here&amp;rsquo;s a list of issues we&amp;rsquo;ve closed in ~Q3&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>It is amazing how quickly 4 months goes by when you&amp;rsquo;re building an organization from scratch! It seems like only a few weeks ago that we were recapping the beginning of the year in
&lt;a href="https://2i2c.org/blog/2021-q3-update/../six-month-update" >our last community update&lt;/a>. Since then, we have been hard at work to make 2i2c&amp;rsquo;s organizational and infrastructure more robust and sustainable.&lt;/p>
&lt;p>There are several major strategic areas where 2i2c aims to have impact, and we&amp;rsquo;ve split this community update along each of these major areas below. We&amp;rsquo;ll cover major highlights, challenges we&amp;rsquo;ve faced, and where we&amp;rsquo;re going next.&lt;/p>
&lt;h2 id="highlights">
Highlights
&lt;a class="header-anchor" href="#highlights">#&lt;/a>
&lt;/h2>
&lt;h3 id="managed-jupyterhub-service">
Managed JupyterHub Service
&lt;a class="header-anchor" href="#managed-jupyterhub-service">#&lt;/a>
&lt;/h3>&lt;p>Our Managed JupyterHub Service will be a sustainable, scalable, and participatory service to provide cloud-based DevOps around JupyterHub for communities of practice in research and education. For the past several months, we have been running individual JupyterHubs for many organizations as a pilot, in order to learn more about the challenges we&amp;rsquo;ll face, and give ourselves an opportunity to build centralized infrastructure around the service.&lt;/p>
&lt;p>We focused on a few major areas for work, outlined below:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Automation across cloud providers&lt;/strong>. We wish to serve communities that run on any of the major commercial cloud providers. We can standardize some of our infrastructure through abstractions like Kubernetes, but must still create cloud-specific deployment infrastructure as well (that Kubernetes cluster has to come from somewhere first!). In the last four months we&amp;rsquo;ve worked on automating Kubernetes and JupyterHub deployments on
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/627" target="_blank" rel="noopener" >AWS&lt;/a> as well as
&lt;a href="https://github.com/2i2c-org/infrastructure/issues/512" target="_blank" rel="noopener" >Azure&lt;/a> to complement our Google Cloud deployments. We would soon like to run more hubs on this infrastructure to test how well it scales.&lt;/li>
&lt;li>&lt;strong>Monitoring and reporting infrastructure&lt;/strong>. We have worked on the JupyterHub
&lt;a href="https://github.com/jupyterhub/grafana-dashboards" target="_blank" rel="noopener" >&lt;code>grafana-dashboards&lt;/code> project&lt;/a> to improve dashboarding around JupyterHub deployments in general, and will soon automatically deploy Grafana dashboards for our hubs so that communities have insight into what is going on in their hubs.&lt;/li>
&lt;li>&lt;strong>User environment management&lt;/strong>. We want communities to have control over the environments that are available on their hubs. We also want to encourage that our communities follow community standards for reproducible environments that can be re-used elsewhere. For this reason, we&amp;rsquo;ve improved the
&lt;a href="https://github.com/jupyterhub/repo2docker-action" target="_blank" rel="noopener" >repo2docker GitHub action&lt;/a> to work with more image registries, and created a
&lt;a href="https://github.com/2i2c-org/hub-user-image-template" target="_blank" rel="noopener" >2i2c user image template repository&lt;/a> for users to re-use for their hubs. See
&lt;a href="https://docs.2i2c.org/admin/environment/hub-user-image-template-guide" target="_blank" rel="noopener" >the User Environment docs&lt;/a> for more information.&lt;/li>
&lt;li>&lt;strong>Support and collaboration roles&lt;/strong>. In addition to technology changes, we have developed an alpha-level support and collaboration model for the communities we serve. Most relevant for our communities is the &lt;strong>community representative&lt;/strong> role, who acts as the main point of contact with 2i2c engineers, and leads administrators on the hub to guide its customization for the community it serves. See
&lt;a href="https://docs.2i2c.org/community-lead/about/shared-responsibility" target="_blank" rel="noopener" >the user roles documentation&lt;/a> for more information. We have also begun prototyping a
&lt;a href="https://docs.2i2c.org/support" target="_blank" rel="noopener" >FreshDesk support model&lt;/a> and team processes around monitoring our support channels and responding to requests and incidents.&lt;/li>
&lt;/ul>
&lt;h3 id="pangeo">
Pangeo
&lt;a class="header-anchor" href="#pangeo">#&lt;/a>
&lt;/h3>&lt;p>We are working with &lt;strong>the Pangeo Community&lt;/strong> to migrate the Pangeo JupyterHub deployments to utilize 2i2c&amp;rsquo;s centralized infrastructure, with the goal of 2i2c taking over the development and operation of Pangeo hubs moving forward. We have spent the last few months re-creating the Pangeo hub environment from scratch on a new cloud project controlled by Columbia University, and are nearly ready to begin migration from the &amp;ldquo;old&amp;rdquo; Pangeo hub to the new one. After this, we will focus our attention on re-creating the Pangeo BinderHub and AWS hub. Follow along with this work
&lt;a href="https://github.com/orgs/2i2c-org/projects/16" target="_blank" rel="noopener" >in this GitHub Project&lt;/a>.&lt;/p>
&lt;h3 id="executable-books--jupyter-book">
Executable Books / Jupyter Book
&lt;a class="header-anchor" href="#executable-books--jupyter-book">#&lt;/a>
&lt;/h3>&lt;p>We are nearing the final year of a grant from the
&lt;a href="https://2i2c.org/collaborators/sloan/" >Sloan Foundation&lt;/a> to support development on the
&lt;a href="https://executablebooks.org" target="_blank" rel="noopener" >Executable Books Project&lt;/a>. As such, we have begun shifting our attention to
&lt;a href="https://github.com/executablebooks/meta/issues/493" target="_blank" rel="noopener" >create a strategy for sustaining the project&amp;rsquo;s community beyond this grant&lt;/a>. In the coming months we plan on prioritizing improving our documentation (both for users and developers), as well as improving the general maintainability and quality of our codebases.&lt;/p>
&lt;h3 id="jupyterhub-community-support">
JupyterHub community support
&lt;a class="header-anchor" href="#jupyterhub-community-support">#&lt;/a>
&lt;/h3>&lt;p>We recently collaborated with the JupyterHub community to
&lt;a href="https://github.com/jupyterhub/team-compass/issues/380" target="_blank" rel="noopener" >apply for two CZI EOSS awards&lt;/a>. Last month, we were notified that
&lt;a href="https://chanzuckerberg.com/eoss/proposals/jupyterhub-community-strategic-lead/" target="_blank" rel="noopener" >our application to support a Community Strategic Lead&lt;/a> was funded! This role will fund Sarah Gibson&amp;rsquo;s time to focus some of her thinking on building community structures and dynamics that are inclusive and sustainable. We&amp;rsquo;ll update with more information as this project starts moving.&lt;/p>
&lt;h3 id="organizational-foundations">
Organizational foundations
&lt;a class="header-anchor" href="#organizational-foundations">#&lt;/a>
&lt;/h3>&lt;p>Finally, in addition to our major development and projects, we have also made a lot of progress at an organizational level.&lt;/p>
&lt;p>We &lt;strong>began
&lt;a href="https://2i2c.org/posts/2021/css-announce/" target="_blank" rel="noopener" >a fiscal sponsorship with Code for Science and Society&lt;/a>&lt;/strong>. This provides a new organizational and legal home for 2i2c after spending nearly a year receiving
&lt;a href="https://www.icsi.berkeley.edu/icsi/news/2021/08/2i2c-new-chapter" target="_blank" rel="noopener" >critical strategic and start-up support&lt;/a> from our previous host,
&lt;a href="https://www.icsi.berkeley.edu" target="_blank" rel="noopener" >ICSI&lt;/a>. We are excited to work with CS&amp;amp;S to create the business infrastructure that will power our managed JupyterHubs service.&lt;/p>
&lt;p>The 2i2c team has also been &lt;strong>improving our team planning and coordination processes&lt;/strong>, so that we can more effectively execute on our mission. As a distributed team, we have the challenge of building processes for team communication, coordination, and planning that are distributed and asynchronous.&lt;/p>
&lt;p>We have &lt;strong>improved our organization-wide documentation&lt;/strong> in order to make it easier to navigate between 2i2c&amp;rsquo;s various sources of information. We hope that this provides more transparency into what 2i2c is up to and how it is structured, and that it allows us to build more connections between our projects and the broader community. Check out the new documentation landing site at
&lt;a href="https://docs.2i2c.org" target="_blank" rel="noopener" >docs.2i2c.org&lt;/a>.&lt;/p>
&lt;h2 id="whats-next">
What&amp;rsquo;s next
&lt;a class="header-anchor" href="#whats-next">#&lt;/a>
&lt;/h2>&lt;p>In addition to making iterative improvements around the projects described above, we have a few major goals for the final quarter of 2021.&lt;/p>
&lt;p>We wish to &lt;strong>polish and finish the alpha-level deployment infrastructure&lt;/strong> across each of the major cloud providers. Our end goal is to be able to &lt;em>deploy a Kubernetes cluster and a JupyterHub on that cluster with minimal human effort&lt;/em>. This will allow us to serve more communities with fewer human effort per community. This includes migrating JupyterHubs for key communities, such as the Pangeo project.&lt;/p>
&lt;p>We wish to &lt;strong>define and begin an alpha-level service&lt;/strong>. This means defining a few specific &amp;ldquo;products&amp;rdquo; that 2i2c can offer, as well as a pricing model for each product. Our goals will still be to learn about how this service should evolve, but we&amp;rsquo;ll have a bit more specificity about ways that others can engage with us. It will also be an opportunity to scale modestly so that we can improve our infrastructure as-needed.&lt;/p>
&lt;p>We wish to &lt;strong>define a longer-term vision&lt;/strong> for our Managed JupyterHubs Service, and create a plan for new workflows that we wish to enable via new development. We wish to use our experience in managing JupyterHubs to understand where new open source development would significantly help the communities we serve, and will shift our attention in this direction once we have finished the early stages of making our infrastructure more robust.&lt;/p>
&lt;p>Stay tuned for some more updates about this service, coming soon!&lt;/p>
&lt;h2 id="challenges-weve-faced">
Challenges we&amp;rsquo;ve faced
&lt;a class="header-anchor" href="#challenges-weve-faced">#&lt;/a>
&lt;/h2>&lt;p>Finally, we want to recognize that there are plenty of challenges along with successes when it comes to having impact! Here are a few of the unexpected challenges that we&amp;rsquo;ve faced along the way.&lt;/p>
&lt;p>&lt;strong>Developing and operating multi-cloud infrastructure is a complex process&lt;/strong>. Automating the creation and operation of Kubernetes clusters across each of the major cloud providers has proven to be a lot of work! While it has been necessary to use our pre-existing hubs to provide the opportunity to build this infrastructure, it is a challenge to both &lt;em>build&lt;/em> and &lt;em>operate&lt;/em> infrastructure at the same time. This has lengthened our timelines for when we expect the alpha version of the service to be ready.&lt;/p>
&lt;p>&lt;strong>Coordinating among a distributed team takes time&lt;/strong>. Each of our team members has been used to working asynchronously with open source communities for many years, and we under-estimated how complex it would be to port this workflow to a distributed team that must coordinate with each other much more closely on a daily basis. Deciding what to work on, how to work on it, and how to help one another take a lot of work when you only share a few hours awake at the same time. For this reason, we have spent a lot of extra energy in our first months as a team to work out
&lt;a href="https://compass.2i2c.org/practices/development.html" target="_blank" rel="noopener" >team processes for coordination and collaboration&lt;/a>.&lt;/p>
&lt;p>&lt;strong>How to design cloud services as a non-profit?&lt;/strong> Finally, we&amp;rsquo;ve learned that there is no clear roadmap for how to build a sustainable cloud service like the one we describe here. 2i2c is somewhere in-between a traditional SaaS company (which tends to provide access to proprietary technology) and a bespoke consultancy (which is more hands-on and custom than we are). Our best explanation for what 2i2c wishes to do is &amp;ldquo;Open source operations/dev-ops as a service&amp;rdquo;, which doesn&amp;rsquo;t quite fit into either category. This means that we have more &amp;ldquo;unknown unknowns&amp;rdquo; about what kind of service and pricing model we should develop. We hope to begin answering some of these questions in our alpha-level service launch. Stay tuned for more to come!&lt;/p>
&lt;h2 id="get-involved">
Get involved
&lt;a class="header-anchor" href="#get-involved">#&lt;/a>
&lt;/h2>&lt;p>Thanks for your interest in 2i2c and the mission that it hopes to accomplish.
We hope that this update has been informative and interesting, and we welcome feedback about any of the information provided. If you&amp;rsquo;d like to help with any of the challenges or efforts described above, we welcome all forms of collaboration, and are happy to chat. Please drop us a line at
&lt;a href="https://2i2c.org/blog/2021-q3-update/mailto:hello@2i2c.org" >&lt;code>hello@2i2c.org&lt;/code>&lt;/a> or
&lt;a href="https://2i2c.org/blog/2021-q3-update/mailto:hello@2i2c.org" >contact us about joining our Slack community&lt;/a>. Thanks for reading!&lt;/p></description></item><item><title>2i2c launches next phase in partnership with CS&amp;S</title><link>https://2i2c.org/blog/css-announce/</link><pubDate>Thu, 30 Sep 2021 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/css-announce/</guid><description>&lt;p>&lt;em>This post was originally written for the
&lt;a href="https://blog.codeforscience.org/" target="_blank" rel="noopener" >&lt;strong>CS&amp;amp;S blog&lt;/strong>&lt;/a>.&lt;/em>&lt;/p>
&lt;p>
&lt;a href="https://2i2c.org/collaborators/css/" >Code for Science &amp;amp; Society&lt;/a> is thrilled to welcome the
&lt;a href="https://2i2c.org" target="_blank" rel="noopener" >International Interactive Computing Collaboration&lt;/a> (2i2c, for short) as a fiscally sponsored project! After spending a year incubating in the
&lt;a href="https://www.icsi.berkeley.edu/icsi/" target="_blank" rel="noopener" >International Computer Science Institute&lt;/a>, where 2i2c
&lt;a href="https://www.icsi.berkeley.edu/icsi/news/2021/08/2i2c-new-chapter" target="_blank" rel="noopener" >received critical startup support&lt;/a>, 2i2c now joins our fiscally sponsored project program to launch their next phase. 2i2c develops and operates cloud infrastructure for interactive computing, with a focus on the Jupyter ecosystem and cloud-native workflows in research and education. They will build a cloud services model that respects a community’s
&lt;a href="https://2i2c.org/right-to-replicate/" target="_blank" rel="noopener" >Right to Replicate their infrastructure&lt;/a> by providing transparent and customizable JupyterHub deployments on cloud infrastructure that utilize community-driven open source tools. They aim to use the resources generated from this service in order to support the communities that underlie this infrastructure. Read on for more about 2i2c’s mission and how CS&amp;amp;S will support their team and vision.&lt;/p>
&lt;p>2i2c’s organizational mission is to develop and operate sustainable cloud services that provide interactive computing infrastructure with JupyterHub and an ecosystem of tools that support research and education. This model has been pioneered in the organizations that 2i2c’s co-founders have co-led for many years, including
&lt;a href="https://pangeo.io/" target="_blank" rel="noopener" >the Pangeo Project&lt;/a>, the
&lt;a href="https://syzygy.ca/" target="_blank" rel="noopener" >Syzygy Project&lt;/a>, the
&lt;a href="https://mybinder.org/" target="_blank" rel="noopener" >Binder Project&lt;/a>, and the
&lt;a href="https://data.berkeley.edu/academics/resources/berkeley-data-stack" target="_blank" rel="noopener" >UC Berkeley DataHub&lt;/a>. These projects follow an “integrate, customize, and upstream” model. They integrate pre-existing open source tools, make necessary customizations to support their specific use-case, and make upstream contributions to extend the infrastructure beyond its current capabilities. This creates a virtuous cycle where tangible needs are met in research and education, while improvements are made to open source projects that benefit the broader community. 2i2c hopes to scale this model, and provide these JupyterHub-based cloud services available to the broader research and education community.&lt;/p>
&lt;p>CS&amp;amp;S is particularly interested in pursuing the opportunity to work closely with 2i2c as their team explores how to build sustainable, ethical services that support open scholarship as well as open source communities. The model that 2i2c will develop is different in many ways from traditional grant-based development, or service-based business, because it depends on running community-led infrastructure that 2i2c contributes to, but does not control or own. Both CS&amp;amp;S and 2i2c believe that this model is an opportunity to build more distributed, community-led infrastructure and services, as well aligning a sustainability model with both open source communities and the scholarly community. We hope that this work will also provide experience that helps improve CS&amp;amp;S’s other initiatives in this space, including CS&amp;amp;S’s other fiscally sponsored projects and participants in the
&lt;a href="https://blog.codeforscience.org/cs-s-launches-digital-infrastructure-incubator/" target="_blank" rel="noopener" >Digital Infrastructure Incubator program&lt;/a>.&lt;/p>
&lt;p>Achieving this mission will involve innovation at an infrastructure level, a business model level, and an open source community strategy level, and will be carried out over the coming years. 2i2c’s next steps are to run pilot JupyterHub infrastructure for select communities of practice in research and education, in order to better understand their needs and how these needs fit in with 2i2c’s developing sustainability model. They will also build infrastructure to deploy and customize a federation of JupyterHubs that are community-specific, and that run entirely on open source infrastructure.&lt;/p>
&lt;p>If you believe that your community would benefit from a hub like this, please
&lt;a href="https://2i2c.org/blog/css-announce/mailto:hello@2i2c.org" >reach out to the 2i2c team&lt;/a>, or
&lt;a href="https://2i2c.org/mailing-list/" >join their mailing list&lt;/a>. Stay tuned as 2i2c builds its sustainable, scalable, and community-driven platform for interactive computing in the cloud.&lt;/p></description></item><item><title>Pilot hubs, new collaborations, and new team members - A six month update</title><link>https://2i2c.org/blog/six-month-update/</link><pubDate>Tue, 25 May 2021 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/six-month-update/</guid><description>&lt;p>It has been about six months since 2i2c first began operations (after receiving
&lt;a href="https://2i2c.org/blog/six-month-update/../czi-core-support" >funding from the Chan Zuckerberg Initiative&lt;/a>).
In that time we&amp;rsquo;ve made progress along several directions, and wish to use this blog post to provide updates about the ways in which 2i2c has evolved over the first months of its existence.&lt;/p>
&lt;p>Below are a few major updates from the 2i2c community - as always, if you want to learn more about 2i2c, keep an eye
&lt;a href="https://2i2c.org/posts" >on our blog&lt;/a> or subscribe to the
&lt;a href="https://2i2c.org/mailing-list/" >2i2c mailing list&lt;/a>.&lt;/p>
&lt;h2 id="early-pilot-jupyterhub-infrastructure">
Early pilot JupyterHub infrastructure
&lt;a class="header-anchor" href="#early-pilot-jupyterhub-infrastructure">#&lt;/a>
&lt;/h2>&lt;p>First off - we have been making progress building out our JupyterHub deployment infrastructure for 2i2c.
One of our major organizational goals is to build a sustainable service
&lt;a href="https://2i2c.org/infrastructure" >managing open source cloud infrastructure&lt;/a> for interactive computing.
This service will provide hosted, customized JupyterHubs for communities of practice in research and education.
They&amp;rsquo;ll be built entirely with open source tools that are community-driven, and that
&lt;a href="https://2i2c.org/right-to-replicate/" >respect the community&amp;rsquo;s Right to Replicate&lt;/a>.&lt;/p>
&lt;p>In order to accomplish this, 2i2c is running several pilots with partners and interested organizations, supported by our
&lt;a href="https://2i2c.org/blog/czi-core-support/" >funding from CZI&lt;/a>, as well as from
&lt;a href="https://investinopen.org/blog/jrost-rapid-response-fund-awardees/" target="_blank" rel="noopener" >the JROST rapid response fund&lt;/a>.
These pilots are meant to be learning opportunities to understand what kind of infrastructure and service it needs to build moving forward.&lt;/p>
&lt;p>The
&lt;a href="https://infrastructure.2i2c.org/" target="_blank" rel="noopener" >documentation for our pilot hubs infrastructure&lt;/a> contains information about our deployments and infrastructure.
It is served from
&lt;a href="https://github.com/2i2c-org/infrastructure" target="_blank" rel="noopener" >this &lt;code>2i2c-org/infrastructure&lt;/code> repository&lt;/a>, a centralized location for configuring and deploying a federated network of JupyterHubs.
Each JupyterHub is independent of one another, and could be spun out from the centralized repository with minimal extra work, giving hub users the ability to
&lt;a href="https://2i2c.org/right-to-replicate/" >replicate their infrastructure, with or without 2i2c&lt;/a>.
We will continue refining the code in this repository as we learn more from our hub infrastructure pilots.&lt;/p>
&lt;h2 id="jupyterhub-for-geospatial-analytics---a-collaboration-with-pangeo">
JupyterHub for geospatial analytics - A collaboration with Pangeo
&lt;a class="header-anchor" href="#jupyterhub-for-geospatial-analytics---a-collaboration-with-pangeo">#&lt;/a>
&lt;/h2>&lt;p>As
&lt;a href="https://medium.com/pangeo/pangeo-2-0-2bedf099582d" target="_blank" rel="noopener" >originally announced on the Pangeo blog&lt;/a>, 2i2c is forging a collaboration with
&lt;a href="https://pangeo.io" target="_blank" rel="noopener" >the Pangeo project&lt;/a> around operating and developing cloud infrastructure for large-scale geospatial analytics!
This collaboration is funded through a grant from the
&lt;a href="https://2i2c.org/collaborators/moore/" >Moore Foundation&lt;/a> (via Pangeo investigator Ryan Abernathey).&lt;/p>
&lt;p>Over the coming months, 2i2c plans to assume operation of infrastructure underlying the Pangeo project, allowing the Pangeo team to focus their efforts on their core scientific and development missions.
Because Pangeo&amp;rsquo;s infrastructure is already running on a fully open source stack with JupyterHub, our first step will simply be to shift control over this infrastructure to 2i2c engineers.
We don&amp;rsquo;t anticipate needing to make major changes to their infrastructure and deployments (part of the benefits of using open, modular tools).&lt;/p>
&lt;p>Once this is complete, we&amp;rsquo;ll next shift our attention to some new areas of development that support use-cases in the Pangeo community (and in the scientific community more broadly).
There&amp;rsquo;s a lot of progress that we imagine making - such as
&lt;a href="https://gallery.pangeo.io" target="_blank" rel="noopener" >supporting sharing pipelines via the Pangeo Gallery&lt;/a> or improving tools for scalable computing with
&lt;a href="https://gateway.dask.org/" target="_blank" rel="noopener" >Dask Gateway&lt;/a>.
We&amp;rsquo;ll provide updates as we formally begin this collaboration and hash out a plan for our next steps.&lt;/p>
&lt;h2 id="jupyterhub-for-education---a-collaboration-with-cloudbank-and-uc-berkeley">
JupyterHub for education - A collaboration with CloudBank and UC Berkeley
&lt;a class="header-anchor" href="#jupyterhub-for-education---a-collaboration-with-cloudbank-and-uc-berkeley">#&lt;/a>
&lt;/h2>&lt;p>In addition, we&amp;rsquo;ve begun a partnership with the UC Berkeley
&lt;a href="https://data.berkeley.edu/academics/undergraduate-programs" target="_blank" rel="noopener" >Data Science in Undergraduate Studies program&lt;/a>, as well as
&lt;a href="http://cloudbank.org/" target="_blank" rel="noopener" >CloudBank&lt;/a>.
This collaboration aims to provide hosted JupyterHub infrastructure for community colleges across the state of California.
It is an attempt at providing vendor-agnostic and open-source infrastructure to several institutions who would otherwise not be able to deploy this infrastructure on their own.&lt;/p>
&lt;p>2i2c will provide the deployment and configuration architecture for this collaboration, working with
&lt;a href="https://www.linkedin.com/in/sean-morris-5847aa2b" target="_blank" rel="noopener" >Sean Morris&lt;/a> in operating this educational infrastructure.
All of the cloud infrastructure for this pilot will be funded via CloudBank.
We will begin by offering environments that are modeled after
&lt;a href="http://data8.org" target="_blank" rel="noopener" >the Data 8 course at UC Berkeley&lt;/a>.
This is part of an effort to build a community of practice around Data Science education using open source tools.&lt;/p>
&lt;h2 id="new-team-members">
New team members
&lt;a class="header-anchor" href="#new-team-members">#&lt;/a>
&lt;/h2>&lt;p>We&amp;rsquo;ve also welcomed two new members to the 2i2c core team! 🎉&lt;/p>
&lt;p>These individuals will both work towards
&lt;a href="https://2i2c.org/projects" >2i2c&amp;rsquo;s major projects&lt;/a>, and collaborate together on running our 2i2c Pilot Hub infrastructure.
Here&amp;rsquo;s a bit about each new team member.&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://github.com/damianavila" target="_blank" rel="noopener" >Damián Avila&lt;/a>. Damián has been a Jupyter core team member for many years now, and has done work across many different parts of the PyData stack (in particular,
&lt;a href="https://jupyter.org" target="_blank" rel="noopener" >Jupyter&lt;/a>,
&lt;a href="http://bokeh.org/" target="_blank" rel="noopener" >Bokeh&lt;/a>,
&lt;a href="https://rise.readthedocs.io/" target="_blank" rel="noopener" >RISE&lt;/a>, and
&lt;a href="https://getnikola.com/" target="_blank" rel="noopener" >Nikola&lt;/a>). Damián will focus his efforts on supporting JupyterHub infrastructure for the
&lt;a href="https://pangeo.io" target="_blank" rel="noopener" >Pangeo project&lt;/a>, as well as development across the
&lt;a href="https://executablebooks.org" target="_blank" rel="noopener" >Executable Books Project&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/sgibson91" target="_blank" rel="noopener" >Sarah Gibson&lt;/a>. Sarah will join 2i2c in June, after spending several years as a Research Software Engineer at
&lt;a href="https://www.turing.ac.uk/" target="_blank" rel="noopener" >the Turing Institute&lt;/a>. She has also been involved with
&lt;a href="https://the-turing-way.netlify.app/welcome" target="_blank" rel="noopener" >the Turing Way&lt;/a> for many years. Sarah will focus her efforts on JupyterHub development and operations for the Pangeo community.&lt;/li>
&lt;/ul>
&lt;h2 id="governance-and-a-code-of-conduct">
Governance and a code of conduct
&lt;a class="header-anchor" href="#governance-and-a-code-of-conduct">#&lt;/a>
&lt;/h2>&lt;p>Finally, while it&amp;rsquo;s easy to get lost in technology and collaborations, 2i2c has also made important steps towards defining a stable and transparent organizational model moving forward.
2i2c now
&lt;a href="https://compass.2i2c.org/about/structure#steering-council" target="_blank" rel="noopener" >has a Steering Council&lt;/a> and an
&lt;a href="https://compass.2i2c.org/about/structure" target="_blank" rel="noopener" >early organizational structure&lt;/a>.
In addition,
&lt;a href="https://compass.2i2c.org/organization/strategy" target="_blank" rel="noopener" >we&amp;rsquo;ve defined a one-year bootstrap strategy&lt;/a> that we&amp;rsquo;ll use to guide our path in the first year of 2i2c&amp;rsquo;s existence.&lt;/p>
&lt;p>Finally, one of the first acts of the Steering Council has been to
&lt;a href="https://compass.2i2c.org/code-of-conduct/" target="_blank" rel="noopener" >adopt a Code of Conduct&lt;/a>.
This is a set of guidelines, and a process for resolving incidents, that makes our community more inclusive, equitable, and enjoyable for all.
Creating a Code of Conduct is a crucial part of defining our organizational and community culture, and we&amp;rsquo;re excited to have some explicit guidelines to support our interactions in the future!&lt;/p>
&lt;h2 id="keep-in-touch">
Keep in touch
&lt;a class="header-anchor" href="#keep-in-touch">#&lt;/a>
&lt;/h2>&lt;p>Now that we are improving our organizational foundation, we will try to post more frequent updates and discussions about what we are up to.
We hope for 2i2c to be a model organization in participatory, collaborative, transparent operations, and we look forward to working with you all in the future on this journey.&lt;/p></description></item><item><title>2i2c partners with UC Berkeley and CloudBank to provide data science education hubs for community colleges in California</title><link>https://2i2c.org/blog/data8-class/</link><pubDate>Fri, 01 Jan 2021 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/data8-class/</guid><description>&lt;p>
&lt;figure id="figure-data8httpsgithubcomdata-8-mit-licensed">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Data8 logo" srcset="
/blog/data8-class/cover-featured_huc6bf006b003e9c744576be05eabc8a75_44823_04d7b3cbc986a925ba5eac5df0a83ec3.webp 400w,
/blog/data8-class/cover-featured_huc6bf006b003e9c744576be05eabc8a75_44823_0fb7904aec63401bf0640b6074214300.webp 760w,
/blog/data8-class/cover-featured_huc6bf006b003e9c744576be05eabc8a75_44823_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/blog/data8-class/cover-featured_huc6bf006b003e9c744576be05eabc8a75_44823_04d7b3cbc986a925ba5eac5df0a83ec3.webp"
width="280"
height="280"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
&lt;a href="https://github.com/data-8" target="_blank" rel="noopener" >Data8&lt;/a>. MIT licensed.
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://www.data8.org/" target="_blank" rel="noopener" >Data8&lt;/a> began as a large introductory data science class at UC Berkeley. It uses a Jupyter Book for all course materials, and uses JupyterHub magic links to distribute course content from the textbook.&lt;/p>
&lt;p>2i2c is working with the Data 8 team to deploy JupyterHubs for community colleges in California that run the Data8 course, to make the infrastructure and content broadly accessible.&lt;/p>
&lt;p>Giving people curricula, content, and infrastructure goes a long way to adoption. Communities want to remix content for their specific needs.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;p>This effort is funded by 2i2c together with UC Berkeley and
&lt;a href="https://2i2c.org/collaborators/cloudbank/" >CloudBank&lt;/a>.&lt;/p></description></item><item><title>Open Source Infrastructure Engineer: Pangeo Project</title><link>https://2i2c.org/jobs/2021/osie-pangeo/</link><pubDate>Wed, 09 Dec 2020 00:00:00 +0000</pubDate><guid>https://2i2c.org/jobs/2021/osie-pangeo/</guid><description>&lt;p>We are looking for an Open Source Infrastructure Engineer who will help shape the future of data-intensive scientific research and make a big impact on important problems shaping society. This engineer will lead the development and operation of cloud-based infrastructure, focusing on the
&lt;a href="https://pangeo.io" target="_blank" rel="noopener" >Pangeo Project&lt;/a> - a community platform for big data geoscience.&lt;/p>
&lt;div class="job-info">
&lt;p>❌❌❌&lt;br>
This posting is closed to new applications.&lt;br>
See &lt;a href="https://2i2c.org/jobs">the jobs page&lt;/a> for our open positions.&lt;br>
❌❌❌&lt;/p>
&lt;p>&lt;i class="fa fa-info-circle">&lt;/i> &lt;strong>About the position&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Salary&lt;/strong>: $110,000 - $130,000&lt;/li>
&lt;li>&lt;strong>Location&lt;/strong>: anywhere (prefer a time zone between US/Pacific and Central European)&lt;/li>
&lt;li>&lt;strong>Deadline&lt;/strong>:&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Major duties&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Cloud infrastructure management and operations.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Development of open source infrastructure for hosted JupyterHub service&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>For more general information about 2i2c, see the links below:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://compass.2i2c.org/" target="_blank" rel="noopener" >Our Team Compass&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/code-of-conduct/index.html" target="_blank" rel="noopener" >Our Code of Conduct&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://compass.2i2c.org/organization/mission.html" target="_blank" rel="noopener" >Our Mission and Values&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://2i2c.org/jobs/#what-its-like-to-work-at-2i2c" target="_blank" rel="noopener" >What it&amp;rsquo;s like to work at 2i2c&lt;/a>&lt;/li>
&lt;/ul>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="" class="btn btn-primary px-3 py-3">Click here to Apply&lt;/a>
&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 id="who-we-are">
Who we are
&lt;a class="header-anchor" href="#who-we-are">#&lt;/a>
&lt;/h2>&lt;p>2i2c is a non-profit organization with a mission to make interactive computing more accessible, scalable, and powerful for research and education. We strive to&amp;hellip;&lt;/p>
&lt;ul>
&lt;li>Support data workflows in research and education through infrastructure for interactive computing.&lt;/li>
&lt;li>Support open tools and communities that underlie this infrastructure.&lt;/li>
&lt;/ul>
&lt;p>We accomplish this mission by providing managed cloud services for interactive computing, by providing development and technical leadership to researchers and educators that utilize this infrastructure for specific communities, and by providing support for open source tools and communities in this ecosystem.&lt;/p>
&lt;p>We have deep ties to the open source community, and have been leaders and core contributors across dozens of projects - in particular in the Jupyter ecosystem. We also have deep ties to research and education - our team has spent years deploying infrastructure for universities, community colleges, and research teams, and now we’re bringing this experience to a wider audience with 2i2c.&lt;/p>
&lt;p>We believe strongly in communities that are inclusive, transparent, equitable, effective, and diverse, especially 2i2c itself. We believe that our values should permeate everything about 2i2c, including the work we do, the communities we serve, and our own organizational culture.&lt;/p>
&lt;p>2i2c is a project of the
&lt;a href="https://icsi.berkeley.edu" target="_blank" rel="noopener" >International Computer Science Institute&lt;/a>, a 501(c)(3) not-for-profit.&lt;/p>
&lt;h2 id="what-youll-do">
What you’ll do
&lt;a class="header-anchor" href="#what-youll-do">#&lt;/a>
&lt;/h2>&lt;p>You will define the overall strategy and technical approach to cloud computing usage in Pangeo, and will interface with the Pangeo community on a frequent basis. You will help deploy, customize, and operate cloud infrastructure for research and interactive computing. You&amp;rsquo;ll use the experience operating this infrastructure to identify development opportunities, with the goal of minimizing maintenance time and toil - your goal will be to spend &lt;em>more time developing&lt;/em> and &lt;em>less time operating&lt;/em>. You will contribute to the general development and maintenance of open source software packages for the advancement of scientific objectives, and develop applications for extracting, transforming, loading, managing, and cataloging scientific data in the cloud. You will engage and interact with open source communities surrounding the tools that you use in serving the Pangeo community, and will represent 2i2c in these engagements. You will also collaborate with scientists to support research projects, and may conduct some education and training around scientific computing.&lt;/p>
&lt;h2 id="responsibilities">
Responsibilities
&lt;a class="header-anchor" href="#responsibilities">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Develops strategy and technical design for cloud computing architecture within the Pangeo project and related projects with 2i2c.&lt;/li>
&lt;li>Assists with site reliability for Pangeo infrastructure, and uses experience operating this infrastructure to identify new opportunities for development.&lt;/li>
&lt;li>Ensures the reliable operation of production cloud-based tools including JupyterHub / JupyterLab and Dask.&lt;/li>
&lt;li>Participates in the upstream open source communities we rely on (such as JupyterHub, Dask, etc) by contributing code, documentation, etc as needed.&lt;/li>
&lt;li>Develops dashboards and reports to quantify system usage and costs.&lt;/li>
&lt;li>Helps to maintain and operate
&lt;a href="https://gallery.pangeo.io" target="_blank" rel="noopener" >Pangeo Gallery&lt;/a>, an interactive showcase for data science projects based on binder and github workflows.&lt;/li>
&lt;li>Conducts education and outreach around cloud computing.&lt;/li>
&lt;li>Explores emerging technologies in the cloud / DevOps space.&lt;/li>
&lt;li>Travels to conferences and workshops (once COVID-19 restrictions end).&lt;/li>
&lt;li>Will work with minimal supervision from leadership at 2i2c in partnership with collaborators at Columbia and the Pangeo project. Will work independently and make their own decisions about where to best allocate effort.&lt;/li>
&lt;/ul>
&lt;h2 id="requirements">
Requirements
&lt;a class="header-anchor" href="#requirements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Familiarity with deploying applications on cloud infrastructure.&lt;/li>
&lt;li>Experience developing tools in a general purpose programming language (eg. Python)&lt;/li>
&lt;li>Experience deploying and developing with Linux container technologies, such as Docker and Kubernetes&lt;/li>
&lt;li>Experience with continuous integration services (e.g. Travis CI, GitHub workflows)&lt;/li>
&lt;li>Experience building and deploying backend web services.&lt;/li>
&lt;li>Experience collaborating and coordinating work via online platforms, such as GitHub, GitLab, or BitBucket, and distributed revision control.&lt;/li>
&lt;li>Experience working on geographically distributed open-source projects&lt;/li>
&lt;/ul>
&lt;h2 id="good-to-haves">
Good-to-haves
&lt;a class="header-anchor" href="#good-to-haves">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Experience in programming and software engineering with a track record of leadership in open, collaborative projects with broad community adoption&lt;/li>
&lt;li>Experience with cloud infrastructure for data-driven workflows.&lt;/li>
&lt;li>Experience with the Jupyter ecosystem of tools for interactive computing&lt;/li>
&lt;li>Evidence of existing connections and relationships in the worldwide ecosystem of open source software for data-intensive research and ability to establish new ones.&lt;/li>
&lt;li>Experience with common data science methods, platforms, workflows, and infrastructures; with data management systems, practices, and standards; and the capacity to gain familiarity with new related topics&lt;/li>
&lt;li>Experience engaging with highly technical researchers across a variety of methodological fields, research domains, and computational platforms&lt;/li>
&lt;li>Experience building and maintaining continuous deployment pipelines&lt;/li>
&lt;li>Interpersonal skills to work with researchers and students. Include having skills to communicate complex information in a clear and concise manner both verbally and in writing&lt;/li>
&lt;/ul>
&lt;h2 id="our-commitment-to-equal-opportunity">
Our commitment to equal opportunity
&lt;a class="header-anchor" href="#our-commitment-to-equal-opportunity">#&lt;/a>
&lt;/h2>&lt;p>We are an equal opportunity employer and value diversity. We do not discriminate on the basis of race (including hairstyle and texture), religion (including religious grooming and dress practices), gender, gender identity, gender expression, color, national origin, pregnancy, ancestry, domestic partner status, disability, sexual orientation, age, genetic predisposition, medical condition, marital status, citizenship status, military or veteran status, or any other basis covered by applicable laws. We will provide reasonable accommodation to an employee or job applicant with a disability.&lt;/p>
&lt;h2 id="how-to-apply">
How to apply
&lt;a class="header-anchor" href="#how-to-apply">#&lt;/a>
&lt;/h2>&lt;p>Please send an email to
&lt;a href="https://2i2c.org/jobs/2021/osie-pangeo/mailto:jobs&amp;#43;OSIE-2020@2i2c.org" >jobs+OSIE-2020@2i2c.org&lt;/a> with the following information.&lt;/p>
&lt;ul>
&lt;li>A copy of your resume.&lt;/li>
&lt;li>A short statement about why you believe you’re a good fit for 2i2c, and for this position.&lt;/li>
&lt;li>Examples of your work (either public or private) that you believe shows that you are a good fit.&lt;/li>
&lt;li>Your preferred work location.&lt;/li>
&lt;/ul>
&lt;h2 id="salary--benefits">
Salary &amp;amp; Benefits
&lt;a class="header-anchor" href="#salary--benefits">#&lt;/a>
&lt;/h2>&lt;p>We pay competitively (at San Francisco rates) for all of its positions, regardless of your geographic location or cost of living. Salaries are based entirely on job title along with discrete levels of experience within that job title. We also offer a generous benefits package for US-based employees.&lt;/p>
&lt;p>See
&lt;a href="https://2i2c.org/jobs/#salaries-and-benefits" >our Salary and Benefits page&lt;/a> for more information.&lt;/p></description></item><item><title>2i2c receives core support from CZI</title><link>https://2i2c.org/blog/czi-core-support/</link><pubDate>Thu, 19 Nov 2020 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/czi-core-support/</guid><description>&lt;p>Last week we
&lt;a href="https://2i2c.org/posts/2021/hello-world/" >announced the creation of 2i2c&lt;/a>, a non-profit initiative dedicated to improving and facilitating access to infrastructure for interactive computing workflows in research and education. Today we are thrilled to announce that 2i2c has received core support from the
&lt;a href="https://2i2c.org/collaborators/czi/" >Chan Zuckerberg Initiative&lt;/a>. You can find
&lt;a href="https://cziscience.medium.com/scaling-open-infrastructure-and-reproducibility-in-biomedicine-69546a399747" target="_blank" rel="noopener" >CZI&amp;rsquo;s announcement here&lt;/a>.&lt;/p>
&lt;p>This funding totals around $1.4m over three years. It provides crucial core support for 2i2c as it bootstraps itself into existence. We are so thankful to CZI for this support. 🎉🙏✨&lt;/p>
&lt;p>The rest of this post is a short run-down of what we&amp;rsquo;ll use this funding for, and what we hope to accomplish.&lt;/p>
&lt;h2 id="the-big-picture">
The big picture
&lt;a class="header-anchor" href="#the-big-picture">#&lt;/a>
&lt;/h2>&lt;p>In recent years, several projects including
&lt;a href="https://mybinder.org" target="_blank" rel="noopener" >Binder&lt;/a>,
&lt;a href="https://pangeo.io" target="_blank" rel="noopener" >Pangeo&lt;/a>,
&lt;a href="https://syzygy.ca" target="_blank" rel="noopener" >Syzygy&lt;/a>, and
&lt;a href="https://data.berkeley.edu/academics/resources/berkeley-data-stack" target="_blank" rel="noopener" >the Berkeley DataHubs&lt;/a> have built atop the Jupyter architecture to support cloud-based infrastructure for reproducible research, large-scale scientific data analysis, national-scale infrastructure for researchers, and broad-impact educational programs based on freely available computational materials. These projects illustrate the transformative potential of the open Jupyter architecture, but they have also shown that unlocking this potential in service of scientists and educators requires continued development and resources beyond those of open source volunteers.&lt;/p>
&lt;p>In order to deploy these resources at scale, manage and maintain them for large communities, and to continue developing the underlying technologies for scientific use cases, we need models to sustainably deploy and improve Jupyter technology. We also need capacity for thinking strategically and forging new partnerships to accomplish this goal. This funding will support 2i2c’s early strategic planning and partnership efforts, as well as technical development and operation of Jupyter infrastructure for research and education.&lt;/p>
&lt;p>Below are two keys goals for this grant:&lt;/p>
&lt;h2 id="goal-1-build-capacity-for-jupyter-in-research-and-education">
Goal 1: Build capacity for Jupyter in research and education
&lt;a class="header-anchor" href="#goal-1-build-capacity-for-jupyter-in-research-and-education">#&lt;/a>
&lt;/h2>&lt;p>The primary goal of this funding is to build more capacity for Jupyter&amp;rsquo;s engagement in research and education. This funding will primarily support
&lt;a href="https://2i2c.org/author/chris-holdgraf" >Chris Holdgraf&lt;/a> to build strategic partnerships and collaborations, find opportunities for Jupyter infrastructure to benefit research and education, coordinate activity in the Jupyter project that benefits these communities, and secure more funding for development, maintenance, and support for Jupyter technology.&lt;/p>
&lt;p>We are grateful to CZI for this funding because strategy, leadership, and community support are often difficult to fund from grants that are focused on technical deliverables. By funding strategic growth and capacity building, CZI is helping 2i2c lay a strong foundation from which it can have a greater impact.&lt;/p>
&lt;h2 id="goal-2-support-hosted-jupyter-infrastructure-for-research-and-education">
Goal 2: Support hosted Jupyter infrastructure for research and education
&lt;a class="header-anchor" href="#goal-2-support-hosted-jupyter-infrastructure-for-research-and-education">#&lt;/a>
&lt;/h2>&lt;p>2i2c will offer hosted
&lt;a href="https://2i2c.org/infrastructure" >interactive computing infrastructure&lt;/a> utilizing the Jupyter ecosystem. It will both deploy and operate this infrastructure for researchers and educators, as well as perform core development to ensure that it serves these communities well. Funding from this grant will support 2i2c&amp;rsquo;s first hire -
&lt;a href="https://2i2c.org/author/georgiana-dolocan" >Georgiana Dolocan&lt;/a> as an &lt;strong>Open Source Infrastructure Engineer&lt;/strong>. Georgiana has been the
&lt;a href="https://blog.jupyter.org/the-jupyterhub-and-binder-contributor-in-residence-56708d1e3069" target="_blank" rel="noopener" >JupyterHub Contributor in Residence&lt;/a> for the past year, and we are so excited for her to join 2i2c!&lt;/p>
&lt;p>Georgiana will begin by supporting several pilot hubs that are run by 2i2c for community colleges, universities, and research institutions. She will help these organizations accomplish their mission through 2i2c infrastructure, and will develop these technologies so they are stable, scalable, and serve a diverse set of needs in research and education. This will hopefully set the foundation for 2i2c to sustainably offer this hub infrastructure to a wider audience in the future.&lt;/p>
&lt;p>This is the next step in Georgiana&amp;rsquo;s journey through the Jupyter ecosystem that began with
&lt;a href="https://blog.jupyter.org/outreachy-jupyter-supporting-diversity-in-open-communities-dfa78db4b0bd" target="_blank" rel="noopener" >an outreachy internship&lt;/a> followed by
&lt;a href="https://blog.jupyter.org/cir-report-i-1ca418c230cd" target="_blank" rel="noopener" >a term as Contributor in Residence&lt;/a>. Both of these steps were made possible thanks to Jupyter stakeholders who invest their resources, time, and mentorship to grow Jupyter&amp;rsquo;s community beyond the people that have traditionally been involved in the project. It&amp;rsquo;s also possible because of funders committing resources to broaden participation and inclusion - in particular, the
&lt;a href="https://2i2c.org/collaborators/bids/" >Berkeley Institute for Data Science&lt;/a> and
&lt;a href="https://2i2c.org/collaborators/numfocus/" >NumFOCUS&lt;/a> for their original support of our Outreachy interns and the
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI EOSS grant series&lt;/a> for funding the original Contributor in Residence.&lt;/p>
&lt;h2 id="whats-next">
What&amp;rsquo;s next
&lt;a class="header-anchor" href="#whats-next">#&lt;/a>
&lt;/h2>&lt;p>With this core support, 2i2c turns towards its
&lt;a href="https://2i2c.org/infrastructure/#kinds-of-hubs" >JupyterHub pilot deployments&lt;/a> to build early prototypes that serve research and education, and to build organizational models that sustain these hubs and their development. If you or your organization think you’d be a good fit for these pilots, please
&lt;a href="https://2i2c.org/blog/czi-core-support/mailto:hello@2i2c.org" >reach out to 2i2c&lt;/a> and let us know!&lt;/p>
&lt;p>Many thanks again to CZI for this support - we believe that it is an excellent investment in the Jupyter community and in open source communities more generally. We also believe it will lead to major advancements in supporting interactive computing workflows for research and education. We look forward to what the next three years will bring!&lt;/p></description></item><item><title>Hello World</title><link>https://2i2c.org/blog/hello-world/</link><pubDate>Tue, 10 Nov 2020 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/hello-world/</guid><description>&lt;p>👋 hey everyone!&lt;/p>
&lt;p>We&amp;rsquo;d like to announce the creation of a new non-profit organization&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> that we call &lt;strong>2i2c&lt;/strong>.&lt;/p>
&lt;p>2i2c stands for &lt;strong>The International Interactive Computing Collaboration&lt;/strong>. It is a non-profit dedicated to making open tools for interactive computing more accessible and more powerful for the research and education communities.&lt;/p>
&lt;p>This is a short post about why we created 2i2c, what we hope that it will do, and what we are up to next. If you&amp;rsquo;d prefer to watch a video instead of read a blog post, check out
&lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/209/2i2c-sustaining-open-source-through-hosted-jupyter-infrastructure-for-research-and-education/" target="_blank" rel="noopener" >this talk about 2i2c&lt;/a> at JupyterCon 2020:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/YjonPLxDiwM?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;h2 id="why-create-2i2c">
Why create 2i2c?
&lt;a class="header-anchor" href="#why-create-2i2c">#&lt;/a>
&lt;/h2>&lt;p>The founding team of 2i2c has spent the last several years running projects that use interactive computing for research and education, including
&lt;a href="https://2i2c.org/founders#datahub" >bringing data science education to thousands of students&lt;/a>, connecting
&lt;a href="https://2i2c.org/founders#pangeo" >geospatial researchers with large datasets and computational resources in the cloud&lt;/a>, and providing
&lt;a href="https://2i2c.org/founders#syzygy" >federated online environment hubs to schools across Canada&lt;/a>, to name a few.&lt;/p>
&lt;p>Over time we realized that, while infrastructure for interactive computing could be a huge benefit to research and education, it also required a fair amount of expertise to configure, deploy, and develop. We wished for other organizations to enjoy the same success that we had found, but learned that for many, deploying their own infrastructure was a non-starter to adoption. Instead, many were turning to proprietary or vendor-specific tooling.&lt;/p>
&lt;p>We created 2i2c so that these organizations can use entirely open-source tools without hiring and training their own dev-ops and infrastructure talent, and so that &lt;em>development&lt;/em> and &lt;em>support&lt;/em> of open tools for interactive computing continues to represent the interests of research and education.&lt;/p>
&lt;h2 id="why-a-non-profit">
Why a non-profit?
&lt;a class="header-anchor" href="#why-a-non-profit">#&lt;/a>
&lt;/h2>&lt;p>It may sound strange to create a non-profit initiative when there are many VC-funded startups and large tech companies offering notebook services these days. However, we think that a non-profit organization is the right approach to balance the interests of all the stakeholders that we wish to serve. We hope that 2i2c will be a partner to:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Research and educational communities&lt;/strong>, who can rely on 2i2c to provide them cutting-edge infrastructure for interactive computing that is 💯 open source.&lt;/li>
&lt;li>&lt;strong>Researchers and educators who need development&lt;/strong>, who can rely on 2i2c as a collaborator that offers development and expertise in open-source infrastructure to push the cutting edge of interactive computing in the cloud.&lt;/li>
&lt;li>&lt;strong>Open source communities&lt;/strong>, who can count on 2i2c support and grow the communities that underlie the tools that we deploy.&lt;/li>
&lt;li>&lt;strong>Cloud providers&lt;/strong>, who wish to help the research and educational community via their infrastructure.&lt;/li>
&lt;li>&lt;strong>Supporters of open source&lt;/strong> who wish to support interactive computing for research and education via a non-profit dedicated to exactly this mission.&lt;/li>
&lt;/ul>
&lt;p>As a non-profit initiative, 2i2c is dedicated to supporting an ecosystem of tools and stakeholders across the open source community, and to ensuring that those tools are well-suited for research and education. We believe strongly in mission-driven work, and non-profit status will ensure that the work that we do is always aligned with our mission and values.&lt;/p>
&lt;h2 id="what-are-we-going-to-do">
What are we going to do?
&lt;a class="header-anchor" href="#what-are-we-going-to-do">#&lt;/a>
&lt;/h2>&lt;p>With all of that in mind, what is 2i2c actually going to do? We are still working out the details, but here&amp;rsquo;s a rough picture:&lt;/p>
&lt;p>Offer
&lt;a href="https://2i2c.org/infrastructure" >&lt;strong>hosted interactive computing environments on cloud infrastructure&lt;/strong>&lt;/a>. These will
&lt;a href="https://2i2c.org/right-to-replicate/" >be entirely open source&lt;/a> and vendor-neutral, and customizable for the communities that are using them. They&amp;rsquo;ll be offered either as a fee-for-service model and/or subsidized through grants and donations. We wish to build upon the success of JupyterHub as a gateway to computational resources and environments, learning environments, and communities of users. For more information about the vision and values of our hosted infrastructure, see
&lt;a href="https://2i2c.org/right-to-replicate/" >the 2i2c &lt;strong>Right to Replicate&lt;/strong> document&lt;/a>.&lt;/p>
&lt;p>Provide
&lt;a href="https://2i2c.org/infrastructure#research-development-hubs" >&lt;strong>collaboration and development for interactive computing in research and education&lt;/strong>&lt;/a>. Beyond providing hub infrastructure, there are many ways in which solving problems in research and education can lead to better tools, infrastructure, and workflows in the open source community. For example - how can we generalize a community&amp;rsquo;s solution to scalable computing so that it can be useful for other use-cases as well? We hope that 2i2c can be an aggregator and integrator of many perspectives in research and education, and build tools that are maximally useful across communities.&lt;/p>
&lt;p>Provide
&lt;a href="https://2i2c.org/service/#jupyter" >&lt;strong>core development and community support&lt;/strong>&lt;/a> for open source projects that we use. While many organizations &lt;em>use&lt;/em> Jupyter technology in their projects, it is also crucial that they &lt;em>give back&lt;/em> to those tools in order to keep the ecosystem healthy. As a mission-driven non-profit, 2i2c has a core goal in not only deploying and customizing open source tools, but also providing core support for them.&lt;/p>
&lt;h2 id="next-steps">
Next steps
&lt;a class="header-anchor" href="#next-steps">#&lt;/a>
&lt;/h2>&lt;p>2i2c is a young organization, but we already have a few exciting ideas to work towards in the coming months. Here&amp;rsquo;s an idea of what we&amp;rsquo;ll be up to next.&lt;/p>
&lt;p>Our first step is to &lt;strong>understand how interactive computing can best-serve the research and education communities&lt;/strong>. We know that interactive computing tools work in our specific use-cases, but how do these generalize to other domains or types of organizations? Moreover, how can we improve the open source tools to make them even more customizable for each community?&lt;/p>
&lt;p>We&amp;rsquo;ll begin answering this question through several focused JupyterHub pilots aimed at different use-cases across research and education:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>A &amp;ldquo;Hubs for All&amp;rdquo; pilot for education&lt;/strong>. This will focus on making standard educational environments via JupyterHub accessible to a broad range of educational institutions, in particular, traditionally under-resourced institutions such as community colleges, state colleges, and HBCUs.&lt;/li>
&lt;li>&lt;strong>Research-focused hubs for earth analytics&lt;/strong>. Research requires more complex and customized infrastructure than education, and so we are piloting hub infrastructure for a few specific research communities to understand how we can meet their needs. We will use this to better-understand how 2i2c and support a diverse research community in the future.&lt;/li>
&lt;li>&lt;strong>JupyterHub development for the Pangeo Project&lt;/strong>. Pangeo has been a collaborator of 2i2c since day one, and we love its vision for large-scale earth analytics via cloud infrastructure. We plan to work closely with Pangeo leadership to work on early development of tools aimed at facilitating scalable computing for research on Pangeo infrastructure. More information about this to come soon.&lt;/li>
&lt;/ol>
&lt;p>We&amp;rsquo;ll also use these pilots to &lt;strong>develop an organizational sustainability model&lt;/strong> around this infrastructure. It takes expertise to manage and develop cloud infrastructure, and 2i2c wishes to pay market rates for its engineers. How can 2i2c offer services and development in a way that is sustainable both for itself and for other institutions? We&amp;rsquo;ll use these pilots to create a plan for both sustaining and scaling 2i2c&amp;rsquo;s ability to serve institutions and teams.&lt;/p>
&lt;h2 id="what-do-we-need">
What do we need?
&lt;a class="header-anchor" href="#what-do-we-need">#&lt;/a>
&lt;/h2>&lt;p>As a non-profit initiative, 2i2c has a long road ahead of it. We cannot take venture capital funding, so we have to raise funds the old-fashioned way. This means that:&lt;/p>
&lt;ul>
&lt;li>If you are at an organization interested in purchasing hosted JupyterHub environments from 2i2c, please
&lt;a href="https://2i2c.org/blog/hello-world/mailto:hello@2i2c.org" >send us an email &lt;i class="fas fa-envelope">&lt;/i>&lt;/a>.&lt;/li>
&lt;li>If you are a funder or are otherwise interested in supporting 2i2c with a donation or grant, please
&lt;a href="https://2i2c.org/blog/hello-world/mailto:hello@2i2c.org" >send us an email &lt;i class="fas fa-envelope">&lt;/i>&lt;/a>.&lt;/li>
&lt;li>If you have experience in sustaining service-based organizations such as 2i2c, and wish to offer your expertise or guidance, please
&lt;a href="https://2i2c.org/blog/hello-world/mailto:hello@2i2c.org" >send us an email &lt;i class="fas fa-envelope">&lt;/i>&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>Moreover, we&amp;rsquo;ll likely be hiring in the coming months for open source engineers, with a focus on data science, interactive computing, and the cloud. If you&amp;rsquo;re interested in working for an organization like 2i2c, please
&lt;a href="https://2i2c.org/blog/hello-world/mailto:hello@2i2c.org" >send us an email &lt;i class="fas fa-envelope">&lt;/i>&lt;/a>, and keep an eye on this space as we will post more information soon.&lt;/p>
&lt;h2 id="get-involved">
Get involved
&lt;a class="header-anchor" href="#get-involved">#&lt;/a>
&lt;/h2>&lt;p>If you&amp;rsquo;d like to get involved with the 2i2c team and community, we recommend two pathways for doing so.&lt;/p>
&lt;p>
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdW_bhVrXfgRYa9Ct6w399KQPILbU_3nKUF_tgnGZJbs91SXg/viewform?usp=sf_link" target="_blank" rel="noopener" >Subscribe to our mailing list&lt;/a>. We&amp;rsquo;ll use this to periodically send updates about what 2i2c is up to.&lt;/p>
&lt;p>
&lt;a href="https://forms.gle/f3rmHZCijK3bYAaA8" target="_blank" rel="noopener" >Join the 2i2c Slack&lt;/a>. We use Slack for team conversation, as well as for real-time conversations about tools, practices, and ideas around interactive computing for research and education.&lt;/p>
&lt;p>You can also say hello to us on Twitter at
&lt;a href="https://twitter.com/2i2c_org" target="_blank" rel="noopener" >@2i2c_org&lt;/a>.&lt;/p>
&lt;h2 id="wrapping-up">
Wrapping up
&lt;a class="header-anchor" href="#wrapping-up">#&lt;/a>
&lt;/h2>&lt;p>We are excited about 2i2c, and believe that it is the right kind of organization to create to support research and education, as well as open source communities in interactive computing. The road ahead is a difficult one, but we&amp;rsquo;re confident that we will hit our stride quickly. Stay tuned for more updates to come.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Support for organizational and strategic work like this is provided by a grant from
&lt;a href="https://2i2c.org/collaborators/czi/" >CZI&lt;/a>.&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;strong>EDIT 08-2021: We are now a fiscally-sponsored project of
&lt;a href="https://codeforscience.org" target="_blank" rel="noopener" >Code for Science and Society&lt;/a> and ICSI is no longer our host organization. We are leaving this section here for archival purposes, and to give credit to ICSI for their help in launching 2i2c&lt;/strong>. 2i2c&amp;rsquo;s host organization is the
&lt;a href="http://www.icsi.berkeley.edu/" target="_blank" rel="noopener" >International Computer Science Institute&lt;/a>, a 501(c)(3) charitable organization. We thank ICSI for its collaboration and leadership in launching 2i2c!&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>The Community Right to Replicate</title><link>https://2i2c.org/right-to-replicate/</link><pubDate>Thu, 28 Jun 2018 00:00:00 +0000</pubDate><guid>https://2i2c.org/right-to-replicate/</guid><description>&lt;p>&lt;em>This is part of
&lt;a href="https://2i2c.org/open-practices/" >our open practices&lt;/a>.&lt;/em>&lt;/p>
&lt;p>The Right to Replicate gives communities the right to &lt;strong>replicate their infrastructure in its entirety elsewhere, with or without 2i2c&lt;/strong>.&lt;/p>
&lt;p>This document describes 2i2c’s commitment to a community&amp;rsquo;s “right to replicate”, and how this translates into specific infrastructure commitments from 2i2c. We make these commitments because we believe that using infrastructure that follows these principles will lead to a more fair, just, equitable world. We also believe they are the right foundation for more productive and impactful research and education.&lt;/p>
&lt;p>2i2c is committed to running its own infrastructure on open-source tools and vendor-agnostic infrastructure, though it does not &lt;em>force&lt;/em> users to use only open-source tools in their own environments, code, and data. Below is a table describing how the Right to Replicate fits into 2i2c hub technology.&lt;/p>
&lt;p>(Definitions of &lt;code>MUST&lt;/code>, &lt;code>MUST NOT&lt;/code>, &lt;code>SHOULD&lt;/code>, &lt;code>MAY&lt;/code>, etc are defined in
&lt;a href="https://tools.ietf.org/html/rfc2119" target="_blank" rel="noopener" >RFC 2119&lt;/a>)&lt;/p>
&lt;style>
/* Copy over the styling from the old Wowchemy theme so it looks nice */
table tr:nth-child(odd) > td, table tr:nth-child(odd) > th {
background-color: #f9f9f9;
}
table th, table td {
border-top: 1px solid #ddd;
}
table tr:hover > td, table tr:hover > th {
background-color: #e5e5e5;
}
&lt;/style>
&lt;div id="rtr-table">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>User Code and Data&lt;/td>
&lt;td>&lt;strong>May&lt;/strong> be Open Source&lt;/td>
&lt;td>We encourage adopting and producing open source code and data, but this is up to the user. &lt;br /> e.g., licenses for user content/code&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>User Environment&lt;/td>
&lt;td>&lt;strong>Should&lt;/strong> be Open Source&lt;/td>
&lt;td>Strong preference for open source tools only, although in some cases user needs may override this. &lt;br /> e.g., Python, R, PyData stack.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2i2c Infrastructure&lt;/td>
&lt;td>&lt;strong>Must&lt;/strong> be Open Source&lt;/td>
&lt;td>Strong commitment to using only open source software. &lt;br /> e.g., JupyterHub, Kubernetes, Postgresql&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cloud Provider Infrastructure&lt;/td>
&lt;td>&lt;strong>Must&lt;/strong> be Portable&lt;/td>
&lt;td>See
&lt;a href="https://words.yuvi.in/post/oss-in-the-cloud/" target="_blank" rel="noopener" >this blog post&lt;/a> for more information.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>Below we describe our commitments in our own infrastructure stack in more detail.&lt;/p>
&lt;h2 id="how-2i2c-infrastructure-ensures-this-right">
How 2i2c infrastructure ensures this right
&lt;a class="header-anchor" href="#how-2i2c-infrastructure-ensures-this-right">#&lt;/a>
&lt;/h2>&lt;p>2i2c infrastructure and documentation for it MUST BE as transparent &amp;amp; accessible as possible, so communities can replicate our configuration without having to extract any ‘secret sauce’ from 2i2c. If they choose to, they can also inspect, audit &amp;amp; modify the infrastructure they are paying for and using.&lt;/p>
&lt;p>To ensure the Right to Replicate to our communities, 2i2c makes the following commitments to infrastructure we build and operate:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>We MUST use only open source software to run our infrastructure. By only using software that is available to everyone on the same terms, we can ensure that communities can replicate the infrastructure without having to negotiate licensing terms with proprietary software vendors. In addition, any changes we make to open source software will be made in public and/or contributed upstream, so communities continue to have access to them regardless of where their infrastructure is.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We MUST NOT directly depend on proprietary cloud vendor specific products or APIs. Instead, we use cloud-managed open source software, or hide the dependency behind a layer of abstraction. This ensures that communities can port their infrastructure to any cloud provider of their choice, or run it on their own hardware with purely open source software.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>This set of commitments acts as a business continuity plan for our partner communities, ensuring 2i2c will follow best practices within the open source, open education and open research ecosystems.&lt;/p></description></item><item><title>[Person's name] on [Topic]</title><link>https://2i2c.org/blog/reference-post/</link><pubDate>Wed, 01 Jan 1000 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/reference-post/</guid><description>&lt;p>One or two sentences describing a piece of content that you&amp;rsquo;d like to reference, its main takeaway, its author, and why it&amp;rsquo;s worth reading (add a link to it and the author&amp;rsquo;s name).&lt;/p>
&lt;p>Some things that stood out to us:&lt;/p>
&lt;p>Quotes, images, etc from the post that you&amp;rsquo;d like to highlight. Just one or two is fine, but add as much as you like. Make sure you&amp;rsquo;re using exact quotes!&lt;/p>
&lt;p>They mention ____ about ____&lt;/p>
&lt;blockquote>
&lt;p>Pull quote&lt;/p>
&lt;/blockquote>
&lt;p>They also talk about ____&lt;/p>
&lt;blockquote>
&lt;p>Pull quote&lt;/p>
&lt;/blockquote>
&lt;p>Read more in the original article:
&lt;a href="https://2i2c.org/blog/reference-post/[link]" >article title&lt;/a>.&lt;/p>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Bulleted list of people and organizations to thank, with links to their spaces.&lt;/li>
&lt;/ul></description></item><item><title>Enabling / creating / X outcome by doing Y thing</title><link>https://2i2c.org/blog/impact-post/</link><pubDate>Wed, 01 Jan 1000 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/impact-post/</guid><description>&lt;p>One or two sentences about what happened and who did it. Link to the appropriate people, orgs, etc!&lt;/p>
&lt;p>One or two sentences describing why this is important, why it&amp;rsquo;s valuable, or what it means.&lt;/p>
&lt;p>&lt;em>Embed any images, videos, or youtube videos that are relevant. Put images in a file in the same folder called &lt;code>featured.png&lt;/code> so it shows up as a feature preview.&lt;/em>&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Bulleted list of URLs where readers can learn more or follow along.&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Bulleted list of people and organizations to thank, with links to their spaces.&lt;/li>
&lt;/ul>
&lt;h2 id="extra-examples">
EXTRA EXAMPLES
&lt;a class="header-anchor" href="#extra-examples">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Service post: blog/2025/status-page/index.md&lt;/li>
&lt;li>Impact post: blog/2025/hackweek-shoutout/index.md&lt;/li>
&lt;/ul></description></item><item><title>Incident report: Brief description of the incident</title><link>https://2i2c.org/blog/incident-report/</link><pubDate>Wed, 01 Jan 1000 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/incident-report/</guid><description>&lt;p>On MMMM DD, YYYY our cloud infrastructure team experienced an incident with the XXXXX community hub. [See this issue for the full report](LINK TO ISSUE IN 2i2c-org/incident-reports).&lt;/p>
&lt;h2 id="what-happened">
What happened
&lt;a class="header-anchor" href="#what-happened">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>___ thing happened.&lt;/li>
&lt;li>This resulted in ___.&lt;/li>
&lt;li>It happened because ___.&lt;/li>
&lt;li>It was resolved by ___.&lt;/li>
&lt;/ul>
&lt;h2 id="what-we-learned">
What we learned
&lt;a class="header-anchor" href="#what-we-learned">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>We need to ___.&lt;/li>
&lt;li>We learned that ___.&lt;/li>
&lt;li>This will happen again if ___.&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Thanks to ___ for helping us identify the problem.&lt;/li>
&lt;li>Thanks to ___ for helping us implement a solution.&lt;/li>
&lt;/ul>
&lt;h2 id="extra-examples">
EXTRA EXAMPLES
&lt;a class="header-anchor" href="#extra-examples">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>contentblog/2025/incident-ucmerced-user-throttling/index.mdindex.md&lt;/li>
&lt;/ul></description></item><item><title>TIL: How to do XYZ thing for Y outcome</title><link>https://2i2c.org/blog/learning-post/</link><pubDate>Wed, 01 Jan 1000 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/learning-post/</guid><description>&lt;p>One or two sentences setting context about a common problem.&lt;/p>
&lt;p>One to many sections describing something we&amp;rsquo;ve tried and what we&amp;rsquo;ve learned in solving that problem.&lt;/p>
&lt;p>&lt;em>Embed any images, videos, or youtube videos that are relevant. Put images in a file in the same folder called &lt;code>featured.png&lt;/code> so it shows up as a feature preview.&lt;/em>&lt;/p>
&lt;h2 id="learn-more">
Learn more
&lt;a class="header-anchor" href="#learn-more">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Bulleted list of URLs where readers can learn more or follow along.&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">
Acknowledgements
&lt;a class="header-anchor" href="#acknowledgements">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Bulleted list of people and organizations to thank, with links to their spaces.&lt;/li>
&lt;/ul>
&lt;h2 id="extra-examples">
EXTRA EXAMPLES
&lt;a class="header-anchor" href="#extra-examples">#&lt;/a>
&lt;/h2>&lt;p>Here&amp;rsquo;s a blog post with an example of what we&amp;rsquo;re looking for: contentblog/2025/github-action-secrets-forked-repositories/index.mdindex.md&lt;/p></description></item><item><title/><link>https://2i2c.org/about/funding/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/about/funding/</guid><description>
&lt;h1 id="how-we-are-funded">
How we are funded
&lt;a class="header-anchor" href="#how-we-are-funded">#&lt;/a>
&lt;/h1>&lt;p>To sustain and grow our operations, 2i2c receives funding from the following sources:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Membership&lt;/strong> - Communities join 2i2c&amp;rsquo;s network to collaborate with our team and
&lt;a href="https://2i2c.org/members/" >peer organizations&lt;/a>, pool resources toward shared open source needs, and help drive the direction of the tools that research depends on. It includes managed open infrastructure via our
&lt;a href="https://2i2c.org/platform/" >community hub platform&lt;/a>. See
&lt;a href="https://2i2c.org/membership/" >our membership page&lt;/a> for more information.&lt;/li>
&lt;li>&lt;strong>Co-funded development projects&lt;/strong> - Members and funders invest in specific development work that addresses shared infrastructure challenges on
&lt;a href="https://2i2c.org/roadmap/" target="_blank" rel="noopener" >our roadmap&lt;/a>, with improvements flowing back upstream to the open source communities we all rely on.&lt;/li>
&lt;li>&lt;strong>Core organizational support&lt;/strong> - We raise philanthropic funding to cover core organizational costs. Our long-term goal is to fund operations entirely through the membership and co-development flywheel, and we&amp;rsquo;re actively working toward that.&lt;/li>
&lt;/ul>
&lt;div class="alert alert-">
&lt;div>
&lt;a href="https://compass.2i2c.org/organization/service-model/" target="_blank" rel="noopener" >Our service model&lt;/a> describes how membership and co-funded projects work together.
&lt;/div>
&lt;/div>
&lt;h2 id="our-funders-and-collaborators">
Our funders and collaborators
&lt;a class="header-anchor" href="#our-funders-and-collaborators">#&lt;/a>
&lt;/h2>&lt;p>See our
&lt;a href="https://2i2c.org/collaborators/" >collaborators and funders page&lt;/a> for a full list of organizations that have supported 2i2c. You can filter by &lt;strong>Funders&lt;/strong> to see philanthropic supporters specifically.&lt;/p></description></item><item><title/><link>https://2i2c.org/open-practices/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/open-practices/</guid><description/></item><item><title/><link>https://2i2c.org/open-technology/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/open-technology/</guid><description>
&lt;h1 id="our-commitment-to-open-technology">
Our commitment to open technology
&lt;a class="header-anchor" href="#our-commitment-to-open-technology">#&lt;/a>
&lt;/h1>&lt;p>&lt;em>This is part of
&lt;a href="https://2i2c.org/open-practices/" >our open practices&lt;/a>.&lt;/em>&lt;/p>
&lt;p>This page describes 2i2c&amp;rsquo;s commitment to developing and contributing to infrastructure that is open source now and into the future. More context can be found
&lt;a href="https://2i2c.org/blog/community-ownership/" >in this blog post&lt;/a>.&lt;/p>
&lt;p>&lt;em>Definitions of MUST, MUST NOT, SHOULD, MAY, etc are defined in
&lt;a href="https://tools.ietf.org/html/rfc2119" target="_blank" rel="noopener" >RFC 2119&lt;/a>&lt;/em>&lt;/p>
&lt;ol>
&lt;li>All engineering artifacts (code, documentation, etc) produced by 2i2c&amp;rsquo;s engineering team MUST be licensed under an open source license approved by a non-profit organization that is not 2i2c.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Open Source Projects originating at 2i2c, or stewarded by 2i2c, MUST NOT require a
&lt;a href="https://en.wikipedia.org/wiki/Contributor_License_Agreement" target="_blank" rel="noopener" >Contributor Licensing Agreement&lt;/a> that includes Copyright Assignment to 2i2c. &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/li>
&lt;li>The list of external organizations that define licenses we accept are&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>:
&lt;ol>
&lt;li>
&lt;a href="https://opensource.org/" target="_blank" rel="noopener" >the Open Source Initiative&lt;/a>&lt;/li>
&lt;li>the
&lt;a href="https://ethicalsource.dev/" target="_blank" rel="noopener" >Organization for Ethical Source&lt;/a>.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Modifying (1), (2), or (3) MUST be done through a 2/3 majority vote of 2i2c staff. &lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>&lt;/li>
&lt;/ol>
&lt;p>These commitments ensure 2i2c&amp;rsquo;s ongoing support for open source technology and community-owned infrastructure, and constrain us from &lt;em>changing&lt;/em> this commitment in a way that would harm our communities. We hope that this builds trust with our communities to rely on 2i2c as a provider and a steward of their infrastructure.
&lt;a href="https://2i2c.org/blog/community-ownership/" >See this blog post for more context&lt;/a>&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>This constrains us from writing proprietary engineering code or creating proprietary products. Note that this only applies to 2i2c artifacts, and not those that are created by our member communities.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Protects from the most common &amp;ldquo;bait and switch&amp;rdquo; licensing problem, where being the sole copyright owner of a project allows us to change the license in the future because we&amp;rsquo;ve retained ownership over all the code.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>This constrains us from creating a new non profit that rubberstamps a license that is fundamentally proprietary, while still allowing for experimentation with licenses that try to innovate on OSI.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>This sets an intentionally-high bar for modifying this policy. In 2025 we aim to re-establish our steering council along with a community advisory board that is tasked with defining policy like this. In the interrim, we choose &lt;code>2/3 of the organization&lt;/code> to be a reasonably high bar for changing this policy&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title/><link>https://2i2c.org/pilot-hubs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/pilot-hubs/</guid><description>&lt;meta http-equiv="refresh" content="0; URL='http://infrastructure.2i2c.org'" /></description></item><item><title/><link>https://2i2c.org/pilot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/pilot/</guid><description>&lt;meta http-equiv="refresh" content="0; URL='http://docs.2i2c.org'" /></description></item><item><title/><link>https://2i2c.org/team-compass/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/team-compass/</guid><description>&lt;meta http-equiv="refresh" content="0; URL='http://team-compass.2i2c.org'" /></description></item><item><title>Alfred P. Sloan Foundation</title><link>https://2i2c.org/collaborators/sloan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/sloan/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/sloan/featured_hud7daa1f0d9f54c93c0a3b65c7b4e6415_14719_b50b0f514c0c1cc9b0ec23a4d7edaa28.webp 400w,
/collaborators/sloan/featured_hud7daa1f0d9f54c93c0a3b65c7b4e6415_14719_82decf827aeb933d3c00ab1d98f8e2c1.webp 760w,
/collaborators/sloan/featured_hud7daa1f0d9f54c93c0a3b65c7b4e6415_14719_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/sloan/featured_hud7daa1f0d9f54c93c0a3b65c7b4e6415_14719_b50b0f514c0c1cc9b0ec23a4d7edaa28.webp"
width="500"
height="273"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The
&lt;a href="https://sloan.org/" target="_blank" rel="noopener" >Alfred P. Sloan Foundation&lt;/a> is a philanthropic foundation that supports research and education in science, technology, engineering, mathematics, and economics.&lt;/p>
&lt;h2 id="grants-from-this-funder">
Grants from this funder
&lt;a class="header-anchor" href="#grants-from-this-funder">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Executable Books Project&lt;/strong>: Grant funding to develop tools for building beautiful, publication-quality books and documents from computational content, including Jupyter Book and MyST Markdown&lt;/li>
&lt;/ul></description></item><item><title>Berkeley Institute for Data Science</title><link>https://2i2c.org/collaborators/bids/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/bids/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/bids/featured_hua6f16c55280aef7bd69eff8627e93f3c_32258_ee212cf9d165c2e5c88067482f033b54.webp 400w,
/collaborators/bids/featured_hua6f16c55280aef7bd69eff8627e93f3c_32258_c5def65b873cd46be04b3fc268901462.webp 760w,
/collaborators/bids/featured_hua6f16c55280aef7bd69eff8627e93f3c_32258_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/bids/featured_hua6f16c55280aef7bd69eff8627e93f3c_32258_ee212cf9d165c2e5c88067482f033b54.webp"
width="350"
height="253"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The
&lt;a href="https://bids.berkeley.edu/" target="_blank" rel="noopener" >Berkeley Institute for Data Science&lt;/a> is a research institute at UC Berkeley that advances data science education, research, and open source development.&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://bsky.app/profile/ucbids.bsky.social" target="_blank" rel="noopener" >BlueSky&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://www.linkedin.com/company/berkeley-institute-for-data-science-bids/" target="_blank" rel="noopener" >LinkedIn&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://bids.berkeley.edu/join/mailing-lists" target="_blank" rel="noopener" >Newsletter&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Chan Zuckerberg Initiative</title><link>https://2i2c.org/collaborators/czi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/czi/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/czi/featured_hu8d3bae804c2797e8c24a643b52df5222_53852_3322900857a5aa05fb648e68a4812524.webp 400w,
/collaborators/czi/featured_hu8d3bae804c2797e8c24a643b52df5222_53852_3263466e28b45bde34d211c340140f79.webp 760w,
/collaborators/czi/featured_hu8d3bae804c2797e8c24a643b52df5222_53852_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/czi/featured_hu8d3bae804c2797e8c24a643b52df5222_53852_3322900857a5aa05fb648e68a4812524.webp"
width="760"
height="399"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The
&lt;a href="https://chanzuckerberg.com/" target="_blank" rel="noopener" >Chan Zuckerberg Initiative&lt;/a> is a philanthropic organization that supports open source software development and scientific research to advance human health and education.&lt;/p>
&lt;p>BlueSky:
&lt;a href="https://bsky.app/profile/cziscience.bsky.social" target="_blank" rel="noopener" >@cziscience.bsky.social&lt;/a>&lt;/p>
&lt;h2 id="grants-from-this-funder">
Grants from this funder
&lt;a class="header-anchor" href="#grants-from-this-funder">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Core Support (2021)&lt;/strong>:
&lt;a href="https://2i2c.org/blog/czi-core-support/" >2i2c receives core support from CZI&lt;/a> - ~$1.4M over three years to establish 2i2c&amp;rsquo;s foundational operations&lt;/li>
&lt;li>&lt;strong>Extended Support (2024)&lt;/strong>:
&lt;a href="https://2i2c.org/blog/funding-czi/" >Support from CZI to sustain 2i2c&amp;rsquo;s mission&lt;/a> - ~$700K over one year for continued operations&lt;/li>
&lt;li>&lt;strong>CZI Global Communities Grant (2022)&lt;/strong>:
&lt;a href="https://2i2c.org/blog/czi-global-communities-announcement/" >New project: Open science cloud infrastructure and training for communities in Latin America and Africa&lt;/a> - Support for international collaborative programs&lt;/li>
&lt;/ul></description></item><item><title>Cloudbank</title><link>https://2i2c.org/collaborators/cal-icor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/cal-icor/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/cal-icor/featured_hu8173cb96b7d0e6cf6d062ed5813a28e1_42417_b85a05696623e4aee486ee47c7c68767.webp 400w,
/collaborators/cal-icor/featured_hu8173cb96b7d0e6cf6d062ed5813a28e1_42417_3bf104ac5b9a5b9ed2fb6e53da2dec9c.webp 760w,
/collaborators/cal-icor/featured_hu8173cb96b7d0e6cf6d062ed5813a28e1_42417_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/cal-icor/featured_hu8173cb96b7d0e6cf6d062ed5813a28e1_42417_b85a05696623e4aee486ee47c7c68767.webp"
width="760"
height="498"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://www.cal-icor.org/" target="_blank" rel="noopener" >CAL-ICOR&lt;/a> is a &amp;ldquo;Browser-based Interactive Programming and Data Science Platform for Every California Student&amp;rdquo;. It gives educators and institutions a shared, scalable JupyterHub platform that removes hardware barriers, supports modern data science instruction, and expands access across the state.&lt;/p>
&lt;p>From their website:&lt;/p>
&lt;blockquote>
&lt;p>The California Interactive Computing Open Resource (Cal-ICOR) initiative is a statewide effort to expand high-quality, accessible data science education across the University of California, California State University, and California Community College systems. Led by UC Berkeley and supported by the California Education Learning Lab, Cal-ICOR builds shared infrastructure, curriculum, and instructor support that lower the barriers to offering data-enabled learning, no matter the size, resources, or technical capacity of an institution.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Our mission is simple: ensure that every student in California has access to the tools, skills, and learning environments that prepare them for data-rich careers and civic participation.&lt;/p>
&lt;/blockquote></description></item><item><title>Cloudbank</title><link>https://2i2c.org/collaborators/cloudbank/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/cloudbank/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/cloudbank/featured_hu47b0024f802a2569dc8459bb45285f77_14544_505142d1d03b49aba40a39c3543786fb.webp 400w,
/collaborators/cloudbank/featured_hu47b0024f802a2569dc8459bb45285f77_14544_19848883e58d82235033f5dce74db4d8.webp 760w,
/collaborators/cloudbank/featured_hu47b0024f802a2569dc8459bb45285f77_14544_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/cloudbank/featured_hu47b0024f802a2569dc8459bb45285f77_14544_505142d1d03b49aba40a39c3543786fb.webp"
width="411"
height="88"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Cloudbank enables and provides &amp;ldquo;anaged Services to Simplify Cloud Access for Computer Science Research and Education&amp;rdquo;.&lt;/p>
&lt;p>In particular, the
&lt;a href="https://www.cloudbank.org/training/access-cloudbank-classroom" target="_blank" rel="noopener" >CloudBank Classroom&lt;/a> project is driving a lot of collaboration with 2i2c via our shared work on JupyterHubs for education.&lt;/p></description></item><item><title>Code for Science and Society</title><link>https://2i2c.org/collaborators/css/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/css/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/css/featured_hufc9627256c462540fa612aa7964cd457_19837_0d1ef081b9453971d395bc7f294d5cb8.webp 400w,
/collaborators/css/featured_hufc9627256c462540fa612aa7964cd457_19837_4b31ccd1043bf0fe28c4f0afdcc0226b.webp 760w,
/collaborators/css/featured_hufc9627256c462540fa612aa7964cd457_19837_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/css/featured_hufc9627256c462540fa612aa7964cd457_19837_0d1ef081b9453971d395bc7f294d5cb8.webp"
width="448"
height="450"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://codeforscience.org/" target="_blank" rel="noopener" >Code for Science &amp;amp; Society&lt;/a> is a nonprofit organization that serves as fiscal sponsor for open science projects and empowers communities to build innovative technology for the public good.&lt;/p></description></item><item><title>CryoCloud</title><link>https://2i2c.org/collaborators/cryocloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/cryocloud/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/cryocloud/featured_huefe566fc49023524a28541ff6ed4fc7c_149341_a710f807fb1cc5e9a92ece53f15e5696.webp 400w,
/collaborators/cryocloud/featured_huefe566fc49023524a28541ff6ed4fc7c_149341_7acf18a55baf7a5ac4296a3c33e189cf.webp 760w,
/collaborators/cryocloud/featured_huefe566fc49023524a28541ff6ed4fc7c_149341_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/cryocloud/featured_huefe566fc49023524a28541ff6ed4fc7c_149341_a710f807fb1cc5e9a92ece53f15e5696.webp"
width="600"
height="451"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://cryointhecloud.com/" target="_blank" rel="noopener" >CryoCloud&lt;/a> is a collaborative cloud platform designed to accelerate discovery and enhance collaboration for NASA Cryosphere communities. CryoCloud provides cloud-based computational tools, shared resources, and educational materials to support researchers studying ice-related environments and climate systems.&lt;/p></description></item><item><title>Design and brand guidelines</title><link>https://2i2c.org/brand/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/brand/</guid><description>
&lt;h2 id="brand-guidelines">
Brand guidelines
&lt;a class="header-anchor" href="#brand-guidelines">#&lt;/a>
&lt;/h2>&lt;p>Our
&lt;a href="https://docs.google.com/presentation/d/1O36_yjTSKiXB9_yAnj4QnF_sob1z_GQmcfIVrZ_ymeY/edit?usp=drive_link" target="_blank" rel="noopener" >Brand Guidelines document&lt;/a> describes 2i2c&amp;rsquo;s overall brand and visual style.&lt;/p>
&lt;h2 id="logos">
Logos
&lt;a class="header-anchor" href="#logos">#&lt;/a>
&lt;/h2>
&lt;h3 id="square-logo-default">
Square logo (default)
&lt;a class="header-anchor" href="#square-logo-default">#&lt;/a>
&lt;/h3>&lt;p>&lt;strong>Logo&lt;/strong>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/brand/logo_hu36debad0413791c1652874e9fef0ff40_9806_7629e767678650b8e0f898eef5928d92.webp 400w,
/brand/logo_hu36debad0413791c1652874e9fef0ff40_9806_f1748e079dc792737ba4eb262f6ad001.webp 760w,
/brand/logo_hu36debad0413791c1652874e9fef0ff40_9806_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/brand/logo_hu36debad0413791c1652874e9fef0ff40_9806_7629e767678650b8e0f898eef5928d92.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://2i2c.org/brand/logo.svg" >Download SVG&lt;/a> |
&lt;a href="https://2i2c.org/brand/logo.pdf" >Download PDF&lt;/a>&lt;/p>
&lt;p>&lt;strong>Logo light&lt;/strong>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/brand/logo-light_hueb1bad3631764dbacb3dd8030b15ce24_10159_0ec879ad200a478f1d0404cb535b9deb.webp 400w,
/brand/logo-light_hueb1bad3631764dbacb3dd8030b15ce24_10159_b1e9729d440b4603bacf2e3d320f1761.webp 760w,
/brand/logo-light_hueb1bad3631764dbacb3dd8030b15ce24_10159_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/brand/logo-light_hueb1bad3631764dbacb3dd8030b15ce24_10159_0ec879ad200a478f1d0404cb535b9deb.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>&lt;strong>Logo black&lt;/strong>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/brand/logo-black_hub18b22c66baebcf354cabfed83ecbd5b_9448_8a5a33e71dc8c16bb6aeff418ce29367.webp 400w,
/brand/logo-black_hub18b22c66baebcf354cabfed83ecbd5b_9448_4feaa48c0b990c5da5516afab37c4135.webp 760w,
/brand/logo-black_hub18b22c66baebcf354cabfed83ecbd5b_9448_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/brand/logo-black_hub18b22c66baebcf354cabfed83ecbd5b_9448_8a5a33e71dc8c16bb6aeff418ce29367.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="wide-logos">
Wide logos
&lt;a class="header-anchor" href="#wide-logos">#&lt;/a>
&lt;/h3>&lt;p>&lt;strong>Wide logo&lt;/strong>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/brand/logo-wide_hu8532812d1349f55ac5efca03688b678a_25018_f179401793dfa4e2af060cba99114759.webp 400w,
/brand/logo-wide_hu8532812d1349f55ac5efca03688b678a_25018_5ed1e15cd78b0aa6f3fae2c7e4a833f7.webp 760w,
/brand/logo-wide_hu8532812d1349f55ac5efca03688b678a_25018_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/brand/logo-wide_hu8532812d1349f55ac5efca03688b678a_25018_f179401793dfa4e2af060cba99114759.webp"
width="760"
height="214"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://2i2c.org/brand/logo-wide.svg" >Download SVG&lt;/a> |
&lt;a href="https://2i2c.org/brand/logo-wide.pdf" >Download PDF&lt;/a>&lt;/p>
&lt;p>&lt;strong>Wide logo light&lt;/strong>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/brand/logo-wide-light_hu25be879bcef72fb1639087b98ce8af2b_25116_5b6c3d2cbef539cd377c525f4f029939.webp 400w,
/brand/logo-wide-light_hu25be879bcef72fb1639087b98ce8af2b_25116_bedfa63be2d2948c2bdf75427e89b74f.webp 760w,
/brand/logo-wide-light_hu25be879bcef72fb1639087b98ce8af2b_25116_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/brand/logo-wide-light_hu25be879bcef72fb1639087b98ce8af2b_25116_5b6c3d2cbef539cd377c525f4f029939.webp"
width="760"
height="214"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="colors">
Colors
&lt;a class="header-anchor" href="#colors">#&lt;/a>
&lt;/h2>
&lt;h3 id="primary-colors">
Primary colors
&lt;a class="header-anchor" href="#primary-colors">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>Big Blue: &lt;code>#1D4EF5&lt;/code>&lt;/li>
&lt;li>Pale Blue: &lt;code>#F2F5FC&lt;/code>&lt;/li>
&lt;li>Black: &lt;code>#000000&lt;/code>&lt;/li>
&lt;/ul>
&lt;h3 id="secondary-colors">
Secondary colors
&lt;a class="header-anchor" href="#secondary-colors">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;p>Midnight: &lt;code>#230344&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Mauve: &lt;code>#B86BFC&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Forest: &lt;code>#057761&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Light Green: &lt;code>#0CEFAE&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Magenta: &lt;code>#C60A76&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Pink: &lt;code>#FF808B&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Coral: &lt;code>#FF4E4F&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Yellow: &lt;code>#FFDE17&lt;/code>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="design-assets">
Design assets
&lt;a class="header-anchor" href="#design-assets">#&lt;/a>
&lt;/h2>&lt;p>&lt;em>These two links are only accessible to 2i2c team members.&lt;/em>&lt;/p>
&lt;p>
&lt;a href="https://www.figma.com/file/pp9e4cNYthJnm8u6MzpUdp/Logo-and-brand-assets?type=design&amp;amp;node-id=0%3A1&amp;amp;mode=design&amp;amp;t=Rtl3KwVFv63I4sj9-1" target="_blank" rel="noopener" >Figma canvas with design assets&lt;/a>&lt;/p>
&lt;p>
&lt;a href="https://drive.google.com/drive/folders/1YMb1nEW-tX8DaNPzKx5IOJ747BPQDDDe?usp=drive_link" target="_blank" rel="noopener" >Google Drive folder with design assets&lt;/a>&lt;/p>
&lt;script>
// This is a hacky little script to add a circle to preview the color for in-line color snippets.
function addColorCircle() {
document.querySelectorAll("code").forEach((el) => {
color = el.textContent;
if (color.startsWith("#")) {
el.insertAdjacentHTML('afterbegin', `&lt;span class='colorDemo' style='background-color: ${color}'>&lt;/span>`);
}
});
}
addColorCircle();
&lt;/script>
&lt;style>
.colorDemo {
width: .7rem;
height: .7rem;
margin-right: .2rem;
display: inline-flex;
border-radius:1rem;
}
figure img {
height: 5rem;
width: auto;
float: left;
}
&lt;/style></description></item><item><title>Development Seed</title><link>https://2i2c.org/collaborators/devseed/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/devseed/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/devseed/featured_hua262d7d45b176f73fbd49b5b6a4fa1db_18011_df0b0fa426b3f8b69f582681bb7ceec7.webp 400w,
/collaborators/devseed/featured_hua262d7d45b176f73fbd49b5b6a4fa1db_18011_090d57dbd5da8b5984b80ed47fea6e4c.webp 760w,
/collaborators/devseed/featured_hua262d7d45b176f73fbd49b5b6a4fa1db_18011_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/devseed/featured_hua262d7d45b176f73fbd49b5b6a4fa1db_18011_df0b0fa426b3f8b69f582681bb7ceec7.webp"
width="280"
height="280"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://developmentseed.org/" target="_blank" rel="noopener" >Development Seed&lt;/a> is a data and software engineering company that specializes in using satellite imagery, machine learning, and open data.&lt;/p>
&lt;p>
&lt;a href="https://www.linkedin.com/company/development-seed/" target="_blank" rel="noopener" >LinkedIn&lt;/a>&lt;/p></description></item><item><title>EarthScope Consortium</title><link>https://2i2c.org/collaborators/earthscope/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/earthscope/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/earthscope/featured_hu36c55580255bcf9eb7050b59282d8853_81288_ff4cd70b961b1b9987f9a706657f3bc0.webp 400w,
/collaborators/earthscope/featured_hu36c55580255bcf9eb7050b59282d8853_81288_d2a5ed078554a6285b800b3ba8918b5a.webp 760w,
/collaborators/earthscope/featured_hu36c55580255bcf9eb7050b59282d8853_81288_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/earthscope/featured_hu36c55580255bcf9eb7050b59282d8853_81288_ff4cd70b961b1b9987f9a706657f3bc0.webp"
width="760"
height="301"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://www.earthscope.org/" target="_blank" rel="noopener" >EarthScope Consortium&lt;/a> is a university-based organization that supports transformative global geophysical research and education. They operate NSF&amp;rsquo;s GAGE and SAGE Facilities, providing geophysical instrumentation support, data services, and educational resources to the scientific community.&lt;/p></description></item><item><title>GeoJupyter</title><link>https://2i2c.org/collaborators/geojupyter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/geojupyter/</guid><description>&lt;p>
&lt;a href="https://geojupyter.org/" target="_blank" rel="noopener" >GeoJupyter&lt;/a> is an open and collaborative community-driven effort to reimagine geospatial interactive computing experiences for education, research, and industry.&lt;/p></description></item><item><title>GESIS</title><link>https://2i2c.org/collaborators/gesis/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/gesis/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/gesis/featured_hua7281b7559fc63407c9a579ceecaffe4_5231_2e1ea5da51d1e074c14d2567bace9332.webp 400w,
/collaborators/gesis/featured_hua7281b7559fc63407c9a579ceecaffe4_5231_a38b835045c706d17e4ba77cb705ed36.webp 760w,
/collaborators/gesis/featured_hua7281b7559fc63407c9a579ceecaffe4_5231_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/gesis/featured_hua7281b7559fc63407c9a579ceecaffe4_5231_2e1ea5da51d1e074c14d2567bace9332.webp"
width="225"
height="225"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://www.gesis.org/" target="_blank" rel="noopener" >GESIS - Leibniz Institute for the Social Sciences&lt;/a> is a research infrastructure organization that provides data, tools, and services for the social sciences. They also work with
&lt;a href="https://www.cessda.eu" target="_blank" rel="noopener" >CESSDA&lt;/a>.&lt;/p>
&lt;h2 id="grants-that-fund-this-collaboration">
Grants that fund this collaboration
&lt;a class="header-anchor" href="#grants-that-fund-this-collaboration">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>In cooperation with NFDI4DS, (project number:
&lt;a href="https://gepris.dfg.de/gepris/projekt/460234259?context=projekt&amp;amp;task=showDetail&amp;amp;id=460234259&amp;amp;" target="_blank" rel="noopener" >460234259&lt;/a>)&lt;/li>
&lt;/ul></description></item><item><title>Give us an idea for the 2i2c blog</title><link>https://2i2c.org/blog/idea/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/blog/idea/</guid><description>&lt;p>We use our blog to
&lt;a href="https://2i2c.org/blog/communications-strategy/" >highlight the impact we&amp;rsquo;ve had&lt;/a>.
Many of these ideas come directly from member and upstream communities! &lt;strong>We strongly encourage any of our collaborators to submit an idea for a blog post by clicking the button below&lt;/strong>.&lt;/p>
&lt;!-- This is so the article metadata doesn't show up at the top of the page -->
&lt;style>
.article-metadata {
display: none;
}
&lt;/style>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://github.com/2i2c-org/2i2c-org.github.io/issues/new?template=blog-post.md" target="_blank" rel="noopener" class="btn btn-primary px-3 py-3">Submit a blog idea&lt;/a>
&lt;/li>
&lt;/ul>
&lt;p>We want our blog posts to be short, direct, and low-effort (see our
&lt;a href="https://2i2c.org/blog/idea/../../../contribute/blog.md" >blog guide&lt;/a> for guidance).
Time-box yourself at 2-3 minutes, don&amp;rsquo;t worry if it isn&amp;rsquo;t perfect!&lt;/p>
&lt;p>If you&amp;rsquo;d like to fill in the template and share it via Slack or e-mail, that&amp;rsquo;s fine too!
Here&amp;rsquo;s a markdown block you can copy.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-md" data-lang="md">&lt;span class="line">&lt;span class="cl">&lt;span class="gu">### What happened
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> This happened
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> This happened
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">### Any pull quotes?
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c">&amp;lt;!-- Pull quotes are the most impactful thing we can communicate! --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">### Why is it valuable
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Because A
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Because B
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">### Links to learn more
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Link A
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Link B
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">### Media and images
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>&lt;span class="c">&amp;lt;!-- (optional) Have any images we can use in the post? Drag and drop here! --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">### Acknowledgements
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>&lt;span class="c">&amp;lt;!-- (optional) acknowledgements for contributors, funders, or collaborators. --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Gordon and Betty Moore Foundation</title><link>https://2i2c.org/collaborators/moore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/moore/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/moore/featured_hu7ed27a086656d4f2f2f447e12e49338b_18915_ea608233aaf78c2ab6f3523eb170b3e6.webp 400w,
/collaborators/moore/featured_hu7ed27a086656d4f2f2f447e12e49338b_18915_eee9ee7c05a715f00a77c5f16aa10aa6.webp 760w,
/collaborators/moore/featured_hu7ed27a086656d4f2f2f447e12e49338b_18915_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/moore/featured_hu7ed27a086656d4f2f2f447e12e49338b_18915_ea608233aaf78c2ab6f3523eb170b3e6.webp"
width="500"
height="194"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The
&lt;a href="https://www.moore.org/" target="_blank" rel="noopener" >Gordon and Betty Moore Foundation&lt;/a> is a private foundation that supports scientific discovery, environmental conservation, and patient care improvements.&lt;/p>
&lt;h2 id="grants-from-this-funder">
Grants from this funder
&lt;a class="header-anchor" href="#grants-from-this-funder">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Pangeo Climate Data Lab (2020)&lt;/strong>: $500,000 over two years for managing and developing cloud infrastructure for the Pangeo Project through Columbia University&lt;/li>
&lt;/ul></description></item><item><title>Howard Hughes Medical Institute</title><link>https://2i2c.org/collaborators/hhmi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/hhmi/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/hhmi/featured_hu25fd540e9d0ad9db364aefb294c6a201_3908_bd0ebd9957a0e6281884616e8339cb06.webp 400w,
/collaborators/hhmi/featured_hu25fd540e9d0ad9db364aefb294c6a201_3908_4eb61f166cebb5f7cde5c4ec48d9cca3.webp 760w,
/collaborators/hhmi/featured_hu25fd540e9d0ad9db364aefb294c6a201_3908_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/hhmi/featured_hu25fd540e9d0ad9db364aefb294c6a201_3908_bd0ebd9957a0e6281884616e8339cb06.webp"
width="225"
height="225"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The
&lt;a href="https://www.hhmi.org/" target="_blank" rel="noopener" >Howard Hughes Medical Institute&lt;/a> is one of the nation&amp;rsquo;s largest private funding organizations for biological and medical research, investigating fundamental biological processes and supporting innovative research that transforms biomedical knowledge.&lt;/p>
&lt;h2 id="grants-funding-this-project">
Grants funding this project
&lt;a class="header-anchor" href="#grants-funding-this-project">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>Several projects with HHMI are supported by National Institute of Mental Health (NIMH), grant number RF1MH130623.&lt;/li>
&lt;/ul></description></item><item><title>Impact</title><link>https://2i2c.org/impact/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/impact/</guid><description/></item><item><title>Invest in Open Infrastructure</title><link>https://2i2c.org/collaborators/invest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/invest/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/invest/featured_huaaf5fab7997b5ad3251bde911330f53b_2321_cb9e96bdf30828c406d5e2638c0dfd98.webp 400w,
/collaborators/invest/featured_huaaf5fab7997b5ad3251bde911330f53b_2321_6e4b0fd601c0e1c82f7afa30de9a7e6b.webp 760w,
/collaborators/invest/featured_huaaf5fab7997b5ad3251bde911330f53b_2321_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/invest/featured_huaaf5fab7997b5ad3251bde911330f53b_2321_cb9e96bdf30828c406d5e2638c0dfd98.webp"
width="500"
height="500"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://investinopen.org" target="_blank" rel="noopener" >Invest in Open Infrastructure&lt;/a> helps funders and research institutions understand how to effectively support digital infrastructure, while JROST is a collaboration between funders committed to supporting open tools for science.&lt;/p></description></item><item><title>Join our mailing list</title><link>https://2i2c.org/mailing-list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/mailing-list/</guid><description>&lt;p>Our mailing list shares the most important information with our community, and is easier to keep up with than the
&lt;a href="https://2i2c.org/blog/communications-strategy/" >large number of blog posts we share&lt;/a>. Here&amp;rsquo;s what to expect:&lt;/p>
&lt;ul>
&lt;li>Summaries of our contributions and impact over the past month.&lt;/li>
&lt;li>Announcements about the most important information from 2i2c.&lt;/li>
&lt;li>Announcements from the open source and open science communities.&lt;/li>
&lt;li>Guidance for how you can help our open science and open source network.&lt;/li>
&lt;/ul>
&lt;p>To sign up, &lt;strong>subscribe below&lt;/strong>:&lt;/p>
&lt;form
action="https://buttondown.com/api/emails/embed-subscribe/2i2c"
method="post"
class="embeddable-buttondown-form"
referrerpolicy="unsafe-url"
>
&lt;label for="bd-email">Enter your email&lt;/label>
&lt;input type="email" name="email" id="bd-email" />
&lt;input type="submit" value="Subscribe" />
&lt;/form></description></item><item><title>Jupyter Book</title><link>https://2i2c.org/collaborators/jupyter-book/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/jupyter-book/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/jupyter-book/featured_hu028e51e121964c3f5376439706222f53_11030_d68f1ffa9f809a1e60a3a92dc62b4ef7.webp 400w,
/collaborators/jupyter-book/featured_hu028e51e121964c3f5376439706222f53_11030_cfa2983c28b45eacacedee086f58e921.webp 760w,
/collaborators/jupyter-book/featured_hu028e51e121964c3f5376439706222f53_11030_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/jupyter-book/featured_hu028e51e121964c3f5376439706222f53_11030_d68f1ffa9f809a1e60a3a92dc62b4ef7.webp"
width="760"
height="205"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://jupyterbook.org/" target="_blank" rel="noopener" >Jupyter Book&lt;/a> is an open source project for building beautiful, publication-quality books and documents from computational material. It allows users to create interactive books from Jupyter notebooks, Markdown files, and other computational content, supporting rich formatting and cross-references.&lt;/p></description></item><item><title>JupyterHub</title><link>https://2i2c.org/collaborators/jupyterhub/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/jupyterhub/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/jupyterhub/featured_hua8714b3bad60a94764838712faabf966_16927_105ce90a898d9b7023809cc9cf9752b7.webp 400w,
/collaborators/jupyterhub/featured_hua8714b3bad60a94764838712faabf966_16927_b373b7af2e1d47ffd72d1ece32cdc4f8.webp 760w,
/collaborators/jupyterhub/featured_hua8714b3bad60a94764838712faabf966_16927_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/jupyterhub/featured_hua8714b3bad60a94764838712faabf966_16927_105ce90a898d9b7023809cc9cf9752b7.webp"
width="702"
height="302"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://jupyter.org/hub" target="_blank" rel="noopener" >JupyterHub&lt;/a> is a multi-user server that manages and spawns multiple instances of single-user Jupyter notebook servers. It enables organizations to provide managed Jupyter environments to groups of users, supporting authentication, resource management, and scalable deployment on cloud and on-premise infrastructure.&lt;/p></description></item><item><title>NASA VEDA</title><link>https://2i2c.org/collaborators/nasa-veda/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/nasa-veda/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/nasa-veda/featured_hu16fab841fb1da2c8af3fa171949f4183_9448_526c52a4cd3bea35e1a29008da0263d4.webp 400w,
/collaborators/nasa-veda/featured_hu16fab841fb1da2c8af3fa171949f4183_9448_644191f9fbd396d291cb2466d08f9e33.webp 760w,
/collaborators/nasa-veda/featured_hu16fab841fb1da2c8af3fa171949f4183_9448_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/nasa-veda/featured_hu16fab841fb1da2c8af3fa171949f4183_9448_526c52a4cd3bea35e1a29008da0263d4.webp"
width="200"
height="168"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://www.earthdata.nasa.gov/dashboard/" target="_blank" rel="noopener" >NASA VEDA&lt;/a> (Visualization, Exploration, and Data Analysis) is NASA&amp;rsquo;s cloud-based data visualization and analysis platform that makes Earth science data more accessible and usable for researchers, policymakers, and the public.&lt;/p>
&lt;p>2i2c provides interactive computing infrastructure for VEDA, enabling users to explore and analyze NASA&amp;rsquo;s vast earth science datasets through JupyterHub environments in the cloud.&lt;/p></description></item><item><title>NumFOCUS</title><link>https://2i2c.org/collaborators/numfocus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/numfocus/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/numfocus/featured_hu713fb1f40c10ae9e445c67f19f4504f1_18277_c963b357eb0709e3287aecaec7323b68.webp 400w,
/collaborators/numfocus/featured_hu713fb1f40c10ae9e445c67f19f4504f1_18277_4c5706514be0f3c761ea05b2e34b0a00.webp 760w,
/collaborators/numfocus/featured_hu713fb1f40c10ae9e445c67f19f4504f1_18277_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/numfocus/featured_hu713fb1f40c10ae9e445c67f19f4504f1_18277_c963b357eb0709e3287aecaec7323b68.webp"
width="760"
height="254"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://numfocus.org" target="_blank" rel="noopener" >NumFOCUS&lt;/a> is a nonprofit organization that serves as a fiscal sponsor for open source scientific computing tools in Python, R, and Julia.&lt;/p></description></item><item><title>Openscapes</title><link>https://2i2c.org/collaborators/openscapes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/openscapes/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/openscapes/featured_hu4e00847fd10fdd7427b1e61db2a10f1b_300730_fa397c985e1214df19ba08281b6f487c.webp 400w,
/collaborators/openscapes/featured_hu4e00847fd10fdd7427b1e61db2a10f1b_300730_a65dc4c6f4f2af8f1c5ebe11dcc7c275.webp 760w,
/collaborators/openscapes/featured_hu4e00847fd10fdd7427b1e61db2a10f1b_300730_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/openscapes/featured_hu4e00847fd10fdd7427b1e61db2a10f1b_300730_fa397c985e1214df19ba08281b6f487c.webp"
width="651"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://openscapes.org/" target="_blank" rel="noopener" >Openscapes&lt;/a> is an approach and a movement that helps researchers and those supporting research find each other and feel empowered to conduct data-intensive science. They champion open practices in environmental and Earth science to help uncover data-driven solutions faster.&lt;/p></description></item><item><title>Our Founding Team</title><link>https://2i2c.org/founders/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/founders/</guid><description/></item><item><title>Our member communities</title><link>https://2i2c.org/members/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/members/</guid><description>&lt;p>This is a list of organizations with communities currently in our member network, and a resource for community members to quickly find and access their hub URL&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>&lt;em>Member organizations support
&lt;a href="https://2i2c.org/impact/" >2i2c&amp;rsquo;s impact&lt;/a> and our
&lt;a href="https://2i2c.org/open-practices/" >commitment to open practices&lt;/a> with membership fees. Each member gets one or more
&lt;a href="https://2i2c.org/platform/" >community hubs run by our team&lt;/a>. Our
&lt;a href="https://2i2c.org/collaborators/" >collaborators page&lt;/a> lists members that have contributed additional resources for
&lt;a href="https://2i2c.org/blog/good-citizen/" >Directed and Foundational open source contributions&lt;/a>.&lt;/em>&lt;/p>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://2i2c.org/membership/" class="btn btn-primary px-3 py-3">Learn about membership&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="container-fluid py-5">
&lt;div class="row g-4">
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://ahs.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/albany_high_school.svg" alt="Albany High School" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Albany High School&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://bcc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/berkeley_city_college.svg" alt="Berkeley City College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Berkeley City College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://bmcc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/borough_of_manhattan_community_college_cuny.png" alt="Borough of Manhattan Community College, CUNY" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Borough of Manhattan Community College, CUNY&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://humboldt.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/cal_poly_humboldt.png" alt="Cal Poly Humboldt" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Cal Poly Humboldt&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://cmu.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/carnegie_mellon_university.png" alt="Carnegie Mellon University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Carnegie Mellon University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://chabot.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/chabot_college.png" alt="Chabot College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Chabot College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://chaffey.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/chaffey_college.svg" alt="Chaffey College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Chaffey College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://chicagostate.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/chicago_state_university.png" alt="Chicago State University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Chicago State University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://ccsf.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/city_college_sf.png" alt="City College SF" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">City College SF&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://csm.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/college_of_san_mateo.jpg" alt="College of San Mateo" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">College of San Mateo&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://redwoods.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/college_of_the_redwoods.jpg" alt="College of the Redwoods" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">College of the Redwoods&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://csum.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/csu_maritime.svg" alt="CSU Maritime" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">CSU Maritime&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://dvc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/diablo_valley_college.png" alt="Diablo Valley College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Diablo Valley College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://elac.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/east_los_angeles_college.svg" alt="East Los Angeles College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">East Los Angeles College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://etsu.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/east_tennessee_state_university.png" alt="East Tennessee State University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">East Tennessee State University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://elcamino.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/el_camino_college.png" alt="El Camino College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">El Camino College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://hub.big.binder.opensci.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/ephemeral_interactive_computing_for_nasa_communities.png" alt="Ephemeral Interactive Computing for NASA Communities" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Ephemeral Interactive Computing for NASA Communities&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://foothill.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/foothill_college.png" alt="Foothill College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Foothill College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://fresno.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/fresno_city_college.png" alt="Fresno City College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Fresno City College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://gwu.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/george_washington_university.png" alt="George Washington University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">George Washington University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://golden.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/golden_west_college.png" alt="Golden West College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Golden West College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://spyglass.hhmi.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/hhmi.png" alt="HHMI" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">HHMI&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://high.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/high_schools_experimental.svg" alt="High Schools Experimental" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">High Schools Experimental&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://staging.jupyter-health.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/jupyter_health.png" alt="Jupyter Health" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Jupyter Health&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://kean.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/kean_university.png" alt="Kean University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Kean University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://laney.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/laney_college.svg" alt="Laney College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Laney College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://ds.lis.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/london_interdisciplinary_school.png" alt="London Interdisciplinary School" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">London Interdisciplinary School&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://lbcc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/long_beach_city_college.svg" alt="Long Beach City College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Long Beach City College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://lacc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/los_angeles_city_college.svg" alt="Los Angeles City College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Los Angeles City College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://lahc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/los_angeles_harbor_college.svg" alt="Los Angeles Harbor College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Los Angeles Harbor College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://lavc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/los_angeles_valley_college.svg" alt="Los Angeles Valley College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Los Angeles Valley College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://mendocino.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/mendocino_college.png" alt="Mendocino College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Mendocino College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://mtu.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/michigan_technological_university.png" alt="Michigan Technological University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Michigan Technological University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://miracosta.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/miracosta_college.svg" alt="MiraCosta College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">MiraCosta College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://moreno.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/moreno_valley_college.png" alt="Moreno Valley College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Moreno Valley College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://staging.nmfs-openscapes.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/noaa_fisheries_openscapes.png" alt="NOAA Fisheries Openscapes" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">NOAA Fisheries Openscapes&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://ocu.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/oakland_city_university.svg" alt="Oakland City University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Oakland City University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://pasadena.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/pasadena_city_college.png" alt="Pasadena City College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Pasadena City College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://purdue.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/purdue_university.jpg" alt="Purdue University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Purdue University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://reedley.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/reedley_college.png" alt="Reedley College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Reedley College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://staging.reflective.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/reflective_cloud.png" alt="Reflective Cloud" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Reflective Cloud&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://saddleback.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/saddleback_college.svg" alt="Saddleback College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Saddleback College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://sjcc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/san_jose_community_college.png" alt="San Jose Community College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">San Jose Community College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://sjsu.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/san_jose_state_university.svg" alt="San Jose State University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">San Jose State University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://sbcc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/santa_barbara_city_college.png" alt="Santa Barbara City College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Santa Barbara City College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://sbcc-dev.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/santa_barbara_city_college_dev.png" alt="Santa Barbara City College Dev" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Santa Barbara City College Dev&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://srjc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/santa_rosa_junior_college.gif" alt="Santa Rosa Junior College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Santa Rosa Junior College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://santiago.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/santiago_canyon_college.jpg" alt="Santiago Canyon College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Santiago Canyon College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://sciencecore.opensci.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/sciencecore.png" alt="Sciencecore" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Sciencecore&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://sierra.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/sierra_college.png" alt="Sierra College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Sierra College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://skyline.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/skyline_college.png" alt="Skyline College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Skyline College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://spelman.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/spelman_college.png" alt="Spelman College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Spelman College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://stanford.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/stanford_university.png" alt="Stanford University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Stanford University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://staging.strudel.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/strudel.png" alt="strudel" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">strudel&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://tuskegee.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/tuskegee_university.png" alt="Tuskegee University" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">Tuskegee University&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://staging.ucmerced.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/university_of_california_merced.png" alt="University of California, Merced" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">University of California, Merced&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://ucsc.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/university_of_california_santa_cruz.jpg" alt="University of California, Santa Cruz" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">University of California, Santa Cruz&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://uchicago.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/university_of_chicago.svg" alt="University of Chicago" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">University of Chicago&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://umd.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/university_of_maryland.svg" alt="University of Maryland" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">University of Maryland&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://und.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/university_of_north_dakota.jpg" alt="University of North Dakota" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">University of North Dakota&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://virginia.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/university_of_virginia.png" alt="University of Virginia" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">University of Virginia&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm-6 col-md-4 col-lg-3">
&lt;div class="card border-0" style="background-color: #f8f9fa;">
&lt;div class="card-body d-flex flex-column justify-content-center align-items-center p-2 text-center">
&lt;a href="https://wlac.cloudbank.2i2c.cloud" target="_blank" rel="noopener" class="text-decoration-none d-flex flex-column align-items-center">
&lt;img src="https://2i2c.org/members/images/west_los_angeles_college.svg" alt="West Los Angeles College" class="img-fluid mb-3" style="max-height: 50px; max-width: 120px; ">
&lt;small class="text-dark fw-medium">West Los Angeles College&lt;/small>
&lt;/a>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>This is automatically generated using our community hub configuration data in
&lt;a href="https://github.com/2i2c-org/infrastructure/" target="_blank" rel="noopener" >the 2i2c infrastructure repository&lt;/a>. Clicking each logo will take you to the community hub for each community.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Our organization</title><link>https://2i2c.org/organization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/organization/</guid><description/></item><item><title>Pangeo</title><link>https://2i2c.org/collaborators/pangeo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/pangeo/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/pangeo/featured_hud4644efea9ae2372c4f6bf3d9fcf0e53_28128_5f945ecc77c94300250dda3456abcd37.webp 400w,
/collaborators/pangeo/featured_hud4644efea9ae2372c4f6bf3d9fcf0e53_28128_fa2d9a5f9331f100a9b435f6873e7761.webp 760w,
/collaborators/pangeo/featured_hud4644efea9ae2372c4f6bf3d9fcf0e53_28128_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/pangeo/featured_hud4644efea9ae2372c4f6bf3d9fcf0e53_28128_5f945ecc77c94300250dda3456abcd37.webp"
width="481"
height="120"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://pangeo.io/" target="_blank" rel="noopener" >Pangeo&lt;/a> is a community platform for Big Data geoscience. It promotes open, reproducible, and scalable science by building tools and infrastructure for working with large datasets in the geosciences, including support for climate data analysis on cloud platforms.&lt;/p></description></item><item><title>Project Jupyter</title><link>https://2i2c.org/collaborators/jupyter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/jupyter/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/jupyter/featured_hub4a17eb7f221975529cbb53152152693_4883_d401d48da9cb32198123bb7164d85ad1.webp 400w,
/collaborators/jupyter/featured_hub4a17eb7f221975529cbb53152152693_4883_f24a73625fb8945bd770804c045d3c61.webp 760w,
/collaborators/jupyter/featured_hub4a17eb7f221975529cbb53152152693_4883_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/jupyter/featured_hub4a17eb7f221975529cbb53152152693_4883_d401d48da9cb32198123bb7164d85ad1.webp"
width="630"
height="170"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://jupyter.org/" target="_blank" rel="noopener" >Project Jupyter&lt;/a> is an open source project that develops interactive computing tools including Jupyter notebooks, JupyterLab, and JupyterHub. The project supports interactive data science and scientific computing across multiple programming languages, providing a foundation for reproducible research and education.&lt;/p></description></item><item><title>Project Pythia</title><link>https://2i2c.org/collaborators/pythia/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/pythia/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/pythia/featured_huc07c3422b955a27ccd8bbf6912665406_4379_b7f1fb6e1f7bcb0fd49fccf6353700f4.webp 400w,
/collaborators/pythia/featured_huc07c3422b955a27ccd8bbf6912665406_4379_746f62b8005081467a03d1895113f5ca.webp 760w,
/collaborators/pythia/featured_huc07c3422b955a27ccd8bbf6912665406_4379_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/pythia/featured_huc07c3422b955a27ccd8bbf6912665406_4379_b7f1fb6e1f7bcb0fd49fccf6353700f4.webp"
width="237"
height="212"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://projectpythia.org/" target="_blank" rel="noopener" >Project Pythia&lt;/a> is an educational initiative that provides open access training resources to help geoscientists learn cloud computing and open science tools.&lt;/p>
&lt;h2 id="grants-that-fund-this-project">
Grants that fund this project
&lt;a class="header-anchor" href="#grants-that-fund-this-project">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>NSF award 2324302&lt;/li>
&lt;/ul></description></item><item><title>STRUDEL</title><link>https://2i2c.org/collaborators/strudel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/strudel/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/strudel/featured_huf4df1be5acaf0713e5588d7ca24046b5_5105_16d1c338900e9245b87133e00add86f1.webp 400w,
/collaborators/strudel/featured_huf4df1be5acaf0713e5588d7ca24046b5_5105_afeca73b6ed86b9b2acb70b3eff6a635.webp 760w,
/collaborators/strudel/featured_huf4df1be5acaf0713e5588d7ca24046b5_5105_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/strudel/featured_huf4df1be5acaf0713e5588d7ca24046b5_5105_16d1c338900e9245b87133e00add86f1.webp"
width="760"
height="118"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://strudel.science/" target="_blank" rel="noopener" >STRUDEL&lt;/a> is an open source project creating and stewarding resources to enable more usable scientific software experiences.&lt;/p>
&lt;p>It is housed at the
&lt;a href="https://2i2c.org/collaborators/strudel/../bids/" >Berkeley Institute for Data Science&lt;/a> (BIDS) at the University of California, Berkeley. The STRUDEL team includes members of the Lawrence Berkeley National Lab Scientific Data (SciData) Division UX team, Superbloom Design, The Carpentries, and 2i2c.&lt;/p>
&lt;p>STRUDEL project is generously funded by the Alfred P. Sloan Foundation, Liz Vu &amp;amp; Josh Greenberg Program Officers, grants G-2022-19360, G-2023-21098, and G-2024-22557.&lt;/p></description></item><item><title>The Catalyst Project</title><link>https://2i2c.org/collaborators/catalyst/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/catalyst/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/catalyst/featured_hu86003596f68875d6a2c73aed578742fe_19186_e21ca38ae6a367d6a52c1748025148df.webp 400w,
/collaborators/catalyst/featured_hu86003596f68875d6a2c73aed578742fe_19186_7e8d5816b92d563ad3e9ab2397f175df.webp 760w,
/collaborators/catalyst/featured_hu86003596f68875d6a2c73aed578742fe_19186_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/catalyst/featured_hu86003596f68875d6a2c73aed578742fe_19186_e21ca38ae6a367d6a52c1748025148df.webp"
width="355"
height="343"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://catalystproject.cloud/" target="_blank" rel="noopener" >The Catalyst Project&lt;/a> is a collaborative initiative focused on advancing scientific computing and cloud infrastructure for research communities. They work to accelerate the adoption of cloud-native scientific computing tools and practices.&lt;/p>
&lt;h2 id="grants-funding-this-project">
Grants funding this project
&lt;a class="header-anchor" href="#grants-funding-this-project">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>A $1.5M award from
&lt;a href="https://2i2c.org/collaborators/catalyst/../czi/" >CZI&lt;/a> funded this project (
&lt;a href="https://zenodo.org/records/7025288" target="_blank" rel="noopener" >Zenodo entry&lt;/a>).&lt;/li>
&lt;/ul></description></item><item><title>The Navigation Fund</title><link>https://2i2c.org/collaborators/navigation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://2i2c.org/collaborators/navigation/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/collaborators/navigation/featured_hu06f6004545acd7c58f4bbf0dd3a80800_16965_c8d4e2df362b48ab779696657ff833bb.webp 400w,
/collaborators/navigation/featured_hu06f6004545acd7c58f4bbf0dd3a80800_16965_43c853e2a7cceac711028948ee2e33dd.webp 760w,
/collaborators/navigation/featured_hu06f6004545acd7c58f4bbf0dd3a80800_16965_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://2i2c.org/collaborators/navigation/featured_hu06f6004545acd7c58f4bbf0dd3a80800_16965_c8d4e2df362b48ab779696657ff833bb.webp"
width="760"
height="365"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;a href="https://www.navigation.org/" target="_blank" rel="noopener" >The Navigation Fund&lt;/a> focuses on supporting organizations that are building critical infrastructure for the future of research and education, particularly those working to create sustainable models for open source and open science initiatives.&lt;/p>
&lt;h2 id="grants-from-this-funder">
Grants from this funder
&lt;a class="header-anchor" href="#grants-from-this-funder">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="https://www.navigation.org/" target="_blank" rel="noopener" >The Navigation Fund&lt;/a> awarded 2i2c approximately
&lt;a href="https://2i2c.org/blog/funding-navigation/" >$1.5 million over 2 years in 2024&lt;/a> to identify and build a scalable sustainability model for the organization. This strategic investment enables 2i2c to develop comprehensive sustainability strategies and establish long-term financial resilience.&lt;/li>
&lt;/ul></description></item></channel></rss>