LINUX.ORG.RU
ФорумTalks

Зачем придумали GTK3?

 ,


2

6

Почему нельзя было развивать GTK2? Какие в нём были проблемы, требующие фундаментальной переработки с потерей совместимости? Выпуск GTK3 привёл к расколу GUI программ. У меня тоже есть программы на GTK2.

В Windows почему-то умеют поддерживать обратную совместимость. Программы для Windows 1.0 до сих пор работают на Windows 10 (на 32 битах нативно, а на 64 битах требуется 16 битный эмулятор winevdm). В WinApi не было фундаментальных изменений с времён Windows 1.0, даже соответствующим образом написанные 16 битные программы можно перекомпилировать под 64 бита. При этом он намного гибче всех Линуксовских тулкитов, можно обрабатывать окна в разных потоках, вставлять дочерние окна из другого процесса, рекурсивно вызывать цикл обработки сообщений.

Qt в целом выглядит стабильнее GTK. Большинство программ с минимальными изменениями можно перенести на новую версию.

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

★★★★★

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

Код был написан не по стандарту

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

при минимальных правках сорцов

Но это ведь уже поломка совместимости, если нужны какие-то правки — будете спорить?

Вгде?

root@localhost:~# apt-cache rdepends libgtk2.0-0|wc -l
588
root@localhost:~# apt-cache rdepends libgtk-3-0|wc -l
1017
root@localhost:~# apt-cache rdepends libqt5core5a|wc -l
1851

Мы вбрасывали на ЛОР в прошлые годы подобную статистику; поищите и оцените тенденцию ;) Впрочем, в данном контексте важно не это, а то, что мы имеем целую тысячу каких-то пакетов, которым нужен жномтулкит. Кто все эти люди?

Или что, очередной клон наутилуса и текстовый редактор от Васи на виджете GtkSourceView мы посчитаем за значимый вклад в опенсорс?

А что вообще есть значимое? Разным людям нужны разные программы. Мы вот недавно буквально нашли превосходную свободную программку fet для генерирования расписаний учебных заведений, как пример. Она, правда, на Qt ;) Есть всякие там golly (симулятор игры «Жизнь» и прочих клеточных автоматов), какие-то штуки для химиков, игрульки свободные, у которых даже на ЛОРе есть мини-клубы фанатов, отмечающиеся в соответствующих новостях, и так далее.

переносимого между виндой и линью

Это уже неактуально, нужна поддержка iOS/Android ещё, желательно даже в первую очередь. Qt вроде как для этого пригоден, но на практике подобного не видать что-то, посему рулит всякое говно типа React Native и Flutter.

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

Да не всегда ворнинги, бывают и ошибки. Мы вот zcomp так и не откопали, там чисто на уровне компилятора какие-то невнятные ошибки.

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

Где новое реальное PowerPC-железо, для которого делалась BeOS?

BeOS не была привязана к железу, там были версии под AT&T Hobbit, PowerPC и x86.

Гайка — некрофилия.

Такая, что стандартный тулкит устроен грамотнее чем все Линусковские, а GUI сервер лишён недостатков X.Org.

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

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

Я бы тогда даже пробовал применять её на лаптопе.

А так, смысла нет.

Получается фигня:

В Линуксе есть ОС, но по сути нет UI.

В Гайке есть нормальный стек UI, но по сути нет ОС.

Может их скрестить как-то?

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

BeOS не была привязана к железу

Но без железа, на котором она предустановлена, продвигать её бесполезно ;)

стандартный тулкит устроен грамотнее

Это совершенно не определяет успех. Ещё академичным хачкелем погородитесь.

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

Ну и где она плоская? Вы плоскоту-то видели?

Примерно везде. Или вы градиенты на кнопках считаете за объем?

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

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

Может их скрестить как-то?

При желании можно портировать тулкит (libbe.so) и GUI сервер (app_server) Haiku на Линукс. Это даже не очень сложно, надо только реализовать отсутствующее API в libc вроде create_port и написать видеодрайвер для DRM. Программы для X11 естественно просто так работать не будут, нужен будет XHaiku по аналогии с XWayland.

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

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

Чаще всего говнокод либо всё так же компилируется, имея лишь косметические сложности в виде ворнингов, либо элементарно исправляется грубой силой. Иногда даже без правки исходников.

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

Но это ведь уже поломка совместимости, если нужны какие-то правки — будете спорить?

Буду. Как можно поломать совместимость с тем, чего никогда не было? Вот не было объявлено, что «такое поведение гарантируется реализацией», и соответственно никто его специально и не реализовывал никогда.

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

