Disons que j'ai un programme avec une fonction de mise à jour automatique. Lorsque j'expédie une nouvelle mise à jour, je peux effectuer l'une des opérations suivantes (ou les deux):
La première approche donne aux utilisateurs techniquement enclins la possibilité d'essayer la nouvelle version avant tout le monde, mais attend de l'utilisateur qu'il comprenne qu'il peut y avoir des problèmes et qu'il a la responsabilité de les signaler. Étant donné que les versions bêta sont généralement échantillonnées par les utilisateurs expérimentés, cela peut entraîner une couverture inadéquate de certaines configurations du système.
La deuxième approche, lancée par Google, expédie la mise à jour à des sous-ensembles aléatoires d'utilisateurs au fil du temps jusqu'à ce que tout le monde reçoive la mise à jour. Cette approche est beaucoup plus susceptible d'échantillonner le public cible uniformément et de couvrir correctement la myriade de configurations des utilisateurs. Il peut également être arrêté au premier signe de problème. Cependant, cela pourrait laisser certains utilisateurs attendre plus longtemps que prévu pour qu'une nouvelle version les atteigne, et une mauvaise mise à jour pourrait avoir un impact négatif sur un sous-ensemble d'utilisateurs qui ne sont pas suffisamment informés pour signaler les problèmes sous forme de bogues ou comprendre le processus de déploiement par étapes.
Comment choisir entre ces deux approches (ou une combinaison des deux)? Quelles autres approches dois-je envisager?
Personnellement, je privilégierais les deux.
Comme vous le dites, l'approche du canal bêta peut entraîner des problèmes avec les utilisateurs expérimentés qui ne font pas ce que les utilisateurs standard pourraient faire, dans l'exemple le plus simple, un utilisateur expérimenté peut savoir ne pas mettre de texte dans un champ demandant un numéro afin que vous puissiez manquer les erreurs qui indique que vous avez oublié de valider l'entrée jusqu'à sa mise en ligne et que de nombreux utilisateurs non avertis essaient de mettre du texte là où les chiffres doivent aller.
J'offrirais un canal bêta, ou même une version bêta fermée d'une certaine forme, puis une fois que vous avez un produit prêt à la production, déployez-le sur un jour ou deux (peut-être plus selon l'utilisation du logiciel) pour tous les utilisateurs.
De cette façon, vous éliminez toujours la majorité des bogues avant qu'il ne touche les utilisateurs moyens, mais vous avez toujours la possibilité d'arrêter le déploiement si un bogue critique est découvert.
D'un autre côté, Google adopte ce double processus. Chrome par exemple a toujours une édition canari (lire la version bêta) pour les utilisateurs expérimentés, mais ils font toujours un déploiement progressif quand il s'agit de mettre à jour la version finale.