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


Там было сделано ровно 2 (два!) важных архитектурных изменения:

  • Убрали прямой доступ к содержимому структур виджетов, теперь все виджеты — непрозрачные указатели, и все операции с ними только через API.
  • Внедрили отрисовку через cairo на уровне API, чтобы не создавать контекст cairo в каждом виджете заново.

Всё.

Остальное — просто потому, что им захотелось сломать совместимость и принудительно впарить совершенно новый DE под известным именем GNOME.

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

wandrien ()
Последнее исправление: wandrien (всего исправлений: 2)

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

Это ржачно, но факт: wine — самый стабильный и переносимый тулкит для Linux. Можно брать мануал по WinAPI 98-го года и писать приложения, которые будут работать и через 20 лет без перекомпиляции.

wandrien ()

Я больше того скажу.

Я беру код, который последний раз правили в начале 00-х и спокойно собираю в современной системе с минимальными правками. Потому что код — на Си или на крестах, с использованием стандартной libc.

А захотел собрать synapse, который написан на vala — сюрприз! Прошло всего 8 лет, а чтобы его собрать, нужно полностью воссоздать сборочную среду, в которой его разрабатывали.

Потому что у vala уже релиз 0.44, а об обратной совместимости там не слышали. НОЛЬ-СОРОК-ЧЕТЫРЕ — версия языка. Нулевая, нестабильная, 22-я (нечётные не считаем по гномовской традиции) по счёту. Это финиш.

Дальше только тлен и упадок цивилизации, которую развалит дятел.

wandrien ()

Будь сильным, пиши на Хlib

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

Будь сильным, пиши на Хlib

Там контролов нет. Если на то пошло, надо брать Motif.

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

fltk. Или просто tk.

Насколько оно стабильно в плане API? Когда последний раз ломали?

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

fltk

fltk очень плох. Не рекомендую. Как раз сейчас пилю приложение с его участием.

Лучше взять FOX Toolkit, если хочется легковесный тулкит на крестах с переносимостью между X11 и WinAPI.

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

Не слежу. Вроде, всё работает. Недавно ковырял настраивалку развёртки моника на tk, всё предельно понятно и просто даже такому как я.

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

fltk очень плох

Может быть. Я с ним последний раз сталкивался очень давно, когда Rakarrack был ещё жив. Ну и после ковырялку одну ковырял. Мне хватило. А как в профессиональной среде - это уж конечно, не знаю.

А на FOX Toolkit есть примеры годных земных апликух?

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

А на FOX Toolkit есть примеры годных земных апликух?

От разработчика тулкита:

  • Файловый менеджер PathFinder
  • Текстовый редактор Adie
  • Еще инженерный калькулятор какой-то

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

Еще есть XFE — двухпанельник, который до недавнего времени относительно активно разрабатывался.

Больше так ничего не вспомню. Кажется, был какой-то (коммерческий?) узкоспециализированный софт под Windows на этом тулките.

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

А, точно, XFE, про него забыл. Только я и сам кроме демок от автора и какого-то мутного ускоспециализированного ПО ничего не нашёл.

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

А он на Гайку твою портирован? :)

Нативно нет. Помню запускал GTK2 через X.Org использующий SDL в качестве экрана. Другие тулкиты так наверное тоже запустить можно.

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

wine — самый стабильный и переносимый тулкит для Linux.

Не вайн а Ява, что работало 20 лет назад будет работать и через 20 лет. Без всякой этой вашей перекомпиляции :-P

rukez ()

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

Чтобы юзерам Гнома подрывать пердаки

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

Не вайн а Ява, что работало 20 лет назад будет работать и через 20 лет.

Там тоже не всё стабильно. Есть несколько независимых тулкитов и некоторые пытаются закапывать. Апплеты закопали. Есть несколько версий JVM, не знаю как там обстоят дела с обратной совместимостью. По сравнению с Wine оно тормозит и потребляет много памяти, GUI глючный. С лицензией непонятно что происходит.

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

