A computer- implemented method of performing a software update within a network comprising plural computing devices (102a to 102n), the method comprising: receiving, from a server and by a first computing device of the plural computing devices, an indication that the software update is available and that the first computing device is elected to initially receive the software update; sending, by the first computing device, in response to the received indication, a request for the software update to the server; receiving, by the first computing device, in response to the sent request, the software update from the server; loading by the first computing device the received software update; in response to one or more failed attempts by the first computing device to successfully operate with the software update: running by the first computing device a software version inconsistent with the software update, and in response to a successful attempt by the first computing device to operate with the software update: providing a software version or a connectivity status of the first computing device to a second computing device of the plural computing devices, wherein the second computing device is not elected to initially receive the software update, and wherein the connectivity status of the first computing device indicates whether or not the first computing device is connected to the network; receiving, by the first computing device, in response to the provided software version or connectivity status, a request for the software update from the second computing device; and sending, by the first computing device, in response to the received request, the software update to the second computing device. receiving, from a server and by a first computing device of the plural computing devices, an indication that the software update is available and that the first computing device is elected to initially receive the software update; sending, by the first computing device, in response to the received indication, a request for the software update to the server; receiving, by the first computing device, in response to the sent request, the software update from the server; loading by the first computing device the received software update; in response to one or more failed attempts by the first computing device to successfully operate with the software update: running by the first computing device a software version inconsistent with the software update, and in response to a successful attempt by the first computing device to operate with the software update: providing a software version or a connectivity status of the first computing device to a second computing device of the plural computing devices, wherein the second computing device is not elected to initially receive the software update, and wherein the connectivity status of the first computing device indicates whether or not the first computing device is connected to the network; receiving, by the first computing device, in response to the provided software version or connectivity status, a request for the software update from the second computing device; and sending, by the first computing device, in response to the received request, the software update to the second computing device. running by the first computing device a software version inconsistent with the software update, and in response to a successful attempt by the first computing device to operate with the software update: providing a software version or a connectivity status of the first computing device to a second computing device of the plural computing devices, wherein the second computing device is not elected to initially receive the software update, and wherein the connectivity status of the first computing device indicates whether or not the first computing device is connected to the network; receiving, by the first computing device, in response to the provided software version or connectivity status, a request for the software update from the second computing device; and sending, by the first computing device, in response to the received request, the software update to the second computing device. providing a software version or a connectivity status of the first computing device to a second computing device of the plural computing devices, wherein the second computing device is not elected to initially receive the software update, and wherein the connectivity status of the first computing device indicates whether or not the first computing device is connected to the network; receiving, by the first computing device, in response to the provided software version or connectivity status, a request for the software update from the second computing device; and sending, by the first computing device, in response to the received request, the software update to the second computing device.