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

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

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

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

решение1

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

В рамках нашего планирования 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 — добро пожаловать.

решение2

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

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

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

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

решение3

Ubuntu технический директорБлог Мэтта Циммерманатакже познавательно:

Именно в этом духе я недавно думал о 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.

решение4

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

Связанный контент