ja-o-s/README.normal.md

11 KiB

ЯОС (рабочее название)

Обзор

ЯОС - независимое ответвление проекта операционной системы A2, разработанной в ETHZ в Швейцарии. ЯОС разрабатывается в России. ЯОС предназначена для встроенных систем, а также может применяться для обучения программированию. Может работать как операционная система под x86 и ARM, или как приложение под Windows или Linux. Система написана на языке Активный Оберон (не на Си или Си++), что является её важнейшим преимуществом с точки зрения кибербезопасности.

На данный момент существуют два варианта ЯОС - с исходными текстами на английском языке (ветка "main"), и с исходными текстами, частично переведёнными на русский язык (ветка "главная").

Замысел проекта

Почему ОС на Обероне, а не на C/C++

Язык Си ненадёжен. В нём нет понятия массива. Поэтому сведения о границах между разными данными в памяти легко теряются и возникают ошибки типа переполнения буфера. Явное управление памятью, а значит, возникают ошибки и уязвимости вида "использование после освобождения", в т.ч. повреждение стека. В Си интенсивно используется нестрогая типизация (void *, union), которая тоже приводят к ошибкам (уязвимостям). В своё время язык Си мог быть и прогрессивным, но с тех пор прошло 50 лет и он явно устарел. Лишь только большая инерция держит его "на плаву". Язык С++ более развит, но всё же по большей части совместим с Си, а значит, в какой-то мере наследует недостатки C. При этом, С++ переусложнён - он хорошо подходит, чтобы можно было блеснуть знаниями языка, но в промышленности нужно не это, а надёжный инструмент, позволяющий людям средних способностей достигать надёжного результата. Язык "Активный Оберон" существенно безопаснее Си и при этом существенно проще С++. Для надёжности программы также важна проблема доверенного компилятора. Существующие компиляторы С++ слишком сложны, в то время как компилятор Активного Оберона из ЯОС прост и в принципе позволяет двигаться в направлении создания доверенного компилятора. Кроме того, простота языка позволяет в сжатые сроки создавать специализированные версии языка, и такие версии созданы, например, Active Cells - это разновидность Активного Оберона для программирования FPGA.

Почему на русском языке

Русскоязычное программирование доказало свою состоятельность на примере таких проектов, как Эль-76, Школьный алгоритмический язык и 1С-Предприятие. Работа на родном языке более производительна, делает терминологию более точной, облегчает взаимопонимание между всеми сторонами процесса разработки и эксплуатации. Более подробно о русскоязычности.

Почему ответвление, а не участие в доработке оригинальной A2

Оригинальная версия A2 давно закоснела, многие ошибки не исправляются годами, многие доработки застревают где-то посередине. Планы дальнейшего развития A2 не публикуются и не обсуждаются. При этом A2 где-то используется, и нельзя просто так прийти в этот проект и начать его менять - возникает сопротивление со стороны существующих пользователей.

Зачем ЯОС, если уже есть Linux?

На практике, количество уязвимостей, которые находятся в Linux и вокруг него, настолько велико, что нет оснований ему доверять. Эти уязвимости проистекают из самого процесса разработки:

  • код поставляется без гарантии, т.е. никто не несёт ответственности за качество
  • слишком быстрая смена версий не даёт шансов глубоко изучить код на безопасность. Некоторые уязвимости живут ненайденными по 20 лет, а версии сменяются гораздо чаще.
  • основная масса кода написана во враждебных России странах. История доказывает, что США интенсивно используют закладки для кибершпионажа с окончания WWII (история с Crypto AG, разоблачения Сноудена). Исходя из этого, необходимо предполагать, что часть "ошибок" в Linux является шпионскими закладками, и процесс добавления закладок в Linux идёт постоянно. Поэтому, несмотря на совершенствование методов защиты, не следует ожидать, что безопасность Linux когда-либо станет удовлетворительной. Если мы сели играть в карты с шулером, он будет пытаться обмануть при любых правилах игры. В случае линукса мы пришли к шулеру в гости и играем его колодой. Это бесперспективно. Если уж делать российский Linux, то нужно было бы брать очень старую и хорошо исследованную версию и самостоятельно закрывать все те дыры, которые были найдены с тех пор, сократив доверие к основной ветке Linux до нуля. В реальности мы наблюдаем другое - даже для сертифицированных версий российских линуксов берутся относительно свежие версии, и поэтому их приходится срочно латать за 3 дня после опубликования сведений об уязвимостях в международной ветке. Однако, многие уязвимости, которые ещё не опубликованы, уже кому-то известны и могут применяться для атак на российскую ИТ-инфраструктуру.

Но даже если всё это сделать, ключевые компоненты Linux в основном написаны на языке Си, который мы уже осудили выше, и на языке Bash, который немногим лучше, чем Си.

Достижения проекта:

  • улучшены инструменты разработчика (среда разработки, модуль отладочной печати, отладчики и др)
  • улучшена переносимость (описан запуск на Zybo Z7-10, Raspberry Pi, LiveCD под x86, исправлена кросскомпиляция с 32 на 64 разряда)
  • создано некоторое количество документации
  • воплощён комплекс мер по улучшенной поддержке кириллицы и русского языка
  • развит язык (добавлено метапрограммирование на метапроцедурах)

Дальнейшие цели проекта:

  • портирование на российские процессоры и машины (MB 77.01, Байкал, Эльбрус)
  • песочница для запуска виртуальных машин внутри ЯОС
  • продолжение перевода кода и документации
  • развитие языка программирования для повышения надёжности и выразительности

Как запустить?

Инструкции

Картинки

Пример переведённого текста

Лицензия

3-clause BSD

Отличия ЯОС от A2

Список отличий

видео

Документация и общение