We've been working long and hard....and are simply overflowing with excitement that we've finally made it to the Beta 1 release of Aurelia! We're staging this release over the course of the week. Today, we're launching the libraries themselves.
Beta 1 is Here
Almost 1 year ago, I (Rob) started writing the code for Aurelia. Now we're at Beta, and a lot has changed...a lot of very exicting things have been happening.
I spent the end of 2014 and the first couple months of 2015 seeding the codebase of Aurelia with what I thought cast a powerful vision for the future of web programming. Since then, things have taken off. Aurelia isn't just a me. It hasn't been for many months. We've got an amazing team of about 18 developers, designers and technology evangelists. Together the team has taken my initial ideas and brought them to life. A big thanks goes out to everyone on the team who stepped up to put all the hard work into making this release possible. It's been great working with all of you and I'm excited about what we've got planned for the future.
Aurelia has taken off in an amazing way. We're approaching 6,000 stars on GitHub and have one of the largest and most active Gitter dev chats in the world with over 2,400 developers discussing Aurelia and over 180,000 messages.
Aurelia is being adopted today by major enterprises, large international organizations and businesses of every size. It's being used in healthcare, insurance, finance, entertainment, technology, developer tools, LOB, gaming and more.
And all that's happened in only 9 months...
In addition to the core 18-developer team, we've had another 220+ contributors to the project, with an average of 20-25 new contributors every month. This amazing community has submitted and helped us close almost 1,400 issues and almost 1,000 pull requests.
From the bottom of our hearts, we want to say thank you to everyone who contributed, no matter how large or small (yes, even thanks to the Google guy who fixed the missing semi-colon;))
Today, you can watch K. Scott Allen's course on Pluralsight. However, there are two more courses, dedicated to Aurelia coming in the next months and more coming which will be using Aurelia to demonstrate other technologies (such as data integration and elastic search).
We've got three major tech book publishers we've lined up with authors. So, you'll be seeing Aurelia books available sometime next year. We're also connecting Lynda.com and other online video training sites with competent authors and core team members. MSDN magazine has serveral articles touching on Aurelia too, thanks to the fabulous Julie Lerman.
Looking to get a quick video-fix? Here's a video I recorded with Channel 9 a couple weeks back. It shows some things you may not have seen before:
Lots of great content is on the way!
What's in this release anyway?
Last week we released a pre-beta, so if you have updated to that, you shouldn't need to worry about any breaking changes. Having the pre-release gave us some time to address a few additional issues and helped to make our official Beta much more solid.
As of this Beta, we are now releasing all libraries officially through NPM. We will still continue to release through GitHub and to the Bower repository, but our JSPM configuration will be pointing at NPM. This will make it easier for continuous integration, use of our libraries on the server and future scenarios such as server-side rendering that we are planning. It will also put an end to the pesky GitHub rate limit problem.
We're calling this our Beta 1 release. We're also planning a Beta 2. I want to fill you in on what is planned for that and why we are doing a second Beta before v1.
We've been working very hard to lock down and stabilize our APIs for Beta 1. We're happy with how that has turned out. That said, we're building on top of the ever-changing web, so things out of our control can affect our plans.
The Beta 2 will include additional performance optimizations and bug fixes, as expected. It will also include a few final features. However, the real reason for the second beta is to address in-process changes to web specifications. Below, I'll list the upcoming changes we know of and provide some recommendations to you, so you are prepared for them.
- Babel - A couple of weeks ago Babel released their v6. Unfortunately, this release has some bugs that affect us, making it impossible for us to upgrade our build process at this time. For Beta 2 we will be fully up-to-date with the latest Babel version (or if Babel problems persist, we'll utilize TypeScript). Ultimately, the outcome of this should have no affect on you. It's only an issue of how we build Aurelia internally.
- Decorators - The ES2016 Decorators spec is still a little in flux. There may be a breaking change to the spec coming. This shouldn't affect you, unless you were creating custom decorators. The Aurelia team will just need to update our own code when the transpilers change.
- Shadow DOM - The Shadow DOM specification has settled down to a v1 spec that is different than what is available in Chrome, available polyfills and Aurelia. The
<content></content>tag is being replaced with a
<slot></slot>tag. Content no longer uses CSS selectors, rather, slots are named and content specifies which slot it should be plugged into. This is a pretty serious change and one we didn't think we could squeeze into the Beta without potentially breaking things in a serious way. We opted to delay this update until Beta 2. If you are creating custom elements that use
<content></content>I'd like to provide you a little advice on how to prepare for that. You can continue using the existing content model for now. Both content and slots have the notion of a "default" content/slot so you only really need to worry about things if you were using the
selectattribute. To prepare for the update, only use the
selectattribute with a single class selector. Since slots have names in the new model, you need a selection plan that will translate cleanly from the
selectattribute of the
contentelement to the
nameattribute of the
slotelement. I suggest using a class name for content, then that class can become the slot name in the new model. With that practice, the upgrade should be quick and easy for you.
- System.loader - The official module loader specification is also changing a bit. This probably will not affect you. If you want to be safe, do any/all dynamic loading through Aurelia's Loader. That will shield you from changes in the spec. If you do that, the only code you will need to change is the
System.importcall in your HTML page. We will handle the rest.
- JSPM Peer Dependencies - In an upcoming release of JSPM, it will be possible for Aurelia and its plugins to declare themselves as "peer dependencies". This will solve a number of issues around unexpected version forks when plugins and framework libraries declare incompatible versions. It will also simplify several usage scenarios.
All of these items are squarely outside of our control. We have been planning for them and are attempting to shield you from the messiness of these changes. So, for the most part, you won't need to worry too much.
As mentioned at the top of this post, we're staging the Beta release over the course of five days. The first day, today, we've launched the updated libraries. We've got other announcements and releases planned for the other days. In particular, you may be interested in getting into the new docs...that will be coming mid-week.
Stay tuned. More great stuff is on the way!