历史与哲学¶
BeeWare 项目始于一个简单的问题:为什么我们作为 Python 开发人员使用的工具没有像我们日常使用的其他技术一样不断改进?
Python已证明自己是一种能力超群的语言——对新手而言易于上手,在专家手中却能施展强大威力。它正迅速成为数据分析、科学计算和网络开发领域的重要组成部分。 诸如Django Girls等项目已证明:借助Python,完全能够为零编程经验者提供一日速成培训;参与者在一天内不仅能开发出基于数据库的动态网站,还能将其部署到公开可见的服务器上。
然而,对于编写Python代码的开发者而言,其开发体验有时更像是回到了90年代初,而非新千年的产物。Python的默认开发环境依然是80x25的控制台窗口。对于来自Windows或苹果环境的用户——他们早已习惯高度精细、设计精良的图形界面——这种三十年前的体验堪称完全陌生的异世界。
是的,有一些集成开发环境(IDE)可以为编写代码提供原生应用程序体验。但这些工具要求你全盘采用集成开发环境的方式来看待项目。它们给开发过程带来的麻烦和解决的问题一样多的麻烦。
因此,我们面临一个有趣的分歧:在控制台窗口中进行 Unix 开发的“旧方式”和一体化 IDE 的“新方式”。
Unix哲学¶
然而,情况不必如此。Unix哲学的核心信条是"每件工具只做一件事,并做到极致"。这是一种极具力量的哲学,它通过组合一系列高度专注、相互独立的工具,能够构建出极其强大的工具链。
不幸的是,大多数 UNIX 工具都将此理解为“所有工具都必须使用控制台界面”。然而,在 UNIX 理念中并没有规定工具必须使用控制台界面,只是后来变成了这样。
BeeWare 项目的出发点是,我们可以两全其美。我们可以拥有一连串可组合的工具,每种工具都能做一件件事。但这些工具也可以使用丰富的图形用户界面来展示它们的功能。
不止是代码¶
但这不仅仅是代码的问题。一个成功的软件项目需要文档、设计技巧、反馈和错误报告。BeeWare 社区认为,所有的贡献都是重要的,而不仅仅是在 GitHub 上提出的拉取请求。
即便如此,我们还是很容易把项目看作是真空中的项目,看作是所有贡献的总和。但事实并非如此。一个开源项目是关于社区的。
多样性与包容性¶
一个多元化的社区是一个强大的社区。这意味着接纳来自不同背景、不同种族、不同信仰、不同取向和不同表达方式、不同经验水平的人们。BeeWare 项目致力于发展和维护一个多元化、热情好客的社区。
为践行这一承诺,我们向所有希望参与贡献的成员提供开放的导师计划,并严格执行行为准则。任何违反该准则的举报——即使涉及资深社区成员——都将受到尊重并得到妥善处理。
健康且可持续¶
同样重要的是,要确保社区的可达性和可持续性。不幸的是,“真正的”开源项目必须完全由志愿者开发,这已经成为开源文化的一部分。这对许多团体来说是一个准入门槛–只有那些有空闲时间的人才能把空闲时间花在志愿服务上。
这种现象还经常导致贡献者出现职业倦怠及其他心理健康问题。抑郁、焦虑和职业倦怠在软件开发社区中如此普遍,绝不应被视为荣誉徽章,或证明开发团队有多么敬业。 这需要直面解决的问题,其处理方式应与修复软件漏洞相同——既要立即实施临时解决方案,又要制定长期计划消除问题的系统性根源。
虽然我们非常重视志愿者的贡献,但我们也知道,仅靠志愿者的努力并不能建立一个健康和可持续发展的社区。因此,资金的可持续性是 BeeWare 项目运作的一个重要考虑因素。作为一个社区,我们不会忽视资金在提供资源,使人们能够开始并继续做出贡献方面所起的作用。作为一个社区,我们将为个人提供可接受的机制,以有意义的方式使他们的工作货币化,并在可能的情况下,为人们的工作提供补偿,而不损害开源开发的理想。
目标¶
BeeWare 项目的最终目标:像 Django 为网络软件所做的一样,为移动和用户面对的软件这样做:为用户提供一套工具和库让他们能够开发丰富的原生用户界面,并将其部署到他们的设备上。这包括:
- 使Python能够在不同设备上运行的工具,
- 用于打包 Python 项目使其能在这些设备上运行的工具,
- 用于访问设备原生控件和功能的库,
- 用于开发、调试、分析这些项目的工具。
我们的目标是,这套工具将足够简单易用,适合新手在类似 Django Girls 的环境中使用;但又足够强大,强大到可以用来推动下一个 Instagram、Pinterest 或 Disqus。
最重要的是,它的目标是作为一个开源社区完成所有这些工作。开放源代码开发流程已被证明是开发稳健可靠软件的最可靠方式,而且任何人都可以访问该软件意味着每个人都可以从同一套优秀的工具开始,无论是专家还是热心的业余爱好者。
无处不在的Python¶
一个现代计算项目不能忽视过去 10 年中计算领域的最大发展。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 编写应用程序的。