Skip navigation
All Places > Q & A > Release Notes > Release Notes: Canvas LMS > Blog > 2019 > May
2019

Last November we posted a proposal for Canvas release changes in 2019. Our proposal intends to improve the quality of Canvas releases, resolve bugs more quickly, and create more predictable releases with a more manageable pace. Community feedback proved highly supportive, and our engineering teams have continued to make progress with necessary adjustments. Thanks for your patience as we’ve been working out the specifics to share with you!

 

 

Release and Deploy Schedule

Since our initial proposal summary, our engineering teams have explored necessary adjustments for the feature release schedule, non-feature code deploy schedule, and the treatment of Canvas feature options.

 

To review terminology:

  • deploy means making code available in a specific environment; code may or may not be visible, but it is code that does not change customer workflows.
  • A release represents a scheduled event when customer-affecting code is intended to be visible.

 

Schedule Adjustments

The original proposal suggested that releases be moved from every three weeks to every month. The proposal also suggested that deploys would take place every two weeks.

 

After thorough research among all engineering teams, releases and deploys has been adjusted to the following dates:

  • Feature releases in the production environment take place on the third Saturday of every month (originally noted as the first Saturday of every month).
  • Deploys of the main Canvas codebase to the production environment take place on Wednesdays, and beta deploys take place on Thursdays (originally shown in the calendar example with production on Saturdays and beta on Mondays).
  • Deploys of supporting Canvas services are and will continue to be deployed frequently to both the beta and production environment. This behavior is not a change from current practice.

Timeline Implementation

The current date timeline for implementing these changes is as follows:

  • July 13: Last regular Canvas production release with deploy/release on the same day
  • July 15: New feature changes released to beta environment as August preview
  • July 22: August release notes published
  • July 31: First weekday production deploy (recurring every two weeks following)
  • August 1: First weekday beta deploy (recurring every two weeks following)
  • August 17: First monthly production release with new process (recurring every third Saturday of the month)
  • August 17: New feature changes released to beta environment as September preview (recurring monthly on the same day as the production release)
  • August 26: September release notes published
  • September 21: September production release date

 

The process would then continue according to the established cadence.

 

The image representation below displays a visual of the deploys and releases for August and September.

 

Caveats:

  • The beta environment data refresh and test environment data refresh will continue to take place every Saturday and with every production release, respectively, although not represented in the image.
  • The Upcoming Canvas Changes page may display an enforcement date that does not align with a feature release.

Release Strategies

Production Releases

Feature releases will be managed by a feature flag enabled by engineers. The feature flag contains all previously deployed customer-affecting code that is not made visible in the production environment until the feature flag is enabled. This functionality is like a feature option, except that all customer-affecting changes are made available to all customers at the same time.

 

Feature flags also protect the production environment as the feature flag can quickly be disabled by Canvas engineers if needed.

 

Beta Releases

On the same day as the current month’s production release, a separate feature flag will also be enabled within the beta environment containing all customer-affecting code that will be released in the following month. This change ensures that you have a full month to experience all upcoming changes in the beta environment and will include all Canvas services, such as Quizzes.Next.

 

The beta environment data refresh will still take place refreshed every Saturday, which means the updates available in the beta preview will not be available until the refresh is complete.

 

Beta Release Terminology

To better define the intention of a beta release, terminology is being renamed as a monthly preview.

 

This change will also align with adjustments to Feature Option terminology, which is being renamed as Feature Previews. More information about Feature Previews will be made available shortly in a separate blog post.

 

Release Notes

As with our current process, the first week of the beta release is still considered unstable and subject to change as engineers continue to verify the newly available code within the beta environment. Therefore, feature release notes will not be available until the following week. As our new processes become more reliable, release notes may also be able to adjust appropriately in the future.

 

Deploy Strategies

Non-feature deploys contains code changes that are intended to fix bugs, improve performance, and prepare for new features. We know through experience that smaller, more frequent deploys leads to a higher quality product. And when there are problems, our teams can fix them faster.

Production Deploys

Our overall deploy process has matured enough to move the primary Canvas deploys to a weekday. Deploys of supporting Canvas services are and will continue to be deployed even more frequently. To ensure that deploys are non-disruptive to customers, our teams have been planning and are already implementing several new safety precautions, including tightening our processes on how we characterize a change in Canvas (e.g. feature vs bug).

 

Canary Deploys

