Parallels Desktop тому що ми змушували подружитися Мак і Вінду, SavePearlHarbor
Ще одна копія хабора
Головне меню
Навігація за записами
Parallels Desktop: як ми змушували подружитися Мак та Вінду
— З чого все почалося? А.Г.: Спочатку нам потрібно було скористатися тими технологіями, які на той час вже були на ринку. Віртуалізація та емуляція існували ще з 1990-х років, і навіть були рішення для роботи з одними ОС на комп'ютерах під іншими ОС. Тому завдання в перших версіях у нас були такі: по-перше, зробити технології та базові функції точно такими, як у вже існуючих рішеннях. По-друге, вигадати щось своє, оригінальне. "Власними" унікальними функціями стали режим Coherence (можливість бачити і працювати з Windows-програмами на Mac так, як це рідні програми OS X) і Shared applications (іконки програм Windows в панелі програм Dock). Функція Coherence дозволяє повністю приховати сам Windows, залишивши тільки саму програму. У народі цей режим називають «Не показувати десктоп Windows». Звучить дуже просто, але щоб реалізувати цю можливість нам знадобилася маса зусиль. Це дуже важка технологія, пов'язана з безліччю програмних проблем та необхідністю вирішувати їх нестандартними способами. Її також важко підтримувати. І, до речі, вона й досі розвивається. Звичайно, далі — з кожною новою версією — нам доводилося вигадувати та реалізовувати все нові й нові речі, аналогів яким не було. Але спочатку половину базової інтеграції типу Mouse Synchronization, Shared folders, Copy-Paste, Drag&Drop, Time-синхронізації ми робили за аналогією з тим, що вже в якомусь вигляді було. Наприклад, існувало чимало віртуалізаційних емуляторів (під різні платформи) зі своїм набором функцій. Випускати новий продукт безцього набору було б просто безглуздо. Звичайно, ми могли б створити емулятор взагалі без інтеграції, щось на кшталт DOSbox (у якому інтерграційних функцій немає, зате він чудово запускає старі dosівські іграшки). До речі, у нас досі є кілька користувачів, які працюють з Parallels Desktop за таким самим принципом: запускають віртуальну машину, в ній працює Windows у вікні, і більше їм нічого не треба. Але, ясна річ, шлях розвитку переважної більшості програмних продуктів – еволюційний: спочатку треба створити базову функціональність, та був її поступово розширювати. Користувача потрібно мотивувати перейти на нову версію (особливо, якщо вона платна). І не тільки за рахунок збільшення швидкості, підтримки нових технологій (наприклад, нового Direct X), покращеної стабільності та іншого, але й залучити цікавими та корисними фічами. У нашому випадку такою кастомізацією – «тюнінгом» продукту – дуже часто виступає інтеграція – спочатку так було з Windows, а потім і з іншими ОС.
— І на що орієнтувалися серед існуючих технологій? А.Г.:Взагалі ідея була така: реалізувати віртуалізаційну технологію так, як це зроблено у Apple. У 2005 році Стів Джобс заявив про плани Apple "прикінчити" PowerPC на своїх комп'ютерах і перейти на чіпи Intel. У 2009 році з'явилася OS X 10.6 Snow Leopard, перша операційна система Apple, яка більше не підтримує PowerPC. Але, швидше за все, у них почалося ще десять з половиною років тому, коли Apple почала складати графік модернізації своєї Mac OS і план переходу на x86. Їм довелося перейти з Mac OS 9, заточеною під старе залізо, на Mac OS X, а для підтримки всіх існуючих програм написати свій емулятор. Вони зробили це досить ефективно, з високою швидкодією, і щоважливо, ця технологія виявилася дуже прозорою та «непомітною» для користувача. Користувач клацає на програму, написану під PowerPC, на своєму комп'ютері, і відкривається той же Coherence, те саме вікно під цю програму. Єдине, що в ній уживаються не дві різні операційні системи, а дві Mac OS - стара і нова. Загалом дуже схоже на нас. На жаль, тоді розробники Parallels Desktop не знали про існування в Mac OS X технології Rosetta – динамічного транслятора для запуску додатків під PowerPC на комп'ютерах з процесорами Intel. Мені довелося навіть принести їм свій комп'ютер із дому, щоб її показати. Приніс, показав – і розробники визнали у технології наш Coherence, хоч і реалізований інакше: щось між Wine та простим емулятором. І в результаті у нас викристалізувалась ідея зробити як у Apple у тому відношенні, щоб користувачеві не показувалося жодних завантажувальних образів та віртуальних оболонок від Parallels Desktop. Наприклад, щоб відразу відкривався Word, і при цьому звичайний користувач навіть не здогадувався, що ця програма лежить не в папці Application, а ще десь.
- Як розроблявся Coherence? А.Г.: Автором ідеї був Сергій Білоусов(прим. — засновник компанії Parallels), він тоді ходив офісом і розповідав усім охочим, що є геніальна ідея — прибрати десктоп, щоб всі віндові вікна виглядали б так само, як маківські. Ми одразу ж зрозуміли, що ця ідея дуже хороша, і треба над нею працювати. Вирізати віконце і прибрати десктоп ми змогли досить швидко і просто. А потім вся технологія представлення Coherence була написана однією людиною, яка досі у нас працює – Сергієм Концовим. Для досягнення того, щоб користувач практично не помітив відмінностей міждодатками Windows і Mac, пішли роки копіткої праці.

