Little over a month ago, we announced the public preview of Aurelia. Since then the community has exploded and we've seen a lot of exciting things happen. Thanks to the core team and an engaged community, we've made some big improvements. We've still got a way to go yet, but the future looks great. Below we'll update you on what's happened in the last month as well as let you know what to expect next.
Features and Improvements
- Binding - We've been enhancing the binding system to handle the many different types of situations that crop up in real world apps. Our latest release can bind to
aria-attributes, SVG, name-spaced attributes and xlink attributes. We've also got our binding provider API in place, allowing you to teach the binding system how to observe new types of objects. We proved out the API design by implementing a provider for the BreezeJS data library too. Finally, we've also added support for computed properties, so we no longer need to fallback to dirty checking for those. You can build a completely observer-based system now.
- Animation - We've got our core animation abstraction in place now! This allows all DOM manipulations to be animated. Our animation system is abstracted, so you can plug in whatever animation library you like. We've got our first implementation done with animate.css which we'll be releasing soon. We're also looking at officially supporting other libraries like velocity and greensock.
- Tests and Testability - We've got hundreds of tests in place and we're adding tests on a daily basis. This is very important in our march towards release. We're also continuing to do work to enable easy testing of your apps. This includes enhancing our skeleton project to include setups for both unit and e2e testing. We've also got some preliminary tooling for in-browser binding debugging. There's lots more to come here.
- Bug Fixes, Etc. - As you might expect, we're fixing bugs regularly and patching up various odds and ends.
- Content - If you've been hanging out here, you've probably noticed that we've had a steady stream of content through this blog. The whole team has stepped up to write about Aurelia and we plan to continue this trend. You can expect to see more content written by various team members on Aurelia's features, development and evolution. We'll be sure to also provide you with regular status updates like this one.
What's Coming Next
- Benchmarking - It's a tricky task and you'll find that each framework does this a little different. It usually involved building benchmarking infrastructure first, before you can really get accurate information. We've just about got that in place and we're going to start working strategically on performance shortly. We've got a number of known improvements we can make to get huge gains, but rather than just guess about that, we're going to benchmark each code transformation and compare to previous versions. This will enable us to accurately get the best performing solution across browsers without any guess work. I and other team members will be reporting here on the advancements along with some of the interesting details around how it all works.
- Bundling and CLI - We're working with the JSPM team to help improve their core bundling capabilities. This will enable better bundling for not only Aurelia apps, but also anyone who uses their tooling in the future. These bundling features will start out as a nice Gulp task that you can use to prepare your application for production, but will eventually get rolled into our own CLI. The CLI will enable easier project setup, testing and bundling in the beginning. We've got a bunch more ideas planned for it of course...
- IE9 and IE10 Support - We've got IE9 and IE10 up and running in our "labs". We know what is needed to make these work automatically and we'll be making those changes in the next few weeks. We're happy to announce that the full fidelity Aurelia experience will be available in IE9 soon.
- Enhanced Documentation - Our current docs are only temporary. We are currently working on an awesome interactive documentation experience which will make it very easy for the community to help us build rich docs in the future.
Over the coming month or so there's likely to be an increase in breaking changes. We are doing this to address some core issues in a variety of places.
- View Loading and Resource Pipeline - We have some issues with loading views from external packages. This also relates to module loader path/map information not being used for view loading. This will be addressed but will require some changes to the way the loader works as well as the resource loading pipeline. The end result should be the resolution of these bugs as well as greater flexibility in the API.
- Plugins and Global Resources - Plugins and global resource registration will be affected by changes in the loader and resource pipeline. The result is that we should be able to lift the flat directory structure limitation for 3rd party plugins and load views from anywhere.
- Behavior System - We currently have CustomElement, AttachedBehavior and TemplateController behaviors. We hope to change this to only two categories: CustomElement and CustomAttribute. This should greatly simplify creating behaviors that plug into the compiler. We'll also add more metadata options that increase the flexibility of each of these behavior types. Additionally, we're going to make some changes in our metadata system so that we have support for ES7 Decorators with the same codebase.
Along side the framework development, there's a lot of work going into business planning. We want Aurelia to be around for a long time and to have a full ecosystem. We're currently preparing to begin fund raising. We've also partnered with various other companies to provide official training materials, consulting and support. You'll hear more about this as we get closer to release. Finally.....we're working on some other products to enhance the Aurelia development experience, but you'll have to wait a bit longer to find out about those.