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