Managing releases and updates

From Computer Science Wiki
System Fundamentals[1]

Managing releases and updates[edit]

Students should be aware of a variety of ways in which updates and patches are made available and deployed. This includes automatic updates received on a regular basis online and manual updates, which a user must download and install.

Manual updates[edit]

Manual updates are downloaded and installed by the end user. The main characteristics of a manual update are:

  • The user is notified about an update
  • The user must decide if they want to download the update
  • If the user updates, the user must install the update, although some applications make this process automatic

Below is an example of notification of a new version. I don't especially like it as it doesn't help me make a choice about updating.

an example of a manual update notification

Below is an excellent example of a manual update. Note how it informs the users about what has changed.

Manual update2.png

Automatic updates[edit]

Automatic updates are downloaded and installed without the user needing to intervene. Many times, users must deliberately select automatic updates. The main characteristics of automatic updates are:

  • The application polls (regularly checks) to see if there are updates
  • If there is an update, the application downloads and installs the update.

Performance issues related to the inability to install updates may hinder end-users and reduce compatibility between systems in geographically diverse locations. Or put another way, if you have bad internet, automatic updates might not be the best choice.


Strategies[edit]

So the actual strategies for updates are fairly simple. Manual or automatic. We must keep in mind the relative advantages and disadvantages of both strategies. Forcing automatic updates should not be done without considering possible consequences.

Manual Strategies:

  • Phased Release: Typically involves manual coordination to roll out updates in stages or by segments.
  • User Surveys and Feedback: Involves manual collection and analysis of user feedback through surveys or direct communication.
  • Feature Toggles (Feature Flags): Can be managed both manually and automatically, but automation is common for toggling features without deploying new code.


Automatic Strategies:

  • Incremental Deployment: Often automated, especially in modern CI/CD (Continuous Integration/Continuous Deployment) pipelines, where small increments can be automatically deployed.
  • Rolling Release: Primarily automated, as it involves continuous deployment of updates as soon as they are ready.
  • Feature Toggles (Feature Flags): Can be managed both manually and automatically, but automation is common for toggling features without deploying new code.
  • A/B Testing (Split Testing): Requires automated tools to simultaneously test different versions with different user groups.
  • Scheduled Maintenance Windows: While the scheduling itself may be manual, the deployment and maintenance processes within the window can be automated.
  • Backward Compatibility: Ensuring compatibility can be automated through proper versioning and testing processes.

It's important to note that even strategies labeled as "automatic" may have some manual aspects, such as initial setup, configuration, or monitoring. Similarly, "manual" strategies can benefit from automation tools to streamline certain tasks within the strategy. The degree of automation often depends on the tools and practices adopted by the organization implementing these strategies.

Real-world practical advice[edit]

I believe there is a difference between operating system updates (and other core-system software) and application updates. There is a difference between your operating system and a computer game you play. I believe security updates should be automatic, but all other updates should be manual.

Forcing updates on your users is probably a bad idea. Please read this article to see one frustrated users experience of automatic updates in Windows.


Standards[edit]

  • Describe strategies for managing releases and updates.


References[edit]