In the current release process, deploys and releases take place at the same time. Code is incrementally deployed around the world by region, and the first regions have always been the first to experience and report unintended behaviors.

 

The new process will slightly modify this behavior. Deploying code to a small group of end users is called a canary—inspired from historical reference of placing canaries in coal mines as a warning system. Canary deployments slowly distribute the changes to this small subset of users before they are made available to the entire infrastructure, and its impact is usually minimal. Code can be reversed or corrected before resuming deployment.

 

The scheduled production deploy takes place every other Wednesday, but the Canary deployment begins a day earlier on Tuesday under close monitoring. Deployment only proceeds if no problems are detected.

 

All customer accounts will go through a rotation as the canary for the release. Being part of the canary deployment should occur infrequently. Customers will not be notified when they are placed in the Canary deployment. Any unintended behaviors noted by an institution should be treated as part of that institution’s support protocol.

 

Bug Fixes

Only changes characterized as a bug fix can be deployed to the production environment at any time. Our tightened processes ensure that bug fixes are only restoring intended behavior. If a bug needs to be addressed by adjusting functionality or the user interface, the bug will be changed to a feature-type categorization and placed behind the monthly release feature flag for future visibility.

 

Beta Deploys

Deploys of the main Canvas codebase to the beta environment take place the day after a production deploy. Deploying to the beta environment allows our engineers to confirm the newly deployed code is not causing unintended behaviors and ensures the production deploy will be as accurate as possible. Engineers may continue adjusting code in the beta environment up to the production release.

 

Deploy Notes

Because engineering is creating smaller teams with quicker releases, up-to-date deploy notes would become difficult for our teams to maintain—as well as customers to reference. Notable entries for the main Canvas deploy will be available as deploy notes on the same day as the production deploys. Additionally, customers with a greater interest in the full deploy can access our open-sourced canvas-lms Github repository deploy list.

 

When the new production deploy process goes into effect beginning July 31, deploy notes will still be created manually and added as part of the Canvas Release Notes page in the Canvas Community. However, our goal is to make deploy notes more automated while ensuring that notable bug fixes, for instance, are properly highlighted. Automating the notes may affect the future location of the deploy notes. Discussions about automation are still ongoing, and more information will be posted as we have additional updates.

 

Previous Comment Concerns

We had several topics weaving through the comments we received in our first blog post. This second post expands on many of the received questions, but we want to ensure all underlying questions have been addressed. Presented in a question-and-answer-type format, the remaining content summarize the topics that concerned you:

 

Will this change place more focus on fixing issues discovered in the beta environment?

Our teams are redefining the process for how features are being deployed; some that are designed as feature options will undergo beta testing with a small group of customers before being available to all customers.

 

Will this change place more focus on fixing bugs?

Quicker deploys will allow our teams to be able to fix bugs more timely. Bugs are prioritized as part of each planning meeting depending on severity. We obviously do not want to release features or changes prematurely and we anticipate that this new process will also help us improve our quality in our feature deliveries.

 

Will some features still deploy straight to production?

All features will eventually be available in the beta environment, although their use may include some caveats.

 

Other services are currently planned and will be announced at a later date.

 

Will this change increase development of Community feature ideas?

Engineering's goal with this release change is to improve product quality and be more efficient, which may come back as a benefit to allow them to work on more ideas! The feature process itself won't change, and our product team always considers ideas against existing priorities and timelines. Stay engaged in the feature idea process so our product team is aware of the workflows and functionality you’d like to see incorporated into Canvas.

 

Can same-day deploy notes be posted in advance?

As noted, we’re tightening our process on how we characterize a change in Canvas so that deploy notes are not a concern. Official deploy notes will most commonly include notable fixed bugs, considering the majority of Canvas code is deployed for future functionality and infrastructure improvements. If there is any question as to whether a change will affect existing functionality, that change will be changed to a feature-type categorization to be available as part of an upcoming monthly release. And if a code change slips through the cracks, our teams always review the prior release to identify what needs to be improved to prevent unintended future situations from occurring.

 

_____

 

If you’ll be joining us at InstructureCon, we’ll be hosting a session that will review these upcoming changes as well.

 

As always, thank you for your interest in upcoming Canvas changes. Let us know if you have further questions that we can address.

In 2019, Canvas teams are researching an adjustment to the Canvas release schedule focusing on two key objectives: make new features more predictable and improve the quality of Canvas code. We hope you will consider these thoughts with us and provide your feedback!

 