Лолшта?

Там тоже не всё стабильно. Есть несколько независимых тулкитов и некоторые пытаются закапывать.

Есть swing, он есть в базовом jre с 98ого года и он идеально работает на чем угодно от винды/линуха/макоси до солярки/бсд при 100% совместимости с 98ого года по сегодня.

Есть несколько версий JVM, не знаю как там обстоят дела с обратной совместимостью.

Версий Jvm много, ровно как и производителей, обычная (openjdk) совместима туда-сюда, ты сам выбираешь нижнюю версию совместимости с jvm когда начинаешь писать программу - версия совместимости тебя ограничивает только в синтаксисе и в использовании библиотек из комплекта jre/jdk. Сегодня овердофига людей пишет под 6 или под 8 тупо по привычке, хотя все исполняется на 11 или 14

По сравнению с Wine оно тормозит и потребляет много памяти, GUI глючный. С лицензией непонятно что происходит.

Свинг не умеет глючить ибо отрисовывается программно (можно запердолить кусками системные контролы через авт, но не особо нужно), можно с поддержкой ускорения если система в него умеет, можно без. По скорости … если ты видишь тормоза интерфейса свинга в 2020 то купи компьютер хотя бы из 2010.

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

  • пользовать опенждк бесплатно любой где/как хочешь. можешь его распространять со своим софтом или в своём железе
  • пользовать оракл ждк за деньги
  • пользовать любой другой платный или бесплатный (например libericajdk) ждк по своему усмотрению на условиях создателя
rukez ()
Последнее исправление: rukez (всего исправлений: 1)
Ответ на: комментарий от rukez

Свинг не умеет глючить ибо отрисовывается программно

что за бред, как это связано?

Qt не умеет глючить ибо отрисовывается программно

Gtk+3 не умеет глючить ибо отрисовывается программно

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

В свинге нет никакого GPU ускорения. Если нужно ускорение, то нужно писать на JavaFX.

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

С лицензией полный порядок

Правда? В отличии от Qt и даже Wine, Java - это дикая проприетарщина. Открытость исходников ещё ничего не значит.

в отличии от куте

В Qt основные компоненты полностью свободные. API не запатентован и не закопирайтен.

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

… и получить очередной иск от Oracle.

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

Если нужно ускорение, то нужно писать на JavaFX

…который закапывают.

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

что за бред, как это связано?

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

В свинге нет никакого GPU ускорения.

Ой ну чо уж, и свинга тоже никакого нет

https://developer.oracle.com/java/technologies/graphics-performance-improvements.html

Свинг с первой Явы умеет в ускорение, притом он умеет в ускорение и под виндой и под иксами, и под gl и под dd, а ещё он умеет в себя вставлять аппаратные слои, крутить на видяхе растры и прочее и прочее, но канешн проще обосрать чем вкурить :-)

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

Правда? В отличии от Qt и даже Wine, Java - это дикая проприетарщина. Открытость исходников ещё ничего не значит

Правда, ты смысл иска то понял? Гугол сделал свою Яву из Явы оракла, ораклу это не понравилось. Ты точно так же не можешь сделать свой кутэ из кутэ от кутэ. Но ты можешь что угодно писать на Яве и исполнять это где угодно на опенждк бесплатно без смс и регистрации.

В Qt основные компоненты полностью свободные. API не запатентован и не закопирайтен.

Это про какую версию кутэ сейчас написано? :-)

… и получить очередной иск от Oracle

Если ты решишь раздавать ораклждк под именем васянждк или васянОС то получишь

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

Не знаю как обстоят дела, но скажу всем что не стабильно. Молодец, Ваше мнение очень важно для нас.

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

Правда, ты смысл иска то понял?

Oracle закопирайтил API в Java и запретил любые альтернативные реализации без его разрешения.

Ты точно так же не можешь сделать свой кутэ из кутэ от кутэ.

Почему?