- Що ще було так само складно зробити? А.Г.: Складність може бути різною. Програмна складність, алгоритмічна, складність зрозуміти, як реалізувати річ чи як вона працюватиме. Часто нам доводилося йти нетривіальним шляхом. Наприклад, розповім про функцію, заради якої довелося влізти у нутрощі Windows. Є у нас така технологія – SmartMount. Ось у чому її суть: коли користувач встромляє флешку в комп'ютер Mac, то вона з'являється тільки на маківському десктопі. Людина, яка працює в режимі Coherence, хоче повної інтеграції - тобто бачити вміст своєї флешки і Windows. Але щоб вона там з'явилася, її потрібно переконнектити у віртуальну машину, а робити це щоразу дуже незручно. Ми вирішили використати Shared Folders. Оскільки ця функція являє собою драйвер мережевої файлової системи і показується в Windows як мережевий носій, то, коли флешка сконкетується в Мак, ми прокидаємо її через Shared Folders в Windows. Тоді вона автоматично потрапляє до Network location. Але користувачеві незрозуміло, що свою флешку він повинен знайти саме в Network location: він звик, що це USB-девайс, який виглядає певним чином і показується саме там, де і все removable media. Стандартними способами неможливо зробити так, щоб мережева куля показувалася в списку пристроїв як девайс, що підключається, і при цьому ще й відображалася як USB. І ось наш розробник Василь Жданов «впровадився» (назвемо це так) у «Провідник», і дохідливо «пояснив» цій програмі, що цю річ треба показувати саме так. І тепер у нас SmartMount показує USB флешки як зовнішні накопичувачі.


Або можна навести приклад оригінального способу вирішення завдання Smart Mouse – технології, яка дозволяє комп'ютерній мишці адаптуватися до того додатку, з яким користувач зараз працює. Якщо це офісний додаток - вона поводиться одним чином, якщо іграшка - інакше. У Parallels Desktopє два режими мишки – absolute pointing device, що дозволяє курсору і у вінді, і в маку рухатися однаково – з однаковою швидкістю, переміщенням. При цьому використовується лише хостова миша. І є режим relative mouse, при якому миша працює всередині віртуальної машини зі своєю швидкістю. Останній режим використовується в комп'ютерних іграх, оскільки вони зовсім не ув'язнені під absolute pointing device. Раніше курсор в іграх починав з шаленою швидкістю пересуватися і грати було неможливо. Ми вигадали спосіб, як виявляти потрібний режим без будь-яких прив'язок до імен програм, бібліотек або файлів. Все дуже просто: якщо під час роботи програми на її екрані візуально спостерігається курсор, то потрібен absolute pointing device. В іграх стандартний курсор майже завжди вимикається і гра його малює сама, отже, в даному типі програми потрібен relative mode. Вибір режиму миші за цим принципом, як виявилося, працює правильно в 95% випадків.
- Що за команда робить всю інтеграцію? А.Г.: Зараз у команді Integration працює 6 осіб, і це дуже різні люди. Чимось схожі, але не однакові. Майже всю команду я набирав сам. Єдиний, хто вже працював, коли я прийшов – це вже згаданий «батько Coherence» Сергій Концов. Так що я став керівником відділу з 1 людини, де сам виступав як тренер, що грає. Вся інтеграція в першій версії робилася силами цих двох людей - і Shared folders, і робота мишки, і копіпаст, і drag&drop, і Coherence - практично вся базова інтеграція. Трохи згодом з'явився Василь Жданов. Потім Андрій Покровський, який зробив Shared applications для першої версії. До того ж, що цікаво, він зробив це дуже швидко. Коли ми закінчили продукт і вже схотіли йогопродавати, то зрозуміли, що без іконок на панелі додатків Dock основна когеренція виглядає недоробленою. Прийшов Коля (11) (прим. Микола Добровольський, віце-президент з віртуалізації ПК) і запитав, чи можемо ми це швидко реалізувати. І Андрій зробив це за одні вихідні, написавши і налагодивши близько 2000 рядків коду. Програми показувалися де треба, їх можна було запускати з Dock. Ось це можна назвати по-справжньому продуктивною роботою. А ось, наприклад, у Василя Жданова, про якого ми вже говорили, дуже добре виходить реверс-інжиніринг. Він швидко вникає у нутрощі програм, що необхідно для реалізації інтеграції, оскільки у процесі дуже багато зробити стандартними методами просто не можна. І Василь дуже любить цим займатися: просто приходить на роботу і працює, не відволікаючись на голод і самопочуття. Загалом нічого не бачить і не чує. Часто навіть не знає статусу проекту, йому цікава лише його конкретна задача в даний момент. Загалом, всі вони вміють різне, і продуктивність у них різна. Але вони – КОМАНДА. Вони абсолютно всі вміють і хочуть працювати, у всіх великі і глибокі знання (які за роки роботи стали дуже великими знаннями), і у них дуже високий рівень програмування. За сім років їх рівень настільки піднявся, що вони можуть зробити практично будь-яке завдання, яке не дай.