Managing releases and updates: Difference between revisions

From Computer Science Wiki
 
(9 intermediate revisions by 2 users not shown)
Line 12: Line 12:
* The user must decide if they want to download the 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
* 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.


[[File:Manual update.png|an example of a manual update notification]]
[[File:Manual update.png|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.
[[File:Manual update2.png]]


== Automatic updates ==  
== Automatic updates ==  
Line 23: Line 28:
* If there is an update, the application downloads and installs the update.
* 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.
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.


== Real-world practical advice ==


== Strategies ==


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:


== Do you understand this material? ==
* 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.


A small business has a computer kiosk inside the store which allows customers to sign up for a email newsletter. If a customer signs up for a newsletter inside the store, they will get a 10% discount on their first purchase at the store. The owner hopes this 10% discount will be an incentive for customers to sign up for the email newsletter.  The business will then regularly  email the customers special offers and savings. The business owner expects to benefit from this system by having increased sales. The customers expect to benefit from this system by having access to special offers, to save money, and to see what is new and trendy at their store.


Question 1: What is the best strategy to RELEASE this software? Why?
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.


Question 2: What is the best strategy to UPDATE this software? Why?
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 ==


== Do you have an advanced understanding of this material? ==
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.
 
A school of 900 students has a secure web-based application which manages attendance data. The school administrators carefully track attendance for the students so it can identify when students have been absent for a customizable threshold. For example, the school might set a threshold of 5 absences within 30 days, which then automatically notifies the student, parent, and teacher there is a problem with attendance. The threshold might be 3 times within 10 days, or something like that. The system keeps track of attendance and tardies. The system has customizable attendance codes. For example, "absence for school trip", "excused absence", "medical absence" are all allowed absence codes.
 
School administrators expect to benefit by having data about attendance so they can support students and parents to be in school. School administrators also expect to benefit by giving parents and students information about attendance (so parents can support their children to be in school). Finally, school administrators expect to benefit by using attendance data to apply for government funding (as they can prove how many students were in class on a specific day).
 
Parents expect to benefit by knowing when their children are in school or miss school. This way parents can support their children to be in school. Being in school is a '''shared value''' between the school and the parent.  
 
Students expect to benefit by understanding how many days of school of they have missed. The school expects students to have a strong "ownership of learning" and manage their attendance.  


Question 1: What might be the best strategy to RELEASE this software? Why?
Forcing updates on your users is probably a bad idea. Please [https://www.cnet.com/news/microsoft-windows-10-forced-updates-auto-restarts-are-the-worst/ read this article to see one frustrated users experience of automatic updates in Windows].


Question 2: What is the best strategy to UPDATE this software? Why?





Latest revision as of 14:18, 23 February 2024

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]