新建贡献者常见问题解答#
这是一组由开源开发新手和NetworkX首次贡献者提出的常见问题。
问:我是开放源码的新手,愿意为NetworkX做出贡献。我该怎么开始呢?#
要为NetworkX做出贡献,您需要三样东西:
源代码
发展环境
关于你想贡献什么的想法
有关步骤1和2的详细信息,请参阅 Development Workflow 。第3步没有通用的答案。有许多方法可以改进NetworkX,从添加新算法、改进现有算法、改进测试套件(例如,增加测试覆盖率)和改进文档。找到起点的“最好”方法是追随自己的个人兴趣!尽管如此,还是有几个地方可以查看一下从哪里开始的想法:
The issue tracker lists known bugs and feature requests. Of particular interest for first-time contributors are issues that have been tagged with the Good First Issue or Sprint labels.
这个 Algorithms discussion 包括用户希望拥有但尚未包含在NetworkX中的算法的列表。
问:我发现了一个我感兴趣的问题,可以分配给我吗?#
NetworkX通常不会将问题分配给贡献者。如果您在问题跟踪器上发现了您想要处理的问题或功能请求,您应该首先检查问题线程,以查看是否有任何链接的拉请求。如果没有,那么可以打开一个新的公关来解决这个问题--不需要请求许可--并且不要忘记在公关评论中引用问题编号,这样其他人就知道你正在处理这个问题!
问:我如何为美术馆贡献一个榜样?#
示例库是贡献的好地方,特别是如果您有一个有趣的应用程序或使用NetworkX的可视化。该图库是使用 sphinx-gallery 从存储在 examples/
目录。
例如,假设我想贡献一个可视化的示例 complete graph
使用 circular layout
。假设您已经遵循了以下步骤 setting up a development environment ,首先创建一个新分支:
git checkout -b complete-graph-circular-layout-example
备注
通常,为您的分支机构指定一个描述性名称是个好主意,这样可以更容易地记住您正在处理的内容。
现在您可以开始研究您的示例了。遵循圆形布局的思想,您可能会在 examples/drawing
被叫 plot_circular_layout.py
内容如下:
import networkx as nx
import matplotlib.pyplot as plt
G = nx.complete_graph(10) # A complete graph with 10 nodes
nx.draw_networkx(G, pos=nx.circular_layout(G))
备注
可能还不清楚一个例子到底属于哪里。我们的圆形布局示例非常简单,因此它可能属于 examples/basic
。它的出现也是有意义的 examples/drawing
因为它涉及的是可视化。如果您不确定,请不要担心:这样的问题将在审查过程中得到解决。
在这一点上,您的贡献已准备好接受审查。您可以在您的 complete-graph-circular-layout-example
对其他NetworkX开发人员可见的分支 `creating a pull request`_ _.
参见
这个 developer guide 提供了有关创建请求请求的更多详细信息。
问:我想做一个特定的功能。我如何在源代码中找到它?#
假设您已按照以下说明操作 setting up the development workflow ,有几种方法可以确定在 源代码 定义了特定的函数或类。
例如,假设您有兴趣更改 kamada_kawai_layout
函数,因此需要知道它是在哪里定义的。在IPython终端中,您可以使用 ?
-源文件列在 File:
字段:
In [1]: import networkx as nx
In [2]: nx.kamada_kawai_layout?
Signature: <clipped for brevity>
Docstring: <clipped for brevity>
File: ~/networkx/networkx/drawing/layout.py
Type: function
命令行实用程序,如 grep
或 git grep
也非常有用。例如,从NetworkX源目录:
$ grep -r "def kamada_kawai_layout" .
./networkx/drawing/layout.py:def kamada_kawai_layout(
问:决定是否包括新算法的政策是什么?#
对于NetworkX中的新算法,没有官方政策设置明确的纳入标准。如果新的算法已经发表并被其他人引用,那么它们更有可能被纳入其中。比引文数量更重要的是建议的增补内容与项目的匹配程度 使命与价值观 。