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

Migrate to Vue 3 #45495

Closed
septatrix opened this issue May 24, 2024 · 1 comment
Closed

Migrate to Vue 3 #45495

septatrix opened this issue May 24, 2024 · 1 comment
Labels
0. Needs triage Pending check for reproducibility or if it fits our roadmap enhancement technical debt

Comments

@septatrix
Copy link

How to use GitHub

  • Please use the 👍 reaction to show that you are interested into the same feature.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Is your feature request related to a problem? Please describe.
Vue 2 has reached its end-of-life. It no longer received feature or performance updates, and should some vulnerability surface there would not be any fixes released.
Apart from that Vue 3 has quicker initial rendering time, better performance (i.e. DOM updates), lower memory usage, smaller bundle sizes, better typing (thus catching more errors) and provides new features. This improves not only user experience but also developer experience by making things easier and catching more bugs.

Describe the solution you'd like
Nextcloud should aim to replace Vue 2 with Vue 3 in the long term. Other migrations like replacing vuex with pinia are NOT a goal of this transition. They likely make sense down the line but can be postponed for later.
I propose a multi-step process:

  1. Check for any usage of deprecated API such as the deprecated slots syntax and remove it.
  2. Check for any usage of internal API such as VNodes and remove it.
  3. Replace Vue 2 with Vue 3 plus the compatibility build (@vue/compat)
  4. Start replacing Vue 2 APIs with their Vue 3 equivalents and disable the compat shim on a per component basis.
  5. Drop the compat shim once everything is converted.

Describe alternatives you've considered

  • Stay on Vue 2 forever: I say forever because I explicitly gave no timeline for this migration. It will take a long time but has to be done at some point. This leaves us with and EOL software component which will not benefit from new improvements and might break as browsers evolve.
  • Pay for Vue 2 Extended LTS: This is not really feasibly for self-hosted software or would require some very weird license agreement with the company providing the extended LTS.
  • Wait for Vue 4 and skip Vue 3: It is not clear when Vue 4 might be released and even when it does the migration guides will most likely still be geared towards Vue 3. So it is unlikely we reduce the effort by skipping a major version.
  • Do not use the compatibility shim: This would only make the migration harder as it must be done in larger steps.
  • Stay on the compatiblity shim forever. It is likely that the shim will not be supported forever. It also makes impossible to use newer features and increases code/bundle size.
  • Also replace libraries like vuex with their newer equivalent, i.e. pinia: This can be done independently and is not as urgent.

Additional context
n/a

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0. Needs triage Pending check for reproducibility or if it fits our roadmap enhancement technical debt
Projects
None yet
Development

No branches or pull requests

2 participants