Проект, посвященный разработке экосистеме устройств. Описание архитектуры ПО есть в папке architecture
Программная среда для взаимодействия вычислительных устройств. Является бесшовной для пользователя и является меж-компьютерной ОС.
Объединить аппаратные возможности устройств, создать единую, полностью бесшовную программную среду для пользователя.
Экосистема будет состоять из 2 классов устройств: mainframe и client (т.е сервера и тонкого/толстого клиента). Эту концепцию можно расширить до следующей: Тонкий клиент - это практически вся нужная (и полезная) для пользователя периферия: дисплей, сенсорный экран или клава с мышью, также USB или иные порты и т.д (в том числе камера).
Сервер обеспечивает все вычисления, отрисовку картинки и обработку запросов пользователя и хранение данных.
Сервер и клиент общаются по сети, из чего вытекает возможность делать сервер устройством, подключенным только "к розетке и сети".
Клиент делится на 2 типа: тонкий клиент и толстый клиент.
- Тонкий клиент: не самодостаточное устройство, удовлетворяющее:
Системным требованиям:
- Устройство вывода (обычно дисплей)
- Устройство ввода (может быть сенсорный экран, или клавиатура+мышь)
- Модуль работы по сети (т.е сетевая карта, модем и пр.)
- Процессор, мощности достаточной для отрисовки картинки
- ОЗУ: 200-500 МБ, должно быть достаточно для запуска ядра, ПО клиентской части компонентов
- ПЗУ: около 2 ГБ для ядра и программы клиента (если строится на самых маленьких дистрибутивах Линукс или вовсе без них, то можно сократить до 300 Мб. Клиент будет сохранять информацию о серверах (настройки соединения).
- Опционально может быть периферия в виде камеры, разъемов и т.д. На клиенте есть лишь минимальные буферы для работы устройств, максимальное кол-во вещей делаются на сервере. Из интересного можно реализовать вход по отпечатку пальца и прочей биометрии. ПО: ядро Линукс, минимальный дистрибутив, wireguard (по умолчанию весь трафик гоняется только в нем), клиентское ПО (т.е программа-клиент), опциональный набор расширений (сканирование QR для авторизации wireguard, поддержка https, DNS и т.д).
- Толстый клиент: полноценное устройство, которое поддерживает автономную работу (без сервера). При работе с сервером он может с ним синхронизироваться, чтобы потом можно было войти в учётную запись на других клиентах. В перспективе может иметь и своих тонких клиентов (но немного, т.к. это ресурсоемко). Отлично подходит для работы, где невозможно связаться с сервером или сеть не достаточно хороша для тонкого клиента. Подключение тонких клиентов в роли доп. дисплеев тоже имеет перспективы.
Нужный результат - создание бесшовного пространства между устройствами.
Есть перспективы сохранения мощностей слабых устройств, т.е. их не нужно будет списывать или сдавать на переработку. Необходимо продумать момент с масштабированием сервера (горизонтальное).
Сервер имеет свою админку, а также может управляться с соответствующего тонкого клиента. Сервер имеет на борту систему безопасности (разграничение доступа, управление группами пользователей и т.д., способы авторизации и допуска к информации), систему базового функционала (хранение данных и его резервное копирование, управление доступными для устройства/пользователя вычислительными мощностями на сервере, система обновления тонких клиентов. На сервере должна храниться информация о железе клиентов. В экосистеме должны быть разные уровни управления клиентом (от частного, когда сервер знает минимум информации о клиенте и имеет минимум доступа к его данным до корпоративного, когда сервер знает всю возможную информацию о устройстве и имеет полный доступ к нему). Для частного уровня скорее всего нужно ввести оценочный уровень производительности (A,B,C...). На любом уровне контроля можно задать перечень операций, требующих соглашения текущего пользователя или не требующих их. На частном уровне пользователь таким образом сам задаёт уровень доверия, на корпоративном -уровень свободы сотрудника/студента. На корпоративном уровне система должна в первую очередь рассказать пользователю, какие операции сервер будет делать без разрешения (и насколько силен контроль над устройством и пользователем),а какие потребуют его согласия (такие может настроить сам пользователь, например, автоматически давать разрешение северу на проведение операции). Должна быть возможность настройки этих параметров под конкретное устройство. Таким образом, уровень контроля задаётся над пользователями как таковым, а не над устройством. Хотя, политики контроля должны быть и для устройства (оно может находиться в месте, где нельзя снимать и т.д) Должна быть возможность использования возможностей сервера на полную катушку и для толстого клиента, например перемещение уже работающего приложение на сервер (чтобы затем работать с ним через тонкий клиент). При этом, если на толстом клиенте не хватает ресурсов железа, то должна быть возможность автоматического переноса или запуска приложения на сервере. Судя по всему, это будет возможно с специальными модулями ядра для толстого клиента.