Project status & roadmap
See original GitHub issueTL;DR (last update: Oct 25, 2022)
✅ v.2.23.0 with initial support of Vue.js 3 released 🎉
Next steps:
- Publish initial rewrite infrastructure (includes CI, automated comparison of render output with
v2.23.0
) - Rewrite each components one by one and reach feature parity with
v2.23.0
- Explore Bootstrap v5 compatibility
Longer version
Bootstrap-Vue
is heading towards Vue.js 3. Our main goals remain the same:
- we do not want to introduce as few breaking changes as possible (ideally 0). We respect our existing users and understand that Vue2 -> Vue3 migration is already quite painful so we do not want to add extra one
- we want to migrate to TypeScript, Vite and SFC for Vue.js 3 to simplify contributions to this project
- migration to Bootstrap v5 is definitely on the priority list but right after previous step
I will keep you posted on updates
Original description from December 2021
# TL; DR- New maintainers are here
- Pull requests will be reviewed within several days
- There will be a new release of
bootstrap-vue
coming with fixes included - Primary goal of the team is to rewrite
bootstrap-vue
to support Vue 3 and Bootstrap v5. We will do this in a separate repository. We will announce the detailed roadmap for a rewrite as soon as we have it
Long version
Hello there! It’s been a tough year for all of us, and bootstrap-vue
is not an exception.
The real power of opensource is that it is always about community. And the very first words of my gratitude will be to every person who contributed here - by opening an issue, making a pull request, posting a comment, or just starring the repository. My second gratitude comes to @Hiws, who helped people so long in this repository.
bootstrap-vue
is not dead, and after a long period of silence, it has new people in the org added - it’s me and @cdmoro (invitation is pending, but I personally hope he will join us!). While our primary interest is making bootstrap-vue
modern & fancy - to add support Vue 3 and Bootstrap v5, it does not mean this repo is abandoned.
Starting from tomorrow, I will go through the pull requests and review them. Afterward @pi0 is going to do a release of bootstrap-vue
package with all the changes.
I will also try to do my best in cleaning issues (but obviously with lower priority)
Now about the rewrite. We’ve set up a separate repository for that. It will be private just for a few days to set up the initial structure, flesh out project goals/non-goals, and our coding style. After that, it will be open to everyone - everyone can contribute! 🎉
Right now I have my own vision of the goals for rewrite, but since now I’m speaking “officially” I would like to postpone announcing them. Stay tuned and thank you again!
Updated roadmap
💀 “end-of-life” goal for current bootstrap-vue code
There definitely will be two more minor releases:
- one with all available and acceptable pull requests merged. I’m working on this personally and I hope this will be ready before Jan 7th
- one with
@vue/compat
compatibility, but only for{ MODE: 2 }
. This will allow people start migrating their code to Vue3 while rewrite project is in progress.
There might be additional releases if we will discover any important regressions in current code
Rewrite
⭐ Goals:
- provide release for Vue3 using bootstrap v4 compatible with current bootstrap-vue API (including props, events, slots, etc.) as much as possible.
- provide clear migration path for features, impossible to migrate (for example
$root
) - provide compatibility build for rewrite for Vue2. Compatibility build will be using @vue/composition-api and will allow us to deprecate current codebase entirely and promote new code as single source of truth
- migrate to bootstrap v5 as soon as rewrite to Vue3 will be complete (all existing components ported)
- always keep a11y in mind, providing sane defaults but also including as much ARIA extension endpoints as possible. This one, I believe needs detailed explanation. Providing good a11y is always trade-offs making "good a11y almost impossible for generic components library like a11y. Providing “extension” points is pretty straightforward - each component, which potentially might need aria attributes will have it’s dedicated computed for that (for example
toggleButtonAria
,hideButtonAria
etc. We will promote this as an official way of “tuning”bootstrap-vue
components extending them (well, for setup it just means calling setup and consuming return values and redefining such computeds. These computeds will be added where we think it is appropriate but generally any user could easily request “a11y” extension point for any component if he/she needs that. I feel this like a good balance between making good components possible and diving forever in a11y/ARIA discussions
🔧 Implementation details
For new repository we will be using:
- single-file components to leverage powerful optimzation engine behind Vue compiler and to make it easier to contribute
- TypeScript
- Composition API and
<script setup>
.
📓 Basically flow of reimplementing component will be:
- copy component tests from old repository. We will possibly temporary allow use js for tests to focus on real code 😃. These tests by utilizing
vue-test-utils-compat
will be a reference for initial implementation - implement component for vue 3. Verify it via tests and via examples extracted from documentation from old repository
- make it work with Vue 2
- make shiny docs work with Vue3 (hello Nuxt3)
- refactor tests to use vue-test-utils-next api. This will require reverse compatibility layer (running v2 tests on vue-test-utils v1) but this is quite easy
- Eventually merge new repository intro this one as separate “root” to keep one repository as single source of truth and not confusing people 😃
Issue Analytics
- State:
- Created 2 years ago
- Reactions:372
- Comments:81 (24 by maintainers)
Top GitHub Comments
Sorry, no deadlines atm - we have Russia invasion in our country (Ukraine) and I’m writing this post from a shelter in Kharkiv, which is under rocket attacka for a few days
Please, keep an eye on updates and pray for Ukraine 🇺🇦
Once again update: I was still greatly distracted by war in my country. However in the next month I’m taking a time off in my main work and moving to another city (still in Ukraine, sigh), so I really have intention to release compat branch and release very initial version of something Vue3 related next month.
Thanks everyone for your patience ☮️