Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migration from Jupyterlab v3 to v4 #169

Merged
merged 54 commits into from
Dec 12, 2023

Conversation

AjayThorve
Copy link
Member

JupyterLab Extension Migration from v3 to v4 with Improved Backend and Enhanced Front-End Features

The existing extension, which exclusively functions with JupyterLab v3, has undergone a transformation to ensure compatibility with JupyterLab v4 and above. This migration not only includes updating the version but also incorporates various improvements in both the backend and frontend components of the extension

Backend Migration:
The previous version of our extension relied on a Bokeh server in the backend and utilized iframes to display GPU utilization charts. In this PR, we've transitioned to utilizing the built-in Tornado routes provided by JupyterLab. Additionally, we've integrated backend REST API calls with @tornado.web.authenticated, eliminating the need for a separate server and port management. This streamlined backend architecture simplifies deployment and maintenance.

Frontend Enhancements:
The frontend of the extension has been significantly enhanced. We've leveraged React Native widgets and the Recharts charting library to create a visually pleasing and smooth user experience. The use of React Native widgets ensures a more aesthetic design, eliminates frame drops during widget drag-and-drop operations, and takes advantage of React's virtual DOM for efficient rendering.

New Features:

  1. Brush for Time Series Charts: We've introduced a brushing feature for time series charts, allowing users to easily inspect past events by selecting a specific time range.
  2. Synced Tooltips: For pages with multiple charts, our extension now provides synchronized tooltips for timestamps across all charts. This feature enhances the user's ability to analyze data cohesively.
  3. Theme Compatibility: The extension now seamlessly integrates with JupyterLab themes. It adapts its colors and aesthetics based on whether the user is in a light or dark theme, ensuring a consistent and visually appealing experience.

Version Compatibility:
It's important to note that this updated extension is designed exclusively for JupyterLab v4 and later versions. To ensure continued support for JupyterLab v3 users, we will maintain the previous version separately.

Future Improvements:
We understand that there was a request to add cell execution markers to the charts. However, due to the complexities associated with asynchronous cells, we have decided to defer this feature to a future update. Rest assured, we will explore this enhancement in subsequent releases

Attaching some snapshots of the updated design, feel free to suggest design and aesthitic changes.

image
image
image
recording_2023-09-27_at_17 40 40

cc @exactlyallan @jacobtomlinson

@jakirkham
Copy link
Member

Is this still planned for 0.10 or is it moving to 0.11?

@AjayThorve
Copy link
Member Author

Is this still planned for 0.10 or is it moving to 0.11?

Not sure, @jacobtomlinson ?

Copy link
Member

@jacobtomlinson jacobtomlinson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is generally looking awesome! Thank you so much for putting in the effort here.

One thing that would be really great to see is a completely rewritten README with an updated demo gif, but more importantly updated contributing/developing guidelines. I really want to get to a better place to enable other folks in RAPIDS to contribute to this, so an explanation of how to set up a dev environment (bearing in mind TS and web dev is unfamiliar to many folks) and where to make changes is going to be critical to the maintainability of this work.

@jacobtomlinson
Copy link
Member

Is this still planned for 0.10 or is it moving to 0.11?

We are on 0.9 now so I think 0.10 should be fine.

@AjayThorve
Copy link
Member Author

This is generally looking awesome! Thank you so much for putting in the effort here.

One thing that would be really great to see is a completely rewritten README with an updated demo gif, but more importantly updated contributing/developing guidelines. I really want to get to a better place to enable other folks in RAPIDS to contribute to this, so an explanation of how to set up a dev environment (bearing in mind TS and web dev is unfamiliar to many folks) and where to make changes is going to be critical to the maintainability of this work.

That's great feedback, I'll get to working on a new README and a DEVELOPER_GUIDELINES markdowns

@jakirkham
Copy link
Member

RAPIDS has completed code freeze with a release planned soon. Hence the question of what release is being targeted

@jacobtomlinson
Copy link
Member

jacobtomlinson commented Oct 17, 2023

@jakirkham this project is released ad-hoc and generally isn't tied to the bi-monthly RAPIDS releases.

@jakirkham
Copy link
Member

Ok wasn't sure

Copy link
Member

@jacobtomlinson jacobtomlinson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great, thanks for working on the README and CONTRIBUTING docs.

Copy link

copy-pr-bot bot commented Dec 4, 2023

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

.github/workflows/build.yaml Outdated Show resolved Hide resolved
.github/workflows/build.yaml Outdated Show resolved Hide resolved
.github/workflows/build.yaml Outdated Show resolved Hide resolved
.github/workflows/build.yaml Outdated Show resolved Hide resolved
.github/workflows/build.yaml Outdated Show resolved Hide resolved
Copy link
Member

@ajschmidt8 ajschmidt8 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved with some minor suggestions.

.github/workflows/conda-build.yaml Outdated Show resolved Hide resolved
.github/workflows/pr.yaml Outdated Show resolved Hide resolved
.github/workflows/wheel-build.yaml Outdated Show resolved Hide resolved
.github/workflows/pr.yaml Outdated Show resolved Hide resolved
@jacobtomlinson jacobtomlinson merged commit 47a5331 into rapidsai:branch-0.10 Dec 12, 2023
11 checks passed
@jacobtomlinson jacobtomlinson mentioned this pull request Feb 27, 2024
@XQ-UT
Copy link

XQ-UT commented Mar 4, 2024

Can we do a release that contains this fix? Does the current v0.11.0a include this fix?

@AjayThorve
Copy link
Member Author

Can we do a release that contains this fix? Does the current v0.11.0a include this fix?

@XQ-UT You can access this via the nightly packages already:

# nightly version (for jupyterlab>=4)
pip install --extra-index-url https://pypi.anaconda.org/rapidsai-wheels-nightly/simple --pre jupyterlab_nvdashboard

There are a couple of issues, once fixed we will do a stable release in a week or so.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants