LINUX.ORG.RU
ФорумTalks

Блоатварь - неизбежное будущее линуксового народа. Таков путь.

 , ,


0

2

Запустил отладку своей программы в gdb. Нажал Y на предложение скачать отладочную информацию для системных библиотек. В результате имел возможность наблюдать, СКОЛЬКО всего там этих самых библиотек:

(gdb) run
Starting program: /media/stuff/vadim/builds/stuurman/bin/stuurman 

This GDB supports auto-downloading debuginfo from the following URLs:
  <https://debuginfod.archlinux.org>
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
Downloading separate debug info for /lib64/ld-linux-x86-64.so.2
Downloading separate debug info for system-supplied DSO at 0x7ffff7fc8000
Downloading separate debug info for /usr/lib/libX11.so.6
Download failed: Таймер истек.  Continuing without separate debug info for /usr/lib/libX11.so.6.
Downloading separate debug info for /usr/lib/libgtk-x11-2.0.so.0
Download failed: Таймер истек.  Continuing without separate debug info for /usr/lib/libgtk-x11-2.0.so.0.
Downloading separate debug info for /usr/lib/libgdk-x11-2.0.so.0
Downloading separate debug info for /usr/lib/libpangocairo-1.0.so.0
Downloading separate debug info for /usr/lib/libatk-1.0.so.0
Downloading separate debug info for /usr/lib/libcairo.so.2
Downloading separate debug info for /usr/lib/libgdk_pixbuf-2.0.so.0
Downloading separate debug info for /usr/lib/libpangoft2-1.0.so.0
Downloading separate debug info for /usr/lib/libfontconfig.so.1
Downloading separate debug info for /usr/lib/libfreetype.so.6
Downloading separate debug info for /usr/lib/libpango-1.0.so.0
Downloading separate debug info for /usr/lib/libharfbuzz.so.0
Download failed: Таймер истек.  Continuing without separate debug info for /usr/lib/libharfbuzz.so.0.
Downloading separate debug info for /usr/lib/libmenu-cache.so.3
Downloading separate debug info for /usr/lib/libexif.so.12
Downloading separate debug info for /usr/lib/libgthread-2.0.so.0
Downloading separate debug info for /usr/lib/libgio-2.0.so.0
Download failed: Таймер истек.  Continuing without separate debug info for /usr/lib/libgio-2.0.so.0.
Downloading separate debug info for /usr/lib/libgobject-2.0.so.0
Downloading separate debug info for /usr/lib/libglib-2.0.so.0
Downloading separate debug info for /usr/lib/libm.so.6
Downloading separate debug info for /usr/lib/libc.so.6
Download failed: Таймер истек.  Continuing without separate debug info for /usr/lib/libc.so.6.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Downloading separate debug info for /usr/lib/libxcb.so.1
Downloading separate debug info for /usr/lib/libgmodule-2.0.so.0
Downloading separate debug info for /usr/lib/libXfixes.so.3
Downloading separate debug info for /usr/lib/libXrender.so.1
Downloading separate debug info for /usr/lib/libXinerama.so.1
Downloading separate debug info for /usr/lib/libXi.so.6
Downloading separate debug info for /usr/lib/libXrandr.so.2
Downloading separate debug info for /usr/lib/libXcursor.so.1
Downloading separate debug info for /usr/lib/libXcomposite.so.1
Downloading separate debug info for /usr/lib/libXdamage.so.1
Downloading separate debug info for /usr/lib/libXext.so.6
Downloading separate debug info for /usr/lib/libz.so.1
Downloading separate debug info for /usr/lib/libpng16.so.16
Downloading separate debug info for /usr/lib/libxcb-render.so.0
Downloading separate debug info for /usr/lib/libxcb-shm.so.0
Downloading separate debug info for /usr/lib/libpixman-1.so.0
Downloading separate debug info for /usr/lib/libjpeg.so.8
Downloading separate debug info for /usr/lib/libtiff.so.6
Downloading separate debug info for /usr/lib/libexpat.so.1
Downloading separate debug info for /usr/lib/libbz2.so.1.0
Downloading separate debug info for /usr/lib/libbrotlidec.so.1
Downloading separate debug info for /usr/lib/libfribidi.so.0
Downloading separate debug info for /usr/lib/libthai.so.0
Downloading separate debug info for /usr/lib/libgraphite2.so.3
Downloading separate debug info for /usr/lib/libmount.so.1
Downloading separate debug info for /usr/lib/libffi.so.8
Downloading separate debug info for /usr/lib/libpcre2-8.so.0
Downloading separate debug info for /usr/lib/libXau.so.6
Downloading separate debug info for /usr/lib/libXdmcp.so.6
Downloading separate debug info for /usr/lib/libzstd.so.1
Downloading separate debug info for /usr/lib/liblzma.so.5
Downloading separate debug info for /usr/lib/libjbig.so.2.1
Downloading separate debug info for /usr/lib/libbrotlicommon.so.1
Downloading separate debug info for /usr/lib/libdatrie.so.1
Downloading separate debug info for /usr/lib/libblkid.so.1
Downloading separate debug info for /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
Downloading separate debug info for /usr/lib/libcanberra-gtk.so.0
Downloading separate debug info for /usr/lib/libcanberra.so.0
Downloading separate debug info for /usr/lib/libvorbisfile.so.3
Downloading separate debug info for /usr/lib/libtdb.so.1
Downloading separate debug info for /usr/lib/libltdl.so.7
Downloading separate debug info for /usr/lib/libvorbis.so.0
Downloading separate debug info for /usr/lib/libogg.so.0
Downloading separate debug info for /usr/lib/gtk-2.0/2.10.0/engines/libpixmap.so
Downloading separate debug info for /usr/lib/gtk-2.0/2.10.0/engines/libadwaita.so
Downloading separate debug info for /usr/lib/gio/modules/libgioremote-volume-monitor.so
Downloading separate debug info for /usr/lib/gvfs/libgvfscommon.so
Downloading separate debug info for /usr/lib/gio/modules/libgvfsdbus.so
Downloading separate debug info for /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so
Downloading separate debug info for /usr/lib/librsvg-2.so.2
Downloading separate debug info for /usr/lib/libcairo-gobject.so.2
Downloading separate debug info for /usr/lib/libxml2.so.2
Downloading separate debug info for /usr/lib/libicuuc.so.73
Download failed: Таймер истек.  Continuing without separate debug info for /usr/lib/libicuuc.so.73.
Downloading separate debug info for /usr/lib/libicudata.so.73
Downloading separate debug info for /usr/lib/libcanberra-0.30/libcanberra-multi.so
Downloading separate debug info for /usr/lib/libcanberra-0.30/libcanberra-pulse.so
Downloading separate debug info for /usr/lib/libpulse.so.0
Downloading separate debug info for /usr/lib/pulseaudio/libpulsecommon-16.1.so
Downloading separate debug info for /usr/lib/libdbus-1.so.3
Downloading separate debug info for /usr/lib/libsndfile.so.1
Downloading separate debug info for /usr/lib/libsystemd.so.0
Downloading separate debug info for /usr/lib/libasyncns.so.0
Downloading separate debug info for /usr/lib/libvorbisenc.so.2
Downloading separate debug info for /usr/lib/libFLAC.so.12
Downloading separate debug info for /usr/lib/libopus.so.0
Downloading separate debug info for /usr/lib/libmpg123.so.0
Downloading separate debug info for /usr/lib/libmp3lame.so.0
Downloading separate debug info for /usr/lib/libcap.so.2
Downloading separate debug info for /usr/lib/libgcrypt.so.20
Downloading separate debug info for /usr/lib/liblz4.so.1
Downloading separate debug info for /usr/lib/libgpg-error.so.0
Downloading separate debug info for /usr/lib/libcanberra-0.30/libcanberra-alsa.so
Downloading separate debug info for /usr/lib/libasound.so.2

Минут 20 ждал, между прочим. Как видно, скачивание некоторых файлов даже оборвалось по тайм-ауту.

Невольно возникает вопрос: а точно ли весь этот хлам необходим для программы, которая по функциям не далеко ушла от какого-нибудь виндового Проводника из 90-х? Парсер XML и всякий ICU - это всё понятно, но… все подряд аудиокодеки, компрессоры и libsystemd?…

Впрочем, указанный список - это всё еще существенно меньше лишнего кода, чем если запускать софт на фреймворке KDE.

Иногда так и подмывает запустить какую-нибудь Haiku, а то и вовсе kolibriOS, и познать дзен.

Ответ на: комментарий от utanho

Будто под линем они есть.

Я думаю, там даже «лучше» ситуация:

Интернета не будет, так что для раздумий и медитации будет еще больше времени.

wandrien ★★
() автор топика

Я давно ещё увидел ldd xfce4-terminal и задался тем же вопросом.

Выход простой: не используй блоатварные библиотеки в своём софте.

firkax ★★★★★
()

А помните, была такая Syllable Desktop когда-то. Померла давно.

А еще SkyOS. Авторы решили, что они потянут проприетарную разработку и закрыли сорцы. Не потянули.

wandrien ★★
() автор топика

Собери себе gentoo и включай только то, что реально нужно.
Для qt я кстати держу в системе патч, который для приложения указыват белый список модулей
В целом говно лезет у тебя скорее всего вот из этих чуваков:

/usr/lib/libatk-1.0.so.0
/usr/lib/libharfbuzz.so.0
/usr/lib/gtk-2.0/2.10.0/engines/libadwaita.so
/usr/lib/gvfs/libgvfscommon.so
/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so
/usr/lib/librsvg-2.so.2
/usr/lib/libpulse.so.0

Но лучше через ldd проверить

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

Выход простой: не используй блоатварные библиотеки в своём софте.

Хуже.

Я вот ничего, относящегося к звуку или systemd, в своей программе не использую. Но меня и не спрашивали: набор библиотек платформы пухнет с каждым годом.

wandrien ★★
() автор топика

Downloading separate debug info for /usr/lib/libthai.so.0

Чем тайский язык так примечателен, что для него понадобилась отдельная библиотека?

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

Что значит не спрашивали? Ты сам приписал зависимостью блоатварь (видимо, gtk), которая тянет всё подряд. Делай без него.

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

Ты под винду что ли пишешь? Ну если под неё то да.

А вообще выбор есть: libX11 либо какой-нить нормальный тулкит. Или напиши свой, можешь даже совместимость с gtk некоторую сделать.

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

Не используй gtk (даже gtk2)
Оно по зависимостям svg тянет и gioшные модули, они и тащат это всё.
Вот кстати причина, почему я хочу в wayland протокол рисовки.
Они сейчас для простого мессажбокса считай загрузить какой-нибудь libdecor, cairo, адвайту.... Хочется просто чтобы клиент мог сообщить композитору мол нарисуй мне тут квадратик в рамочке с таким-то текстом. Вот не хочу растеризатор держать на клиенте для десктопных приложений и всё там, дичь это...

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

Нет задач - не нужен софт. Нет софта - нинужно - нет проблем!

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

Чем тайский язык так примечателен, что для него понадобилась отдельная библиотека?

Не знаю) Но pango его хочет:

$ sgrep -l libthai.so.0 /usr/lib/
/usr/lib/libm17n-core.so.0.4.2
/usr/lib/libm17n-flt.so.0.4.2
/usr/lib/libpango-1.0.so.0.5100.0
/usr/lib/libm17n-gui.so.0.4.2
/usr/lib/libthai.so.0.3.1
/usr/lib/libm17n.so.0.4.2
wandrien ★★
() автор топика

пгастите, у вас тут 75% - 2D графика и звук. Следовательно, на той же колибри всё то же будет.

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

нарисуй мне тут квадратик в рамочке с таким-то текстом. Вот не хочу растеризатор держать на клиенте для десктопных приложений и всё там, дичь это...

Ретроград! Вейланд приде, велосипедов принесе!

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

Поддержки тайского там точно не будет xD

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

чтобы не использовать их, то мы разрешаем.

А что, есть альтернативы? Вот человек хочет, к примеру, написать собственное легковесное окружение рабочего стола: панельку там с рабочим столом, конфигуратор и пару прикладных программ вроде File Manager.

У него остаётся сегодня лишь один выбор: Qt (Qt 4, Qt 5, Qt 6) или GTK+ (GTK+2, GTK+3, Gtk4).

Всё остальное перечисленное в этой теме маргинльное, кривое и корявое.

libX11, который так и не стал WinAPI – корявый, убогий, не умеет нормально в шрифты, Unicode, HiDPI.

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

ImGUI + SDL – привет батареям в слабых ноутбуках.

Разве что смотреть в сторону Enlightenment, Fox Toolkit, FLTK и прочие, но с ними поешь намного больше говна, чем с GTK+ и Qt. Вот они и остаются.

EXL ★★★★★
()

какое же наверное будет для тебя откровение какой-нибудь ноджс

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

Вот человек хочет, к примеру, написать собственное легковесное окружение рабочего стола

В дурку оформить и дело с концом.

Exmor_RS ★★★
()

Настрой Nix-ом окружение для разработки и оверрайдни опции компиляции у зависомостей чтобы выключить ненужное.

avv
()

Такое ощущение, что у людей отшибло абстрактное мышление.

Вроде как тема не располагает к закатыванию солнца вручную при помощи тяпки, тряпки и скотча. Наоборот, это приглашение порассуждать о состоянии дел c фреймворками в экосистеме линукса и индустрии вообще.

Но нет. «Собери генту/никсось/whatever, покоцай зависимости».

@windows10: вспоминается легендарный тред про dpkg и удаление питона.

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

..и рендерить изображение заново 60 раз в секунду. Пользователи ноутбуков просят передать свою благодарность.

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

Ну да, imgui не имеет средств инвалидации и придётся делать костыль в виде входа в режим ожидания через 2 кадра бездействия

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

Ну так не Америку ты же открыл. У gtk4 вообще только два применения: gnome и flatpack (и это при нормальной компиляции под оффтопик).

Зато для рисования пары кнопок, есть поддержка тем и т.п.

Для себя нашёл вполне компактный вариант fltk-rs + темы из соседнего крейта + рисовалка plotters. И всё статикой в мегабайт. Плюс кроскомпиляция работает штатно и без ручной сборки зависимостей.

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

Хочется просто чтобы клиент мог сообщить композитору мол нарисуй мне тут квадратик в рамочке с таким-то текстом

Просто установи Xorg.

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

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

А что касается зависимостей, то я думаю тут наполовину причина в том что погромистам лень факторить свой код, им проще развести бардак и притащить в систему lib.0.0.2.so (которая притянет другие нужные ей либы), а не переписать код под lib.0.0.5.so; а вторая половина в том, что авторы либ на которые мы опираемся думают что мы будем использовать абсолютно все их возможности. Я вот давненько думал напуркуа гном-терминалу аудиокодеки, пульса и тд. Оказалось ради того чтоб булькнуть когда ввод вне фокуса или нет символов для удаления, так-то.

Ну есть еще немного идейных имбецилов, типа создателей dpkg и gtk, которые банально вредят сообществу =)

Как от этого избавиться?

1. Погромистов нужно сажать на 486 (ладна, я сёдня добрый, так что DX) и драть в одно известное место с наждачкой, до тех пор пока их код не будет вменяемо там работать.

2. Система должна быть целостной, и желательно на r\o разделе, чтобы погромист из первого пункта туда не срал, а таскал все необходимые зависимости в своем установочном каталоге, и ловил от сообщества гнилые помидоры в интерфейс лица, если в этом каталоге у него столько либ сколько у тебя в output.

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

Хочется просто чтобы клиент мог сообщить композитору мол нарисуй мне тут квадратик в рамочке с таким-то текстом

Это в xorg всё так устроено.

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

Зато для рисования пары кнопок, есть поддержка тем и т.п.

А самое забавное то, что эту пару кнопок нельзя нарисовать разными темами, гы.

Т.е. можно загрузить любую тему, но только одну. Даже если загрузить их последовательно, имбецильная система построения интерфейса гтк будет использовать последнюю.

На произвольном языке:

