歷史

BeeWare 計畫始於一個簡單的問題:為什麼我們作為 Python 開發人員使用的工具沒有以與我們日常使用的其他技術相同的速度改進?

Python 已證明自己是一種功能強大的語言 - 對於新手來說很容易上手,對於專家來說同時也很強大。 Python 正迅速成為資料分析、科學計算和 Web 開發領域的主要組成部分。像 Django Girls 這樣的活動已經證明,使用 Python,可以提供為期 1 天的培訓課程,向沒有程式設計經驗的人介紹 Python;最終,與會者開發並部署了一個具有資料庫支援的動態網站,並將其部署到公開的伺服器上。

然而,Python 開發者的開發經驗有時更反映了 90 年代初期的情況,而不是千禧年的情況。 Python 的預設開發環境仍然是 80x25 控制台視窗。對於來自 Windows 或 Apple 環境的使用者來說,他們習慣了高度細緻、設計精良的圖形介面,這 30 年的時光倒流可能是一種完全陌生的體驗。

是的,有一些 IDE(整合開發環境)可以為編寫程式碼提供本機應用程式體驗。但這些工具要求您全面採用 IDE 看待專案的方式。他們經常在開發過程中引入與解決的難題一樣多的難題。

因此,我們在控制台視窗中的 Unix 開發「舊方式」和一體化 IDE 的「新方式」之間留下了有趣的分歧。

Unix 哲學

然而,情況並非一定如此。 Unix 哲學的核心原則是「每個工具都做好一件事」。這是一個非常強大的理念,它可以透過將一套極其集中、獨立的工具組合在一起來組成極其強大的工具鏈。

不幸的是,大多數 UNIX 工具都將其理解為「所有工具都必須使用控制台介面」。然而,UNIX 哲學中並沒有規定工具必須使用控制台介面——事實就是如此。

BeeWare 計畫始於我們能夠兩全其美的前提。我們可以擁有一系列可組合工具,每個工具只做一件事情。但這些工具還可以使用豐富的圖形使用者介面來公開其功能。

目標

BeeWare 專案的最終目標:能夠為行動和桌面用戶導向的軟體做與 Django 為 Web 軟體所做的相同的事情 - 將一組工具和庫交給用戶,使他們能夠開發豐富的本地用戶界面,並將其部署到他們的設備上。這包括:

  • 讓Python能夠在不同裝置上運作的工具,
  • 用於打包 Python 專案以便其可以在這些裝置上運行的工具,
  • 用於存取設備的本機小部件和功能的庫,
  • 幫助開發、偵錯、分析這些項目的工具。

這個目標是,這套工具對於完全新手來說足夠容易使用,可以在類似 Django Girls 的環境中使用;但足夠強大,可以用來推動下一個 Instagram、Pinterest 或 Disqus。

最重要的是,它的目標是作為一個開源社群來完成這一切。開源開發過程已被證明是開發健壯可靠的軟體的最可靠方法,而且任何人都可以訪問該軟體這一事實意味著每個人都可以從同一套出色的工具開始,無論他們是專家還是熱心的業餘愛好者。

無所不在的 Python

一個現代項目不能忽視過去十年來最大的發展。 Python 以其跨平台語言而自豪。 10 年前,跨平台意味著可用於 Windows、macOS 和 Linux。如今,行動裝置變得更加重要。儘管如此,在行動平台上進行 Python 程式設計並沒有太多好的選擇,而且跨平台的行動編碼仍然難以實現。

BeeWare 將行動應用和其他新興平台(如手錶和機上盒)視為生態系統的一等公民 - 因為如果人們擁有這些設備,為什麼他們不能用 Python 為其編寫軟體。

到處都是原生的

使用主題很容易實現跨平台。然而,很容易發現使用主題建立的應用程式 - 它們的行為與任何其他應用程式不太一樣。小部件看起來不太正確,或者 OS X 應用程式的視窗上有功能表列。主題可能非常接近——但總有一些跡象。

最重要的是,本機小工具總是比主題通用小工具更快。畢竟,您使用的是經過調整和優化的本機系統功能,而不是分層在通用小部件之上的繪圖引擎。

