Почему Canonical выбирает QT вместо GTK для следующего поколения Unity?

33

Было написано так много, что я немного растерялся, но если я не ошибаюсь, Canonical строит следующее поколение Unity для мобильных устройств с Qt, и в ближайшем будущем настольный компьютер также будет перенесен на qt.

Я просто хотел узнать технические и / или политические причины, лежащие в основе этого решения, и какие последствия это может иметь для существующих в настоящее время настольных приложений Ubuntu.

opensas
источник
3
Программирование на GTK является огромной болью, потому что оно построено на GObject, что является жалкой попыткой вставить концепции OO в C. Qt просто использует C ++, который поддерживает OO (и другие парадигмы) из коробки. C ++ может быть не идеальным, но GObject просто устанавливает планку очень низко.
weberc2

Ответы:

23

Вы можете найти ответ в списке рассылки и в блоге Марка Шаттлворта . Этот пост в блоге, вероятно, отвечает лучше всего:

В рамках нашего планирования Natty + 1 нам нужно будет найти место на компакт-диске для библиотек Qt, и мы будем оценивать приложения, разработанные с использованием Qt, для включения на компакт-диск и установки Ubuntu по умолчанию.

Простота использования и эффективная интеграция являются ключевыми ценностями в нашем пользовательском опыте. Мы заботимся о том, чтобы выбранные нами приложения гармонировали друг с другом и системой в целом. Исторически это означало, что мы очень сильно отдавали предпочтение приложениям, написанным с использованием Gtk, потому что определенное количество гармонии приходит по умолчанию от использования того же инструментария разработчика. Тем не менее, с тех пор, как OpenOffice и Firefox были там с самого начала, Gtk явно не является абсолютным требованием. Сейчас я утверждаю, что важны именно ценности, а инструментарий является лишь средством для достижения этой цели. Мы должны оценивать приложения на основе того, насколько они соответствуют требованиям, а не наносить им ущерб на основе технических решений, сделанных разработчиком.

При оценке приложения для установки Ubuntu по умолчанию мы должны спросить:

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

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

Системные настройки и префы, однако, долгое время были причиной трений между Qt и Gtk. Интеграция с системными настройками и предпочтениями имеет решающее значение для ощущения принадлежности приложения к системе. Он влияет на возможность управления этим приложением с помощью тех же инструментов, которые используются для управления всеми другими приложениями, и на виды настроек и предпочтений, которые пользователи могут иметь с приложением. Это традиционно проблема с приложениями Qt / KDE в Ubuntu, потому что все приложения Gtk используют централизованно управляемое хранилище настроек, а приложения KDE работают по-разному.

Чтобы решить эту проблему, Canonical разрабатывает привязки dconf для Qt, чтобы можно было написать приложение Qt, которое использует ту же структуру настроек, что и все остальное в Ubuntu. Мы заключили контракт с Райаном Лорти, который, очевидно, очень хорошо знает dconf, и он будет работать с некоторыми сотрудниками Canonical, которые используют Qt для разработки пользовательских проектов для клиентов. Мы уверены, что результат будет естественным для разработчиков Qt и будет полным выражением семантики и стиля dconf.

Команда Qt долгое время хорошо работала в более широком сообществе Ubuntu - у нас есть отличное представительство Qt в UDS каждые шесть месяцев, команда Kubuntu имеет большой опыт и интерес к упаковке и обслуживанию Qt, существует большой хороший технический обмен между Qt upstream и различными части сообщества Ubuntu, включая Canonical. Например, люди Qt работают над интеграцией uTouch.

Я бы провел различие между «Qt» и «KDE» в очевидных местах. Приложение KDE ничего не знает о конфигурации системы dconf и в результате не может легко интегрироваться с рабочим столом Ubuntu. Поэтому мы не собираемся предлагать Amarok заменить Banshee в ближайшее время! Но я думаю, что вполне вероятно, что dconf, как только он получит отличные привязки Qt, будет рассмотрен сообществом KDE. Есть лучшие люди, которые могут вести этот разговор, если они хотят, поэтому я не буду продвигать идею дальше. Тем не менее, если приложение KDE научится говорить на dconf в дополнение к стандартным механизмам KDE, что должно быть просто, оно станет кандидатом на установку по умолчанию в Ubuntu.