Если ты решишь раздавать ораклждк под именем васянждк или васянОС то получишь

Свободные лицензии разрешают выпускать тот же продукт под другим именем. Иногда это даже необходимо если название продукта - торговая марка.

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

Свинг с первой Явы умеет в ускорение

Я писал на свинге для Java 7 для себя, ничего он не использовал GPU, там по нулям всегда было.

https://developer.oracle.com/java/technologies/graphics-performance-improvements.html

The page may have been moved or deleted, or a referring link may be incorrect.

Хотя я погуглил, и нашёл что есть флаг для Java 2D, чтобы использовал OpenGL, если я правильно понимаю, Swing тоже так рисуется:

https://docs.oracle.com/javase/1.5.0/docs/guide/2d/new_features.html

J2SE 5.0 includes a new OpenGL-based pipeline for Java 2D. This pipeline provides hardware acceleration for simple rendering operations (text, images, lines, and filled primitives) as well as those that involve complex transforms, paints, composites, and clips. This pipeline is available on all platforms (Solaris, Linux, and Microsoft Windows) and is currently disabled by default.

To silently enable the OpenGL-based pipeline, specify the following system property on the command line:

-Dsun.java2d.opengl=true

Тогда возможно можно включить GPU ускорение для Swing.

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

Oracle закопирайтил API в Java и запретил любые альтернативные реализации без его разрешения.

Гугол взял яваапи, сделал ждк, построил на нем ведроид и сказал что это сделал гугол. Что тебя смущает в иске правообладателя на апи? :-)

Почему?

Потому что куте принадлежит кутэ-что-то-там, думаю они огорчаться когда их кутэ начнёт продавать кто-то другой. Насколько понимаю ни кутэ 3 ни 5 ты не можешь продавать под своей личиной, за 4 не знаю

Свободные лицензии разрешают выпускать тот же продукт под другим именем. Иногда это даже необходимо если название продукта - торговая марка.

Под полностью свободными лицензиями 90% унылого шлака, Ява всегда была нацелена на платный энтерпрайз, но при этом ты всегда мог использовать ее бесплатно и публиковать свой код под любой (включая свободные) лицензии. Начиная с 11ой версии ситуация с лицензиями меняется в «более свободную» сторону, но в реальности всем пофигу.
Кстати, даже «жлобский оракл» никогда особо денег то за Яву не просил - в 8ке ты платишь только за LTE поддержку, которая выходит за рамки обычного LTS - внезапно (с) ты можешь точно так-же платить за lte того-же дебиана :-) 11ая пока из lts не вышла, но lte будет бесплатным от опенждк (кстати не смотрел, возможно и для 8 они лте осуществляют)

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

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

Тогда возможно можно включить GPU ускорение для Swing.

Слушай, ты уже начинаешь понимать но ещё не совсем :-)

У Явы есть «пайплайн» - своего рода интерфейс между кодом и интерфейсом системы, который рулит аппаратными функциями. В качестве пайпа может выступать DirectX (direct draw в базовом случае), OpenGL, egl, gles и что угодно что впихнут старшие товарищи.

Так вот, под виндой, по дефолту работает direct draw, но ты можешь принудительно включить gl вместо него.

И да, свингу, по хорошему, нужно именно аппаратное 2д ускорение, и поэтому твой диспетчер задач не будет показывать адову нагрузку в яве7 на гпу, хотя при этом ты можешь крутить в Яве прям во враме картинки в 50-100мп и делать из них канвасы для свинга, практически не трогая cpu :-) и все что нужно что-бы это было кросс-платформенным и ускоренным - запросить у vm поддерживаемый аппаратный тип растра - Ляпота :-)

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

построил на нем ведроид и сказал что это сделал гугол

Гугл не заявлял, что придумал Java API и никогда не скрывал, что Android использует Java API. По такой же логике Oracle в будущем может запретить OpenJDK.

Насколько понимаю ни кутэ 3 ни 5 ты не можешь продавать под своей личиной, за 4 не знаю

