简介: 创建一个成功的 Python 开源项目不仅仅是编写有用的代码。它还汲及社区参与方面,并能增加合作机会、提高技艺和增加支持。本文将探索最佳实践,帮助您创建自己的成功项目。
Python 开源项目的生态系统丰富多样。您可以在这一雄厚的基础上完成下一个开源项目的生产。此外,这也意味着,有相应的一套社区规范和最佳实践。通过遵守这些规范并在项目中应用这些实践,可以使您的软件获得更广泛的采用。
本文介绍了拥有广泛用户群体的大小型项目构建实践。本文在此提供的建议合理有效。但是,结果可能有所不同,因此请不要将此建议看作是金科玉律。
首先,我们将讨论解耦流程如何带来一个更加强大的社区,在开源软件的编写、维护和支持方面拥有更高的生产率。
在 2011 年的 DjangoCon 会议上,David Eaves 发表了相关的主题演讲,清楚地说明了虽然协作与合作定义相似但却有细微的差别:
“我认为协作与合作不同,它需要项目的各参与方共同参与来解决问题。"Eaves 还撰写了一整篇文章,详细介绍 GitHub 如何成为开源工作方式创新的驱动力—特别是在社区参与方面。在 "How GitHub Saved OpenSource"一文中,Eaves 表示:
“我认为,只有当参与者能够参与到低交易成本合作中,并且最大限度地减少高交易成本合作的时候,开源项目才能发挥最大的作用。开源的精神在于它并不需要一个团队相互协作来讨论并处理每个问题,而是正好相反。”接着,他还谈论了派生 (forking) 的价值,以及如何在人群中支持低成本合作,使之能够在无需许可的情况下推进项目,从而降低高额的协作成本。该派生可推迟对于协作的需求,直到有解决方案合并到其中,这样能使实验过程更为快速、更具动态。
您可以用相同的方式分享项目,并实现相似的目标:增加低成本合作,同时最大程度地减少项目编写、维护和支持方面的昂贵协作。
从零开始,创建新的、有创意的—或与现存有所不同的东西。没有什么可以比得上启动一个项目,并与全世界的人们一起分享您所努力的成果而让人更加兴奋。
与维护不同,当您进行编写时,您是在创建新东西,而不是修改或修订某些已存在的东西。编写和精心创作项目是一种艺术也是一种科学。其他人将会看到这个实现,并对此代码的质量进行评判,您的名字将永远与这个项目联系在一起。
因此,相应地了解工匠的思维模式以及编写软件的方法至关重要。编写新项目不仅仅意味着生成代码:项目的创作与完善包括编写易于阅读且样式美观的代码,创建可验证项目功能的测试,以及生成全面且有用的文档。
工艺 通常是指手工制造并具有专业技术要求的艺术行为或职业,通常指小规模生产的物品。您可以将其定义延伸到软件中,就此意义而言,软件工匠关注的是软件的质量而非数量。
对于工匠来说,重要的是,该产品不仅要功能实用,还必须吸引人。具体地讲,软件工匠要确保代码简洁且赏心悦目,应用程序编程界面 (API) 美观,文档和测试让用户感觉这是一种可靠的产品。
以这种思维进行工作得到的奖励是能够在生产开源软件中获得乐趣源泉:您不用理会截止日期、客户端以及其他一些外部需求。您可以慢慢地享受创造美丽事物的过程。
为您的项目获取一个 Twitter 帐户,在其中人们可以公开与您讨论您的。Twitter 帐号可以作为发表项目公告的一个很好的地方。
Python Enhancement Proposal (PEP) 8 是关于 Python 样式的详细指南,您应基于此指南(或至少您项目的样式指南)构建 Python 项目。遵守 PEP 8 教条并不是那么重要,但是如果更接近 PEP 8,那么对于其他 Python 开发人员以标准的 Python 社区样式提交简洁补丁会更加容易。
除了样式一致性外,代码 linting 的概念在错误捕捉(比如缺失导入和未定义变量)中非常有用。除了样式检查程序,还有许多 linter(或工具),可帮助检查代码以查找与默认规则集或已配置规则的偏差。最受欢迎的实用工具是:
pyflakes pylint pep8