Release Background

Let’s start with the status quo—we know that three-week releases are fast. Canvas loves agile development because it helps our teams move faster and brings features more quickly—more and more software companies are moving to cloud-based continual deployments because of both the engineering and customer benefits. Visit any Instructure office and our teams may seem calm and content (and quiet!) working away on their computers, but if you could peer inside our network of Slack chat channels, you’d find the constant chatter among developers and QA and product teams reviewing changes, brainstorming code workflows, checking the status of outstanding tickets, and providing good-natured banter (my favorite part, really).

 

Canvas Code Quality Improvements

Our three-week releases include code deploys for predetermined features, fixed bugs, backend changes, performance updates, API modifications, platform upgrades, and other code adjustments completed by our engineering teams. All of our changes are code reviewed and tested by our Software Engineers and Software Engineers in Test to ensure it meets our (and your!) standards. These practices allow us to prepare and deliver new Canvas code in remarkably short cycles.

 

Releases and deploys don’t have to be synonymous terms—in fact, our teams would prefer that they weren’t. What if we could put all this code into smaller deploys so teams can focus better and fix bugs even faster? What if you had more time to prepare for feature updates? These are the questions we want to answer, and these results can be done without adversely affecting you as the customer.

 

Predictable Feature Changes

From the customer standpoint, we know that three-week releases include a lot of content that may not pertain to your user role. Or, you’re an admin who gets overwhelmed at the idea of training your entire institution about all the upcoming changes. We’ve been working hard to ensure our release notes give you more tools to help you be the superhero you are, and our new proposal would also give you more time to do just that—we want to ensure consistency on your side so you know exactly when a release is happening and when, without having to consult a calendar.

 

From Instructure’s side, we want to be more mindful about what changes impact your experience, not simply focusing on changes in the interface. We realize there are plenty of behind-the-scenes adjustments that may affect Canvas behavior, and to improve your experience with Canvas features, we want to improve how we release these changes to you.

 

Canvas Release Proposal

Current Release Cycle

The current release cycle includes the following 3-week structure:

  • All new code is deployed to the beta environment with the scheduled beta release (week 1)
  • Canvas release notes are published in advance of the production release (week 2)
  • All beta environment code is deployed to the production environment with the scheduled release (week 3)

 

To clarify terminology, a deploy means making code available in a specific environment; code may or may not be visible. A release represents a scheduled event when code is intended to be visible. Currently, deploys and releases are treated as the same thing.

 

Proposed Release Cycle

To be more mindful with what code we release and when, the proposed change includes a monthly feature release overarching two-week code deploys.

 

New features are defined as any changes that change user workflow for any Canvas-related product. Some new features may be managed by Canvas admins or instructors as a feature option in account and/or course settings. Other features may come from fixed bugs that require a workflow change or an interface change, or API/SIS integration adjustments. The Canvas product team can directly control these features for all products and manage when they should best be released. Feature releases would still follow the regular process of releasing to the beta environment, followed by the production environment.

 

Non-features are defined as non-customer-affecting backend changes, code for new projects, fixed bugs—basically any code that does not affect any Canvas workflows or functionality, or code that improves unintentional behaviors. Two-week deploys allow engineering teams to verify less code at one time, improve quality, and fix bugs twice as fast. Deploys still follow the regular process of deploying to the beta environment, followed by the production environment.

 

The proposed schedule is as follows:

  • Non-feature code is deployed to the beta environment and then to the production environment two weeks later; public-facing deploy notes (such as fixed bugs) are published the same day as the production deploy
  • New features are released to the beta environment a month before the production environment release to allow advanced planning
  • New feature release notes are published three weeks in advance of the production release
  • New features are released to the production environment on the first Saturday of every month; the Test environment is also refreshed to match production data

 

Proposed Implementation Timeline

Our teams are excited to consider these changes, and we hope you are, too! But rest assured, these changes will not be implemented until all aspects have been thoroughly reviewed. And because we’re aiming to minimize disruption, we’ll make the release cycle change when we feel the change is best suited for you as well. Our approximate timeline looks like this (and is subject to change):

 

  • November 2018: Publish Canvas proposal
  • December–February 2019: Review and explore needs for engineering process changes
  • March–May 2019: Implement engineering changes
  • June/July 2019: Implement new release cycle process

 

We look forward to your feedback!