LINUX.ORG.RU
ФорумTalks

Какая вкуснотища-то накопалась

 , , воскресенница,


2

1

Вот такой баянец.

http://blogs.gnome.org/mortenw/2014/06/23/how-does-one-create-a-gtk-application/

Избранное:

«Как вообще создавать работающие приложения на Gtk+? Это вообще возможно?

Не, ну я серьезно.

Версия для тех, кому многабукв — ABI у Gtk+ так поломан, что бинарники из дистрибутива редко когда работают.»

«Представьте себе, что сейчас то время, когда как раз выпустили Gtk+ 3.0. У вас красивейшее приложение без багов. Допустим. Дистрибутивы поставляют собранную версию, и жизнь прекрасна.

Потом дистрибутивы обновляют Gtk+ и все, основывавшееся на GtkGrid, ломается. Вы, конечно, обходите это в коде, но дистрибутивы не будут обновлять вашу программу до релиза.

Тем временем, в Gtk+ ломают бинарную совместимость для скроллинга колесиком мышки. Дистрибутивы обновляют Gtk+, и в вашей программе отваливается скроллинг колесом мышки. Вы втыкаете в код очередной костыль, но пока не сделаете релиз, дистрибутивы не почешутся ее обновлять.

Тем временем, в Gtk+ ломают бинарную совместимость окон со скроллингом. Окна, у которых раньше были вменяемые размеры, схлопываются до околонулевых размеров, и когда дистрибутивы обновляют Gtk+, пользователи вашей программы сильно огорчаются. Вы втыкаете еще один костыль в свой код, но пока не сделаете релиз, дистрибутивы не почешутся.

Тем временем, в Gtk+ ломают бинарную совместимость с перерисовкой. Те части GUI, которые раньше работали правильно, теперь не перерисовываются вообще. Дистрибутивы обновляют Gtk+, и ваша программа перестает работать вообще. Вы втыкаете еще один костыль в свой код, но пока не сделаете релиз, дистрибутивы не почешутся.

Где-то между всей этой возней, в Ubuntu решают поломать полосы прокрутки плагином Gtk+. О случившемся вы узнаете, когда к вам набегают пользователи Ubuntu со своими багрепортами.

Тем временем, правила расположения для GtkGrid сменяются опять. Когда дистрибутивы обновляют Gtk+, ваша программа приобретает ужасный вид. Вы снова втыкаете костыль в свой код, но пока не сделаете релиз, дистрибутивы не почешутся.

Ваша программа работает с несколькими экранами. Ой, она РАБОТАЛА с несколькими экранами, а потом в Gtk+ убили поддержку этой фичи без предупреждения.

А теперь я вот слышу, перерисовку будут опять ломать, потому что надо обходить какой-то кривой дефект в Wayland. Похоже на то, что там придется проверять версию в рантайме. Если какой-то дистрибутив вдруг выйдет с обновленным Gtk+, но не с вашей программой, она опять сломается.»

2015 год объявляется годом линакса на... Короче, сдаюсь. Ну его нафиг.

★★★★★

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

Reset ★★★★★
()

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

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

так он там написал что не вариант
.
все решает дистроклёп. А дистроклёп не будет поставлять новые бинари до следующего релиза.

поэтому жрем ЛТС и не возмущаемся, это же бесплатно!

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

нет, это знатитЪ что /Applications && C:\Program Files рулят и педалят.

Deleted
()

ABI у Gtk+ так поломан

Проприетарщики плачут, да.

redgremlin ★★★★★
()

А самая-то мякотка в том, что гном ломают, а gtk-qt engine - нет, и в кедах все продолжает работать, как раньше. Это такой жыр!

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

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

thunar ★★★★★
()

Тем временем, в Gtk+ ломают бинарную совместимость для скроллинга колесиком мышки. Дистрибутивы обновляют Gtk+, и в вашей программе отваливается скроллинг колесом мышки. Вы втыкаете в код очередной костыль, но пока не сделаете релиз, дистрибутивы не почешутся ее обновлять.

В бинарный код костыль вставляешь что ли? При поломанной бинарной совместимости достаточно аппликуху пересобрать, что дистрибьютеры могут сделать и без твоей помощи.

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