Решение быть открытым для Qt никоим образом не является критикой GNOME. Это праздник разнообразия и сложности свободного программного обеспечения. Эти ценности простоты использования и интеграции остаются общими ценностями с GNOME и являются отличной основой для сотрудничества с разработчиками GNOME и участниками проекта. Возможно, сама GNOME примет Qt, а может и нет, но если это произойдет, то наша готовность проложить этот путь станет вкладом в лидерство. Гораздо проще создать живую экосистему, если вы примете определенное отклонение от канонического, так сказать. Наша работа над дизайном сосредоточена вокруг GNOME, с настройками и предпочтениями, в которых мы фокусируемся на переходе на GNOME 3.0 и gtk3.

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

Хорошие люди в Trolltech, теперь Nokia, которые сделали Qt отличным инструментарием - спасибо. Для разработчиков, которые хотят использовать его и быть частью опыта Ubuntu - добро пожаловать.

Rinzwind
источник
6
В последний раз я проверял, что QT полностью бесплатен. Раньше такого не было, но теперь все бесплатно.
Марио Каменяк
5
@VassilisGr Qt уже некоторое время совместим с GPL (что делает его таким же бесплатным, как и другие GPL). Однако, чтобы Qt мог принять участие сообщества в разработке кода, этот вклад должен быть предоставлен в соответствии с двойной лицензией, позволяющей любой компании, которая сегодня владеет Qt, продавать лицензию не-GPL на этот код, если кто-то платит им. Что в определении Столлмана «Free as in Freedom Software» не является проблемой (если мы рассматриваем возможность брать программное обеспечение только у людей, которые не платят и, следовательно, используют GPL ...), Ubuntu не будет платить, и, следовательно, быть GPL, который Linux в любом случае ... так хорошо.
HostileFork
14

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

Это была открытая ошибка в GTK + с 2008 года, пока она не была закрыта в 2014 году с «сейчас у нас есть поддержка масштаба hi-dpi - это не совсем то же самое, но достаточно близко, чтобы сделать эту ошибку устаревшей».

Когда был выпущен GTK + 3, у проекта была прекрасная возможность добавить независимость разрешения, потому что они все равно нарушали совместимость. Они решили не делать этого, и теперь им уже слишком поздно.

На GTK + Roadmap независимость от разрешения планируется выпустить после 4.0, поэтому они выпустят 4.0, а затем основной выпуск, который получит его. Если они будут придерживаться этого плана, то даже настольные GNU / Linux будут вынуждены отказаться от GTK +, потому что настольные мониторы с высоким DPI и мониторы для ноутбуков уже доступны и скоро станут новыми.

trampster
источник
2

Мой взгляд на технические / прагматические причины: Nokia купила Trolltech и много инвестировала в QT. Он легкий и имеет годы оптимизации для мобильной платформы. Независимо от вашего текущего мнения о Nokia, N900 опередил свое время ... и был основан на Debian / QT ... но дорого. Тем не менее, я не знаю реальных решений.

Майк Стюарт
источник
2
QT также значительно более портативен. Больше выгоды для разработчика, который создает приложение с использованием QT, поскольку они найдут нативную поддержку во многих, многих других ОС - Android, Blackberry, Windows Mobile, WebOS и других. и конечно Mac OS и Windows. QT также выигрывает от значительно большего числа участников.
Майк Стюарт
1

Блог Ubuntu CTO Мэтта Циммермана также информативен:

Именно в этом духе я недавно думал о Qt. Мы хотим сделать разработку приложений для Ubuntu быстрой, простой и безболезненной, и Qt - это вариант, который стоит изучить разработчикам приложений. Размышляя об этом, я понял, что между сильными сторонами Qt и некоторыми новыми направлениями в Ubuntu довольно много общего:

  • Qt имеет долгую историю использования как на ARM, так и на x86 , благодаря своей популярности на встраиваемых устройствах. Потребительские продукты создавались с использованием Qt на ARM более 10 лет. Мы делаем продукты Ubuntu доступными для ARM уже почти два года, и 10.10 поддерживает больше плат ARM, чем когда-либо, включая референсные платы от Freescale, Marvell и TI. Qt добавляет оптимизации ARMv7, чтобы использовать новейшие чипы ARM. Мы делаем это для того, чтобы предложить OEM-производителям выбор аппаратного обеспечения, не жертвуя выбором программного обеспечения. Qt сохраняет этот же выбор для разработчиков приложений.
  • Qt - это кроссплатформенная инфраструктура приложений с официальными портами для Windows, MacOS и более, а также экспериментальными портами сообщества для Android, iPhone и WebOS. Сильная кроссплатформенная поддержка была одним из оригинальных принципов Qt, и это проявляется в зрелости официальных портов. Поскольку Ubuntu Light устанавливается на компьютеры с Windows, а Ubuntu One - на Android и iPhone, нам необходима совместимость с другими платформами. Существует также большое количество разработчиков, которые уже знают, как нацеливаться на Windows, которые также могут связаться с пользователями Ubuntu, выбрав Qt.
  • Qt имеет достаточно развитую систему сенсорного ввода , которая теперь поддерживает мультитач и жесты (включая QML), хотя она завершена только в Windows 7 и Mac OS X 10.6. Тем временем Canonical совместно с сообществом разрабатывает низкоуровневую мультисенсорную среду для Linux и X11 для Qt и других наборов инструментов. Эти усилия в конечном итоге встретятся в середине.

В целом, я думаю, что Qt может многое предложить людям, которые хотят разрабатывать приложения для (и для) Ubuntu, особенно сейчас. Он уже поддерживает популярные кроссплатформенные приложения, такие как VLC, не говоря уже о дистрибутиве Kubuntu. Я пропустил это, когда это произошло в прошлом году, но Qt теперь доступен либо под LGPL 2.1, либо под GPL 3.0, что должно сделать его пригодным практически для любого приложения Ubuntu. Он имеет сильную коммерческую поддержку, а также большое сообщество разработчиков. Разумеется, ни одно решение не удовлетворит потребности всех разработчиков, и по этой причине Ubuntu поддерживает несколько наборов инструментов и платформ, но Qt кажется отличным инструментом в нашем наборе инструментов на будущее.

Статья Ars Technica, в которой обсуждается этот пост, содержит некоторые идеи:

Qt может привлечь сторонних разработчиков в Linux

Хотя Gtk + все еще имеет ценность и есть ряд причин, чтобы продолжать использовать его для создания собственного программного обеспечения Linux, Qt теперь является очевидным выбором для независимых разработчиков ПО, ориентированных на несколько платформ. Qt позволяет исключительно легко соответствовать естественному виду и ощущению базовой платформы или создавать полностью настраиваемый пользовательский интерфейс, который оптимально подходит для целевого устройства или форм-фактора.

Поскольку Nokia и Intel выводят MeeGo на широкий спектр устройств, это привлечет некоторых крупных поставщиков коммерческого программного обеспечения. Этим компаниям-разработчикам было бы относительно легко перенести свои мобильные приложения Qt на рабочий стол Linux, используя тот же код, который они используют в MeeGo. Qt специально разработан, чтобы сделать это легко. Это было бы огромной победой для настольных Linux, потому что это принесло бы сторонние приложения, которые иначе были бы недоступны.

Стоит отметить, что некоторые известные поставщики мобильного программного обеспечения уже с энтузиазмом воспринимают Qt благодаря поддержке Nokia этого инструментария. Например, компания Qik, работающая с потоковым мобильным видео, работает над экспериментальным портом на основе Qt своего популярного приложения с целью довести его до MeeGo.

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

Мур
источник