Речицкий Александр Сергеевич, 28 лет, г Ставрополь. Работает менеджером по инновационной деятельности и сотрудничеству в Фонде ReactOS. Образование: дипломированный специалист по защите информации, магистр прикладной математики, переводчик в сфере профессиональных коммуникаций.
Александр - журналист и профессиональный блогер в IT-сфере, с аудиторией более 50000 человек на ресурсе Habrahabr. Активный участник движения свободного программного (СПО) с 2008 года, испытатель-тестировщик и евангелист СПО, обладает большим опытом работы в пресс-службе проекта операционной системы ReactOS. Сфера интересов дополнительных интересов – PR, маркетинг, развитие сотрудничества свободных проектов.
Введение. Операционная система ReactOS (далее – ОС ReactOS) – это современная операционная система с открытым исходным кодом, предназначенная для работы с процессорами семейства x86 и программным обеспечением, оборудованием и драйверами, созданными для семейства операционных систем Windows NT 5.0. ОС ReactOS создаётся с 1998 года слабо-организованной командой разработчиков по всему миру тем методом, который в настоящее время называется crowdsourcing [1] и используется множеством других проектов с открытым исходным кодом. С 2004 разработка проходит под руководством некоммерческих организаций Фонд «Реактос» (Российская Федерация) и ReactOS e.V. (Германия). Отличительной особенностью ОС ReactOS является совместимость с программным обеспечением, использующем интерфейс WinAPI, а также с драйверами устройств, разработанными для семейства операционных систем Microsoft Windows NT. Это достигается путём использования архитектуры ядра ОС ReactOS, подобной архитектуре ядра Windows, а также изучения недокументированных и не стандартизованных программных интерфейсов. Для разработки ОС ReactOS применяются различные методы, подходы и модели. Исторически одними из основных стали методы «чистой» обратной разработки и «экстремального программирования», совмещенные с использованием итерационного подхода.
Состав ОС. ОС ReactOS содержит в себе всё то, что минимально необходимо для работы системы, а также для её разработки. В отличие от других операционных систем с открытым исходным кодом, например, Linux, нет необходимости в создании т.н. «дистрибутивов», т.к. ОС ReactOS – это не только ядро, но и комплект минимально-необходимого программного обеспечения и драйверов. Жёсткие правила, регламентирующие включение какого-либо программного модуля в состав ОС ReactOS отсутствуют, однако большинство разработчиков ориентируется в принятии решения о включении на следующие пункты:
Таким образом, становится возможным ограничить то программное обеспечение, которое включается в состав ОС ReactOS, сделав систему удобной для использования в различных целях, и в будущем избежать проблем, связанных с «навязыванием» пользователю определённого программного обеспечения (как, например, включение одного вида интернет-браузера в случае с ОС Microsoft Windows, и прочее).
Архитектура ядра. Ядро ОС ReactOS максимально возможно приближено по своей архитектуре к ядру ОС Microsoft Windows 2003 SP1. Ядро этой операционной системы достаточно хорошо описано в [2,3,4], а также в [2] на стр. 47 приводится общая структура ядра ОС Windows и его взаимодействия с системными процессами, службами, приложениями и подсистемами окружения. Основная ветка разработки ОС ReactOS под названием trunk реализует именно такую архитектуру. Однако, в процессе реализации разработчики далеко не всегда «копируют» те алгоритмы и особенности, присутствующие в ОС Windows 2003 SP1. В последнее время наоборот наблюдается тенденция по возможности делать внутреннюю реализацию алгоритмов максимально отличающейся от таковой в ОС Windows 2003 SP1. Это не только позволяет обезопасить проект от возможных юридических проблем в будущем, но и упрощает дальнейшую разработку и поддержку. Например, было документированы случаи, когда в ядре определённых версий Windows существовали (и, вероятно, существуют до сих пор) ветки кода, предназначенные для некорректно написанных драйверов устройств из 1990-ых годов, либо для какого-либо программного обеспечения, работоспособность которого для компании Microsoft была очень важна. ОС ReactOS не ставит для себя задачи и не имеет коммерческих интересов в поддержке какого-либо производителя программного или аппаратного обеспечения, поэтому все подобные участки кода по возможности исследуются, но их реализация включается в ОС ReactOS только в исключительных случаях.
Исследование программных интерфейсов. Для обеспечения совместимости с программным обеспечением и драйверами, разработанными для ОС семейства Microsoft Windows NT, ОС ReactOS должна предоставлять такие же программные интерфейсы (Application Program Interface, далее - API), с помощью которых это программное обеспечение и драйвера взаимодействуют с другими частями операционной системы. В основном, для целей обеспечения совместимости в ОС ReactOS важными являются два программных интерфейса – WinAPI (для прикладного ПО) и Native API (в основном, для драйверов). WinAPI достаточно хорошо описан в [5], частично стандартизован (ECMA-245, а также инициативой Public Windows Interface компании Sun Microsystems). Недокументированные особенности этого интерфейса тоже описаны в литературе. Тем не менее, даже официальная документация MSDN содержит достаточно много ошибок, которые не позволяют в полной мере реализовать совместимую функциональность, либо документация умалчивает о некоторых дополнительных параметрах функций, поведении функции при недокументированном сочетании входных параметров и прочем. Для решения этой проблемы совместно с проектом Wine был разработан обширный набор тестов, который исследует интерфейс WinAPI методом «чёрного ящика» и автоматически проверяет каждую ревизию ОС ReactOS. Аналогичная ситуация с интерфейсом Native API, но покрытие тестами гораздо меньше, чем в случае покрытия интерфейса WinAPI.
С результатами работы автоматизированной системы тестирования можно ознакомиться по адресу https://reactos.org/ru/testman
Возможные юридические проблемы. Как уже говорилось выше, основной целью ОС ReactOS является обеспечение совместимости с существующим программным и аппаратным обеспечением, разработанным под другие виды операционных систем. Это существенно повышает риски возможных юридических проблем со стороны компаний-производителей операционных систем и программных продуктов. Рассмотрение этих проблем выходит за рамки данного доклада, однако, эти вопросы уже неоднократно рассматривались различными международными организациями. В России на данный момент наиболее полно правовые аспекты разработки и использования ОС ReactOS изложены в [6].