Я одержим безумной идеей написать свой двухпанельный ФМ, но не как у всех, а с unixway и плагинами.
Суть такая: есть ядро, ui и куча модулей. Каждый модуль отвечает за свой тип источника данных, ui отвечает за интерфейс, а ядро за связь этого всего. Это всё - отдельные процессы, и они общаются между с ядром через стандартный ввод/вывод.
Атомарной единицей в сей системе является объект. Объектом может быть что угодно в зависимости от набора модулей. Например: файл, таблица БД, объект json, таблица csv. Объекты объединяются в хранилища, это каталоги, базы данных (или файлы БД, если речь идёт о SQLite), файлы json/csv соответственно.
Ui - автономный настраиваемый интерфейс. Кнопки действий, колонки в списках объектов, параметры модулей и прочие вещи динамичны и настраиваются в зависимости от набора и возможностей модуля.
Каждый модуль имеет набор параметров необходимый для его работы. Для базы данных это хост, логин, пароль, если бд в файле это корневая директория файла. Обработка данных происходит в модуле в зависимости от контекста операции.
Например, если я копирую таблицу из mysql на диск, то модуль mysql запрашивает каталог у модуля файловой системы и пишет туда дамп. Если в csv, то он берёт у модуля cvs каталог, имя файла (если модуль что-то не знает, то он стучится в ui) и делает дамп в csv. В этих случаях между процессами ходят только команды.
Если надо взять несколько записей из таблицы и перегнать их в json то модуль источника данных преобразует их в нужный формат и передаёт данные модулю назначения, который разбирается что с ними делать. Я размышляю насчёт механизма, но во многих случаях это может быть просто передача json массива по трубам, хотя если в ход пойдут бинарные данные, то нужно будет организовывать отдельный поток/fifo/еще что-нибудь.
Итак. В принципе всё вполне технически решаемо, но работа буксует. Как-то трудно всё потянуть. Нужна хотя-бы моральная поддержка. Кому-нибудь вообще интересна такая идея?
костылестроение