Если бы gtk был компилятором, он был бы каким-то таким компилятором:

  • Для вызова исключения надо использовать макрос THROW().
  • Мы сделали легковесные исключения, теперь вы можете кидать их в 10 раз быстрее, если сначала сделаете КУ три раза.
  • Макрос THROW() объявлен устаревшим. Нужно использовать ключевое слово throw.
  • Класс Exception, который в цепочке наследования находился между Object и Error, удалён. Теперь Error наследует напрямую от Object. 20 методов класса перенесены в Error, 10 перенесены в Object, еще 15 удалены.
  • Устаревший макрос THROW() удалён.
  • Мы удалили старые исключения, теперь делать КУ три раза строго обязательно.
  • Ключевое слово throw заменено на raise.
  • Функция делания КУ объявлена устаревшей и теперь просто ничего не делает. Вместо этого программа делает КУ автоматически при запуске.
  • Мы решили, что использование каких попало исключений нарушает принципы разумного проектирования. Теперь вы обязаны перечислять все исключения, которые может бросить функция.
  • Мы тут подумали, исключения это слишком сложно. Мы будем возвращать коды ошибок.

Хотя почему «если бы»… ведь есть же vala … :D

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

А что, между плоским и объёмным ничего нет?

This:

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

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

Чаще всего говнокод либо всё так же компилируется

Это проблемы разработчиков, пользователям-то какая разница?

Вот не было объявлено, что «такое поведение гарантируется реализацией»

Ну и к чему претензия тогда?

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

Это проблемы разработчиков, пользователям-то какая разница?

Какие у разработчиков проблемы?

У разработчиков-то как раз нет проблем на уровне unix-like GNU-powered OS. Проблемы начинаются на пару этажей абстракций выше.

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

на уровне unix-like GNU-powered OS

Разработчики только на нём сидят, что ли?

Говноподелия как раз от этого абстрагируются зачастую.

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

Разработчики только на нём сидят, что ли?

Разработчикам приходится сидеть, на чём предложено. А там либо пики, либо сами знаете…

Говноподелия как раз от этого абстрагируются зачастую.

Флаг в руки. Линукс-два-процента.

А на самом деле всё просто: бородатые хакеры не имеют ни желания, ни опыта проектировки GUI-стека. А занимаются этим низкоквалифицированные сотрудники.

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

Легко представить, где на этой шкале находится разработка gtk.

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

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

Разработчикам приходится сидеть, на чём предложено

Вообще не факт.

Флаг в руки. Линукс-два-процента.

Линукс-то здесь вообще при чём? На него и говноподелий-то маловато (как и всего, хехе).

бородатые хакеры не имеют ни желания, ни опыта проектировки GUI-стека

Верно, им GUI не нужен. Равно как и широким массам, которые потихоньку переходят на голосовые интерфейсы. Мертворождённая концепция это.

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

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

Добавил в профиль. Только там выложена лишь малая часть, в основном связанная с Haiku. У меня ещё есть много проектов на Обероне, но не знаю как лучше выкладывать т.к. исходники бинарные и Github их показывать не умеет.

Да и мой код не имеет никакого отношения к говнокодерам, это аргумент вида «сам добейся».

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

а нормальные программы написанные в соответствии со спецификацией работают начиная с Windows 1.0? Если программы используют недокументированные API, лезут во внутренние структуры ОС, эксплуатируют undefined behavior, некорректно обращаются с памятью и т.д., то разработчики - ССЗБ и должны страдать.

Практически все программы содержат ошибки. Так что под твоё определение попадают только примитивные программы-примеры из документации. Но и там программы пишут люди, и я где-то видел упоминание ошибок в примерах в MSDN.

Обеспечить совместимость говнокода невозможно в принципе.

Солидная часть «совместимости» Windows состоит в том, чтобы подкладывать костыли под глючный код, который в старых версиях чудом работал, а в новых перестал. Ты же наверняка видел софт (не помню сейчас, как называется), который позволяет подбирать костыли под программу вручную. Список костылей там просто огромный.

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

Практически все программы содержат ошибки.

Не все ошибки одинаковые. Есть мелкие ошибки, которые не особо мешают и/или проявляют себя в исключительных обстоятельствах. А есть серьёзные грубые ошибки, например обращение к приватным API, залезание во внутренние структуры ОС или полагание на неопределённое поведение вроде порядка загрузки системных DLL.

Список костылей там просто огромный.

