Google Summer of Code (CyberShuttle Local Agent + VEDA Auth Portal)

5 min read

2024-08-26

TLDR#


  1. Developed Cybershuttle Local Agent, a desktop application that was presented at:
  2. Developed the group management user interface for VEDA Auth Portal, a project for NASA (version 1.0.0)

Introduction#


In Janurary 2024, I joined the Apache Airavata VIP team at my school (Georgia Tech). There, I developed a Local User Interface for Airavata MFT using Electron.js and gRPC.

Afterward, Dimuthu and Suresh invited me to join their Google Summer of Code program. And thus, the journey begins...little did I know how much I would learn.

Cybershuttle Local Agent (v1)#


First, I was tasked with developing a desktop application that mimics the MD Cybershuttle portal to present at the 61st Workshop on Computational Biophysics at Auburn University.

In addition to having the features of the MD Cybershuttle Portal, the local agent also needed to be able to manage files from finished experiments through Jupyter Labs and VNC sessions.

Over the next few weeks, I built version 1.0.1 of the Cybershuttle Local Agent, with features for...

  • Allows users to login to their MD Cybershuttle account
  • View all (and search/filter for) experiments
  • View experiment and job details
  • Create NAMD experiments
  • Open Jupyter Labs of finished experiment files
  • Open VNC sessions of finished experiments

Some screenshots from 1.0.1:

| The instruction manual for MD Cybershuttle Local Agent version 1.0.1 can be found on the Cybershuttle website.

Challenges faced While developing the first version of Cybershuttle, I faced many challenges, specifically:

  • Login/authentication, since we're using CILogon and Keycloak.
  • Tab management as both Jupyter Labs and VMD require a new tab.
  • Window management (since Jupyter Labs) open up in a new window.
    • i.e. if I close the window without closing the tab, what happens?
  • Rendering the VNC server information as a VNC client.

These challenges were all resolved through lots of debugging and the help of the Apache Airavata team.

Cybershuttle Local Agent (v2)#


After presenting the first version of Cybershuttle Local Agent at Auburn, we sought feedback from attendees. Thus, we learned that scientists wanted a way to run Jupyter Labs both on their local machine and in remote environments, all in the same Jupyter Notebook.

Thus, we began building Cybershuttle Local Agent version 2 to present at PEARC24.

After speaking with Dimuthu and Lahiru, we decided it would be best to separately create a Jupyter Notebook that supports both local and remote execution. This notebook would then be packaged into a Docker container to be rendered in the local agent.

Dimuthu and Lahiru developed the Docker container that housed the custom Jupyter Lab.

I developed the local agent. The result can be seen in this demo:

In the updated version (2.0.6)...

  • Updated login flow to allow for device-remembered passwords through your browser (after login, redirects back to app)
  • Allows for launching Docker containers with a custom image that allows for both remote and local execution through Jupyter Notebook.
  • Allows for listing, viewing, deleting containers.

Thus, version 2 of the Cybershuttle Local Agent was developed and presented at PEARC 24. The local agent is also avaliable for download at https://md.cybershuttle.org/.

VEDA Auth Portal#


After finishing up work with the Cybershuttle Local Agent, I shifted my focus to the next project, the VEDA Auth Portal, a web app for NASA that provides authentication for the VEDA project.

First, Stella and Philipp developed a wireframe for the VEDA Auth Portal.

After a few meetings to discuss priority, we decided to focus on the group management UI.

Using this wireframe, I developed the UI for group management using React.js and Vite.js.

Next steps include integrating authentication so we can replace the mock data with actual user information.

Mailing List#


Throughout this entire process, I have been sending updates on the Apache Airavata development mailing list.

Whenever an major development milestone was reached, I sent out an email to the mailing list, actively seeking feedback for improvement.

One of these emails are attached below for reference!

Learnings#


I have learned so much during these past few months working with the Apache Airavata team. Specifically, the following:

Frameworks

  • Electron.js, React.js, REST

Tools

  • VNC servers, oauth2 sign in flow, JWTs

Generally...

  1. Always ask for help when you need it.
  2. Take notes and write down common commands / steps so you don't need to re-figure it out each time
  3. Taking breaks when debugging helps me find issues.
  4. Proper logging is very helpful in debugging
  5. Having a high-level mental model really helps with knowing how data flows throughout the application

Conclusion#


From developing the first version of the Cybershuttle Local Agent to pivoting and then develping the second version to working on the VEDA Auth Portal, I'm so grateful for the opportunity to participate in Google Summer of Code 2024.

A huge thank you goes to Dimuthu Wannipurage, Lahiru Jayathilake, Eroma Abeysinghe, Suresh Marru, and the entire Apache Airavata team for making my experience at Google Summer of Code 2024 so fun, rewarding, and enriching.

~ Ganning Xu © 2024