Лично я готов дать 10 т.р. и те кто готов присоединится к разработке или финансированию рефакторинга пусть отписываются в этой теме указав сумму, способ связи и начисления доната.
Разработчики(получатели доната) должны дополнительно указать что они за этот донат будут делать.
Пока надо только отмечать намерения донатить и писать код и обязательно оставлять контакты, я всех оповещу кастом по форуму и сообщением на контакты когда разговор станет предметным и надо будет решать, кто и как будет собирать донаты и кому их будут в итоге выплачивать.
Контакты можно публиковать не открытыми, а в виде команды пишущей их в терминале, например:
echo FM3SQOJSGEUTGNZQFUZDKLJVHEFA====|base32 -d
Создал в организации репозитарий, предлагаю обсуждение продолжить там:
https://github.com/Kernel-Crowdfunding/New-Linux-Console
Ссылка для записи разработчиков: Developers
Ссылка для записи спонсоров: Sponsors
Мотивация:
- Необходимость исправить указанные Линусом ошибки: Линуса гномеры покусали?
- Запуск иксов на дополнительной отдельной видеокарте нарушает работу консоли на основной видеокарте.
- Если раньше собственно консоль и иксы пользовались раздельными драйверами, и переключение в консоль при переполнении ОЗУ приводило к переключению на другой драйвер которому для нормальной работы хватало оставшейся памяти, что позволяло запустить htop и вручную удалить занимающий всю свободную память процесс, то теперь, когда благодаря KMS иксы и консоль используют один драйвер так уже сделать нельзя, распухшая графическая программа парализует работу графики и иксах, и в консоли.
Подробнее можно прочитать здесь: Поиск исполнителей и сбор донатов и на рефакторинг кода ядерной консоли. (комментарий)
Что имхо надо, оно же ТЗ:
- Вынести код консоли в отдельный модуль ядра, который должен уметь принимать опции инициализации и как аргумент запуска модуля, и как опцию в командной строке ядра, при этом опции в командной строке ядра должны иметь приоритет, чтобы иметь возможность спасти положение при неправильном написании системных конфигов.
При этом надо понимать то, что данное внесённое предложение предлагает не текущий ремонт подсистемы консоли, а полностью новый код для развития системы консоли с новым функционалом. - В состав принимаемых модулем опций должны входить:
2.1 Однозначная идентификация используемых видеопортов для подключения монитора должна осуществляться через указание конкретной используемой видеокарты по идентификаторам вендора, модели устройства,серийному номеру и идентификатору используемого для подключения монитора видеопорта.
2.2 Аналогично однозначная идентификация назначаемых модулю клавиатуры и мыши, с указанием индентификаторов и типа подключаемого устройства ввода? Или может просто давать список устройств без указания их типа, а там модуль пусть разбирается сам, где мышь, а где клавиатура?
2.3 Модуль должен использовать только статичное выделение памяти с запретом свопинга(Мотивация 3) и принимать в опциях размер буферов, под которые сразу должен выделять память и не менять самостоятельно её в процессе работы, но возможно создание в /proc или /sys отдельной директории с параметрами через которые можно будет поменять размер тех или иных буферов и поменять прочие настройки модуля. - Должна быть предусмотрена возможность параллельной загрузки и работы нескольких таких модулей, на разных комплектах из видеокарты, клавиатуры и прочих USB устройств, этот модуль должен уметь проверять занятие устройств другими модулями и выдавать соответствующую ошибку и список со статусом, кто чем занят всех имеющихся устройств.
Вообще надо подумать как этим модулем будут обрабатываться конфликты занятости того или иного устройства теми или иными модулями или программами ядра.
Всё это надо за тем, чтобы за одним компом могло работать несколько человек с разных комплектов видеокарта + устройства ввода(клавиатура, мышь и пр.) и эти устройства не путались между различными модулями. - Надо предусмотреть продолжение работы модуля при отключении или пропажи связи с тем иным устройством и возобновления работы с ним при его обратном подключении к системе.
Должна быть предусмотрена возможность запуска модуля при отсутствии в системе назначенных ему устройств. - Модуль должен использовать только общие стандартные интерфейсы видеокарт(Мотивация 3)
- При запуске на той или иной видеокарте иксервера модуль должен передавать и принимать управление видеокартой аналогично тому, как это происходило до появления KMS и modesetting.(Мотивация 3)
Так же он должен суметь передать и все сопутствующие устройства ввода(тут возможно придётся попилить и икссервер) - В принципе хорошо бы и сам графический сервер переписать так, чтобы при параллельном запуске нескольких экземпляров на разных видеокартах каждый экземпляр бы наследовал от модуля консоли привязанного к данной видеокарте назначенные этому модулю консоли устройства ввода, для этого надо предусмотреть экспорт информации о подключенных устройствах в файл на файловых системах /proc или /sys.
(Сервер можно не переписывать, но механизм передачи и приёма устройств ввода предусмотреть нужно) - Надо предусмотреть вывод консоли в стереорежиме при работе с устройством через VR шлем. Ничего сложного делать не надо, просто выводить текст на два экрана со смещением влево для левого и вправо для правого экрана для того чтобы при просмотре через VR шлем можно было просматривать текст обоими глазами, а не одним. Номера портов в видеокарте для вывода в стереорежиме и величина смещения кадров должна задаваться через параметр командной строке ядра и через специальные файлы в proc и sysfs.
- При подключении к видеокарте нескольких мониторов модуль должен вывести консоль на каждый монитор, при этом каждая выведенная консоль должна свободно переключатся на любую консоль, но при этом каждая консоль должна отобразатся только на одном экране, при этом при переключении консоли текущая консоль и консоль на которую переключаются должны менятся местами.
Перемещено leave из job