css = load_theme('Adwaita')
drawbutton(class='@fg_color')
css1=load_theme('Clearhooks')
drawbutton(style='@fg_color')

И оп, у тебя две кнопки расцветки Clearhooks.

Фултик хорош. Но тогда уж лучше самому в иксах рисовать линиями и прямоугольниками =)

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

Судя по трендам в оформлении UI, скоро стиль наивных иксовых приложений снова войдёт в моду.

Откуда ушли, туда пришли.

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

Очевидно, что, когда тебе нужен «фреймворк» или «тулкит» для решения твоей задачи, ты уже находишься в области блоатвари. От тебя зависит только то, как ты к этому отнесешься: как к необходимому злу, или как к чему-то, нарушающему догматы твоей религии.

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

Судя по трендам в оформлении UI, скоро стиль наивных иксовых приложений снова войдёт в моду.

Оттуда бы не уходили, если бы не ось зла эпол с гуглем, чьим дезигнерским отделам нужно было показывать видимость работы, и они не нашли ничего лучше плоскоты и отступов.

Если же надо не шликать на систему, а работать и работать быстро - эти UI бесполезны.

Для меня самый оптимальный - это интерфейс Миллениума.

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

Очевидно, что, когда тебе нужен «фреймворк» или «тулкит» для решения твоей задачи, ты уже находишься в области блоатвари. От тебя зависит только то, как ты к этому отнесешься: как к необходимому злу, или как к чему-то, нарушающему догматы твоей религии.

С этим поспорю. Ему-то может этот фреймворк или тулкит и не нужен, но ему приходится его использовать только потому что его используют другие, на чьих ПеКа будет работать его задача.

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

Так я про плоскоту как раз.

Исходно стиль оформления иксовых прог был плоским и минималистичным. Банально потому что железо не позволяло большего.

Как и в винде, кстати. По тем же причинам.

А потом пришла NeXTSTEP и показала, как делать грамотный UI.

Стиль NeXTSTEP Макрософт не долго думая скоммуниздила себе в Win95. И творчески доработала, умудрмвшись не испортить, а улучшить.

Дальше все примерно в заданном направлении развивались.

А теперь вот дизайнеры сами того не ведая переизобретают стиль ранних иксов.

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

Фреймворк по типу gtk не требует много ресурсов, так как большая часть логики шарится между приложениями в виде *.so.

А вот фремворк по типу электрона требует:

  • Код приложения написан на интерпретируемом ЯП и JIT-компилируется в каждом запущенном процессе отдельно.
  • Сам движок компилируется по принципу всё в одном, по сути представляя что-то типа монолитной операционной системы.
  • Этих версий электрона выходит штук по 5 в год, и разные приложения требуют разных версий. Поэтому даже при использовании пакетного менеджера, этот зоопарк приходится держать.

Таков путь.

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

Зато удобно.

<div style='color: #FF0000;width: 100px;height: 100px'>
<center>
<h1>Hello world</h1>
</center>
</div>

Знаешь сколько строк тебе придется написать чтобы нарисовать кубик красного цвета с надписью внутри на «фреймворках» ?)) Там только описание пол-экрана займет.

Это людей подкупает.

И это - вина разработчиков фреймворков, потому что этим оверхедом и усложнениями они людей отпугивают. А уж мы-то с тобой понимаем, что нет ничего сложного в том чтобы перестать именовать классы через жопу и наконец объединить их в уже доказавшую удобство и эффективность парадигму, заданную HTMLом.

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

это приглашение порассуждать о состоянии дел c фреймворками в экосистеме линукса и индустрии вообще.

Раз вместо одной-трех библиотек на тебя смотрят десятки их, все прекрасно.

Но нет. «Собери генту/никсось/whatever, покоцай зависимости»

Ну.

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

фремворк по типу электрона

это как магнитола системы автомобиль

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

Ну тк он и установлен. Я к тому, что вяленому до него пока далеко в этом плане

mittorn ★★★★★
()

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

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

Помним, скорбим. :) В Syllable Desktop был неплохой по тем временам браузер, даже удивительно. Но, не было звука.

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