Пруфы в студию. LGPL разрешает выпуск продукта под другим названием.

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

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

вот форк Qt4, который уже довольно сильно отличается и от Qt4 и от Qt5, то есть не проект Попова, и продают поддержку и Qt их не засудила:

https://www.copperspice.com/

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

Ну а вот jvm от компании через дорогу от моего старого офиса, возглавляемой чуваком из начальства бывшего офиса оракла в Питере. Оракл из мало того что не засудила, они ещё и в апстрим дофига пилят. И кстати она бесплатна.

https://libericajdk.ru/

Так что кровавый оракл вычеркиваем из детских страшилок?

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

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

Ахаха. Я как раз читал очередную новость о том что Oracle всё никак не могут отстать от гугла.

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

Так что кровавый оракл вычеркиваем из детских страшилок?

Только после того как они проиграют Гуглу в суде или отзовут иск.

Оракл из мало того что не засудила, они ещё и в апстрим дофига пилят.

Потому, что не захотела судить, а не потому что не может.

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

Не очень догоняю, вы планируете продавать свои Ява-апи или все-же свой софт на Ява-апи?

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

Потому, что не захотела судить, а не потому что не может.

яб гугол то-же засудил за тот фаршмак, который они впихнули мне в ноклу9 в своё время, хоть кто-то решил восстановить справедливость :-))

rukez ()

winevdm не майкрософтовская разработка. На 64bit они забили на совместимость с архаикой. А так-то и на линуксе хорошая обратная совместимость. Через qemu.

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

А это не только пол линуксом. Старые игры в Wine гораздо лучше работают чем под современной виндой. А то и вовсе только в вайне и работают.

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

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

Нормально написанные приложения работают правильно и на десяточке и на любой старой винде. То что у днищекодеров их игры перестают работать это вина лишь днищекодеров. Любители старых игр иногда делают патчи для экзешников и исправляют баги.

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

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

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

а под виндой его нужно от администратора пускать чтобы настройки сохранить

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

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

не в своей папке приложения

Именно в мамку приложения и сохраняет, лол.

WitcherGeralt ★★ ()

Почему нельзя было развивать GTK2?

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

Непонятно только, куда и зачем развивать, он уже целое десятилетие just works. Ну правда, пользователи HiDPI на что-то жалуются, но в то же время находятся пользователи HiDPI, которые его как-то настроили и плюют на эту массу неосиляторов. Мы вообще не в курсе, в чём там проблема, за неимением HiDPI ;)

с потерей совместимости

Да именно на уровне API там немного сломали, на самом деле. Те же «минимальные изменения», что в Qt; можно даже поддерживать сборку с обоими версиями в одном проекте. Ломали в основном другие вещи, более заметные с пользовательской стороны. Вот в Gtk4 многое собираются отломать, что в GTK+3 пока просто deprecated.

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

Wine в последние годы пухнет на глазах. Видать, вследствие распухания Windows 10. Печальная тенденция, такими темпами скоро гигабайт 5 занимать будет, а то и больше.

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

а под виндой его нужно от администратора пускать

А виновата, конечно, винда ;D

Причём линуксоиды сами же эту тенденцию нахрюкали, бежа впереди мейнстрима с воплями «НЕ СИДИ ПОД РУТОМ!!!1111АДИНАДИН» Как и с централизованными магазинами приложений репозиториями, как с огороженной оконной системой, где нельзя на чужих окнах порисовать, да много ещё с чем. Жрите теперь дивный новый мир анального огораживания «во благо».

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

Правда? В отличии от Qt и даже Wine, Java - это дикая проприетарщина. Открытость исходников ещё ничего не значит.

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

А если по серьезу, то еще sun и microsoft судились, микрософт хотела фрагментировать java, сделать несовместимые версии jvm чтоб разработчики не писали мультиплатформенный софт который бы уменьшал ценность windows. В каком-то смысле android сделал это.

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