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

🏁 Roadmap & Iteration plan Q2-Q3 2023 #1710

Open
bigopon opened this issue Mar 21, 2023 · 1 comment
Open

🏁 Roadmap & Iteration plan Q2-Q3 2023 #1710

bigopon opened this issue Mar 21, 2023 · 1 comment

Comments

@bigopon
Copy link
Member

bigopon commented Mar 21, 2023

A roadmap and an iteration plan will be provided & updated below for better clarity on the focus of the development

πŸ—ΊοΈ Roadmap

Main featrures

  • @children and <au-slot> #1205
    This is a missing feature for application migrating from v1. Even though via some hacks, the current @children can provide the desired outcome, but it's not appropriate. A new decorator @slotted is needed as equivalence of @children for <au-slot/>
  • getter/setter for @bindable #1602 #1180
    This is necessary for preparing for the incoming official decorator feature of the JS language. As it'll be common for people to use @bindable on getters/setters & auto accessors
  • global identifiers in our template #1490
    This is commonly needed in all applications. As apps grow it'll be just boilerplate for some global values since they are used everywhere. This also helps make our template more natural and close to standard JS
  • SSR implementation preparation #1698
    This is a crucial feature for many of our users as it enables many high level development frameworks on top of Aurelia, as well as unblock use cases for our users applications. This also helps us assert how far we are from static site generator (SSG)
  • partially pre-compile template (~partial AOT) #1504
    Precompiling our template & binding expressions during build time could help further reduce application startup time, and gives better startup performance. While the end goal is the ability to automatically recognize all code and collect the resources, we can start with simple manual config/json file to help the pre-compiler achieve this output so applications can start benefiting.
  • Vite plugin: this is a commonly requested feature, as well as a good to have item, since the development experience with Vite is nice. The main work was done awhile ago but the actual plugin still needs to be released. #1651

Other fixes & improvement

  • Upgrade TS version to 5.0, there may or may not be a lot of issues. We probably can clean up quite a bit our code base too. TS is also smaller and faster, so it should help with development speed a bit. #1711
  • Cleanup & optimize the routers. The routers at the moment don't make efforts to save on size, or DX, it should be improved with our __DEV__ setting. #1712
  • resolve inconsistency between local template & convention #1091
  • investigate a way to flush debounce & throttle on signal #1145
  • add support for property injection #1742
  • add support for getter based observer location #1747
  • simplify resources system #1749
  • auto inferred binding expression #1259
  • @newInstanceOf and @newInstanceForScope work with interface #1765
  • stop using au class to mark rendering targets.
  • <au-compose/> pass through props (#497) + containerless support

πŸ“ Iteration plan

  • April: upgrade TS to v5.0 so a new foundation can be established. Since TS is a dev dependency and there' not a lot of breaking changes, maybe our tooling won't break/or too badly.
  • April: Support global identifier in AST & the ability to retrieve children of au slot are useful and necessary for applications so they should be implemented first, as they are not big in scope.
  • April/May: implement the @slotted behavior
  • April - June: First part of SSR. It'll start by investigating a separate rendering mode hydrate, in which the hydrator knows how to distribute a DOM structure to each instruction for a definition. This is like the testing ground for SSR output. After this step, we can execute the server side part of SSR
  • April - Aug: The work on pre-compilation of template can start in parallel, as it's more tooling focused, and thus has more freedom and less shared areas with other work. We'll need to start with some basic assumption like known global resources and make it more flexible eventually. @fkleuver probably can work on this.
  • April: release Vite plugin

There could be some more bug fixes/small improvements made depends on the necessity.

βœ”οΈ Statuses

item status PRs
upgrade TS 5.0 βœ… #1711
vite plugin βœ… #1726
@children, @slotted & <au-slot> βœ… #1735
flushable debounce/throttle βœ… #1739
property injection βœ… #1748
getter observer βœ… #1750
getter bindable βœ… #1753
newInstanceOf/forScope + interface βœ… #1767
stop using au class to mark rendering target βœ… #1768
global variables βœ… #1790
<au-compose> pass through + containerless βœ… #1792

🏁 Next steps

  • virtual repeat #937
  • optimize lifecycle to support arbitrary activation/deactivation
  • upgrade decorators to be compatible with incoming official decorator feature. This will rely on the decorator metadata proposal https://github.com/tc39/proposal-decorator-metadata
  • more to be updated
@bigopon bigopon changed the title 🏁 Roadmap & Iteration plan Q2-Q3 2023 [DRAFT] 🏁 Roadmap & Iteration plan Q2-Q3 2023 Mar 23, 2023
@swalters
Copy link

The roadmap is great and much appreciated. Can you add the planned timing for a production or LTS support release?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants