ARWINSScc2010 — различия между версиями
Fog (обсуждение | вклад) (Новая страница: «Тезисы доклада 1. О ReactOS в общем (5 минут) 1.1. Реализация архитектуры NT с открытым …») |
|||
Строка 1: | Строка 1: | ||
− | Тезисы доклада | + | [[Category:ReactOS]] |
+ | =Тезисы доклада= | ||
+ | ==О ReactOS в общем (5 минут)== | ||
− | 1. | + | '''1.1. Реализация архитектуры NT с открытым кодом''' |
− | 1. | + | '''1.2. Зачем клонировать NT?''' |
− | + | * Прогрессивная архитектура — переход от модели «всё — файл» к модели «всё — объект» (кратко о том, что такое объект в NT) | |
− | + | * Архитектура подсистем, разные API в рамках одной ОС (кратко о POSIX и OS/2 в Win) | |
− | + | * Богатый парк драйверов | |
− | + | * Богатый парк прикладных приложений | |
− | + | '''1.3. Что уже есть?''' | |
− | + | * Текущее ядро сравнительно стабильно | |
− | + | * Свои драйверы VGA, PCI, SATA, PS/2 (мин. набор, уже есть и работает) | |
− | + | * Звуковая и сетевая подсистема | |
− | + | * Win32 позволяет запускать многие приложения | |
− | + | '''1.4. Что будет?''' | |
+ | * Ядро: менеджер кэша: ускорение и в перспективе NTFS, ext2/3 и т.д. | ||
+ | * Развивается и улучшается PnP | ||
− | + | * Активно пишется USB стек | |
− | + | * Портируем на x64 и ARM | |
− | + | * Улучшения Win32 (об этом отдельный рассказ) | |
− | + | ==ARWINSS – новая подсистема Win32 (12 минут)== | |
− | + | '''2.1. Что такое подсистема? Подсистема Win32 и её реализации (Win32s, Win9x, WinCE, NT3, NT4(менеджер окон и GDI перенесли в ядро, sic), Wine).''' | |
− | + | '''2.2. Первоначальная попытка: как-в-XP. Проблемы:''' | |
+ | * Реверс внутренних структур ядра: медленно, сложно, ненадежно. | ||
− | + | * Очень сложное внутреннее устройство оригинала: наследие от Win16 | |
− | + | * Сложность кооперации с Wine: принципиально разное внутреннее устройство | |
− | + | ** Подробнее: в wine большая часть работы в usermode, в nt>4 – в ядре, перенос кода туда — сюда — проблема, не говоря уже о разных внутренних | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
интерфейсах | интерфейсах | ||
− | + | * Итог: многое работает, но за 10 лет разработки даже уровень совместимости Wine не был достигнут. | |
+ | '''2.3. Новая попытка: Arwinss''' | ||
− | + | * Задачи | |
+ | ** Сконцентрировать усилия на ядре | ||
+ | ** Максимально возможная кооперация с Wine (в т.ч. не только брать, но и отдавать) | ||
+ | ** Да, мы берем код из Wine, но регулярно шлем патчи обратно | ||
+ | ** Wine неохотно принимает патчи, в которых не видит нужды, в свою очередь мы как раз исправляем то, что у них не сделано (shell32 и т.д.) | ||
+ | ** Как можно быстрее получить максимальную совместимость | ||
− | + | * Как решили сделать | |
+ | ** См. диаграмму из ARWINSS wiki | ||
+ | ** Нам помогла архитектура Wine, которая изначально в какой-то степени платформонезависимая | ||
+ | ** Платформонезависимость достигается благодаря специальной прослойке — winex11.drv – абстрагирующей wine от конкретной системы ввода-вывода платформы, на которой он живет | ||
+ | ** То есть, вызовы win32 сначала идут в user32/gdi32 wine, оттуда — в winex11.drv, а уже оттуда — в X11. | ||
+ | ** Так что мы написали свой драйвер, который вместо X11 использует (модифицированные) компоненты нашего ядра | ||
+ | ** … и стало возможно использовать user32 и gdi32 из wine почти без изменений! | ||
− | + | * Что получилось: | |
+ | ** За год разработки совместимость выше, чем у оригинальной попытки сделать Win32 | ||
+ | ** Работают FF4b, MS Office, Photoshop и т.д. | ||
+ | ** В wine отправлены десятки патчей | ||
+ | ** Можно использовать X11 в качестве вывода для win32 (соответственно, можно сделать сервер терминалов) | ||
+ | ** Код на 95% общий с wine, соответственно, усилия разработчиков объединяются, а не распыляются | ||
+ | ** Можем принимать патчи, от которых отказывается wine | ||
+ | ** Ущерб для совместимости приложений пока не замечен (не считая системные утилиты, завязанные именно на внутреннюю архитектуру win32 – пока такая обнаружена только одна) | ||
+ | ** Уже можно ограниченно применять в разных POS терминалах и прочем embedded, где есть готовый парк софта «под винду» и не нужна мощная графика. | ||
+ | * Преимущества для Wine | ||
+ | ** Кросскомпиляция dll wine позволяет отлавливать баги, связанные с переносимостью кода | ||
+ | ** Поиск багов в dll wine командой ROS, и написание патчей в апстрим (это уже делается!) | ||
+ | ** Фактически, возможно полноценное использование Wine под windows! Для запуска старых/несовместимых программ, в частности. И такой опыт уже был поставлен! | ||
− | + | ==Резюме (3 минуты)== | |
+ | 3.1. Впервые ReactOS подошла вплотную к beta стадии | ||
− | + | 3.2. Локальные применения уже возможны | |
− | + | 3.3. Устранены основные причины, препятствующие распространению ROS, а те, которые остались, сейчас в разработке (USB, FS drv, etc) | |
− | + | 3.4. Особенно актуально сейчас, когда идет тотальный отказ от «пиратки» | |
− | + | 3.5. Включаясь в разработку сейчас, вы участвуете в проекте, который будет весьма популярен в ближайшем будущем. Преимущества: | |
− | + | * Репутация | |
− | + | * Опыт командной разработки | |
− | + | * Можно использовать навыки разработки под Windows | |
− | + | * «Благодарная» работа: ARWINSS за год обогнал аналогичную подсистему, писавшуюся 10 лет. Все результаты работы сразу же будут заметны и очень | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
востребованы. | востребованы. | ||
+ | ==Демонстрация софта (15 минут)== | ||
− | + | 4.1. AbiWord | |
− | + | ||
− | 4.1. | + | |
− | + | ||
− | + | ||
− | 4. | + | 4.2. FF4b |
− | 4. | + | 4.3. KDE-Win(?) |
+ | 4.4. Пример исправленного бага + исходники решения | ||
− | + | ==Вопросы (5 минут)== | |
− | 5.1. | + | 5.1. Когда будет работать? |
− | + | * Уже работает. Смотря какое использование вы предполагаете. Для среднего домашнего пользователя — когда будут USB и DirectX. Их пишут. Остальное есть, баги сокращаются каждый день. | |
− | есть, баги сокращаются каждый день. | + | |
− | 5.2. | + | 5.2. Какие есть проблемы? |
− | + | * Кривая Win32, но это решает ARWINSS. | |
− | + | * Нет USB | |
− | + | * Не все «родные» драйвера дисплея работают. | |
− | + | * Нет DirectX | |
− | + | * FS – только FAT/CDFS | |
− | 5.3. | + | 5.3. Почему такие проблемы? |
− | + | * Потому что последние два года работали почти исключительно над ядром, чтобы добиться его стабильности. И добились. |
Версия 17:29, 7 мая 2014
Содержание
[убрать]Тезисы доклада
О ReactOS в общем (5 минут)
1.1. Реализация архитектуры NT с открытым кодом
1.2. Зачем клонировать NT?
- Прогрессивная архитектура — переход от модели «всё — файл» к модели «всё — объект» (кратко о том, что такое объект в NT)
- Архитектура подсистем, разные API в рамках одной ОС (кратко о POSIX и OS/2 в Win)
- Богатый парк драйверов
- Богатый парк прикладных приложений
1.3. Что уже есть?
- Текущее ядро сравнительно стабильно
- Свои драйверы VGA, PCI, SATA, PS/2 (мин. набор, уже есть и работает)
- Звуковая и сетевая подсистема
- Win32 позволяет запускать многие приложения
1.4. Что будет?
- Ядро: менеджер кэша: ускорение и в перспективе NTFS, ext2/3 и т.д.
- Развивается и улучшается PnP
- Активно пишется USB стек
- Портируем на x64 и ARM
- Улучшения Win32 (об этом отдельный рассказ)
ARWINSS – новая подсистема Win32 (12 минут)
2.1. Что такое подсистема? Подсистема Win32 и её реализации (Win32s, Win9x, WinCE, NT3, NT4(менеджер окон и GDI перенесли в ядро, sic), Wine).
2.2. Первоначальная попытка: как-в-XP. Проблемы:
- Реверс внутренних структур ядра: медленно, сложно, ненадежно.
- Очень сложное внутреннее устройство оригинала: наследие от Win16
- Сложность кооперации с Wine: принципиально разное внутреннее устройство
- Подробнее: в wine большая часть работы в usermode, в nt>4 – в ядре, перенос кода туда — сюда — проблема, не говоря уже о разных внутренних
интерфейсах
- Итог: многое работает, но за 10 лет разработки даже уровень совместимости Wine не был достигнут.
2.3. Новая попытка: Arwinss
- Задачи
- Сконцентрировать усилия на ядре
- Максимально возможная кооперация с Wine (в т.ч. не только брать, но и отдавать)
- Да, мы берем код из Wine, но регулярно шлем патчи обратно
- Wine неохотно принимает патчи, в которых не видит нужды, в свою очередь мы как раз исправляем то, что у них не сделано (shell32 и т.д.)
- Как можно быстрее получить максимальную совместимость
- Как решили сделать
- См. диаграмму из ARWINSS wiki
- Нам помогла архитектура Wine, которая изначально в какой-то степени платформонезависимая
- Платформонезависимость достигается благодаря специальной прослойке — winex11.drv – абстрагирующей wine от конкретной системы ввода-вывода платформы, на которой он живет
- То есть, вызовы win32 сначала идут в user32/gdi32 wine, оттуда — в winex11.drv, а уже оттуда — в X11.
- Так что мы написали свой драйвер, который вместо X11 использует (модифицированные) компоненты нашего ядра
- … и стало возможно использовать user32 и gdi32 из wine почти без изменений!
- Что получилось:
- За год разработки совместимость выше, чем у оригинальной попытки сделать Win32
- Работают FF4b, MS Office, Photoshop и т.д.
- В wine отправлены десятки патчей
- Можно использовать X11 в качестве вывода для win32 (соответственно, можно сделать сервер терминалов)
- Код на 95% общий с wine, соответственно, усилия разработчиков объединяются, а не распыляются
- Можем принимать патчи, от которых отказывается wine
- Ущерб для совместимости приложений пока не замечен (не считая системные утилиты, завязанные именно на внутреннюю архитектуру win32 – пока такая обнаружена только одна)
- Уже можно ограниченно применять в разных POS терминалах и прочем embedded, где есть готовый парк софта «под винду» и не нужна мощная графика.
- Преимущества для Wine
- Кросскомпиляция dll wine позволяет отлавливать баги, связанные с переносимостью кода
- Поиск багов в dll wine командой ROS, и написание патчей в апстрим (это уже делается!)
- Фактически, возможно полноценное использование Wine под windows! Для запуска старых/несовместимых программ, в частности. И такой опыт уже был поставлен!
Резюме (3 минуты)
3.1. Впервые ReactOS подошла вплотную к beta стадии
3.2. Локальные применения уже возможны
3.3. Устранены основные причины, препятствующие распространению ROS, а те, которые остались, сейчас в разработке (USB, FS drv, etc)
3.4. Особенно актуально сейчас, когда идет тотальный отказ от «пиратки»
3.5. Включаясь в разработку сейчас, вы участвуете в проекте, который будет весьма популярен в ближайшем будущем. Преимущества:
- Репутация
- Опыт командной разработки
- Можно использовать навыки разработки под Windows
- «Благодарная» работа: ARWINSS за год обогнал аналогичную подсистему, писавшуюся 10 лет. Все результаты работы сразу же будут заметны и очень
востребованы.
Демонстрация софта (15 минут)
4.1. AbiWord
4.2. FF4b
4.3. KDE-Win(?)
4.4. Пример исправленного бага + исходники решения
Вопросы (5 минут)
5.1. Когда будет работать?
- Уже работает. Смотря какое использование вы предполагаете. Для среднего домашнего пользователя — когда будут USB и DirectX. Их пишут. Остальное есть, баги сокращаются каждый день.
5.2. Какие есть проблемы?
- Кривая Win32, но это решает ARWINSS.
- Нет USB
- Не все «родные» драйвера дисплея работают.
- Нет DirectX
- FS – только FAT/CDFS
5.3. Почему такие проблемы?
- Потому что последние два года работали почти исключительно над ядром, чтобы добиться его стабильности. И добились.