LINUX.ORG.RU
ФорумTalks

Поиск исполнителей и сбор донатов и на рефакторинг кода ядерной консоли.

 , , , ,


3

5

Лично я готов дать 10 т.р. и те кто готов присоединится к разработке или финансированию рефакторинга пусть отписываются в этой теме указав сумму, способ связи и начисления доната.
Разработчики(получатели доната) должны дополнительно указать что они за этот донат будут делать.
Пока надо только отмечать намерения донатить и писать код и обязательно оставлять контакты, я всех оповещу кастом по форуму и сообщением на контакты когда разговор станет предметным и надо будет решать, кто и как будет собирать донаты и кому их будут в итоге выплачивать.

Контакты можно публиковать не открытыми, а в виде команды пишущей их в терминале, например:
echo FM3SQOJSGEUTGNZQFUZDKLJVHEFA====|base32 -d

Создал в организации репозитарий, предлагаю обсуждение продолжить там:
https://github.com/Kernel-Crowdfunding/New-Linux-Console

Ссылка для записи разработчиков: Developers
Ссылка для записи спонсоров: Sponsors

Мотивация:

  1. Необходимость исправить указанные Линусом ошибки: Линуса гномеры покусали?
  2. Запуск иксов на дополнительной отдельной видеокарте нарушает работу консоли на основной видеокарте.
  3. Если раньше собственно консоль и иксы пользовались раздельными драйверами, и переключение в консоль при переполнении ОЗУ приводило к переключению на другой драйвер которому для нормальной работы хватало оставшейся памяти, что позволяло запустить htop и вручную удалить занимающий всю свободную память процесс, то теперь, когда благодаря KMS иксы и консоль используют один драйвер так уже сделать нельзя, распухшая графическая программа парализует работу графики и иксах, и в консоли.
    Подробнее можно прочитать здесь: Поиск исполнителей и сбор донатов и на рефакторинг кода ядерной консоли. (комментарий)

Что имхо надо, оно же ТЗ:

  1. Вынести код консоли в отдельный модуль ядра, который должен уметь принимать опции инициализации и как аргумент запуска модуля, и как опцию в командной строке ядра, при этом опции в командной строке ядра должны иметь приоритет, чтобы иметь возможность спасти положение при неправильном написании системных конфигов.
    При этом надо понимать то, что данное внесённое предложение предлагает не текущий ремонт подсистемы консоли, а полностью новый код для развития системы консоли с новым функционалом.
  2. В состав принимаемых модулем опций должны входить:
    2.1 Однозначная идентификация используемых видеопортов для подключения монитора должна осуществляться через указание конкретной используемой видеокарты по идентификаторам вендора, модели устройства,серийному номеру и идентификатору используемого для подключения монитора видеопорта.
    2.2 Аналогично однозначная идентификация назначаемых модулю клавиатуры и мыши, с указанием индентификаторов и типа подключаемого устройства ввода? Или может просто давать список устройств без указания их типа, а там модуль пусть разбирается сам, где мышь, а где клавиатура?
    2.3 Модуль должен использовать только статичное выделение памяти с запретом свопинга(Мотивация 3) и принимать в опциях размер буферов, под которые сразу должен выделять память и не менять самостоятельно её в процессе работы, но возможно создание в /proc или /sys отдельной директории с параметрами через которые можно будет поменять размер тех или иных буферов и поменять прочие настройки модуля.
  3. Должна быть предусмотрена возможность параллельной загрузки и работы нескольких таких модулей, на разных комплектах из видеокарты, клавиатуры и прочих USB устройств, этот модуль должен уметь проверять занятие устройств другими модулями и выдавать соответствующую ошибку и список со статусом, кто чем занят всех имеющихся устройств.
    Вообще надо подумать как этим модулем будут обрабатываться конфликты занятости того или иного устройства теми или иными модулями или программами ядра.
    Всё это надо за тем, чтобы за одним компом могло работать несколько человек с разных комплектов видеокарта + устройства ввода(клавиатура, мышь и пр.) и эти устройства не путались между различными модулями.
  4. Надо предусмотреть продолжение работы модуля при отключении или пропажи связи с тем иным устройством и возобновления работы с ним при его обратном подключении к системе.
    Должна быть предусмотрена возможность запуска модуля при отсутствии в системе назначенных ему устройств.
  5. Модуль должен использовать только общие стандартные интерфейсы видеокарт(Мотивация 3)
  6. При запуске на той или иной видеокарте иксервера модуль должен передавать и принимать управление видеокартой аналогично тому, как это происходило до появления KMS и modesetting.(Мотивация 3)
    Так же он должен суметь передать и все сопутствующие устройства ввода(тут возможно придётся попилить и икссервер)
  7. В принципе хорошо бы и сам графический сервер переписать так, чтобы при параллельном запуске нескольких экземпляров на разных видеокартах каждый экземпляр бы наследовал от модуля консоли привязанного к данной видеокарте назначенные этому модулю консоли устройства ввода, для этого надо предусмотреть экспорт информации о подключенных устройствах в файл на файловых системах /proc или /sys.
    (Сервер можно не переписывать, но механизм передачи и приёма устройств ввода предусмотреть нужно)
  8. Надо предусмотреть вывод консоли в стереорежиме при работе с устройством через VR шлем. Ничего сложного делать не надо, просто выводить текст на два экрана со смещением влево для левого и вправо для правого экрана для того чтобы при просмотре через VR шлем можно было просматривать текст обоими глазами, а не одним. Номера портов в видеокарте для вывода в стереорежиме и величина смещения кадров должна задаваться через параметр командной строке ядра и через специальные файлы в proc и sysfs.
  9. При подключении к видеокарте нескольких мониторов модуль должен вывести консоль на каждый монитор, при этом каждая выведенная консоль должна свободно переключатся на любую консоль, но при этом каждая консоль должна отобразатся только на одном экране, при этом при переключении консоли текущая консоль и консоль на которую переключаются должны менятся местами.

