Bug 50407

Summary: [PATCH] Backport columnar output from Debian
Product: Sisyphus Reporter: Ivan A. Melnikov <iv>
Component: aptAssignee: placeholder <placeholder>
Status: REOPENED --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aen, arseny, boyarsh, glebfm, imz, ldv, placeholder, rider, sin, vt
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
columns are not universally useful :) none

Description Ivan A. Melnikov 2024-05-21 16:31:24 MSK
Чуть больше месяца назад дебиановцы выкатили apt 3.0, одной из самых заметных новых фич которого стал цветной многоколоночный вывод[1]. Что полезного несёт такая раскраска (весь список одним цветом) я не знаю, а вот многоколоночный вывод -- это хорошо и нужно, так что я взял на себя смелость и сбэкпортировал его к нам.

Основной патч: https://git.altlinux.org/people/iv/packages/apt.git?a=commitdiff;h=f6bebe5ed8cfe8e8344a7ab0824e0eaeaa59a1fb

Таска: https://git.altlinux.org/tasks/348580/

Прошу поругать или пропустить.

[1] Новость на opennet со скриншотиками: https://www.opennet.ru/opennews/art.shtml?num=60984
Comment 1 Ivan A. Melnikov 2024-05-21 16:32:30 MSK
Хотите такое в p11? Я хочу.
Comment 2 Ivan A. Melnikov 2024-05-21 16:34:18 MSK
Пример работы apt-get install blender:

ДО:

The following extra packages will be installed:
  libOpenUSD0 libPtex2 libalembic1.8 libblosc libcudart libdcmtk18 libdraco
  libembree4-4 libgflags libharu2.4 libhdf5-310 liblog4cplus libopenCOLLADA
  libopenexrcore30 libopenimagedenoise2 libopenimageio2.5 libopenpgl0
  libopenshadinglanguage1.13 libopensubdiv3.6.0 libopenvdb10.1 libpartio1 libspnav
  ocl-icd
The following NEW packages will be installed:
  blender libOpenUSD0 libPtex2 libalembic1.8 libblosc libcudart libdcmtk18 libdraco
  libembree4-4 libgflags libharu2.4 libhdf5-310 liblog4cplus libopenCOLLADA
  libopenexrcore30 libopenimagedenoise2 libopenimageio2.5 libopenpgl0
  libopenshadinglanguage1.13 libopensubdiv3.6.0 libopenvdb10.1 libpartio1 libspnav
  ocl-icd
0 upgraded, 24 newly installed, 0 removed and 0 not upgraded.


ПОСЛЕ:

The following extra packages will be installed:
  libOpenUSD0    libdraco      libopenCOLLADA              libopensubdiv3.6.0
  libPtex2       libembree4-4  libopenexrcore30            libopenvdb10.1
  libalembic1.8  libgflags     libopenimagedenoise2        libpartio1
  libblosc       libharu2.4    libopenimageio2.5           libspnav
  libcudart      libhdf5-310   libopenpgl0                 ocl-icd
  libdcmtk18     liblog4cplus  libopenshadinglanguage1.13
The following NEW packages will be installed:
  blender        libdcmtk18    liblog4cplus          libopenshadinglanguage1.13
  libOpenUSD0    libdraco      libopenCOLLADA        libopensubdiv3.6.0
  libPtex2       libembree4-4  libopenexrcore30      libopenvdb10.1
  libalembic1.8  libgflags     libopenimagedenoise2  libpartio1
  libblosc       libharu2.4    libopenimageio2.5     libspnav
  libcudart      libhdf5-310   libopenpgl0           ocl-icd
