В рамках проекта ReactOS регулярно проводятся хакфесты — многодневные встречи разработчиков и участников сообщества, посвящённые совместной работе над операционной системой. Такие мероприятия позволяют не только продвигать разработку фундаментальных компонентов ОС, но и совершенствовать внутренние регламенты, правила и процессы управления проектом.
В этом году состоялось два хакфеста.
Первый прошёл во время и после конференции Chemnitzer Linux-Tage (CLT), с 28 марта по 4 апреля. Второй состоялся в Орландо (штат Флорида, США) с 9 по 19 октября. Именно на флоридском хакфесте состоялось немало важных обсуждений, необходимых для дальнейшей слаженной работы проекта.
За время проведения хакфеста во Флориде в основную ветку проекта было внесено более 110 коммитов. Многие из внесённых изменений уже доступны в актуальных nightly-сборках ReactOS.
Основные результаты разработки:
Новые системные вызовы (syscalls). Добавлены новые системные вызовы семейства NT 6+, в том числе
NtGetNextProcessиNtGetNextThread. Они используются некоторыми приложениями и необходимы для обеспечения совместимости с отдельными играми и их механизмами защиты.Новый механизм Kernel Shim Engine. Разработан новый механизм совместимости на уровне ядра, позволяющий обходить ошибки в драйверах и реализовывать специфические особенности их работы — в том числе те, которые не поддерживаются даже Windows. Например, драйвер VMware SVGA содержит несоответствие в идентификаторе пула памяти (pool tag mismatch). Теперь ReactOS способна обходить эту проблему. Благодаря этому приложения, использующие 3D-ускорение в виртуальной машине VMware, можно закрывать без возникновения критической ошибки ядра (bugcheck).
Исправления подсчёта ссылок (Reference Counting). Улучшена работа с драйвером VMware SVGA и другими видеодрайверами.
NTFS. Реализована возможность форматирования разделов NTFS и записи на них непосредственно из ReactOS. Более того, теперь NTFS можно использовать в качестве файловой системы для установки самой ReactOS.
Тестирование ядра. Добавлены тесты ядра для целевых платформ Vista и новее, а также повышена стабильность инфраструктуры тестирования при выполнении этих проверок.
Дискеты. Реализована поддержка чтения, записи и форматирования гибких дисков.
Storport. Исправления драйвера Storport расширяют совместимость с драйверами различных контроллеров хранения данных и закладывают основу для предстоящей поддержки NVMe.
Синхронизация с Wine. Очередные обновления кода Wine позволили внедрить в RAPPS механизм закрепления сертификатов (certificate pinning), перейти на структуру пользовательских каталогов, принятую начиная с Windows Vista, а также сократить количество расхождений с оригинальным Wine.
Продолжающаяся синхронизация с Wine позволяет постепенно устранять различия между кодовыми базами двух проектов. Одним из результатов этой работы стал переход ReactOS на структуру пользовательских каталогов Users, используемую в Windows Vista и более новых версиях Windows, вместо привычной Documents and Settings. Это ещё один шаг в направлении внедрения возможностей Windows Vista и последующих версий в актуальные nightly-сборки ReactOS.

Обсуждения
После перехода на GitHub команда ReactOS постоянно работает над совершенствованием процесса рассмотрения запросов на слияние (Pull Request, PR).
Поскольку проект развивается силами добровольцев, организация этого процесса всегда оставалась непростой задачей и периодически становилась предметом разногласий. Запросы на слияние нередко надолго оставались без рассмотрения, что вызывало недовольство как у их авторов, так и у самих разработчиков.
С появлением инструментов искусственного интеллекта проблема приобрела ещё больший масштаб. В репозитории проекта стали появляться целиком сгенерированные ИИ запросы на слияние: автоматическая генерация затрагивала не только программный код, но и описания PR, сообщения коммитов и даже ответы в обсуждениях — без какого-либо участия человека.
Разработчики, выступающие в роли рецензентов, внимательно проверяют каждый запрос на слияние, прежде чем соответствующие изменения попадут в основную ветку исходного кода. Массовое появление подобных автоматически сгенерированных PR существенно затрудняет поддержание такого уровня проверки.
Чтобы исправить ситуацию, была принята новая политика, ужесточающая требования к запросам на слияние и позволяющая отсеивать те из них, качественная проверка которых затруднена.
Впрочем, это была далеко не единственная тема обсуждений. Команда рассчитывает прийти к более разумному и стандартизированному процессу рассмотрения PR. В частности, разработчикам предстоит самим лучше работать над качеством обратной связи: помимо требований к добавлению тестов, не следует без достаточных оснований заставлять авторов кардинально переписывать свои изменения или добавлять в них новые возможности.
Будущее проекта
Во время хакфеста удалось продвинуть и несколько крупных задач, над которыми команда работает уже достаточно давно.
Ранее мы уже рассказывали о разработке поддержки симметричной многопроцессорности (SMP, Symmetric Multiprocessing), позволяющей операционной системе использовать несколько физических процессоров и/или вычислительных ядер.
Во время нынешнего хакфеста разработчикам удалось запустить ноутбук с объединённой версией двух перспективных разработок: поддержки распределения аппаратных ресурсов и SMP-ядра.
Ноутбук работал непрерывно в течение нескольких дней. Время непрерывной работы превысило двое суток, при этом система выполняла фоновые задачи с использованием двух процессорных ядер.