Перемещено leave из job

★★★★★

Долго думал скинуть или нет. Не скину, чистой ядерной консолью пользовался лет 5 назад последний раз

upcFrost ★★★★★ ()
Ответ на: комментарий от wandrien

Создал в организации репозитарий, предлагаю обсуждение продолжить там:
https://github.com/Kernel-Crowdfunding/New-Linux-Console

Ссылка для записи разработчиков: Developers
Ссылка для записи спонсоров: Sponsors

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от im-0

Что делать с системами, где «видеокарта» не через PCI работает?

Не знаю в чём там разница, смысл передачи id производителя и устройства в точном указании видеокарты и видеопорта, то есть если там такой способ не работает, то просто надо придумать другой способ точно указать видеокарту и монитор.

Тут актуален скорее другой вопрос, как различать видеокарты если в системе стоят две одинаковые с одинаковыми id производителя и модели?

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 2)
Ответ на: комментарий от torvn77

Если ядро их различает, значит и способ есть.

На любой шине устройства адресуются каким-либо способом.

wandrien ()

Поскольку количество проявивших интерес к теме уже определилось, то я предлагаю перейти к практическим обсуждениям, надо определится с двумя вопросами:

  1. На какой платформе будем собирать деньги, пока была предложена только https://www.bountysource.com/
    Если кто хочет предложить другую платформу, то пожалуйста внесите своё предложение.
  2. надо определится с тем, что собственно делать:
    2.1 просто исправить ошибки в старом коде консоли без его качественного развития.
    2.2 Чтобы избавится от всяких неиспользуемых legacy и архитектурных ошибок полностью переписать систему консоли заново, предложив её новую архитектуру.

Если вы сторонник варианта с полным переписыванием кода(2.2) то опишите как вы видите новую подсистему консоли.

По своему опыту скажу что латание заплаток вещь не очень перспективная так как может кончится всё равно полным переписыванием кода, при этом получившийся код может быть корявым и по этому лично я предпочитаю вариант 2.2.
Как я вижу новую подсистему консоли можно прочитать здесь: https://github.com/Kernel-Crowdfunding/New-Linux-Console/blob/master/Terms%20of%20reference%20for%20the%20console%20module%20(in%20Russian)
Кому интересно предложенное можете прислать свои предложения по улучшению текста, после перевода и правки на английском я создам соответствующее задание на https://www.bountysource.com/

cast список проявивщих интерес:
@I-Love-Microsoft, @i-rinat, @wandrien, @burgertroll, @token_polyak, @Gremilkar, @CYB3R

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от CYB3R

Можно и так, но деньги в криптовалюте должен собирать не я, потому что опыта работы с криптовалютой у меня нет совсем, я просто не понимаю какие файлы составляют кошелёк и просто могу затереть ключи и потерять доступ к кошельку.

Ну конечно я не против если меня подучат.

torvn77 ★★★★★ ()

Как-то дискуссия затихла… Так ничего и не решили,как я понимаю?

Gremilkar ()
Ответ на: комментарий от Gremilkar

Ладно я понял, так что тогда, кто будет писать текст и создавать точку сбора донатов?
У меня с английским не очень, я не смогу понять что точно написал.
И какой из перечисленных сайтов сбора донатов будем использовать?

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 2)
Ответ на: комментарий от Gremilkar

Ок, как сделаешь сбрось ссылку.
И где будешь создавать, на баунтисурцесе?

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)