Closed dshaw closed 4 months ago
(My response is purely a logical monologue; I have no opinions about what to do :)
The above does not give a motivation for moving or a problem that needs to be solved. It also does not detail what is the original prompt into the investigation. This would really help me give some feedback.
It seems the alternative is as equally useful and satisfying as the current (svelte vs react).
The web ecosystem changes rapidly, so this discussion of moving needs to really focus on doing it in the short term. Anything we research today is very likely to become dated in the long term. React, surprisingly, has lived quite a long time, probably thanks to its conceptually simple programming model.
Great work on detailing what we would need for migrating!
Totally agree with @lf94 above, but since it popped into my head I thought I'd add some additional notes on Svelte. I would recommend we'd use SvelteKit if we were to consider migrating at some point: it is the first-class metaframework for Svelte and would cover the React-Router replacement. Here are the handled and unhandled dependencies from the list above with SvelteKit:
A lot of the UI just is very React-y at the moment though, so I think any discussion of migration would need to relegate a lot of the business logic that is currently in JSX files out of it, so it can really be as thin a view layer as possible. That would be a worthwhile effort for its own sake in my opinion.
The above does not give a motivation for moving or a problem that needs to be solved. It also does not detail what is the original prompt into the investigation.
@lf94 I mention the conversations in groups or 1:1 that were the reason I created this issue. It exists to provide a focal point for further investigation and discussion on whether to migrate. The recommendation to NOT migrate off React can be boiled down to what you describe as you concern with this issue/discussion: there is no "motivation for moving or a problem that needs to be solved".
When a project like React reaches late stage maturity, it begins to impact engineering teams in subtle ways that are worth considering. If you weren't around when jQuery was popular, ask some old head what it was like using jQuery in 2015. In 2015, jQuery had achieved near ubiquity. A solid justification for why to use it perhaps, but at that time, you couldn't convince the best frontend developers to work with it. It was a smell and many ran away from it.
Zoo has a very innovative tech stack that's low gimmick, highly optimized, with thoughtful attempts to use the best tool for the job and achieve maximum leverage. This attracts talented engineers who then have access to cross-functional expertise where they can learn.
React is about the same point as what I describe jQuery above: ~10 years old. You can see in the link above that jQuery's popularity continued to grow after 2015, but those numbers don't capture developer sentiment. That didn't grow. They couldn't find anyone who wanted to fund the project anymore and the foundation died.
So, while there may not be immediate technical merit to migrating off React, there is organizational merit and I strongly believe it's worth assessing and possibly planning to migrate off.
It exists to provide a focal point for further investigation and discussion on whether to migrate.
Ok :slightly_smiling_face: In that case I consider the issue very theoretical and mostly a zone for fun talks :sunglasses: Whatever you read next is coming from a purely logical place and I mean everything in good faith! I appreciate the initiative to explore it.
I'm familiar with the jQuery rise and fall. You compare jQuery to React, but jQuery and React are tools for two different purposes: augmenting the JavaScript standard library and the other for developing UI/UX. Based on this, how can you compare the two, when the only similarity is they are both written in JavaScript and had or have some popularity? Already the argument appears not strong to me. I feel like this is similar to saying because the Bower package manager rose and fell, based on its history, we should move away from React. Hm...
The assumption that moving from one component-based web framework to another component-based web framework will attract talent I think could be detrimental. If I were to side with this assumption, then we could say moving from React to Svelte is not enough. We need to move from React to a Rust based UI framework because that's what even better talent wants to work on. So and so forth...
Yes, these are different tools in different eras providing different utilities, but when jQuery was at its height, it was the main framework thing you did everything with. Same goes for today's React.
What I think you might be missing is the what the team wants to work with. You make the best decision for what works best for the product and the team. If everyone hates React and the product is constantly battling against how it works, you assess other options.
Ah! Yes I was definitely missing that. I was under the impression that sure, people wanted to maybe want to use something else, but not necessarily because they disliked React. I absolutely agree!
I'm going to close this one out.
It seems to mostly be a place for a discussion and not something we're properly considering anytime soon. Can always be reopened.
Should Zoo migrate off React
I have had discussions about migrating off React with most of engineering, so I thought it would be good to put this into an issue where we can track the journey and some of the key decisions and milestones needed to get there.
Why no?
What Needs to Be Replaced
What should we use instead?
Milestone 1 - Non-trivial Bake-off
Before beginning the migration journey, we should come up with a non-trivial test app that implements Zoo specific requirements and allows us to test and fully validate our assumptions.
Milestone 2 - Map Out Replacements
Each one of the services that currently comes as a part of the React ecosystem or is supported with React components like TailwindCSS, HeadlessUI, and CodeMirror needs to be evaluated and replaced.
Chime in
Please add your thoughts and suggestions. This is a big one. If we decide to go there, it will be a major journey.