Полученные результаты обнадёживают и демонстрируют, что 64-разрядные сборки ReactOS и SMP-ядро быстро становятся стабильнее при работе на реальном оборудовании.
В ближайшие месяцы команда планирует завершить оставшиеся задачи, необходимые для включения поддержки SMP в nightly-сборки.
Новый механизм Kernel Shim Engine открывает и другие интересные перспективы: с его помощью ReactOS сможет обеспечивать обратную совместимость в тех случаях, с которыми не справилась даже сама Windows.

Один из первых примеров — специальный shim, позволяющий использовать видеодрайверы NVIDIA для Windows XP в ReactOS даже в том случае, если операционная система сообщает приложениям и драйверам о версии NT 6+. Благодаря этому удаётся обеспечить более высокий уровень обратной совместимости со старым оборудованием и драйверами — в том числе с теми, поддержка которых отсутствует в современных версиях Windows.
Несмотря на то что ReactOS постепенно движется в сторону перехода на архитектуру NT 6+, разработчики не забывают и о сообществе любителей ретрокомпьютинга, которое активно использует ReactOS в своих экспериментах и проектах.
Наша цель — сделать ReactOS полноценной операционной системой как для старого, так и для современного оборудования.
В завершение хакфеста разработчики объединили все находившиеся в работе изменения, связанные с очередной синхронизацией с Wine, и дополнили их рядом собственных исправлений. Это позволило протестировать текущее состояние ReactOS с компонентами и возможностями NT 6+ и посмотреть, каких результатов уже удалось достичь.
Внедрение возможностей NT 6+ в nightly-сборки будет происходить постепенно, однако уже сейчас закладывается основа для запуска широкого спектра современного программного обеспечения.
Ниже представлены некоторые результаты этой работы, которыми команда решила поделиться.


Кроме того, удалось продвинуть разработку нового стека USB 3.0/USB 4. Он позволит устанавливать ReactOS на компьютеры с современными USB-контроллерами.
На момент завершения подготовки этой публикации базовая реализация нового стека уже была включена в основную ветку проекта. В дальнейшем его возможности будут расширяться.

Вместо заключения
В целом хакфест прошёл замечательно и принёс немало результатов. За эти дни удалось сделать ReactOS ещё более функциональной и приблизить реализацию ряда давно ожидаемых возможностей.
Благодаря вашей постоянной поддержке мы надеемся вновь собраться вместе и провести ещё один столь же продуктивный хакфест.
Спасибо, что остаётесь с ReactOS!

x012
Отличные новости.
Синхронизация с Wine.Очередные обновления кода Wine ...а также сократить количество расхождений с оригинальным Wine.Позвольте поинтересоваться, с какой версии (или года/месяца) началась активная синхронизация с Wine?
petr97 Автор
В этот раз или вообще?)
petr97 Автор
Вообще, насколько помню (я начал активно следить за проектом в 2012-2013) каждый раз активно синхронизировали все возможные компоненты с Wine перед релизом.
Один из самых ранних что я нашел - 2005
https://github.com/reactos/reactos-deprecated-gitsvn-dont-use/commit/88fc851ac707c7b05a439a71864dba04c185e7f9