Вправа на введення в оману
У 1998 році федеральний уряд Сполучених Штатів звинуватив компанію Microsoft у порушенні антимонопольного законодавства. Одна зі скарг полягала в тому, що Microsoft “поєднала” свій веб-браузер Internet Explorer (IE) разом з операційною системою (ОС) Windows. З точки зору споживача, IE постачався разом з ОС безкоштовно. Оскільки на той час частка Windows на ринку перевищувала 95%, це означало, що практично кожен, хто купував комп’ютер, отримував також і IE. Це серйозно підірвало використання єдиного конкуруючого комерційного браузера Netscape, і Netscape Communications Corporation згодом занепала.
На свій захист Microsoft стверджувала, що веб-браузер фактично є частиною операційної системи. Тому не було сенсу говорити про пакетування браузера; було природно, що постачальник ОС включив браузер у свій продукт.
На перший погляд, це вагомий аргумент. Всі продукти мають частини, і ми не звинувачуємо виробників у тому, що вони включають частини своїх продуктів. Коли ви купуєте автомобіль, він поставляється з двигуном. Це дуже ускладнює незалежним виробникам двигунів продаж автомобільних двигунів широкому загалу. Але ми не звинувачуємо автомобільні компанії в тому, що вони постачають двигуни в комплекті з автомобілями, щоб витіснити виробників двигунів з бізнесу: ми приймаємо той факт, що двигун є частиною автомобіля.
Отже, звинувачення проти Microsoft зводилося до питання факту: чи є веб-браузер частиною операційної системи? Само собою зрозуміло, що під час судового процесу прозвучало багато свідчень та аргументів з цього приводу. Я спостерігав за процесом випадково; мені це питання здавалося непрозорим, і я не міг почути в аргументах більше, ніж “так” – “ні”.
Зрештою, Microsoft було визнано монополістом, але вона отримала лише мінімальні санкції. Microsoft все ще постачає IE з Windows, але окремі браузери, такі як FireFox, зараз відновлюють свою частку на ринку. Мабуть, питання все ще залишається відкритим: чи є браузер частиною операційної системи?
Так, чи є?
Тут є (щонайменше) чотири різних питання, і Microsoft багато років наполегливо працювала над тим, щоб їх заплутати і збити з пантелику. Вони не хочуть, щоб люди мали чітке розуміння цього питання, тому що чітке розуміння цього питання зовсім не слугує їхній справі. Давайте розглянемо питання по черзі і подивимося, чи зможемо ми розібратися з ними. Ось питання:
1. Чи очікує клієнт, що комп’ютер буде поставлятися з веб-браузером?
2. Хто повинен вибирати браузер та інтегрувати його з комп’ютером?
3. Чи є браузер частиною широкого набору програмного забезпечення, що називається “операційною системою”?
4. Чи повинен код, який реалізує браузер, бути інтегрований з ядром операційної системи?
Чи очікує клієнт, що комп’ютер буде постачатися разом з веб-браузером?
Це питання про поведінку та очікування споживачів. Коли Джо Споживач – або Джо Бізнесмен – купує комп’ютер, дістає його з коробки та вмикає, чи очікує він, що на ньому вже буде встановлений веб-браузер? Щоб дізнатися відповідь, ми просто поговоримо зі споживачами та поспостерігаємо за їхньою поведінкою. Відповідь виявилася позитивною.
Під час попередніх обговорень з урядом юрист Microsoft сказав про операційну систему Windows
Ми могли б покласти в неї бутерброд з шинкою, але ніхто б його не купив.
Фраза про бутерброд з шинкою була вирвана з контексту та подана як приклад зарозумілості Microsoft; однак суть висловлювання юриста полягала в тому, що Microsoft реагує на очікування споживачів, а споживачі очікують, що їхні комп’ютери будуть оснащені веб-браузерами.
Відповідь на це питання підтверджує позицію Microsoft.
Хто повинен вибирати браузер та інтегрувати його в комп’ютер?
Це питання про індустріальну організацію: як має бути організовано виробництво і розповсюдження комп’ютерів? У Сполучених Штатах ми дозволяємо ринкам вирішувати більшість подібних питань.
Індустрії персональних комп’ютерів (ПК) близько 25 років. За цей час відбулися деякі зміни, але основні контури чіткі та стабільні. Комп’ютери створюються виробниками оригінального обладнання (OEM) – такими компаніями, як Dell, Gateway і Hewlett-Packard. OEM
- купує компоненти (корпус, блок живлення, материнську плату, жорсткий диск тощо)
- збирає їх у комп’ютери
- встановлює програмне забезпечення
- пише інструкцію та гарантію
- пакує все це в коробку
- ставить на них своє ім’я
- продає його роздрібним торговцям або споживачам
OEM бере на себе відповідальність за вибір та інтеграцію всього програмного забезпечення, яке встановлюється на комп’ютер – за одним винятком. Корпорація Microsoft вимагає, щоб OEM-виробники, які встановлюють Windows, також встановлювали IE на всіх комп’ютерах. Корпорація Microsoft забезпечує виконання цієї вимоги за допомогою умов ліцензії на Windows.
Якби Microsoft не використовувала монопольну владу, є всі підстави вважати, що виробники обладнання обирали б веб-браузер так само, як вони обирають всі інші компоненти своїх продуктів.
Відповідь на це питання не підтверджує позицію Microsoft.
Чи є браузер частиною широкого набору програмного забезпечення, що називається “операційною системою”?
Це питання є або питанням думки, або просто не має відповіді. Причина в тому, що термін “операційна система”, як він використовується тут, не має конкретного технічного значення. Це більше схоже на термін “місто”.
Міста великі та розлогі, і їхні межі можуть бути нечіткими. Так, місто має географічну межу, визначену статутом і зафіксовану в реєстрі актів, але чи багато людей точно знають, де вона знаходиться – чи цікавляться цим?
Запитувати, чи є браузер частиною операційної системи, все одно, що запитувати, чи є автобусна лінія частиною міста. Зрештою, це залежить від того, що ви маєте на увазі під “містом”.
Відповідь на це питання не має відношення до справи Microsoft.
Чи повинен код, який реалізує браузер, бути інтегрований з ядром операційної системи?
Це інженерне питання. На відміну від широкого терміну “операційна система”, термін “ядро операційної системи” має конкретне технічне значення, і на це питання є однозначна відповідь. З дуже серйозних інженерних міркувань, відповідь – ні.
Операційні системи організовані, фактично або умовно, шарами, як цибулина. Внутрішній шар зазвичай називають ядром.
Ядро – це перша частина ОС, яка запускається після увімкнення комп’ютера, і перше, що робить ядро – це бере під свій контроль все апаратне забезпечення комп’ютера
- процесор
- пам’ять
- дискові накопичувачі
- монітор
- клавіатура/миша
- мережеві з’єднання
Всі інші програми працюють під контролем ядра. Ядро
- планує програми на виконання
- розподіляє ресурси між програмами
- відновлює ресурси з програм, коли вони їм більше не потрібні
- видаляє програми з системи, коли вони завершують роботу
Важливо – апаратне забезпечення комп’ютера гарантує, що ядро відновить контроль, якщо програма зависає, вилітає або іншим чином поводиться неправильно. Коли це трапляється, ядро зупиняє програму, прибирає безлад і продовжує роботу.
Поки ядро функціонує належним чином, ОС може відновитися після будь-якої помилки у будь-якій іншій програмі.
І навпаки, якщо ядро скомпрометовано, через
- помилки
- шкідливе програмне забезпечення
- зловмисників
то помилкові програми можуть
- втручатися в роботу інших програм
- зависати або виходити з ладу комп’ютера
- пошкодити дані
Зазвичай, єдиний спосіб відновити проблему з ядром – це перезавантажити комп’ютер. Якщо пошкодження даних поширюється на жорсткий диск, може знадобитися перевстановлення ОС.
З огляду на все це, хороша інженерна практика полягає в тому, щоб ядро було якомога меншим і простішим. З часом ядра мають тенденцію ставати великими і складними, тому що вони виконують багато складних речей. Однак принцип залишається незмінним: нічого не слід додавати до ядра без вагомої причини.
Вагомі причини
Вагомими причинами для того, щоб додати щось до ядра, є
- необхідність
- продуктивність
- безпека
Необхідність
Деякі програми просто неможливо змусити працювати, якщо вони не знаходяться у ядрі. Веб-браузер не є однією з них. Існують веб-браузери – широко використовувані, повнофункціональні веб-браузери, які працюють у Microsoft Windows і не є частиною ядра. До них відносяться
Існування цих браузерів демонструє, що браузеру не обов’язково бути частиною ядра.
Продуктивність
Існують програми, які працюють швидше – набагато швидше – якщо вони є частиною ядра. Браузер не належить до таких програм. Internet Explorer від Microsoft не працює швидше всередині ядра, ніж інші браузери, що працюють поза ядром. Крім того, за нинішніх технологій та типових моделей використання, веб-браузери витрачають більше часу на очікування мережевого вводу-виводу, ніж виконання на процесорі.
Безпека
Деякі програми працюють всередині ядра, тому що їм потрібно бути всередині його кордону безпеки. Файлова система є гарним прикладом цього. Веб-браузер – ні. Згадані вище браузери, які працюють поза ядром, є безпечними – за багатьма оцінками, більш безпечними, ніж Internet Explorer, який працює всередині ядра. Безпека не є достатньою причиною для розміщення веб-браузера у ядрі.
Інтеграція
Іншою причиною, яку іноді називають для того, щоб зробити браузер частиною ядра, є інтеграція. “Інтегрований” – це просто вигадливе слово, що означає “частина”, тому цей аргумент, в кінцевому рахунку, є циклічним. При перевірці переваги інтеграції зазвичай виявляються претензіями на більшу продуктивність, безпеку або зручність. Ми вже бачили, що міркування продуктивності та безпеки не є виправданням для того, щоб робити браузер частиною ядра. Про зручність ми поговоримо нижче.
Не включати браузер
Оскільки немає жодних вагомих причин розміщувати браузер у ядрі, хороша інженерна практика полягає у тому, щоб тримати його зовні. Але це не просто питання хорошої практики: існують позитивні причини, чому браузер слід тримати поза ядром. Дві найважливіші з них
- стабільність
- безпека
Стабільність
Люди пишуть ядра операційних систем вже півстоліття. Ми знаємо, як
- проєктувати їх
- писати їх
- робити їх стабільними та безпечними
Люди пишуть веб-браузери трохи більше десяти років. Дизайн, реалізація та основні вимоги до них все ще перебувають у постійному русі. Перетягування веб-браузера в ядро дестабілізує його роботу.
Безпека
Ядро встановлює межі безпеки на своїх інтерфейсах. Кожне значення, яке перетинає ці інтерфейси, має бути перевірено, щоб переконатися, що воно не порушує вимоги безпеки ядра. Ядро може бути складним, але його інтерфейси
- добре визначені
- зрозумілі
- відносно прості
Ці властивості мають вирішальне значення для забезпечення безпеки ядра. Якщо інтерфейси ядра погано визначені, погано зрозумілі або просто занадто складні, то забезпечення безпеки ядра стає неможливим завданням.
Якщо ядро включає в себе веб-браузер, то межа його безпеки повинна поширюватися на інтерфейс між браузером і всесвітньою мережею. Цей інтерфейс включає в себе
- веб-сторінки (текст, HTML, XML, …)
- таблиці стилів
- вбудовані програми (Java, JavaScript, ActiveX, …)
- зображення (GIF, JPEG, PNG, …)
- посилання
- плагіни (Flash, …)
Словосполучення “всесвітня павутина” влучно описує розмір, складність і нечіткість даних, які повинен обробляти браузер. Перевірити ці дані неможливо, а перетягування браузера в ядро безнадійно ставить під загрозу його безпеку.
Підсумки
Для довідки, ось відповіді, які ми отримали на наші чотири запитання
1. Чи очікує клієнт, що на комп’ютері буде встановлений веб-браузер?
Так.
2. Хто повинен вибирати та інтегрувати браузер з комп’ютером?
ЕОМ.
3. Чи є браузер частиною широкого набору програмного забезпечення, що називається операційною системою?
Залежить від того, що ви маєте на увазі під “операційною системою”
4. Чи повинен код, який реалізує браузер, бути інтегрований з ядром операційної системи?
Абсолютно ні.
Тепер давайте подивимося, що насправді робить Microsoft з Internet Explorer
1. Корпорація Microsoft постачає Internet Explorer разом з операційною системою Windows
Досить справедливо; користувачі очікують отримати веб-браузер разом із комп’ютером
2. Microsoft примушує OEM-виробників постачати IE, а не будь-який інший браузер, на комп’ютери з Windows
Брудний басейн, до того ж незаконний. На жаль, OEM-виробники надто залежать від Microsoft, щоб скаржитися, а уряд США відмовляється накладати на Microsoft значущі санкції, очевидно, з політичних причин.
3. Microsoft стверджує, що браузер є частиною операційної системи
Вони мають право на свою думку.
4. Microsoft інтегрує код, що реалізує Internet Explorer, в ядро Windows
AAAAAAAAArrrrrgggggghhhhh!!!!!!!
Невже все так погано?
Так, все дійсно так погано.
Обговорення вище є технічним і дещо абстрактним, але проблеми, які воно описує, не є такими. Вбудовування браузера в ядро створює реальні проблеми для звичайних користувачів.
У всіх браузерах є баги; всі браузери виходять з ладу. Коли падає такий браузер, як FireFox, ви втрачаєте веб-сторінку, яку переглядали. Якщо ви хочете переглянути її знову, вам доведеться знову відкрити браузер і ввести URL-адресу. Коли Internet Explorer виходить з ладу, він забирає з собою ядро, операційну систему і комп’ютер. Відновлення зазвичай вимагає перезавантаження, а втрата даних в інших програмах не є рідкістю.
Всі браузери мають дірки в безпеці; всі браузери піддаються атакам з боку ворожих веб-сайтів. Якщо зламаний такий браузер, як FireFox, зловмисник отримує контроль над браузером. Якщо зламаний Internet Explorer, зловмисник отримує контроль над ядром, а через нього – над усім комп’ютером.
Навіщо вони це роблять?
Якщо інтеграція браузера з ядром є такою поганою ідеєю, ми повинні запитати, чому Microsoft це робить. Відповідь складається з двох частин
- чому вони кажуть, що роблять це
- чому вони це роблять насправді
Чому вони кажуть, що роблять це
Перша відповідь Microsoft, звичайно, полягає в тому, що браузер є частиною операційної системи. Однак ця відповідь ґрунтується на плутанині з більш детальними питаннями, про які йшлося вище. Ніхто не заперечує твердження, що загальний термін “операційна система” можна тлумачити досить широко, щоб включити в нього веб-браузер. Питання в тому, що змусило Microsoft затягнути браузер до ядра.
Microsoft не любить говорити більше про це питання, але якщо ви почитаєте їхню маркетингову літературу та рекламні матеріали, то побачите деякі інші заяви, які виходять подекуди за межі.
Microsoft рекламує зручності та можливості, які вони можуть запропонувати завдяки тому, що IE інтегрований з ядром. Він завжди там; він завжди увімкнений. Вміст з будь-якого джерела в Інтернеті може бути легко переданий в будь-яку програму на комп’ютері. Дані з будь-якої програми можуть бути відображені у вигляді веб-сторінки. Набридлива різниця між вашим комп’ютером та Інтернетом відходить на другий план: Windows піклується про все це за вас.
За іронією долі, саме така інтеграція робить Internet Explorer таким ефективним переносником шкідливого програмного забезпечення. “Зручність”, яку пропонує Microsoft, коштує величезних втрат у безпеці та стабільності.
Чому вони це роблять
На початку своєї діяльності компанія Microsoft продавала свої продукти, спираючись на їхні функції, продуктивність та зручність, і вона все ще на словах говорить про ці переваги для клієнтів. Однак сьогодні основна стратегія Microsoft щодо продажу своїх продуктів полягає в тому, щоб позбавити клієнта будь-якого іншого вибору.
Один із способів зробити це – витіснити конкурентів з бізнесу, наприклад, за допомогою пакетних пропозицій. Але просто постачати IE в одній коробці з Windows недостатньо: якщо все, що зробила Microsoft, – це поклала його в коробку, то хтось інший міг би так само легко його з неї витягти.
- Якби суддя в антимонопольному процесі міг видалити IE з Windows, то Microsoft було б важче відстоювати своє твердження, що IE є частиною Windows.
- Якби користувачі могли видалити IE з Windows, вони б з більшою ймовірністю використовували інші веб-браузери.
Існує також історична причина інтеграції IE з Windows. До початку 1990-х років Інтернет був, по суті, дослідницьким проєктом, який фінансувався урядом і був доступний лише університетам та великим корпораціям. Потім, збіг обставин зробив використання Інтернету практичним для споживачів. До них відносяться
- падіння цін на обладнання
- збільшене проникнення мережі
- графічні користувацькі інтерфейси
- політичні рішення щодо комерціалізації Інтернету та розширення доступу до нього.
Коли це сталося, Інтернет, а особливо веб-браузер, раптово привернули до себе увагу громадськості. Протягом короткого періоду часу існували серйозні припущення, що веб-браузер витіснить операційну систему як основний інтерфейс користувача до комп’ютера.
Перспектива цього, безсумнівно, налякала Microsoft. Якщо користувачі проводять весь свій час у веб-браузері, то їм байдуже, яка операційна система працює під ним. Тоді ЕОМ-виробники зможуть вільно продавати комп’ютери з конкуруючими операційними системами, і монополія Microsoft зникне.
Відомо, що Microsoft виявилася не готовою до комерціалізації Інтернету. Їхньою першою реакцією було створення власного веб-браузера, але вони також подбали про те, щоб цей браузер був вбудований прямо в операційну систему. Таким чином, навіть якщо б браузер якимось чином став ОС, користувач все одно використовував би Windows, а Microsoft все одно контролювала б робочий стіл.
Але так не сталося. Споживачі вже 10 років в Інтернеті, вони не проводять весь свій час у веб-браузері, і їм все ще не байдуже, яку ОС вони використовують. Але Microsoft ніколи не відступала від свого початкового рішення інтегрувати браузер з ОС – якщо вже на те пішло, вони працювали над тим, щоб зробити їх нероздільними, розкидаючи код для браузера по всій системі в декількох файлах і розмиваючи різницю між Інтернетом і робочим столом в інтерфейсі користувача.
Примітки
Netscape Communications Corporation
Вікіпедія подає коротку історію Netscape Communications Corporation. Назва Netscape збереглася як торгова марка компанії AOL.
ядро операційної системи
Це обговорення стосується переважно операційних систем з монолітним ядром, таких як GNU/Linux та Windows 95/98/ME. Для операційних систем з мікроядерною архітектурою, таких як GNU/Hurd та Windows NT/2000/XP, термінологія та деталі дещо відрізняються; однак, основні проблеми залишаються тими ж самими.
можливості, продуктивність та зручність
Я користувався чудовим компілятором C від Microsoft протягом більшої частини 1980-х років.
відступив
Джоел Спольскі стверджує, що Microsoft свідомо нехтувала розробкою IE, побоюючись, що більш потужний браузер, навіть їхній власний, може загрожувати їхній монополії на ринку настільних комп’ютерів.