Чому Windows 10 має купу багів: занурення в процес розробки ОС

У деяких випадках код, що не проходить тести, приймається як придатний для інтеграції в реліз. Розробникам дозволяється інтегрувати код, про який їм відомо, що той не працює відповідним чином.

Windows 10 оголосили сервісом, і це означає, що вона постійно оновлюватиметься та змінюватиметься. Однак при цьому одне залишається незмінним: черговий апдейт принесе неочікувані баги та глюки. Журналісти ArsTechnica з’ясували, чому так відбувається: проблема не в тому, як часто Microsoft випускає оновлення, а в тому, як вона їх розробляє.

У жовтні 2018 року вийшла свіжа версія Windows 10 October 2018 Update, яку Microsoft майже відразу відкликала, адже це була небезпечна версія. Деякі користувачі, які її встановили, втратили свої персональні файли. Через скандал непоміченим пройшов інший баг в October 2018 Update – вбудований файловий менеджер «Провідник» перестав при розархівації запитувати, чи хоче користувач замінити один дублікат файлу на інший, навіть якщо файл в архіві був застарілим.

Попередній апдейт Windows 10 April 2018 Update, який вийшов навесні 2018 року, також мав купу проблем: не працював мікрофон, пропадало багатоканальне звучання, зменшувалася швидкість руху курсору миші, виникала затримка при використанні комбінації клавіш Alt+Tab, не запускався Edge, пропадало контекстне меню на панелі завдань, знижувалася роздільна здатність екрана при використанні інтегрованої відеокарти та багато інших.

Восени 2017 року вийшло Windows 10 Fall Creators Update, користувачі якого помітили, що в них зникають інстальовані додатки. Самі програми на диску були, але їхні плитки не відображалися в меню. Браузер Edge переставав працювати при переході в ньому куди-небудь, крім домашньої сторінки пошуку.

Windows як сервіс

Після переходу в режим постійного оновлення Windows 10 у Microsoft також визначили термін випуску нових версій ОС – у квітні та жовтні. Така модель дозволила користувачам швидше отримувати нові функції, не чекаючи кілька років на випуск нової операційної системи. Також це дозволило Microsoft отримати стабільний канал відгуків та пропозицій, користувачі якого знають, що запропоноване ними покращення може втілитися в ОС уже найближчими місяцями.

На практиці постійне оновлення виявилося також постійним джерелом проблем для користувачів. Так, баги були і при старому способі – випуску нової ОС кожні кілька років. Однак багато користувачів говорять, що, по суті, нова операційна система кожні півроку – це забагато, і якість знизилася. Деякі експерти кажуть, що Microsoft варто пригальмувати до одного апдейту на рік, а інший час – займатися виправленням багів. Інакше, кажуть вони, компанія ризикує втратити довіру користувачів.

Проблема не в тому, що часто

Журналісти ArsTechnica переконані, що прибічники одного апдейту на рік чи навіть самої ідеї Windows 10 як сервісу не бачать головної причини багів. Проблема в тому, як Microsoft розробляє своє програмне забезпечення.

Два апдейти на рік не є чимось унікальним. Так оновлюється операційна система Ubuntu, а Google Chrome OS отримує апдейт кожні шість тижнів. Тестовий варіант офісного пакета Microsoft Office Insider оновлюється щомісяця і при цьому не викликає великих скарг на свої баги.

Якщо здається, що Windows раніше розробляли краще, можна згадати народну пораду: не інсталювати свіжу ОС, поки для неї не з’явиться випуск Service Pack 1 з виправленням багів.

Робочий процес з історичними коренями

Microsoft не розкриває, як саме працюють її програмісти, однак за результатами їхньої роботи можна зробити певні висновки. Наприклад, що програмісти працюють по-старому, так само, коли Windows виходили кожні кілька років. Нині в них лише значно ущільнився графік.

У роки окремих Windows цикл випуску продукту тривав два-три роки. Microsoft ділила його на кілька фаз: дизайн та планування, насичення функціями та розробка, інтеграція, стабілізація. На перший етап відводилося 4-6 місяців, за ними йшли 6-8 тижнів інтенсивного програмування, потім – 4 місяці інтеграції та стабілізації. За цикл розробки ці фази повторювали два-три рази, готуючи альфа- та бета-версії.

Сьогодні повний цикл розробки триває 7-8 місяців – реліз майбутньої версії Windows 10 починають готувати за кілька місяців до випуску чергового апдейту. Кожне оновлення починається з відносно спокійного періоду з кількома видимими змінами, але в наступні місяці вносять суттєві модифікації, що додають багато багів. За місяць до релізу з додавання нових функцій програмісти Microsoft переключаються на виявлення глюків.

Якість страждає

Джерела ArsTechnica повідомляють, що відділ Windows суттєво заощаджує час на перевірці своєї чергової розробки. Не для всіх частин коду існують тести його працездатності. Більш того, програмістам дозволяється додавати код без перевірки його працездатності. У деяких випадках код, що не проходить тести, приймається як придатний для інтеграції в реліз. Розробникам дозволяється інтегрувати код, про який їм відомо, що той не працює відповідним чином.

Повний цикл тестування Windows займає кілька тижнів, і його проводять, але не для фінальних релізів. Саме так пояснюється баг з видаленням файлів в October 2018 Update.

Приклади інших

В ІТ-індустрії існують приклади вдалих виробничих процесів програмного забезпечення, яке постійно оновлюється. Одним з таких є ПЗ для рекламних серверів Google – це критична частина інфраструктури пошукового гіганта, невдалі апдейти якої можуть коштувати мільйони доларів. Але при цьому інтеграція зміненого коду відбувається впродовж дня. Після внесення змін код відправляється в репозиторій вихідного коду, де він автоматично перебудовується та передається на автоматизовані тести. Розробник отримує звіт, після чого приймає зміни та відправляє код на інтеграцію в робочу систему.

Відмінність підходу Google у тому, що новий код повинен відповідати високим критеріям якості, після чого його можна інтегрувати. У Microsoft спершу роблять інтеграцію, а потім – виправляють баги.