-
-
Notifications
You must be signed in to change notification settings - Fork 427
Description
Attention Jupyter AI users! I have some exciting news to share in this issue. We are currently planning, designing, and building the next major release of Jupyter AI, v3.0.0.
This issue contains the:
- v3.0.0 development plan,
- v3.0.0 major features,
- v3.0.0 tentative features, and the
- v3.0.0 FAQ.
This issue is a living document, which will evolve as our plans & priorities evolve. We are documenting everything about v3.0.0 here to be as transparent to our user community as possible.
v3.0.0 development plan
This section describes what we have done, what we are doing now, what we plan to do in the future. We have organized the v3 development effort into 3 development phases: alpha, beta, and release candidate (RC).
- Alpha phase: Migrate to Jupyter Chat, build new v3 APIs, and address any feature regressions relative to v2.
- Beta phase: Add new major features for v3, improve UX of JAI v3.
- RC phase: Address any outstanding bugs before the v3.0.0 official release.
After each milestone is complete, a new release is published to enter the next phase of development.
Timeline
- v3.0.0a0 pre-release
- v3.0.0a1 pre-release
- v3-alpha milestone
- v3.0.0b0 pre-release
- v3-beta milestone
- v3.0.0rc0 pre-release
- v3-rc milestone
- 🎉 v3.0.0 official release 🎉
- v3-future milestone
In summary:
-
We will develop v3.0.0 in 3 separate development phases: alpha (v3-alpha), beta (v3-beta), and RC (v3-rc).
-
We will publish the v3.0.0 release after the alpha, beta, and RC phases are complete.
-
Any issues that we plan to add in future minor releases after v3.0.0 are being tracked in the v3-future milestone.
v3.0.0 major features
These are the key features that we want to ship with v3.0.0. This list summarizes the most important features we want to build for our users, and is not intended to be comprehensive.
-
Migration to Jupyter Chat
- Context: Jupyter Chat is a new package that re-defines and provides the frontend components originally from Jupyter AI, while completely re-defining the backend model of chats. Chats will no longer be a simple list of messages stored in-memory and vanish on server restart, but instead persisted as plaintext
*.chat
files and represented in-memory as a Yjs CRDT document. Yjs is the same family of packages that power Jupyter Collaboration, which provides RTC functionality in JupyterLab. @brichet (the lead dev behind Jupyter Chat) and I will be working closely to ensure that this migration will be seamless & painless for existing users & contributors. - Motivation: This migration will 1) allow for multiple chats by creating a top-level abstraction for chats, 2) simplify Jupyter AI's backend by delegating chat state management & synchronization to Yjs, 3) allow for real-time editing of the chat history to enable features like message editing & re-ordering. This migration also moves most of Jupyter AI's frontend components to
@jupyter/chat
, allowing other extensions to re-use our code to build their own chat applications. - Issue: Use Jupyter Chat, if available, for the chat interface #785
- Issue: Use
@jupyter/chat
as chat UI #862 - PR: [v3-dev] Initial migration to
jupyterlab-chat
#1043
- Context: Jupyter Chat is a new package that re-defines and provides the frontend components originally from Jupyter AI, while completely re-defining the backend model of chats. Chats will no longer be a simple list of messages stored in-memory and vanish on server restart, but instead persisted as plaintext
-
Multi-conversation management (via Jupyter Chat)
-
Migration to Pydantic v2 and LangChain >=0.3
-
Introduce AI personas, deprecate chat handlers
-
Support message editing & attachments
-
MCP integration
-
Improve reliability of
ConfigManager
-
Unify authentication in chat & magics
v3.0.0 tentative features
These are features that may be developed as part of v3.0.0, but require further design, research, or feedback from the community.
- Allow for dynamic installation of model dependencies
v3.0.0 contributor FAQ
Q: How do I open new PRs for Jupyter AI v2 & v3?
-
The
main
branch tracks v3 (currently in alpha), while the2.x
branch tracks v2. -
New merged PRs should target
main
if applicable, and be backported to2.x
if possible. -
Some bug fixes for v2 are not applicable to v3. Those PRs can be opened against the
2.x
branch directly. -
Comment
@meeseeksdev please backport to 2.x
on PRs after merging to have the bot automatically open a new backport PR against2.x
.
Q: What steps are you taking to make sure others can contribute?
-
We acknowledge that the Jupyter Chat migration requires contextual knowledge of Jupyter Chat & Yjs, which makes it difficult for others to contribute directly without reviewing the Jupyter Chat source code directly. @brichet and I will focus on ensuring that the new chat API is maintainable, documented, and easy-to-use.
-
Because our engineering time is limited, Jupyter Chat will have documentation gaps, and prospective contributors will need to review the source code directly to have the complete context to contribute.
-
Without more contributors or engineering resources, we have to make a trade-off between engineering and documentation efforts. We plan to first focus on engineering work to finalize the API as quickly as we can, then document it for others after the API is solidified.
-
We will expand our contributor documentation after we have more availability to work on documentation. We absolutely understand that documentation is important for transparency as an open source project.
Q: How can I contribute?
If you want to contribute but do not want to open a PR, you can help us by:
- Opening new issues for features you want to see in v3.0.0,
- Reviewing existing v3 issues and leaving feedback,
- Proposing designs for issues that you find ambiguous on how to implement,
- Reviewing
main
PRs to stay in-the-loop on code changes.
If you do want to open a PR, we recommend:
- First posting a design for large features, either in a new issue / comment,
- Pinging @dlqqq for design review & assigning you to an issue,
- Doing independent research on the code changes needed, and
- Opening a PR and being responsive to code reviews.
We will work on streamlining the contributor process once we have enough availability to shift away from engineering work.