0 upgraded, 24 newly installed, 0 removed and 0 not upgraded.
Comment 3 Anton Farygin 2024-05-21 16:53:54 MSK
классно, спасибо. Ждём в репозитории.
Comment 4 Arseny Maslennikov 2024-05-21 17:20:58 MSK
(In reply to Ivan A. Melnikov from comment #0)
> Чуть больше месяца назад дебиановцы выкатили apt 3.0, одной из самых
> заметных новых фич которого стал цветной многоколоночный вывод[1]. Что
> полезного несёт такая раскраска (весь список одним цветом) я не знаю, а вот
> многоколоночный вывод -- это хорошо и нужно, так что я взял на себя смелость
> и сбэкпортировал его к нам.
> 
> [1] Новость на opennet со скриншотиками:
> https://www.opennet.ru/opennews/art.shtml?num=60984

:( почитавши opennet ):
Надо где-нибудь, не в этой баге, поднять тему, чего мы вообще в среднесрочном и долгосрочном виде хотим от apt. Догонять дебиан (с т. з. интерфейса и сети в основном)? Особый путь? А то пока что получается свалка.
Comment 5 Arseny Maslennikov 2024-05-21 17:23:05 MSK
(In reply to Ivan A. Melnikov from comment #2)
> Пример работы apt-get install blender:
> 
> ДО:
> 
> The following extra packages will be installed:
>   libOpenUSD0 libPtex2 libalembic1.8 libblosc libcudart libdcmtk18 libdraco
>   libembree4-4 libgflags libharu2.4 libhdf5-310 liblog4cplus libopenCOLLADA
>   libopenexrcore30 libopenimagedenoise2 libopenimageio2.5 libopenpgl0
>   libopenshadinglanguage1.13 libopensubdiv3.6.0 libopenvdb10.1 libpartio1
> libspnav
>   ocl-icd
> The following NEW packages will be installed:
>   blender libOpenUSD0 libPtex2 libalembic1.8 libblosc libcudart libdcmtk18
> libdraco
>   libembree4-4 libgflags libharu2.4 libhdf5-310 liblog4cplus libopenCOLLADA
>   libopenexrcore30 libopenimagedenoise2 libopenimageio2.5 libopenpgl0
>   libopenshadinglanguage1.13 libopensubdiv3.6.0 libopenvdb10.1 libpartio1
> libspnav
>   ocl-icd
> 0 upgraded, 24 newly installed, 0 removed and 0 not upgraded.
> 
> 
> ПОСЛЕ:
> 
> The following extra packages will be installed:
>   libOpenUSD0    libdraco      libopenCOLLADA              libopensubdiv3.6.0
>   libPtex2       libembree4-4  libopenexrcore30            libopenvdb10.1
>   libalembic1.8  libgflags     libopenimagedenoise2        libpartio1
>   libblosc       libharu2.4    libopenimageio2.5           libspnav
>   libcudart      libhdf5-310   libopenpgl0                 ocl-icd
>   libdcmtk18     liblog4cplus  libopenshadinglanguage1.13
> The following NEW packages will be installed:
>   blender        libdcmtk18    liblog4cplus         
> libopenshadinglanguage1.13
>   libOpenUSD0    libdraco      libopenCOLLADA        libopensubdiv3.6.0
>   libPtex2       libembree4-4  libopenexrcore30      libopenvdb10.1
>   libalembic1.8  libgflags     libopenimagedenoise2  libpartio1
>   libblosc       libharu2.4    libopenimageio2.5     libspnav
>   libcudart      libhdf5-310   libopenpgl0           ocl-icd
> 0 upgraded, 24 newly installed, 0 removed and 0 not upgraded.

Это всё очень хорошо; плохо только то, что, чтобы изучить достаточно большой список целиком, по высоте превышающий высоту терминала, нужно проскроллить до упора вверх и вниз scrollback-буфер этого терминала. Может, стоит выводить их в столбики, но в порядке "сначала в строке, потом в следующей"? Иными словами, грубо, "Слева направо, затем сверху вниз".
Comment 6 Arseny Maslennikov 2024-05-21 17:27:40 MSK
(In reply to Ivan A. Melnikov from comment #1)
> Хотите такое в p11? Я хочу.

Где ж вы были хотя бы месяц назад... :) На мой личный взгляд, это можно будет даже забекпортить в p11.
Comment 7 AEN 2024-05-21 17:38:06 MSK
(Ответ для Arseny Maslennikov на комментарий #6)
> (In reply to Ivan A. Melnikov from comment #1)
> > Хотите такое в p11? Я хочу.
> 
> Где ж вы были хотя бы месяц назад... :) На мой личный взгляд, это можно
> будет даже забекпортить в p11.

+100500
Comment 8 Anton Farygin 2024-05-21 17:50:41 MSK
(Ответ для Arseny Maslennikov на комментарий #6)
> (In reply to Ivan A. Melnikov from comment #1)
> > Хотите такое в p11? Я хочу.
> 
> Где ж вы были хотя бы месяц назад... :) На мой личный взгляд, это можно
> будет даже забекпортить в p11.

Это можно и в p10 забэкпортить. Вообще по apt конечно багов адское количество висит неразобранных:
https://packages.altlinux.org/ru/sisyphus/srpms/apt/issues/

В идеале это всё разобрать к p11 надо было бы.
Но можно и забэкпорить.
Comment 9 Ivan A. Melnikov 2024-05-21 18:51:18 MSK
(In reply to Arseny Maslennikov from comment #5)
> Это всё очень хорошо; плохо только то, что, чтобы изучить достаточно большой
> список целиком, по высоте превышающий высоту терминала, нужно проскроллить
> до упора вверх и вниз scrollback-буфер этого терминала. Может, стоит
> выводить их в столбики, но в порядке "сначала в строке, потом в следующей"?
> Иными словами, грубо, "Слева направо, затем сверху вниз".

Разработчики ориентировались на ls, у которого тоже сначала столбцы, потом строки. Такой вариант привычней и по-моему лучше. Визуально соседние строки в столбце ближе, чем соседние столбцы в строке.
Comment 10 Ivan Zakharyaschev 2024-05-22 12:41:24 MSK
Спасибо за это добавление!

(In reply to Ivan A. Melnikov from comment #9)
> (In reply to Arseny Maslennikov from comment #5)
> > Это всё очень хорошо; плохо только то, что, чтобы изучить достаточно большой
> > список целиком, по высоте превышающий высоту терминала, нужно проскроллить
> > до упора вверх и вниз scrollback-буфер этого терминала. Может, стоит
> > выводить их в столбики, но в порядке "сначала в строке, потом в следующей"?
> > Иными словами, грубо, "Слева направо, затем сверху вниз".
> 
> Разработчики ориентировались на ls, у которого тоже сначала столбцы, потом
> строки. Такой вариант привычней и по-моему лучше. Визуально соседние строки
> в столбце ближе, чем соседние столбцы в строке.

Замечание было интересное, но и с ответом согласен. (Просто пока делается так, как в Debian и в ls.)

Одобрил. API/ABI не меняется, остальной код затрагивается минимально, правда, ShowWithColumns я очень внимательно не читал, но если что, баги потом выявятся.
Comment 11 Ivan Zakharyaschev 2024-05-22 12:50:09 MSK
(In reply to Arseny Maslennikov from comment #4)
> (In reply to Ivan A. Melnikov from comment #0)
> > Чуть больше месяца назад дебиановцы выкатили apt 3.0, одной из самых
> > заметных новых фич которого стал цветной многоколоночный вывод[1]. Что
> > полезного несёт такая раскраска (весь список одним цветом) я не знаю, а вот
> > многоколоночный вывод -- это хорошо и нужно, так что я взял на себя смелость
> > и сбэкпортировал его к нам.
> > 
> > [1] Новость на opennet со скриншотиками:
> > https://www.opennet.ru/opennews/art.shtml?num=60984
> 
> :( почитавши opennet ):
> Надо где-нибудь, не в этой баге, поднять тему, чего мы вообще в
> среднесрочном и долгосрочном виде хотим от apt. Догонять дебиан (с т. з.
> интерфейса и сети в основном)? Особый путь? А то пока что получается свалка.

Чтобы вопрос не повис, напишу кортко здесь своё видение. Мне хотелось бы небольшими регулярными шагами (rebase-ами) догонять apt-rpm и Debian. Небольшими, чтобы не решать сразу много проблем и делать параллельно другому. Но фиксить уже замеченные баги в первую очередь (с оглядкой на небольшую историю apt-rpm и большую -- Debian.)
Comment 12 Vitaly Chikunov 2024-06-01 12:38:19 MSK
Мое мнение по UI/UX - изменение порядка сортировки (с построчного на столбцы) усложнило интерфейс для нового пользователя.

Это не только мешает искать в списке когда он вылазит за пределы экрана (как указал Арсений), но и в меньшем списке может показаться, что сортировка другая (или ее вообще нет) -- в результате, можно пропустить пакет который хотел найти, или (для нового пользователя) "долго думать" и определять сортировку.

Например в:

(In reply to Ivan A. Melnikov from comment #2)
> The following NEW packages will be installed:
>   blender        libdcmtk18    liblog4cplus         
> libopenshadinglanguage1.13
>   libOpenUSD0    libdraco      libopenCOLLADA        libopensubdiv3.6.0
>   libPtex2       libembree4-4  libopenexrcore30      libopenvdb10.1
>   libalembic1.8  libgflags     libopenimagedenoise2  libpartio1
>   libblosc       libharu2.4    libopenimageio2.5     libspnav
>   libcudart      libhdf5-310   libopenpgl0           ocl-icd

Здесь пользователь at glance видит по первым буквам, что слева вверху `b` потом идут много `l` справа внизу `o` и ошибочно решает, что сортировка по строкам.
Comment 13 Ivan A. Melnikov 2024-06-01 12:58:24 MSK
(In reply to Vitaly Chikunov from comment #12)
> Здесь пользователь at glance видит по первым буквам, что слева вверху `b`
> потом идут много `l` справа внизу `o` и ошибочно решает, что сортировка по
> строкам.

У меня такого эффекта не возникает, но всё субъективно. Исследований на фокус-группах я не проводил.

Я намеренно делал минимальный патч, как по влиянию на код, так и по идеям. Если кто-то хочет дальше улучшать UX apt'а, думаю стоит завести новую багу и приложить к ней новый патч. Однако я прошу оставить текущее поведение хотя бы в качестве опции, оно мне нравится, и будет привычно тем, кто переходит с Debian и его деривативов.

Кстати, напомню, что если что, старое поведение можно вернуть (конфиг APT::Get::List-Columns).

А эту багу я пожалуй закрою, так как alt88 уже в Сизифе и p11.
Comment 14 Arseny Maslennikov 2024-06-22 12:34:24 MSK
Fun fact: apt-get в дебиане не умеет выводить пакеты в столбики; так у них делает только их обновлённая команда apt(1). Т. е. у нас теперь прямое расхождение. :) Не выношу здесь оценок, хорошо это или плохо, но вот.
Comment 15 Arseny Maslennikov 2024-06-22 12:37:04 MSK
Created attachment 16304 [details]
columns are not universally useful :)
Comment 16 Arseny Maslennikov 2024-06-22 12:39:13 MSK
Ухитрился сегодня вот такое получить при обновлении с сизифа на сизиф:

  WARNING: The following essential packages will be removed
  This should NOT be done unless you know exactly what you are doing!
    openssh-server  (due  openssh-server)  (due  openssh-server)  (due  openssh-server)         (due  openssh-server)
    systemd         to    libcrypto3       to    libkrb5          to    openssh-server-control  to    systemd-sysvinit

Читать это, конечно, надо сверху вниз и от столбца к столбцу.
Comment 17 Arseny Maslennikov 2024-06-22 12:40:47 MSK
(При попытке прикрепить объект веб-морда багзиллы теряет написанный текст и все изменения свойств баги. В итоге при второй перепечатке забыл переоткрыть)