Python的最佳实践——如何为Python开源项目做贡献

380 阅读5分钟

我们喜欢Python的原因之一是它丰富的生态系统,包括无数的模块框架--以及所有使这一切发生的热情的开发者。

一个想在一个令人兴奋的项目中获得一份好工作的开发者需要以某种方式展示他们的编程技能。

做到这一点的最好方法是为开源 项目 做贡献。这样,你不仅可以分享你的专业知识,还可以帮助Python开发者提高工作效率。

因此,假设您已经启动了一些副业,现在想为一些更受欢迎的 Python 开源项目做出贡献。

你从哪里开始呢?

了解更多关于项目的信息

在为一个项目做贡献之前,你需要了解它是怎么回事,它是如何工作的。这意味着你必须自己去尝试。

只有当你觉得一个项目有趣和有用时,对它的贡献才有意义。

如果你试图在没有使用软件的情况下为一个项目做贡献,那么你失败和放弃的可能性就很大。如果不了解软件的工作原理,就不可能建立一个新的功能或修复一个错误。在跑之前先学会走路。

检查它的状态

挑选一个活跃的项目是至关重要的。如果你向一个休眠的或未维护的项目发送拉动请求(PR),你的工作可能永远不会被审查和合并。而这只是在浪费你的时间和脑力。

一定要找一个有活跃社区的项目。这样你就能得到关于你的代码的即时反馈。你的贡献不会被浪费。

但你如何判断一个项目是否活跃?幸运的是,像Github这样的平台提供了大量的数据,表明一个项目的活动程度。

以下是你可以通过观察来判断一个项目是否活跃:

  • 贡献者- 贡献者的数量是否在增长?如果是的话,这说明社区对这个项目很感兴趣,创建者可能更愿意接受新人。
  • 提交--最近的提交是多久以前的?如果你看到一个一周或一个月前的提交,这表明该项目正在被维护,为它做贡献是一个好主意。
  • 维护者- 有多少人在维护这个项目?他们越多越好。这意味着该项目更有可能吸引高技能的导师来帮助你的代码。这是迄今为止作为一个程序员提高的最好方式。
  • 聊天室里的活动- 你看到项目的聊天室很忙吗?这意味着你会很快得到问题的答案。

使其成为个人,以建立信任

如果不首先与项目运营者建立信任,要让你的贡献被接受是不容易的。

随意创建拉动请求并不能让你达到目的。但个人联系会让你达到目的。

这就是为什么接近你想贡献的Python项目背后的人,并与他们取得联系是明智的。你可以在拉动请求讨论或问题页面上提出问题,甚至可以使用Twitter与主要开发团队联系。

建立关系需要时间,所以不要期望立竿见影。但是一旦你让自己与项目维护者更加熟悉,你最终会得到被接受的机会,事情就会从那里开始。

从小处着手

在与项目创建者接触时,问他们你是否可以帮助一些小事。它可以是修复错别字,甚至是清理文档。

开源项目的维护者很欣赏第一次贡献者提供帮助的简单任务,比如改进项目的文档,原因很简单,因为没有其他人愿意做。

聪明的维护开源项目的开发者可能会问:"想象一下,你会想从这个文档中了解你所需要的一切--你会如何改进它?"他们意识到,这项任务意味着潜在的贡献者将从里到外了解这个项目。

从文档开始,提供了一个极好的机会,让你的脚踏入大门,让你的名字为人所知。这应该为你将来为项目做贡献的机会做好准备。

哪些 Python 开源项目是对初学者友好的?

有很多项目欢迎初学者做贡献。你可以在这里找到此类开源项目的丰富列表。

下面是我们推荐的几个:

  • coala-- 这个库提供了一个统一的命令行界面,用于整理和修复代码(不仅适用于Python)。
  • Ansible - 那是一个简单的IT自动化平台。
  • cookiecutter - 一个命令行工具,可以从项目模板(称为cookiecutters)()创建项目,例如,Python包项目或jQuery插件。
  • scrapy - 这个库提供了一个用Python编写的快速和高水平的网络爬行和刮擦框架。

我们的Python开源项目

我们很感谢Python社区多年来帮助我们提高技能。这也是我们想回馈的原因。我们组织、主持和赞助社区活动。但我们也喜欢成为Python发展的一部分。

我们目前运行着四个开源项目:

Djoser

这是我们从REST API层面实现登录机制、用户账户设置和管理的库(使用Django REST框架)。我们刚刚发布了djoser 2.0.3,其中有大量的新功能。例如,我们在应用设置中为标准的djoser视图增加了设置 "permission_classes "的选项。

控件(Djops

Djops是我们用于基于Docker的Django项目的cookiecutter。安装它可以得到一个Docker-Compose项目,其中包括:

  • 一个PostgreSQL数据库
  • Redis
  • Django项目
  • Celery工作者
  • Celery Beat

Django-templated-mail

这个库允许使用Django模板系统发送邮件。它是django.core.mail.EmailMultiAlternatives CONSOLAS的一个简单包装,利用Django模板系统将邮件内容存储在一个单独的文件中。

Django-getpaid

这个开源库为支付中介提供了一个高度可定制的、多功能的中介。