# Roadmap for Aurelia 2 alpha

**URL:** https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677
**Category:** Uncategorized
**Created:** [July 25, 2020, 10:14pm UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677 "2020-07-25T22:14:58Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![fkleuver](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/fkleuver/32/994_2.png) [@fkleuver](https://discourse.aurelia.io/u/fkleuver)
#### Post date: [July 25, 2020, 10:14pm UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/1 "2020-07-25T22:14:58Z")

</div>

Hello friends!

With the v2 alpha release in sight in a matter of weeks (more on that later), we would like to share a high-level roadmap with regards to the packages and features that are in-scope for the alpha release, as well as those that will be added later.

### What does “alpha” mean?

For Aurelia 2, “alpha” refers to feature completeness, API stability and compatibility. Due to our huge investment in testing we are confident that there will be little to no bugs in the core framework that we don’t already know about.

These bugs that we know about, the documentation, the last pieces of the router and a few misc things are all that remain for an alpha release that we think you will experience as productive and pleasant to work with.

There are still some experimental APIs that need polishing, some packages need to be renamed, merged or split up, and we have a fair bit of cleaning up to do in the area of unnecessary exports.

We will use the alpha period to polish and stabilize our APIs as much as possible so that once there is a stable release, you won’t be confronted with any breaking changes for some time to come.

In concrete terms, as you upgrade from one version to the next while still in alpha, you might run into one of these situations:

- An api is renamed, or moved from one npm package to another
- The signature of an api changed (e.g. parameters are added or removed, or the return type changed)
- Two or more APIs are consolidated into one, or one API is split up into two or more APIs
- The side-effects produced by an API might change slightly

We will make sure to clearly inform you which APIs are particularly unstable, via both the documentation (at [docs.aurelia.io](http://docs.aurelia.io)) and the JSDoc comments (visible in the IDE via intellisense). This will allow you to make your own trade-offs.

As a rule of thumb, when something already existed in v1 it’s probably stable. While the newly added APIs in v2 are generally based on community requests as well as real-world needs of the core team, some of them will require more exposure to real-world usage to discover how they can be made more ergonomic.

The list below is neither completely exhaustive nor completely set in stone; it will evolve as we receive community feedback and progress towards a stable release.

So without further ado:

## The roadmap

### pre-`v2.0.0-alpha`

- [x] `@aurelia/metadata`
  - [x] v1 features
  - [x] `tslib` & `reflect-metadata` compatible Reflect polyfill

- [x] `@aurelia/platform-browser`
  - [x] v1 features

- [x] `@aurelia/platform-node`
  - [x] v1 features
  - [x] node-specific scheduler optimizations

- [x] `@aurelia/di`
  - [x] v1 features
  - [x] Injectable interfaces
  - [x] `callback` resolver
  - [x] Registration hoisting configuration

- [x] `@aurelia/logging` (new DI-based concept)
  - [x] Customizable formatters
  - [x] Customizable sinks

- [] `@aurelia/events` (was: `event-aggregator`)
  - [x] v1 features
  - [] `EventEmitter`-compatible api

- [x] `@aurelia/scheduler` (was: `task-queue`)
  - [x] Queueing mechanisms
    - [x] `queueMicrotask`
    - [x] `setTimeout`
    - [x] `requestAnimationFrame`
    - [x] `requestPostAnimationFrame`
    - [x] `idleCallback`

  - [x] Async & cancellation
  - [x] Delaying & preempting
  - [x] Looping tasks (for manual animation, game loops, etc)

- [] `@aurelia/runtime` / `@aurelia/runtime-html`
  - [] Custom Attributes
    - [x] v1 features
    - [] `au-slot` (was: `replaceable`)
    - [x] `portal`
    - [x] `focus`
    - [x] `blur`

  - [] Custom Elements
    - [x] `au-compose` (was: `compose`)
    - [] `au-slot` (was: emulated `slot`)

  - [x] Binding Behaviors
    - [x] v1 features

  - [x] Value Converters
    - [x] v1 features
    - [x] `view`

  - [x] Class Decorators
    - [x] v1 features\*
    - [x] `@view`
    - [x] `@bindingCommand`
    - [x] `@attributePattern`
    - [x] `@instructionRenderer`

  - [x] Property Decorators
    - [x] v1 features\*

  - [x] Local templates
  - [x] Await async bind & attach hooks
  - [x] Async hook cancellation
  - [x] Composition cancellation
  - [x] Proxy-based observation (auto computed, array index, array length)
  - [x] Bindings
    - [x] All v1 features
    - [x] `class` & `style` (bind to object)

  - [x] Tens of thousands of integration tests

- [x] `@aurelia/i18n`
  - [x] v1 features
  - [x] improved APIs and binding integration

- [x] `@aurelia/validation`
  - [x] v1 features
  - [x] model-based validation
  - [x] OOTB i18n support
  - [x] improved APIs and binding integration

- [] `@aurelia/fetch-client`
  - [x] v1 features
  - [] v2 api consistency

- [] `@aurelia/router`
  - [x] v1 features\*
  - [x] Direct routing (routing without explicit configuration)
  - [x] `dynamic` mode, where conditionally and/or dynamically rendered viewports work seamlessly on the same navigation where they were created
  - [x] Sibling routes
  - [x] `@route` decorator
  - [] Tens of thousands of integration tests
  - [] And much, much more (additional details will follow)

\*Some features will be completed over the course of alpha, and so they may be marked as complete but that only refers to the part that’s in-scope for alpha. The rest is specified below.

### post-`v2.0.0-alpha`

- IE11 compatibility
- `@aurelia/inspect` (serialize arbitrary objects into a readable format, used by `assert`)
- `@aurelia/assert` (a web-compatible port of node `assert` with some aurelia-specific helpers)
- `@aurelia/platform-webworker`
- `@aurelia/platform-deno`
- `@aurelia/di`
  - Interceptors

- `@aurelia/runtime`
  - Custom Attributes
    - `show`
    - `switch`
    - `virtual-repeat`
    - `au-host`, `au-bind`, `au-transfer-bindings`, `au-transfer-attrs`

  - Class Decorators
    - `@processContent`

  - Property Decorators
    - `@observable`

  - Suspense (already possible with `if.bind`, but this is about a more ergonomic api)
  - Time-slicing
  - `createElement` api
  - Destructuring in binding expressions
  - CustomElement as template controller
  - Dirty checking configurability (explicit disable/enable, override interval)
  - Surrogate behaviors on `au-viewport` / `au-compose`
  - `@bindable` type conversion
  - `@bindable` reflection
  - Improved handling for file observation, and toggle-like attributes
  - SSR integration

- `@aurelia/runtime-xml` (nativescript)
- `@aurelia/runtime-json` (interop layers)
- `@aurelia/runtime-tsx`
- `@aurelia/dialog`
- `@aurelia/store`

Node packages

- `@aurelia/http-server` (clean alternative to `http-server` with http2 push optimizations)
- `@aurelia/test-runner` (more performant, easy-to-use alternative to karma for real browser tests)
- `@aurelia/bundler` (to provide more performant, native modules compatible outputs)
- `@aurelia/compiler` (build-time optimization for smaller and faster bundles with less framework code)

## Why the hold-up?

That checkbox with “tens of thousands of integration tests” underneath the router is the main reason for the hold-up. As you may already know, the v2 router brings some amazing new productivity feats to the table. We’ve also made a promise that migrating from v1 to v2 should be a breeze for most people, and that v2 will be able to do whatever v1 can do (and more).

The combination of a fundamentally new way of routing with the ability to do things the “classic” way has led to some entirely new types of challenges.  
We want to ship something of which we’re confident that it’s deterministic and predictable in even the most complex edge cases, and that it _stays_ that way in the future when new features are added. So the past 2-3 months have revolved almost entirely around getting the router working (and tested!!) in every situation we can think of.  
We’re not done with that yet, but the biggest challenges are behind us now and we’re very excited about what it has become: quite possibly the most powerful, flexible, robust and well-tested router in the front-end landscape.

In short, we don’t want to ship something when we’re not confident that it works (even if it’s alpha), but we also understand that people are counting on being able to start working with v2 relatively soon.  
This is why we’ve moved a number of backlog items to be done post-alpha. In the case of core features, most will be added before we go beta, but some packages (such as the compiler) will likely come a bit later and have their own separate version.

## What’s next?

Once we feel that the APIs are good enough to serve for a few years, we’ll move to `v2.0.0-beta`. At that point, there will be limited new features or breaking changes. We’ll focus on fixing any browser or platform-specific bugs (up until alpha we’re only running our tests in Chrome, FF and Node) and creating a IE11-compatible release.

When we’re confident that things work on all necessary browsers/platforms, we’ll move to `v2.0.0-rc` and focus almost exclusively on technical improvements (improve runtime perf, reduce memory usage) and documentation.

Finally, we’ll release as `v2.0.0`. We’re skipping `v1.0.0` for the `@aurelia/`-prefixed packages just to reduce the potential for confusion with `v1` \<-\> `v2`.

With that, I’d like to thank the community for their ongoing patience and support and the team for their commitment and relentless effort in building, promoting or otherwise helping to ensure the success of Aurelia!

---

<div class="post-metadata">

### Author: ![EisenbergEffect](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/eisenbergeffect/32/2655_2.png) [@EisenbergEffect](https://discourse.aurelia.io/u/EisenbergEffect)
#### Post date: [July 25, 2020, 10:28pm UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/2 "2020-07-25T22:28:03Z")

</div>



---

<div class="post-metadata">

### Author: ![cberkley](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/cberkley/32/1722_2.png) [@cberkley](https://discourse.aurelia.io/u/cberkley)
#### Post date: [July 27, 2020, 2:21pm UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/3 "2020-07-27T14:21:14Z")

</div>

Super exciting! Keep going guys, you are almost there!

---

<div class="post-metadata">

### Author: ![xenoterracide](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/xenoterracide/32/1728_2.png) [@xenoterracide](https://discourse.aurelia.io/u/xenoterracide)
#### Post date: [July 28, 2020, 3:11pm UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/4 "2020-07-28T15:11:57Z")

</div>

I’ve been using metadata/di for a node app, and it’s working great, still needs a few improvements, but can’t complain too much. Soon to production.

---

<div class="post-metadata">

### Author: ![migajek](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/migajek/32/379_2.png) [@migajek](https://discourse.aurelia.io/u/migajek)
#### Post date: [July 29, 2020, 7:06am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/5 "2020-07-29T07:06:01Z")

</div>

Any chances to have it working on, say, StackBlitz? Recently I wanted to convince my team to use Aurelia for a new project. The fact I had to set up local project for a demo was a big point against ☹

---

<div class="post-metadata">

### Author: ![HamedFathi](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/hamedfathi/32/2099_2.png) [@HamedFathi](https://discourse.aurelia.io/u/HamedFathi)
#### Post date: [July 29, 2020, 11:33am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/6 "2020-07-29T11:33:15Z")

</div>

Aurelia 2 works on StackBlitz, CodeSandBox and anywhere else, you have no restriction.

Also you can use [https://gist.dumber.app/](https://gist.dumber.app/) too. This is made by one of Aurelia core team member.

---

<div class="post-metadata">

### Author: ![brandonwittwer](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/brandonwittwer/32/1890_2.png) [@brandonwittwer](https://discourse.aurelia.io/u/brandonwittwer)
#### Post date: [August 19, 2020, 1:47pm UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/7 "2020-08-19T13:47:59Z")

</div>

Thrilled to support this project and looking forward to 2.0 like the rest of us. SUCH a better 2.0 than angular ::shots fired::

---

<div class="post-metadata">

### Author: ![nmocruz](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/nmocruz/32/1633_2.png) [@nmocruz](https://discourse.aurelia.io/u/nmocruz)
#### Post date: [September 8, 2020, 11:32am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/8 "2020-09-08T11:32:58Z")

</div>

There’s any estimation dates? I know that covid is people on vacation can be affection the progress, but I see aurelia 2 activity very low.

---

<div class="post-metadata">

### Author: ![bigopon](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/bigopon/32/18_2.png) [@bigopon](https://discourse.aurelia.io/u/bigopon)
#### Post date: [September 8, 2020, 12:26pm UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/9 "2020-09-08T12:26:13Z")

</div>

Well, we’ve got a few pretty awesome new features from @Sayan751 recently. For the activity question, my guess is at the moment, we are trying to get basic set of features on par & stable. I think for this design/foundation heavy type of work, it’s hard to be super active. And it’s not alpha yet, so … no user, pretty much everyone came to Discourse & Discord for question.

Maybe @jwx and @Sayan751 and @fkleuver have more to say. For me, I’m working & experimenting on a few new capabilities of the observation & binding systems.

---

<div class="post-metadata">

### Author: ![nmocruz](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/nmocruz/32/1633_2.png) [@nmocruz](https://discourse.aurelia.io/u/nmocruz)
#### Post date: [September 9, 2020, 9:32am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/10 "2020-09-09T09:32:00Z")

</div>

I fully understand but is been hard to convince other people to use aurelia when they see so low activity in the project and around it. I know that angular and react have more money to spend on teams focusing on their frameworks. Even me, I’m bit losing hope, seems like fast.design is more important now then aurelia 2.0 for some people,

---

<div class="post-metadata">

### Author: ![bigopon](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/bigopon/32/18_2.png) [@bigopon](https://discourse.aurelia.io/u/bigopon)
#### Post date: [September 9, 2020, 9:58am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/11 "2020-09-09T09:58:20Z")

</div>

Well, if it’s someone day job, then I would think it better be more important. Though I share your feeling, can only try a bit harder to push things over the line. Also, the evolution of FAST has given some pretty good ideas in some areas we could improve v2 as well. Finger crossed we can materialise those ideas.

---

<div class="post-metadata">

### Author: ![zewa666](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/zewa666/32/19_2.png) [@zewa666](https://discourse.aurelia.io/u/zewa666)
#### Post date: [September 9, 2020, 9:25pm UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/12 "2020-09-09T21:25:14Z")

</div>

To quote the famous Blizzard saying “it’s done when it’s done” won’t really help but keep in mind exactly that extra time it took made great games. I hope you see the relation 😉

Depending on how one determines activeness you’re right it lacks visibility but we’re close to alpha so all distractions are purposely pushed back.

I can only ask in the name of the team for a bit patience.

---

<div class="post-metadata">

### Author: ![arjendeblok](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/arjendeblok/32/802_2.png) [@arjendeblok](https://discourse.aurelia.io/u/arjendeblok)
#### Post date: [September 10, 2020, 5:50am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/13 "2020-09-10T05:50:55Z")

</div>

I think I am really patience. But referring to a quote from @fkleuver on may 22th.

> The aim is to get au2 alpha released by the end of June.

After that quote I also read a lot of times that the alpha release is only a couple of weeks away or it is very close. No commits anymore on the master branch for two months is also not helpful.

When people have to make a decision right now for a front-end framework and have to convince their management it is not really helpful that there is no release planning at all for Aurelia 2.

---

<div class="post-metadata">

### Author: ![nmocruz](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/nmocruz/32/1633_2.png) [@nmocruz](https://discourse.aurelia.io/u/nmocruz)
#### Post date: [September 10, 2020, 10:03am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/14 "2020-09-10T10:03:56Z")

</div>

> [@arjendeblok](#):
>
> When people have to make a decision right now for a front-end framework and have to convince their management it is not really helpful that there is no release planning at all for Aurelia 2.

I’m not even able to convince my work mates, main reason is small comunity. I’m my case I dont mind with low popularity, I just dont want to migrate a project from knockout to a frameworks that has aslo almost no progress.

---

<div class="post-metadata">

### Author: ![zewa666](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/zewa666/32/19_2.png) [@zewa666](https://discourse.aurelia.io/u/zewa666)
#### Post date: [September 10, 2020, 11:23am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/15 "2020-09-10T11:23:16Z")

</div>

Perhaps something should be made clear. This is going to be an alpha so by all means you shouldn’t go prod with a big project using it. Nothing stops you from using v1 and the port to v2 is going to be way easier then people might think.

---

<div class="post-metadata">

### Author: ![CaptainPaella](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/captainpaella/32/2142_2.png) [@CaptainPaella](https://discourse.aurelia.io/u/CaptainPaella)
#### Post date: [September 10, 2020, 9:20pm UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/16 "2020-09-10T21:20:21Z")

</div>

Hi,

Out of curiosity: Is an alpha release in 2020 still likely to happen?

Cheers!

---

<div class="post-metadata">

### Author: ![HamedFathi](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/hamedfathi/32/2099_2.png) [@HamedFathi](https://discourse.aurelia.io/u/HamedFathi)
#### Post date: [September 11, 2020, 5:31am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/17 "2020-09-11T05:31:08Z")

</div>

@arjendeblok

So sorry for delay, Actually there are some important things before releasing alpha.

> No commits anymore on the master branch for two months is also not helpful.

Yes, but this does not mean inactivity. e.g. You can find one of the most important PR here

> <https://github.com/aurelia/aurelia/pull/845>
>
> \<!---
> Thanks for filing a pull request 😄 ! Before you submit, please read the f…ollowing:
> 
> Search open/closed issues before submitting since someone might have pushed the same thing before!
> \--\>
> 
> \# Pull Request
> 
> \## 📖 Description
> 
> In this PR:
> \- Additional lifecycle hooks added on specific timings, and minor changes to the timings and order of some hooks. Purpose is to improve consistency and make them more compatible with scheduling, time-slicing, task cancellation and animation.
> - Combined \`bind\` and \`attach\` APIs on the controller interface into \`activate\`
> - Combined \`detach\` and \`unbind\` APIs into \`deactivate\`
> - In the built-in resources, \`activate\` is called during \`afterAttach\` and \`deactivate\` is called during \`afterUnbind\`. This means that, rather than lifecycle invocations going phase-by-phase (first all \`bind\`, then all \`attach\`, etc), they now go controller-by-controller. This allows controllers to be scheduled and time-sliced, makes first-class support for render-blocking animations and suspense (in cleaner forms) possible, simplifies integration with the router and generally reduces the "attack surface", or more specifically, the ways in which the API can be used wrongly.
> - All lifecycle hooks are now awaited if the component returns a promise. This means:
> - When returning a promise from \`afterAttach\` (that resolves after e.g. an animation is done), this will block activation of child components until the promise resolves. The same already applied for binding hooks
> - When returning a promise from \`beforeDetach\`, this will block unmounting of the component itself as well as deactivation of child components until the promise resolves (likewise, the same already applied for unbinding hooks)
> - \`afterBind\` changed to the timing of "after binding self, but before binding children"
> - \`afterUnbindChildren\` added at the original timing of \`afterUnbind\`
> - \`afterUnbind\` changed to the timing of "after unbinding self, but before unbinding children"
> - unbind lifecycle changed from depth-first to breadth-first to make the above possible and to be consistent with the bind lifecycle
> - \`afterAttachChildren\` added at the original timing of \`afterAttach\`
> - \`afterAttach\` added changed to the timing of "after attaching self, but before attaching children"
> - removed \`beforeAttach\` because it has no use anymore (timing would be identical to \`afterBind\`)
> - removed \`afterDetach\` because it has no use anymore (timing would be identical to \`beforeUnbind\`)
> 
> - \`dispose\` added which is called after \`afterUnbindChildren\` (the last "out" hook), if and only if \`.release()\` is called on the controller (or one of its parents) prior to deactivation, and no parent view has caching enabled (in that case that view along with its whole subtree is returned to cache instead).
> 
> 
> \- Added an async task api to the scheduler, for tasks that need to be awaited internally. This will be useful for, among others:
> - Realizing otherwise difficult scenarios such as animating via async attach/detach hooks with time-slicing enabled, etc.
> - Simplifying the wireup of router lifecycle hooks
> - Removing the \`ILifecycleTask\` interface and its implementations, significantly simplifying the runtime
> 
> \<!---
> Provide some background and a description of your work.
> \--\>
> 
> \### 🎫 Issues
> 
> \<!---
> \* List and link relevant issues here.
> \--\>
> 
> \## 👩‍💻 Reviewer Notes
> 
> \<!---
> Provide some notes for reviewers to help them provide targeted feedback.
> \--\>
> 
> \## 📑 Test Plan
> 
> \<!---
> Please provide a summary of the tests affected by this work and any unique strategies employed in testing the features/fixes.
> \--\>
> 
> \## ⏭ Next Steps
> 
> \<!---
> If there is relevant follow-up work to this PR, please list any existing issues or provide brief descriptions of what you would like to do next.
> \--\>
> 
> \<!--
> Love Aurelia? Please consider supporting our collective:
> 👉 https://opencollective.com/aurelia
> \--\>

or

> <https://github.com/aurelia/aurelia/pull/916>
>
> \<!---
> Thanks for filing a pull request 😄 ! Before you submit, please read the f…ollowing:
> 
> Search open/closed issues before submitting since someone might have pushed the same thing before!
> \--\>
> 
> \# Pull Request
> 
> \## 📖 Description
> 
> \<!---
> Provide some background and a description of your work.
> \--\>
> 
> This PR replaces the \`replaceable\` \`part\` infra with the new \`au-slot\` custom element. The \`au-slot\` syntax of content projection is very similar to the native \`slot\` syntax. The primary difference is that it is a normal Aurelia 2 custom element without any shadowDOM. This means that CSS styles from outer element can penetrate the inner component boundary. Moreover, the use of template controllers like \`if\`,\`else\`, \`repeat.for\` works as well in combination with \`au-slot\`. For more context, refer #900.
> 
> \### Examples
> For the complete list of examples please refer: https://github.com/aurelia/aurelia/pull/916/files#diff-5c765f5d568c9f5d673e41674ae059e4.
> 
> Note that in the examples below, the local templates are used to provide the definition of the custom elements. However, \`au-slot\` certainly is not limited/tied to local templates in anyway, and works with normal custom elements as well. Local templates are used here to provide concise examples.
> 
> \#### Example#1: vanilla content projection
> 
> \`\`\`html
> \<template as-custom-element="foo-bar"\>
> \<au-slot\>fallback for default slot\</au-slot\> 
> \<au-slot name="s1"\>fallback for s1 slot\</au-slot\>
> \</template\>
> 
> \<foo-bar\>
> \<div au-slot\>projection to default slot\</div\> 
> \<div au-slot="s1"\>projection to s1 slot\</div\>
> \<div au-slot\>This is projected to the default slot as well\</div\>
> \</foo-bar\>
> \<foo-bar\>
> \<div au-slot="default"\>projection to default slot\</div\> 
>   
> \</foo-bar\>
> \`\`\`
> 
> \#### Example#2: Host scope
> 
> \`\`\`html
> \<template as-custom-element="foo-bar"\>
> \<bindable property="name"\>\<bindable\>
> \<au-slot\>\</au-slot\>
> \</template\>
> 
> 
> \<foo-bar name="bar"\>\<span au-slot\>Hello ${name}\</span\>\</foo-bar\> 
> \<foo-bar name="bar"\>\<span au-slot\>Hello ${$host.name}\</span\>\</foo-bar\> 
> \`\`\`
> 
> \#### Example#3: Dynamic slots using template controllers
> 
> \`\`\`html
> \<template as-custom-element="foo-bar"\>
> \<bindable property="showS1"\>\<bindable\>
> \<bindable property="people"\>\<bindable\>
> 
> \<au-slot name="s1" if.bind="showS1"\>s1fb\</au-slot\>
> \<au-slot name="s2" else\>s2fb\</au-slot\>
> \<au-slot name="list"\>
> \<au-slot name="list-row" repeat.for="person of people"\>
> ${person.firstName} ${person.lastName}
> \</au-slot\>
> \</au-slot\>
> \</template\>
> 
> \<foo-bar show-s1.bind="false" people.bind="people"\>
> \<span au-slot="s1"\> This projection will not be shown \<span\>
> \<template au-slot="list-row"\>${person.lastName}, ${person.firstName}\</template\>
>   
> \</foo-bar\>
> \`\`\`
> 
> More examples will follow in the doc PR (coming soon). 
> 
> \### 🎫 Issues
> 
> \<!---
> \* List and link relevant issues here.
> \--\>
> This PR closes #900, #654, #898, #399.
> 
> \## 👩‍💻 Reviewer Notes
> 
> \<!---
> Provide some notes for reviewers to help them provide targeted feedback.
> \--\>
> 
> \*\*Implementation outline:\*\*
> \- The template binder provides the information regarding the projections provided by a CE in the element symbol instance.
> \- The template compiler then compiles the projections and creates a mapping between a CE instruction and the projections targeted for it.
> \- The controller registers this map to the projection provider with the its \`scope\`.
> \- Later when the inner CE instruction (where projections are targeted) is hydrated, the targeted projections can be retrieved. The template compiler takes care of deciding the type of content: projection or fallback.
> \- A new keyword named \`$host\` is introduced to access the inner scope. Accordingly, the expression parser, the expression implementations are changed to respect the host scope. The host scope is always provided by the \`au-slot\`. So in a way, the \`$host\` keyword is tied to \`au-slot\`. This discourages usage of the \`$host\` keyword outside the context of \`au-slot\`.
> \- The \`parentOverrideContext\` is removed in favor of \`parentScope\`. That is used for scope, and context traversal.
> 
> \*\*Current limitations:\*\*
> \- It is not yet possible to mix the scopes at will. Following is an example. The reason the following example does not work is the following. The parent scope path is as follows: \`au-slot#3\` -\> \`coll-vwr\` -\> repeater -\>\`my-element\` -\> \`app\`. The \`h\` is registered in the overriding context of \`au-slot#2\` and that does not lie on the path. If the parent scope path can be modified like this \`... repeater -\> au-slot#2 -\> ...\`, such scope mixing could have worked (naively/hypothetically speaking). But that is more involved. As this might be an edge case, it is ignored for now. 
> \`\`\`html
> 
> \<au-slot name="grid"\>
> \<au-slot name="header"\>
> \<h4\>First Name \</h4\>
> \<h4\>Last Name\</h4\>
> \</au-slot\>
> \<span\>\</span\>
> \<template repeat.for="person of people"\>
> \<au-slot name="content"\>
> \<div\>${person.firstName}\</div\>
> \<div\>${person.lastName}\</div\>
> \</au-slot\>
> \<span\>\</span\>
> \</template\>
> \</au-slot\>
> 
> 
> 
> 
> 
> \<my-element people.bind="people"\>
> \<template au-slot="header"\> 
> \<h4\>First Name \</h4\>
> \<h4\>Last Name\</h4\>
> \<h4\>Pets\</h4\>
> \</template\>
> \<template au-slot="content"\> 
> \<let h.bind="$host"\>\</let\> 
> \<div\>Person#${$host.$index} ${h.person.firstName}\</div\>
> \<div\>${h.person.lastName}\</div\>
> \<coll-vwr collection.bind="h.person.pets"\>
> \<ul au-slot="colleslawt"\> 
> \<li repeat.for="item of $host.collection"\>${item} - ${h.person.firstName}\</li\> 
> \</ul\>
> \</coll-vwr\>
> \</template\>
> \</my-element\>
> \`\`\`
> \- It not yet possible to combine template controller with projections (that is with \`\[au-slot\]\`; template controllers works with \`\<au-slot\>\`). For example the following attempt will result a binder error.
> \`\`\`html
> \<foo-bar\>\<span au-slot if.bind="someCondition"\>does not work!\</span\>\</foo-bar\>
> \`\`\`
> However, there is an easy workaround for this.
> \`\`\`html
> \<foo-bar\>\<template au-slot\>\<span if.bind="someCondition"\>does not work!\</span\>\</template\>\</foo-bar\>
> \`\`\`
> \## 📑 Test Plan
> 
> \<!---
> Please provide a summary of the tests affected by this work and any unique strategies employed in testing the features/fixes.
> \--\>
> \- A bunch of data driven integration tests has been added for au-slot.
> \- Apart from that, tests also has been added for the following internal components
> - Expression parser
> - Expression evaluation (AST)
> - BindingContext resolution
> - TemplateBinder
> - TemplateCompiler
> \- Tests involving integration with other packages, such as i18n, and validation has also been added. 
> \- Tests also involve \`let\` binding. But as already discussed before, there are some limitation in this area.
> 
> \## ⏭ Next Steps
> 
> \<!---
> If there is relevant follow-up work to this PR, please list any existing issues or provide brief descriptions of what you would like to do next.
> \--\>
> Docs, docs docs.
> \<!--
> Love Aurelia? Please consider supporting our collective:
> 👉 https://opencollective.com/aurelia
> \--\>

ready to review.

@nmocruz

> I’m not even able to convince my work mates, main reason is small comunity.

What does a “small community” mean to your colleagues?

I am a little familiar with other frameworks like Angular, Vue , React let me show you an example, In Angular, they (The big community) are looking for `containerless` feature in 3 years and they got nothing!

> <https://github.com/angular/angular/issues/18877>
>
> \## I'm submitting a...
> \<pre\>\<code\>
> \[\] Regression
> \[\] Bug report
> \[X\] Feature… request
> \[\] Documentation issue or request
> \[\] Support request
> \</code\>\</pre\>
> 
> \## Current behavior
> Component-containers like \`\<app-root\>\`, \`\<app-hero-list\>\`, etc. do break flex layout.
> 
> 
> \## Expected behavior
> A component(or whole module) should have the option to create no html-element. Instead Angular should work with comments instead of html-elements, exactly like \`ng-container\`.
> 
> 
> \## Minimal reproduction of the problem with instructions
> \`\`\`
> \<html style="width: 100%; height: 100%;"\>
> \<body style="width: 100%; height: 100%; display: flex; flex-direction: column;"\>
> \<app-root\>
> \<div style="flex: 1; background: lightcoral;"\>I should have full height!\</div\>
> \</app-root\>
> \</body\>
> \</html\>
> \`\`\`
> 
> Plunker: https://plnkr.co/edit/aOWUciRx2EsRsKwL2zma?p=preview
> (Uncomment app-root in styles.css to see currently needed fix)
> 
> \## What is the motivation / use case for changing the behavior?
> Using \`display:flex\` only affects the child-element which gets broken by any \`\<app-component\>\` tag. To apply the example above with multiple nested components to require ugly, hardcoded stylesheets:
> 
> \`\`\`
> body,
> app-root,
> app-hero,
> app-hero-list,
> app-hero-detail {
> display: flex;
> flex-direction: column;
> }
> \`\`\`
> 
> Also, as a frontend developer, i don't like the \`\<app-component\>\` tags either :D
> 
> \## Environment
> 
> \<pre\>\<code\>
> Angular version: 4.x.x / 5.x.x

 ![image](https://canada1.discourse-cdn.com/flex027/uploads/aurelia/original/2X/a/af7d8fb7b4d1a00a0492b732ce827e819b794d27.png)

A bit hope from the creator of Angular. (22 days ago)

 ![image](https://canada1.discourse-cdn.com/flex027/uploads/aurelia/original/2X/4/461cf049259c6155250dd4c225f7ba1c86f746ff.png)

I want to say that whatever you use (Angular, Vue, React and …) there are problems, which one do you feel comfortable with? For me Aurelia.

Believe me, the project is in progress.  
Anyway, We still apologize for the delay.

> Out of curiosity: Is an alpha release in 2020 still likely to happen?

@CaptainPaella Sure!

But guys as @zewa666 said:

> This is going to be an alpha so by all means you shouldn’t go prod with a big project using it.

There is no magic here sometimes to get the best result we should be patient and it’s always hard.

---

<div class="post-metadata">

### Author: ![WisdomCorp](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/wisdomcorp/32/1902_2.png) [@WisdomCorp](https://discourse.aurelia.io/u/WisdomCorp)
#### Post date: [September 11, 2020, 8:31am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/18 "2020-09-11T08:31:25Z")

</div>

I guess the reason given about use Aurelia 1 is not right.

For one when a new version is about to release (even alpha 😉) why start new project with old one and who will explain to bosses why they have to migrate again after few weeks or after couple of months.

Another reason, the Aurelia 2 seems so much awesome, so people want to use it right away.

I think for future version it would be best not to discuss it until its at least alpha level.

Thanks

---

<div class="post-metadata">

### Author: ![zewa666](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/zewa666/32/19_2.png) [@zewa666](https://discourse.aurelia.io/u/zewa666)
#### Post date: [September 11, 2020, 9:21am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/19 "2020-09-11T09:21:15Z")

</div>

That’s a big problem in the community you’re tackling here. Larger projects require solid architectural understanding and part of that is knowing when you can reach out to experimental tech and when to stick to established tooling. I’ve seen various projects go nuts just because people followed trends.

There is a reason why things are called alpha, beta, rc and stable. If you’re about to start a new large project on an alpha of any framework you’re essentially a fan of russian roulette 🙂

Just because something looks nice and fancy doesn’t mean you should jump board. That is also true for Aurelia v2. We’ve always tried to educate people to make conscious decisions about their framework choice. That includes ourselves as well

---

<div class="post-metadata">

### Author: ![nmocruz](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/nmocruz/32/1633_2.png) [@nmocruz](https://discourse.aurelia.io/u/nmocruz)
#### Post date: [September 11, 2020, 9:31am UTC](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677/20 "2020-09-11T09:31:38Z")

</div>

> [@HamedFathi](#):
>
> What does a “small community” mean to your colleagues?

I believe that low resources online, documentation, people blogging, doing tutorials, maintaining plugins etc. If you google about Aurelia, try find videos on youtube etc. you don’t find many, and seems like is decreasing the frequency to new contents about it, many people don’t even know about it.

But that not on our controller, I would like to see microsoft to stop pushing blazor all the time to do web applications, and just support aurelia, this fast.design framework is another time waste, 0.001% of people would need that and some day micrsoft will move way like they did with silverligth.

[Next page](https://discourse.aurelia.io/t/roadmap-for-aurelia-2-alpha/3677.md?page=2)
