Личные инструменты
Счётчики
Рекламодателям

GNOME vs. KDE

Материал из Lurkmore

Перейти к: навигация, поиск
Not found 2.svgНарод требует хлеба и зрелищ!
Народ требует иллюстраций к статье!
В конце концов, если бы мы хотели почитать, мы бы пошли в библиотеку.

GNOME vs. KDE — дисциплина специальной олимпиады, практикуемая в обсуждениях Линукса, а точнее — десктопного Линукса, в том числе на ЛОРе. Состоит из споров между апологетами двух конкурирующих столпов десктопных приложений — Qt и GTK+, и, соответственно, основанных на них KDE и GNOME.

[править] Суть™

В отличие от этих ваших винды с макосью, графическая система X Window System (она же "иксы") не предоставляет стандартного общесистемного набора виджетов. Приложение имеет окно как область для рисования, а что там рисовать — это его дело. Поэтому на заре истории юниксового гуя каждый Вася Пупкин писал свою библиотеку виджетов и извращался как мог.

Затем появился KDE, основанный на несвободной в тот момент библиотеке Trolltech Qt. Именно несвободность Qt дико возмутила Ъ-сторонников опенсорса, и те, позаимствовав библиотеку виджетов у одной ГНУтой рисовалки, запилили на её основе свою среду рабочего стола GNOME, с б/дж. и ш., которую с тех пор стали ставить по умолчанию в разных дистрибутивах (тогда Гном был единственным полностью свободным полноценным DE).

А затем подтянулись и Тролли — перевели Qt на свободную лицензию, сначала самописную QPL, а затем и GPL. Когда они с потрохами продались Нокии, та вообще открыла Qt 4.5 под LGPL, но это было потом. Постепенно KDE и GNOME перетянули на себя большую часть пользователей Линукса, и теперь даже приложения, не входящие в эти тулкиты, либо пишутся сразу на Qt или GTK+, либо старательно под них мимикрируют (как правило, под второй).

Итог: имеются две конкурирующие среды с разным поведением, разными движками тем оформления и разными настройками. При этом обе весьма тяжелы, и для запуска гномовских и кедовских приложений одновременно нужны многие сотни памяти, а некоторые кадры не хотят их устанавливать параллельно по религиозным соображениям. Вот такие пироги.

[править] Аргументы сторонников GTK+

  • Qt написан на б-гомерзком C++, причём даже не современном, а достандартных времён, а GTK на няшной сишке.
    • Зато код на C++ проще читать, чем все эти g_overly_long_function_name с приведениями типов.
  • Qt требует не только компилятор C++, но ещё и свой препроцессор moc.
    • moc поставляется в составе самого Qt и интегрируется так же, как и любой другой внешний инструмент компиляции. Гномовские приложения, кстати, тоже используют различные внешние утилиты в процессе сборки, включая gnome-doc-utils, компилятор схем GSettings, а также GIR, до появления которого рефлексии и автоматической генерации байндингов в GTK не существовало как класса.
  • Qt несвободен.
    • Когда-то это было действительно так, но это уже давно 4.2. А начиная с четвёртой версии свободны и виндовый, и маковский вариант.
  • Qt разрабатывает корпорация, а GTK — сообщество.
    • См. ниже в аргументах сторонников Qt.
  • GTK не изобретает велосипедов и использует, где возможно, существующие технологии, включая Pango, Cairo и GNU Gettext. А Qt — раздутый монолит.
    • Таки да, в Qt весь код отрисовки свой. С другой стороны, это позволяет интегрировать весь API, а не лезть на каждый нетривиальный чих на уровень ниже GTK. А за стандартами freedesktop.org Нокия всё-таки следит — тот же fontconfig, область уведомлений, даже мимикрия под GTK в стандартной поставке.

[править] Аргументы сторонников Qt

  • Qt написан на расово верном C++, а в GTK нагородили свою, страшную реализацию ООП на гойском C, которая на каждый чих требует приведения типа и boilerplate-код.
    • С другой стороны, к коду на C проще писать байндинги, в том числе автоматически. Синтаксис можно причесать использованием более вменяемого языка для приложений, хотя бы и того же C++ (gtkmm). В GObject в отличие от C++ изначально заложены сигналы и бинарная совместимость, которые в Qt достигаются костылями. Правда, разбираться в сишном коде самого GTK или там GLib — занятие отнюдь не из приятных.
  • Qt — продукт коммерческого уровня от коммерческой компании, а GTK — разработка энтузиастов на коленке.
    • Ну не на такой уж коленке. За GNOME Foundation также стоят коммерческие компании — в основном Red Hat, отчасти Novell и Canonical. При этом GTK пилится разработчиками GNOME, которые знают, что им нужно от тулкита. А вот KDE, в отличие от Qt — чисто некоммерческий проект сообщества.
  • У Qt лучше документация и средства разработки, потому что пилится в том числе для коммерческого использования.
    • Качество документации по API для самого тулкита примерно одинаково, но по Qt, таки да, больше вменяемых гайдов и учебников, а также нормальных IDE (в том числе Qt Creator от самой Нокии). Зато документация по байндингам, уж на что не фонтан в GTK, в Qt ещё хуже. Если при программировании на Vala или, скажем, Gtk# можно напороться на грабли, то какое-нибудь Qt Jambi — это сплошное минное поле.
  • Cairo тормозит, отрисовка Qt быстрее.
    • Первые версии Cairo действительно тормозили, но постепенно это дело выправили. В последнем релизе появилось аппаратное ускорение с помощью cairo-gl, правда, ещё мало где используемое. Сейчас же, с аппаратным ускорением как XRender, так и OpenGL, скорость отрисовки упирается в основном не в тулкит. а в видеодрайвер, состояние которых в Линуксе — "местами снег, местами град, местами кислый виноград". К тому же первые версии KDE 4 умудрялись адски затормаживать отрисовку изначально быстрого Qt 4, хотя сейчас это, похоже, уже выправили.
  • Qt и KDE сейчас развиваются быстро, а GNOME стагнирует.
    • В прошлом. Во времена позднего KDE 3 всё было с точностью до наоборот. Тролли провели работу над ошибками и запилили действительно хорошую четвёртую версию, а GTK 2, как в своё время Qt 3, стал заложником обратной совместимости. Сейчас же GTK+/GNOME 3 вышли и также активно допиливаются.
  • Qt лучше интегрируется с платформами, отличными от X, такими, как Windows и Mac.
    • А вот с этим не поспоришь. Действительно, GTK на этих платформах выглядит как негр-шпион, заброшенный в Сибирь, отчего и остаётся преимущественно линуксовым тулкитом.
Источник — «http://lurkmore.to/GNOME_vs._KDE»