Там кроме бинарной несовместимости, видимо, еще и константы со списком аргументов к функциям меняются.

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

«Видимо» — это значит «не знаю с какими проблемами он там столкнулся, но осуждаю»?

kim-roader ★★
()

Комментарии закрыты. Жаль :}

Deleted
()
Ответ на: комментарий от kim-roader

А если её нет в дистрибутиве? А если программа проприетарная? Тем более фанаты gtk всегда бахвалились, что в gtk бинарную совместимость не ломают.

Reset ★★★★★
()

Then distributions update Gtk+ and everything based on GtkGrid breaks. You work around that in your source code, but distributions do not release new versions of your program until its next release.

Собсно, дистроители должны тестировать совместимость программ и тулкитов перед релизом. И всё рассуждение строится на том, что они постоянно запихивают несовместимые пакеты в дистрибутив. Привязка к GTK3 слабенькая, он в этом смысле не уникален.

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

В бинарный код костыль вставляешь что ли? При поломанной бинарной совместимости достаточно аппликуху пересобрать, что дистрибьютеры могут сделать и без твоей помощи.


Да ты шо? а если пользователю нужна новая версия программы прямо сейчас?
пусть, дятел, ждет следующего релиза?

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

Если программы нет в дистрибутиве, то нет проблемы с тем что она сломана в дистрибутиве. А если кто-то решается использовать проприетарное ПО, то он ССЗБ и должен быть готов страдать.

kim-roader ★★
()
Ответ на: комментарий от Deleted

Какого релиза? Если есть общеизвестная проблема, то дистродержатели, как правило, пересобирают весь софт, зависящий от проблемного пакета и пихают версию «0.8.0-3» собранную из авторского релиза «0.8.0».

А если пользователю нужна девелоперская версия, а не релизная, то пользователь сам берёт исходники и собирает, не дожидаясь пока это сделают в его дистрибутиве.

kim-roader ★★
()
Ответ на: комментарий от Reset

Не-а, хороший аргумент в пользу того, что Gtk+ - meh.

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

Установка внешнего софта боли не приносит. Боль приносит использование проприетарных бинарников, работу которых никто так и так не гарантировал.

kim-roader ★★
()
Ответ на: комментарий от Reset

Хорошие аргументы в пользу того, что зависимости надо таскать вместе с программой.

Не будет ли слишком жирное приложение? При том что в линуксе, как ты знаешь, кроме плееров и всякой мелочи софта очеь мало.

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

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

thunar ★★★

Твой ник не связан с FM из XFCE?

ramon13666 ★★★
()
Ответ на: комментарий от kim-roader

Установка внешнего софта боли не приносит

Выше ты писал совсем другое.

работу которых никто так и так не гарантировал.

Работу непроприетарных тем более никто не гарантирует.

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

ОСь на которую нельзя безболезненно ставить внешний софт не нужна!

Нет таких операционных систем, на которые можно безболезненно ставить внешний софт. В принципе.

i-rinat ★★★★★
()
Ответ на: комментарий от Reset

Выше ты писал совсем другое

Давай я тебе процитирую что я писал:

Если программы нет в дистрибутиве, то нет проблемы с тем что она сломана в дистрибутиве.

Тут выписан простейший факт о том, что если проблемы нет, то проблемы нет. ОП ведь пишет, что проблема с тем, что пакеты в дистрибутивах сломаны, не так ли?

А если кто-то решается использовать проприетарное ПО, то он ССЗБ и должен быть готов страдать.

А тут утверждение о том, что установка проприетарного ПО приносит боль независимо от системы и навыков пользователя. Это такая особенность неподконтрольного тебе бинарника: будь ты сто раз гениальный программист, если ты ничего не можешь сделать с бинарником, ты ничего не можешь с ним сделать.

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

kim-roader ★★
()
Ответ на: комментарий от i-rinat

Конечно. Они различаются по количеству палок в колеса, которых ставят разработчикам внешнего софта. Линукс тут лидирует с огромным отрывом.

Reset ★★★★★
()
Ответ на: комментарий от kim-roader

Тут выписан простейший факт о том, что если проблемы нет, то проблемы нет