主題還缺少本機平台的許多可訪問性優勢。現代作業系統作者花了大量時間來調整行動能力、視力或認知能力受損的人的功能可供性。如果您使用本機小工具,通常可以免費獲得這些功能。如果您使用主題重新實作小工具,則也必須重新實作可供性。

BeeWare 使用本機小工具和本機功能,而不是使用主題為基礎的方法來進行應用程式開發。

原生 Python

BeeWare 也是一個毫無疑問的「Python 優先」框架。我們喜歡Python,我們喜歡它的外觀和工作方式。如果 Python 在特定平台上無法作為首選選項,我們將採取一切必要措施使 Python 作為開發語言可用。當我們有機會在 API 或設計中採用 Python 習慣時,我們就會這麼做。這意味著我們將使用生成器、上下文管理器、非同步呼叫「yield from」等,以便為跨平台應用程式開發提供最佳的 Python 原生 API。

我們也著眼於未來 - 這意味著我們只支援 Python 3。

原生的體驗

使用任何工具的體驗都是從安裝過程開始的。 BeeWare 的「原生無所不在」理念的一部分是採用適當的原生安裝機制。如果您使用的是用戶空間工具,則應將其作為軟體包提供給您,該軟體包的安裝方式與安裝任何其他工具的方式相同 - 無論是透過應用程式商店、安裝程式還是簡單的可執行文件包裹。最終用戶不應該知道您是用 Python 編寫的應用程式。

但如果您使用的是開發人員工具或函式庫,那麼它應該與您的開發環境整合。由於我們使用的是 Python,這意味著您應該能夠使用「pip install」將其安裝到虛擬環境中,僅此而已。無需 C 擴展,無需編譯器,無需設定係統路徑或環境變數 - 只需安裝、匯入它,然後開始編寫(或運行)程式碼。

不只是程式碼

不過,這不僅僅是程式碼。一個成功的軟體專案需要文件、設計技能、回饋和錯誤報告。 BeeWare 社群承認「所有」貢獻都很重要 - 不僅僅是 GitHub 上的Pull request。

即便如此,我們也很容易將一個專案視為所有貢獻的總和。但事實並非如此。開源專案是與社區息息相關的。

多元化和包容性

多元化的社區是一個強大的社區。這意味著接受各種經驗水平、各種背景、各種種族、信仰、傾向和表達方式的人。 BeeWare 計畫致力於發展和維護一個包容、多元化和熱情的社區。

為了支持這一點,我們公開提議為任何想要作為貢獻者參與的人提供指導,並嚴格執行「行為準則」。任何有關違反該行為準則的報告——即使是高級社區成員——都將受到尊重並採取適當行動。

健康永續

確保社區的無障礙和永續發展也很重要。不幸的是,「真正的」開源專案必須完全由志工開發,這已成為開源文化的一個公認的部分。這對許多群體來說都是進入的障礙——唯一能夠利用空閒時間從事志願服務的人是那些「有」空閒時間的人。

它也經常導致貢獻者出現倦怠和其他心理健康問題。憂鬱、焦慮和倦怠在軟體開發社群中如此普遍,這一事實不應該被視為一種榮譽徽章,也不應該被視為開發團隊有多投入的表現。這是一個需要正面解決的問題,並以解決軟體錯誤的方式來解決——立即採取解決辦法,並製定長期計劃來消除問題的系統性原因。

雖然我們非常重視志工的貢獻,但我們也知道僅靠志工的努力並不能發展一個健康且永續的社區。因此,財務可持續性是 BeeWare 專案營運的關鍵考慮因素。作為一個社區,我們不會忽視金錢在提供資源方面所發揮的作用,使人們能夠開始並繼續做出貢獻。作為一個社區,我們將為個人提供公認的機制,以有意義的方式將他們的工作貨幣化,並盡可能為人們的工作提供補償——而不損害開源開發的理想。

BeeWare:Python 的 IDE

這裡是 BeeWare。我們對 Python 的未來感到非常興奮。我們希望您能加入我們的旅程。