Многие говорят про over 9000 костылей для поддержки конкретных программ, но никто не приводит конкретный список. Есть пример анализа этих костылей с дизассемблированием? Не просто поведения кажущегося костылём, а именно костыли под конкретные программы с их распознаванием.

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

Солидная часть «совместимости» Windows состоит в том, чтобы подкладывать костыли под глючный код, который в старых версиях чудом работал, а в новых перестал.

  • В отличие коммерческого прикладного кода, СПО можно просто запатчить.
  • Поэтому давайте сделаем так, чтобы патчить было не выгодно.
  • Пусть 20 лет подряд занимаются реализацией блокнота и плеера.
  • ???
  • ПРОФИТ!
wandrien ★★
()
Ответ на: комментарий от X512

Многие говорят про over 9000 костылей для поддержки конкретных программ, но никто не приводит конкретный список. Есть пример анализа этих костылей с дизассемблированием? Не просто поведения кажущегося костылём, а именно костыли под конкретные программы с их распознаванием.

Я навскидку помню только про какую-то игру, которая делала double free. На старой версии Windows это чисто случайно прокатывало, а на новой перестало.

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

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

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

Я эту байку тоже слышал. Интересно место в машинном коде, а не болтовня.

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

Не все ошибки одинаковые.

«Вы не понимаете, это другое.»

проявляют себя в исключительных обстоятельствах

Кто решает, исключительные обстоятельства или нет?

Многие говорят про over 9000 костылей для поддержки конкретных программ, но никто не приводит конкретный список. Есть пример анализа этих костылей с дизассемблированием? Не просто поведения кажущегося костылём, а именно костыли под конкретные программы с их распознаванием.

А гуглить пробовал?

https://tzworks.net/prototype_page.php?proto_id=33

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

Да и мой код не имеет никакого отношения к говнокодерам, это аргумент вида «сам добейся».

Ошибаетесь. Это не аргумент, а попытка придать веса словам, т.к. «говнокодер» в устах «васи» с парой helloworld за плечами это не слишком весомо, не так ли?

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

Ох уж эти GTK-разработчики, бегающие по домам и ломающие всё подряд. Ну и не пишите под GTK. О чём тема-то?

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

Я вот не пойму, так неистово восхищаться вендой на линукс форуме это тоже вариант «самоудовлетворения»?

Я вот не пойму, так неистово переводить разговор из технической области в сферу религиозных чувств — это вариант чего?

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

В этой теме где-то был разговор на техническую тему О_о.

Например был разговор что конкретно поменяли и поломали в GTK3. Как решают эту проблему в других тулкитах.

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

а на практике экономически не целесообразно.

А на сколько целесообразно писать бредятину на ЛОРе?

В ГНУтом стеке gcc-glibc-bash-coreutils-etc…

Фига. Я думал это winfaq…

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

Ворнинги на то и ворнинги, что их можно игнорировать.

Очень сильное заявление после криков о говнокодерах.

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

Фига. Я думал это winfaq…

Не переживай, твоей гордости нитаковакаквсе ничто не угрожает. Линукс на десктопах всегда останется уделом маргиналов, так что вы можете и следующие 25 лет кричать про винфак и вендекапец.

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

Фига. Я думал это winfaq…

Линукс вообще для десктопа не предназначен, использование его на десктопе - это скорее форма хакерства. Линукс предназначен для серверов и embedded систем. Нормального десктопного окружения под Линукс так никто и не сделал, а оригинальные UNIX окружения вроде CDE давно померли. В принципе их можно было развивать совместимым образом, но наверное уже поздно.

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

Не переживай, твоей гордости нитаковакаквсе ничто не угрожает.

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

Линукс на десктопах всегда останется уделом маргиналов

В этом месте я должен был заплакать? Никак не могу понять, почему вендузятники вечно про это пишут? А если десктоп вообще станет «уделом маргиналов» перестанешь им пользоваться?

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

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

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

В этом месте я должен был заплакать?

В принципе, плакать уже поздно, да и не тебе.

Это Столлману простительно было бы заплакать, глядя на вас, поколение снежинок. Но он-то настоящий мужик, такие не плачут.

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

Линукс вообще для десктопа не предназначен

Пхех, если уж на то пошло, то линукс – это ядро ОС. И начаналось как студенческий проект, так что я хз для чего оно предназначалось.

использование его на десктопе - это скорее форма хакерства

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

Нормального десктопного окружения под Линукс так никто и не сделал

А, ну если ты сказал, то ок.

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

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

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