Repository navigation
Replies: 7 comments 9 replies
|
Thanks for putting this together. I have a few questions about JointJS, and will put other thoughts in a separate comment. Please correct me if I am misunderstanding anything. From what I can gather, the The reason I bring this up is that, going by JointJS's changelog, we're missing a lot by staying on 3.5. There are security fixes, and 4.2 added viewport-based rendering options for large graphs. If the React Flow speed comparison was run against our current 3.5 setup, I don't think it tells us much about current JointJS. Another thing is that JointJS now has an official React binding, So in summary, my questions are:
|
|
Thanks for putting this together. I agree that the current UI looks outdated, and I support exploring a new framework. Popularity and maturity matter more than before. The three requirements mostly measure how popular and mature each framework is. I think this is a strong argument for AI-assisted coding, since coding agents write better code for frameworks and libraries that have more code and examples to learn from. Thus, a popular stack could directly speed up our development. Before deciding, I would like to see a prototype that rebuilds one component in the new framework, mainly the workflow canvas. What the prototype could show. i) How the UI changes: the same workflow on the current canvas and on the new one, side by side. ii) How the code changes: the new code next to the ~2,100 lines of JointJS glue code mentioned in the proposal, with line counts for the same features. To keep the comparison fair, the prototype could cover the features that make our canvas unique, namely operators with multiple ports, live operator status during execution, and the region overlay. |
|
Here are my thoughts on the rest of the proposal. I'm not against moving off Angular, but it will be a huge effort and take a lot of planning, so it needs to be worth it. I agree with the three listed requirements as the way to judge that. For limitation 1, I think a larger community is a real advantage, even if Angular can do everything we need right now. It means more libraries and updates, and like @kunwp1 said, it's easier for coding agents to work with. We could also run into something later that React supports and Angular doesn't. For limitation 2, see my separate JointJS comment. In general, I support the switch since the benefits are real and valuable. The deciding factor for me is the effort and time required to do this whole process. I might be getting ahead of myself here since this is still just a proposal to switch, but seeing a roadmap and/or plan timeline would help with gauging the effort needed to do the switch. |
|
I built an AI-assisted prototype of the Angular-to-React migration: draft PR #9389. The prototype keeps the existing JointJS canvas. The AI agent’s result isn’t perfect, mainly in the CSS. Each component still needs human verification and testing to confirm that its UI and behavior match the current frontend. That makes migrating everything in one step difficult. We can migrate one component at a time and verify each before moving on. Here are three side-by-side comparisons, with Angular on the left and React on the right. They are also included in the draft PR. |
|
Thanks @bobbai00 for starting this discussion. Here is some context on the workflow canvas and our Yjs shared-editing implementation:
|
|
I support the idea of migrating to a better frontend framework, if the effort is manageable. For instance, if it takes a member a few weeks to do so, I believe it's worth it, as the benefits are significant. |
|
I agree, I also propose to review the PRs differently. |



Uh oh!
There was an error while loading. Please reload this page.
Proposal: Ditch Angular, Switch to React
Today's Texera Frontend
Texera's frontend is built with Angular 21. It has three major components:
y-websocket. About 2,100 lines of glue code connect JointJS to the workflow model.Limitations
Based on my experience of developing several components in Texera, I found three major limitations with current Texera's frontend framework:
Limitation 1: Limited community support for AI components: Angular is no longer a popular frontend framework. For example, React has 30 times more weekly downloads (252M vs. 8.4M) and 2.5 times more developers (44.7% vs. 18.2%). As a result, many new frontend components, especially advanced AI components, support only React and not Angular.
Limitation 2: Deprecated workflow canvas library: our workflow canvas is built on JointJS 3.5, a 2022 version whose npm package is now deprecated. Newer libraries, such as React Flow, are much faster in our tests. Unfortunately, React Flow supports only React, so we cannot adopt it in Angular.
Limitation 3: Ad-hoc and duplicate code** for each resource**: each kind of resource (e.g. workflow, dataset) has its own hand-built pages, which are often copied from one another. For example, the model detail page repeats 65% of the dataset detail page's template and 88% of its styles. Moreover, these pages hard-code 210 colors instead of using one theme, so they do not look alike. As a result, every new kind of resource, such as agents, needs yet another copy.
Proposal: Switch To A New Frontend Framework
To solve these limitations, I suggest switching to a new frontend framework. To identify an eligible framework, I think three requirements need to be met
Requirement 1: Large developer community: the framework should be widely used, so that new libraries, fixes, and developers are easy to find.
Requirement 2: Mature AI components: the framework should have mature libraries for AI components, such as chat, so that Texera does not need to build them from scratch.
Requirement 3: Real-time collaborative workflow canvas: the framework should have a mature node-graph library that works with shared editing, so that several users can edit the same workflow together.
I compare today's Angular with four candidates against these requirements: React, Vue, Svelte, and Solid.
Candidate Comparison
My Proposal: Switch to React
Based on the comparison result, I propose switching to** React**, because it is the only candidate that meets all three requirements.
This is apparently a huge topic. I hope developers, especially those who are familiar with Texera's frontend development, can chime in.
All reactions