Операционная Система на JS
Всем привет!
Все, наверное, слышали про ОС на JS, Java, и других высокоуровневых языках.
И может быть видели что проектов по созданию таких ОС сотни.
Их можно найти в большом количестве на github и других хостингах совместной разработки и в сети в целом.
Но печальным моментом является то, что большинство из них умирают на первых стадиях разработки. Проект-стартёр теряет интерес, женится, дети, работа итд, ну и времени разумеется не остаётся, какая уж там ОС...
Есть и множество других проблем.
И чтобы не идти по стопам основателей этих ушедших проектов и не наступать на одни и те же грабли, после сотен, а может и тысяч других разработчиков, я предлагаю заранее всё обдумать и взвесить.
Пока предложу основные концепции нового проекта:
1) Полная открытость и бесплатность
2) Модуль (на C и/или C++) с API для быстрого и простого написания драйверов на JS для любых комплектующих, периферии и девайсов
3) DE, окружение и ПО на JS + HTML5 + CSS
По первому пункту, думаю, вопросов ни у кого не будет, код и контент "open + free".
Второй пункт - это самая главная фишка, ноу хау, одна из главнейших основополагающих составляющих идеологии нашей ОС.
Смысл, как вы наверное догадались, в возможности создания, несильно продвинутыми в программировании и в знании железа, пользователями драйверов.
По третьему пункту, если есть вопросы, то вам стоит взглянуть хотя бы на Open webOS.
Но наша система будет ориентирована скорее на планшеты, нетбуки, ноутбуки и десктопы, хотя возможна и поддержка телефонов и смартфонов, телевизоров итд
Концепция: "Драйвера пишет простой пользователь".
В смысле, имеет возможность написать не сильно углубляясь в недры, но так как драйвера будут под открытой лицензией, то драйвер нужно будет написать лишь единожды и он будет доступен всем пользователям. Любой пользователь будет иметь право и возможность дополнить, обновить драйвер, исправить ошибки...
Будет утилита вроде Synaptic, но с поддержкой функции upload.
Система будет модульной, различные модули и субмодули, можно будет загружать и выгружать реал-тайм. В оперативной памяти находится лишь то, что нужно, лишние процессы и службы можно будет выключать, чтобы не загружать процессор попусту, ну и тд. Нужен ли своп и журналирование фс - пока не знаю.
Сейчас я только начинаю изучать JS, но это и не важно вовсе. Себя я, впрочем как и многих из здесь присутствующих, вижу максимум в роли девелопера каких-то несложных драйверов для некоторых девайсов и периферии, а также ПО на JS/HTML5/CSS.
Я не силён в знании системоустройсва, но в целом общий план системы такой:
1) Включаем девайс (планшет, ноут, десктоп, телевизор, холодильник...)
2) После включения загружается Grub2 (допиленный).
Мы его не видим при загрузке, потому что он работает в фоне, но есть возможность вызвать меню.
3) Grub2 видит наши диски и разделы, потому что у него есть драйвера, и этот допиленный Груб запускает модульное ядро нашей системы (его нужно научить этому).
4) Загружаются модули ядра:
небольшой базовый модуль (в него будет запихнуто всё, что потребуется системе дополнительно)и загружается наш модуль-фишка с API для драйверов на JS
5) Загружаются только нужные драйвера на JS для железа, подхватываются девайсы, периферия
Одновременно:
6) Загружаются V8 и кусочки Blink, а также некоторые библиотеки
7) Стартует DE (Рабочий Стол на JS/HTML5/CSS)
Система должна грузиться и работать быстро. Девайсы, периферия, флешки, ж/д диски, ... находятся и автоматически монтируются/отмонтируются как при загрузке, так и уже в DE.
Программы можно запускать в изолированных, защищённых и закрытых от основной системы контейнерах (возможно с поддержкой виртуализации и/или подменой сведений о системе). На первых парах можно и без подобных сложных вещей обойтись.
Модули состоят из подключаемых и отключаемых реал-тайм субмодулей. Хотя капитально переписывать и поддерживать, обновляя с каждой новой версией, специальные версии V8 и Blink и etc смысла особого нет (насчёт возможностей - вопрос спорен), но всё-таки кое-чего подускорить и оптимизировать можно и стоит.
Модуль с API для драйверов я сам разумеется не напишу, как впрочем и практически все здесь присутствующие.
А написать его могут, к примеру, разаработчики ядрда Linux, BSD, Hard, Hiku, ну и может кто-то из бывших разработчиков Syllable. У которых не просто огромный опыт соответствующего программирования в специфической узкоспециализированной данной области, но и масса знаний по устройству систем и ядер.
Разумеется есть ещё куча проектов, где можно выцепить таких специалистов, и попробовать завлечь в наш проект, Android, IOS, MacOS, Windows.
То что "платники" и "проприетарщики" - "испорченные и разбалованные люди", и бесплатно работать не будут никогда и ни за что - это всё бред.
И раз уж это будет система ориентированная на стандартизацию, какие-то там новые общемировые общепринятые ISO, то помощь корпораций, крупных компаний, различных коммерческих и/или некоммерческих организаций, будет совсем не лишней.
Нужны ли спонсоры, кикстартёр итд - вопрос отдельный.
Ну разумеется от вливания дополнительных средств в разработку никому хуже не станет.
Что войдёт в базовый модуль пока понятия не имею, на этом этапе разработки неясно.
Также пока до конца неясна область применения в системе asm.js, Portable Native Client, Raw Socket API и других технологий.
В системе будет стандартизированный Интерфейс программирования прлиложений и система управления пакетами (без "Ада зависимостей").
Сразу предупрежу, если вдруг будут какие-то небольшие конфликтые ситуации внутри коллектива, и кто-то потом захочет уйти, пусть он потом не говорит, "удалите из проекта весь мой код, верните идеи - это моя собственность, мои картинки" итд.
Поэтому вы отказываетесь от всех и любых прав на все ваши идеи, на код, контент, на всю и любую вашу помощь в пользу проекта.
Всем интересующимся, просьба откликнуться.
Поучаствуй, предложи идею и помощь проекту, измени этот мир к лучшему - и твои дети потом скажут тебе за это СПАСИБО!
|