跨平臺程序開發框架QT發展簡史
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
Qt 和 MFC 一樣古老,同屬于上世紀使用 C++ 開發 Windows 應用程序的重要框架。只是自 1990 年代中期發布以來,Qt 不斷發展,逐漸能夠支持廣泛的平臺和多種使用場景。如今,使用 Qt,開發者只需編寫一次代碼,即可在多個平臺上部署,包括 Windows、Linux、macOS 以及移動平臺如 Android 和 iOS。并且 Qt 還提供豐富的庫和工具,支持 GUI 開發、網絡連接、數據庫訪問等功能,不僅適用于桌面應用,還適用于嵌入式和物聯網 (IoT) 開發方面。QT 官網列出的典型客戶案例,主要是索尼機上娛樂系統、AMD 圖形軟件之類。 雖然 Qt 在 C++ 社區中享有盛譽,擁有強大的跨平臺能力、豐富的組件庫和靈活的架構,但始終未能走出小眾圈子。特別是在 Flutter、Electron 和 React Native 等跨平臺框架大行其道的今天,Qt 似乎已經逐漸淡出了大眾的視野。 在各大技術論壇上,我們經常能看到這樣的討論:“為什么沒有更多的桌面應用選擇 Qt 開發?”、“Qt 功能如此強大,為什么不夠流行?”甚至有人直接提出“Qt 快要死了嗎?”這樣的疑問。就連 Qt 官方的技術論壇上也存在類似的討論,可見開發者對 Qt 的未來發展充滿了疑慮。 QQ 選擇 Electron 而不是 Qt 開發桌面應用,也從側面反映出了 Qt 目前所面臨的困境。QQ 官方曾表示,選擇 Electron 的主要原因是考慮到人才儲備。在國內,熟練掌握 Qt 技術棧的開發者相對較少,這無疑增加了開發和維護成本。 Qt 誕生于 1991 年,由 Haavard Nord 和 Eirik Chambe-Eng 兩位挪威程序員共同開發。他們因對跨平臺 GUI 開發的需求,創立了 Qt。1992 年,他們引入了創新的“信號與槽”機制,為 Qt 奠定了基礎。 1994 年,他們正式成立公司,立志打造一個“世界最佳 C++ GUI 框架”。該公司最初名為 Quasar Technologies,后來更名為 Trolltech。然而,創業初期并不順利。作為兩個年輕的程序員,他們想要進入一個已經相對成熟的市場,但面臨著客戶少、產品未完成、資金不足等困境。幸運的是,他們的妻子都有工作,因此能夠在 Eirik 和 Haavard 預計開發產品并開始賺錢的兩年時間內養活丈夫。 Qt 的命名頗有趣味:選擇字母“Q”作為類前綴,因為這個字母在 Haavard 的 Emacs 字體中看起來很漂亮。添加“t”代表“toolkit”,靈感來自 Xt,即 X Toolkit。1995 年 5 月,Qt 首次公開發布,并提供了商業和開源兩種許可。同年,挪威公司 Metis 成為 Qt 的首個商業客戶。 1996 年,歐洲航天局也采用了 Qt,他們購買了 10 個商業許可證,而 Matthias Ettrich 則使用 Qt 構建了 KDE,這使得 Qt 成為 Linux 上 C++ GUI 開發的事實標準,為 Qt 的發展奠定了堅實基礎。 2008 年初,意識到自研軟件平臺競爭力不足的諾基亞,以 1.53 億英鎊收購了 Trolltech,并將其 C++ 框架作為其開發者戰略的核心。彼時,諾基亞的軟件平臺在用戶體驗上已明顯落后于蘋果和谷歌。其界面設計老舊,操作繁瑣,與競爭對手的簡潔直觀形成了鮮明對比。而 Qt 已用于構建成功的消費軟件產品,如 Google Earth 和 Skype 客戶端,因此這是一筆不錯的生意。 諾基亞的管理層希望通過引入 Qt,為開發者提供一個更現代、更靈活的開發平臺,以提升其軟件的競爭力。Qt 作為一款成熟的 C++ 框架,具有強大的跨平臺能力和豐富的功能,Qt 也沒有固定的外觀和風格,這給了諾基亞很大的定制空間。 Trolltech 團隊在 Symbian 平臺上引入了 Qt,并對用戶界面進行了現代化改造。他們認為,簡單地對舊界面進行修補是毫無意義的,只有全新的設計才能滿足用戶不斷變化的需求。 另一方面,諾基亞內部存在著激烈的競爭,不同團隊之間缺乏協作,導致了資源的浪費和重復開發。這種內部競爭的文化,源于諾基亞 2004 年的一項重組,旨在避免官僚主義的形成。然而,這種做法卻導致了多個相互競爭的 UI 框架的出現,包括 Symbian 原有框架團隊設計的名為 Orbit 的項目,以及 Linux 團隊開發稱為 libdui 或 Direct UI 的框架。 Qt 框架原本被視為統一諾基亞設備開發的工具,但工程師們卻開發了兩個不兼容的 UI API。這嚴重影響了源代碼的兼容性,導致開發效率低下。諾基亞管理層似乎并未意識到這一問題的嚴重性,繼續支持這兩個并行的 UI 項目。經驗豐富的 Epoc 開發者 Sander van der Wal 對此感到非常失望,他指出諾基亞再次犯了碎片化 API 的錯誤。 2010 年諾基亞換了一位新 CEO,他很快就認定 Qt 不足以為諾基亞贏回開發者或客戶,并果斷地取消了 Orbit 和 Linux 團隊的 DirectUI 項目。 然而,在這些內耗的過程中,Symbian UI 的現代化工作被嚴重耽誤。諾基亞的產品設計師仍然不得不與一個過時的、用戶體驗糟糕的界面打交道。 知情人士曾評價諾基亞的失敗是因為“在無效的用戶界面上浪費了 2000 人年”:擁有 Linux 和 Symbian 兩個平臺后,80% 的代碼無需更改即可讓諾基亞重獲競爭力。而 Symbian 的代碼已經投入了數千人年的開發,只有前 20% 的代碼(最多)需要更新。然而,諾基亞未能實現這一點。正所謂“因缺少一顆釘子,整個王國都消失了”。 隨著蘋果和 Android 在市場上獨占鰲頭,Qt 對諾基亞來說也就變得毫無意義了。2012 年,諾基亞正式放棄了這項技術,Qt 被無情地“轉手”給了 Digia。諾基亞放棄 Qt 之后,人們對該平臺的信心一直在逐漸減弱。 從 Trolltech 到諾基亞,再到 Digia,應用框架 Qt 的發展歷程充滿波折,盡管它始終在開發者中保有擁躉。2014 年,Qt 從 Digia 分離出來成立了一個獨立子公司,專注于將商業版和開源版 Qt 重新對齊。 事實上,Qt 從第一天起就有兩種許可證:商業開發需要商業許可證,而開源開發則提供免費軟件版本。 其許可證多次變更,最終在 2022 年形成了一套很復雜的許可方式:商業開發者在購買 Qt 框架及相關工具時,可以在應用程序開發和設備創建兩類許可中進行選擇。這些版本在提供的功能數量、工具支持以及部署目標方面有所不同。價格從每月 302 美元起(僅適用于選擇一年預付的用戶),適用于專業應用程序開發許可;企業版則起價 329 美元,現有的 Qt 應用程序開發許可將自動轉換為此企業版。 其許可也是導致 Qt 不夠流行的原因之一。 在 2000 年以前,Qt 的許可證并不友好于開源軟件開發。這在當時導致許多注重開源的人士拒絕使用 Qt。這也正是 GNOME 桌面環境誕生的部分原因。直到 2005 年,Qt 才允許開發適用于 Windows 的免費軟件。因此,許多早于這些年份啟動的開源項目無法采用 Qt 進行開發。對于商業軟件開發,則需要支付許可費用。 另外,一些應用程序的許可要求與 GPL、LGPL 或 Qt 的商業許可不兼容。GPL 不適用于商業軟件,LGPL 不適用于靜態鏈接軟件,而商業許可需要花錢——許多人都不愿意花錢。 截圖來源:https://news.ycombinator.com/item?id=14068652 截圖來源:https://www.v2ex.com/t/1023458 在社交平臺咨詢 Qt 許可模式的不在少數。近期,還有開發者在使用 Qt 開發軟件后收到了 Qt 代理商的告知函,稱其可能侵權。盡管開發者僅是動態鏈接了 Qt 的核心庫和控件庫,并未修改源代碼,但仍感到困惑。這是因為 Qt 使用了 LGPL 許可證,該許可證的條款相對復雜,尤其是關于修改源代碼和開源方面的規定,讓開發者難以完全理解。此外,國內外 Qt 授權的差異,以及代理商的告知函,加劇了開發者對 Qt 商用許可的困惑。 社區中對此也存在諸多爭議,一些開發者建議避免使用 Qt,而另一些開發者則建議在軟件中明確標明使用了 LGPL 協議。 總的來說,Qt 的商業化應用涉及到復雜的法律問題,開發者在使用 Qt 進行商業開發時,務必謹慎對待,并尋求專業的法律建議。 參考鏈接: https://www.zhihu.com/question/3360014967 https://www.zhihu.com/question/2731975763 https://www.infoq.cn/article/99suibztx2be1fwvqjwg https://doc.qt.io/qt-5/licensing.html https://doc.qt.io/qt-5/licenses-used-in-qt.html https://www.theregister.com/2011/03/10/nokia_ui_saga/?page=3 https://www.theregister.com/2011/03/07/nokia_qt_bye/ https://www.theregister.com/2012/08/29/qt_android/ https://rtime.felk.cvut.cz/osp/prednasky/gui/the-qt-story/ https://softwareengineering.stackexchange.com/questions/88685/why-arent-more-desktop-apps-written-with-qt https://devclass.com/2022/02/02/qt-company-commercial-license-change/ https://news.ycombinator.com/item?id=14068652 該文章在 2024/11/11 10:53:36 編輯過 |
關鍵字查詢
相關文章
正在查詢... |