Currently, Ember uses release channels to help users balance between a desire for new features (canary or beta channels) with stability (the release channel). While semver guarantees mean that upgrades are quite straightforward, some users aren't able to upgrade every six weeks. To address these needs, we are announcing a new LTS release channel.
Ember 2.4 will be the first LTS release of the core framework, and will continue every four releases thereafter. Additionally, we've updated the emberjs.com/builds page with better guidance about when and how to use each of the channels.
For our users, LTS releases allow you to upgrade less frequently while still getting support from the Ember project and the wider ecosystem.
For addon authors, LTS releases allow you to know which versions of Ember to focus effort on.
As a project, Ember will provide security and critical bugfixes for the most recent LTS release, in addition to the most recent release (as we do today). We will also avoid breaking heavily used private APIs without first deprecating them in a previous LTS release.
You can read more about the problems we tried to solve and details about how it works in RFC #56.
The LTS Release Process
The existing release channels allow you to make a tradeoff. On canary, you get features as quickly as they land, but get no guarantees about those features. On the stable release channel, you have to wait 12 weeks for features to stabilize and make their way through the beta process, but you are rewarded with semver guarantees.
While this provides all the flexibility you need to make stability vs. features tradeoff, there is another orthogonal dimension: how often you can schedule time to upgrade. LTS releases give the community an alternative, sanctioned schedule that works better for users who prefer a slower pace.
By synchronizing the timing that these users upgrade, the community can decide to focus energy on specific versions, rather than a scattershot attempt to support every possible combination. This should result in more consistent support and easier upgrades for users on the LTS channel.
The Ember 2.4 branch will be moved into the LTS release channel six weeks after Ember 2.4.0. In other words, Ember 2.4 LTS will ship at the same time as Ember 2.5.0. This means that features begin on Canary, spend six weeks on beta before making it into the stable channel, and spend another six weeks on the stable channel before making it into the LTS release channel.
This same process repeats every four releases, meaning that the next release on the LTS channel will be Ember 2.8 LTS, which will ship at the same time as Ember 2.9.0.
For example, the expected release of Ember 2.4 stable (currently in beta) is on February 26th. To give you a sense for the cadence of our release channels, the projected release timeline is as follows.
LTS releases will receive critical bugfixes for 6 release cycles (36 weeks). This means we will support Ember 2.4 LTS with critical bugfixes until Ember 2.10.0 is released, around November 4, 2016.
LTS releases will receive security patches for 10 release cycles (60 weeks). This means we will support Ember 2.4 LTS with security patches at least until Ember 2.14.0 is released, around April 21, 2017.
As you can see in the above diagram, Ember 2.8 LTS is projected to ship around September 23, 2016. This gives you plenty of time to complete the migration to the next LTS release once it comes out. As always, because Ember 2.8 is semver compatible with Ember 2.4, the upgrade should be relatively smooth.
By the time 2.8 rolls around in roughly six months, any addons that make use
of the private
view APIs should have had a chance to update.
The LTS Guarantees
What makes an LTS release different than a stable Ember release? LTS releases come with guarantees about API stability and security:
Because each LTS release will receive security fixes for 60 weeks, we will backport them to at least the two most recent LTS releases. Read more about Ember's security policy.
Release notes for each LTS will contain a summary of features and deprecations added since the previous LTS. This will likely consist of a number of links to documentation, guides, and release notes for stable releases.
Addons and applications should constrain themselves to using Ember's public APIs. However, in practice we recognize that experimentation and use of "intimate" APIs is a reality. To ensure addons and apps using these intimate APIs have a migration path forward, any change to a heavily used private APIs will receive a deprecation warning in at least one LTS release. This gives LTS users and the addon community about six months to migrate away. For example, the
viewAPIs (private in Ember 2.x) will be marked as deprecated in Ember 2.4 LTS, and removed before Ember 2.8 LTS.
We encourage addon authors to maintain support for the latest LTS release, in addition to tracking changes in the stable releases.
In practice, since these releases still abide by semantic versioning, upgrading from LTS release to LTS release should not be significantly more work than upgrading along the six-week release cycle.
Upgrading less frequently will mean, of course, that a developer will wait longer to take advantage of new features. Additionally, it means the changes in best practices between releases (and in the number of deprecations) may feel more significant.
Legacy View and Controller Addons
Ember has provided the ember-legacy-views and ember-legacy-controllers addons since Ember 1.13. For large codebases, these addons provide a slower off-ramp for legacy view and controller features. Big apps can move to Ember 2.0 without the complete removal of views.
These addons rely on several private APIs expected to undergo significant refactoring in Ember 2.5 or 2.6. Therefore, the Ember 2.4 LTS will likely be the last LTS to support these addons. They will become unsupported in September or October with the release of Ember 2.8 LTS.
See You Soon
LTS releases are just one of the many things we've been working on; the core team has had a long couple of months and we're excited to share everything. There will be more announcements and plans shared at EmberConf (March 29-30 in Portland), looking forward to seeing so many of you there!