Проблема есть уже с тем, что программа лежит где-то во вне и надо потрахаться, чтобы её поставить.

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

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

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

Если проблему определять так, то нет ни одной системы в которой данной проблемы нет.

Я на это ответил выше.

То есть твоя проблема может быть решена лишь частично и это решение присутствует в линупсовых дистрибутивах

Какое решение?

мобильных ОСях.

Тут решено да.

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

Конечно. Они различаются по количеству палок в колеса, которых ставят разработчикам внешнего софта. Линукс тут лидирует с огромным отрывом.

Хм, а кто-то это замерял?

i-rinat ★★★★★
()
Ответ на: комментарий от Reset

Например, в первом сообщении топика хорошо замерено.

Нет.

Ты же противопоставляешь линуксы всему остальному. Где там про остальные системы?

Иногда мне кажется, что ты действительно веришь в то, что пишешь.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)

Почему линукс жрет кактус (ведь это не только у гтк проблемы) и не сделает нормальную версионность? В пакетный менеджер можно встроить базу совместимости, и когда девелоперы ломают совместимость, нужно отсылать приложение к старой версии. А если нет, то к новой. Так в системе всегда будет актуальный совместимый софт.

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

Если так не делать, то все головняки валятся на девелоперов, а это не их проблема, что в системе нет изоляции версий. Естественно, они хотят идти вперед, а не тащить легаси. Согласен, что такая ломка слишком маниакальна, но проблема не исключительно в гтк.

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

в мире много интересного!

Если мы всё ещё говорим про ОС, а не про реальный мир, то интересные они только до определённого момента. А потом подпорки, подпорки, подпорки, ... Нет им конца.

i-rinat ★★★★★
()
Ответ на: комментарий от arturpub

В пакетный менеджер можно встроить базу совместимости, и когда девелоперы ломают совместимость, нужно отсылать приложение к старой версии

Судя по «можно», ты знаешь как минимум одну хорошо работающую реализацию. Назови ее, мне правда интересно.

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

Такого вида не знаю. В виндах все решается полным импортом зависимостей в папку программы — hier позволяет. Таким же путем шел PBI до недавно (кстати надо глянуть, может там сейчас то, о чем мы говорим). Ясно, что тут проблемы с обновлением и прочее, но софт пашет. Аппл делает и заставляет делать фреймворки, в которых версионность из коробки, прога требует фреймворк, а тот всегда содержит все свои версии — это очень похоже, с обновлениями проблем нет, но есть избыток.

arturpub ★★
()
Ответ на: комментарий от i-rinat

Я бы согласился, но подменять программе либы вниз по версиям до тех пор, пока связка не стабилизируется — элементарно. Для этого не надо править ядра и менять постулаты.

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

мне правда интересно

В Debian добавляют цифирку к имени библиотеки, позволяя сосуществовать версиям с разными ABI: libconfig8 и libconfig9. Если апстрим не озаботится поддержкой, то занятие довольно муторное.

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

Про Дебиан я знаю, естественно. Мне просто было интересно, кто и как будет вести базу данных версий, и кто и как будет перенаправлять вызовы к версиям :)

tailgunner ★★★★★
()
Ответ на: комментарий от i-rinat

А что в этом плохого? Дистросрезы во времени работают. Проблемы есть, но это минор. Этот минор решается откатом до нужной либы. Рекурсивный процесс обеспечит все зависимости. Если при таком подходе в системе стало слишком много версий, значит у тебя софт от древнего до современного понаставлен, только и всего. Обычный обновляющийся компик будет +0.7% от плоских дистров.

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

кто и как будет перенаправлять вызовы к версиям

% apt-get install libastral4 libastral5 astral-utils
% astralctl --initial
i-rinat ★★★★★
()
Ответ на: комментарий от arturpub

А что в этом плохого?

А плохое в этом — воспроизводимость. Описанные в заглавном сообщении проблемы сложно протестировать, это не просто падение при старте.

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

Я об этом и написал, девелоперы сами знают, какие версии что ломают, дистрострою надо только на сайт зайти. Они это и так в принципе знают по первому прецеденту, тут вопрос о безысходности обновления, а не о том, как узнать о проблеме.

arturpub ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.