Я долго думал что придётся сделать собственный дистрибутив Linux и потратить много усилий на то чтобы сделать удобно. Я думаю в конце концов я все же приду к созданию вообще собственной операционной системы. Но здесь по рассуждаю о том как быстрее начать и потратить меньше усилий, При этом не ограничивать никак целевую аудиторию.
← про реализацию чуть более простой идеи: Kanbyne
Похоже надо сделать на WebAssembly + WebGL
Есть все шансы, что это станет большой стандартной платформой в будущем, и что даже это будет работать вне браузеров (WASI).
Т.е. видимо по началу вся это инфо-среда aka операционка будет запускаться на весь экран в браузере после старта гостевой ОС
Рендеринг обязательно React-like
[ ] Не хватает библиотеки компонентов и вообще слоя рендеринга и фреймворков.
Впрочем, надо посмотреть как делают Figma, Miro (видео: pixi, canvas) и VSCode
Ещё интересно что в SwiftUI интересного
Что есть:
Grimoire.js - WebGL framework for Web development -
Судя по описанию, то что нужно
[ ] ? Как описывать layout: верстка и стили. Что-то по мотивам html/css или совсем иначе? Эти технологии дают самые богатые возможности, но содержать много легаси. Очень рассчитывал на разработки Mozilla Quantum/Servo, но у них всё плохо.
[ ] CSS like selectors, XPath
Можно сделать что-то более простое, потому что компонентность
При этом, FlexLight должен уметь хорошо понимать структуру и делать к ней запросы
[ ] DevTools!
DevTools нужен, чтобы в платформу легко было входить и развивать Explorable Explanations
Функции:
Проблемы:
[ ] Экранная клавиатура для мобильных
Сначала можно отложить, и сделать хак с невидимыми инпутами
Но вообще иметь свою клавиатуру — значит получить много новых возможностей, в том числе и для бизнесов
[ ] Как будет сделана расширяемость и интерлоп? Typescript?
[ ] Протоколы, Устройства/драйвера (устройства ввода, памяти), сертификаты, прерывания, особенности устройства и встроенная периферия
[ ] shell?? Возможно, стоит сделать собственный шел внутри. Но начать можно с подклюсения к хостовому. См ниже
✅ Взаимодействие с host OS. Какой-то софт будет запускаться там, увы, нужно обмениваться файлами, буфером, переключатся. Это плохо если придётся сворачивать пространство. Хорошо бы открывать другой софт внутри. Такое возможно с X-Server в Linux. Для Windows мб можно портировать на WebAssembly/WebGL какой-нибудь RDP
!Есть FreeRDP и вот такая штука под HTML5: myrtille
later (но важно заложить в архитектуру):