我想修复一个错误。我应该从哪里开始?

虽然我不是专业的程序员,但我写过几个程序。然而,如今每个工程师和科学家也都要学一点编程,所以我习惯用Python、C和MATLAB来写程序。现在我想为Ubuntu和它了不起的人们贡献一点力量,修复一个错误!
我看了一下这个简单任务的列表,发现大部分对我来说并不容易修复,因为我觉得它们需要花费很多时间去深入研究,而我没有那么多时间。不过我找到了this one,看起来可以管理,并且是一个很酷的功能。
由于我从未写过补丁或发布过程序给大众使用,所以我不知道该从哪里开始。我该如何解决这个问题的第一步是什么?
总而言之:我应该在哪里开始修复这个问题?
2个回答

回答这个问题可能会变得冗长而复杂,所以我将指引您去寻找可用的资源,而不是在这里重复解释。
文档
1. Ubuntu开发设置 2. 如何修复错误 教程
我们在整个周期中举办活动,帮助像您一样的人们。特别是我们在IRC上举办Ubuntu开发者周,这是一个实时教程和问答工作坊。如果您想参加,二月底将有一个活动!
以下是过去一次活动的两个日志,供您参考:
- Ubuntu开发入门 I - Ubuntu开发入门 II

寻找机会的地方

  • Harvest - 这个工具会遍历Launchpad中的所有补丁和软件包(甚至还会查找其他发行版)以寻找补丁。其中许多补丁可以被获取、应用、测试,然后在Ubuntu中修复,并发送到上游。
  • Cleansweep - 这是一个列出了在Launchpad上附加到错误报告的补丁的清单。这些补丁可能有用,也可能没有用,但仍然值得一看。

获取帮助

通过邮件列表或IRC联系MOTU是解决个人问题的好方法:

反馈

我们花了很多时间重新制作这份文档,希望能尽可能简单易懂。如果您能记录下您的使用体验以及对我们改进这些内容的建议,将对我们了解如何让它对像您一样的人更好用非常有帮助。


Jorge的一般性回答是进入Ubuntu开发的很好的介绍,但让我们试着更仔细地看一下你具体的问题...
Apport的主要上游开发者和Ubuntu维护者是同一个人。这对你来说简化了事情。不需要学习打包和补丁系统,最简单的方法是直接在上游代码上工作。
Apport的开发托管在Launchpad上。它使用分布式版本控制系统bazaar来管理其源代码。修复你的错误的第一步是获取源代码。如果你以前没有使用过bazaar,可以从bazaar in five minutes tutorial开始。
使用以下命令安装bazaar:
sudo apt-get install bzr

拉取apport的源代码:
bzr branch lp:apport

现在你可以开始进行编程了。和大多数版本控制系统一样,当使用Bazaar时,每次提交只做一个改动是个好主意。同时,你应该写出有信息量的提交消息,这样更容易被审查你的改动。当你准备好进行第一次提交时,请运行以下命令:
bzr commit -m "My commit message. Did foo to bar in order to achieve baz."

继续进行改动和提交,直到你满意为止,确保bug已修复。在最后一次提交时,你还可以通过在提交命令中附加--fixes lp:<bug_number>来标记它作为修复该bug。现在,你可以准备将修改提交进行审查和合并。
首先,你需要将其推送到Launchpad,以使其公开可用:
bzr push lp:~<launchpad_username>/apport/<branch_name>

您的分支现在可以在以下位置找到:

https://code.launchpad.net/~<launchpad_username>/apport/<branch_name>/

在分支中运行bzr lp-open将会在浏览器中打开该位置。
现在我们想要提出合并请求。在那个页面上,选择“提出合并请求”。

propose for merging

在下一页中,选择您的目标分支并概述您的更改。

describe merge

你现在将拥有一个活跃的合并提案。

active review

维护人员将会审查您的更改。如果他们认为合适,将会合并并在下一个版本中提供。或者,该提案可能会被标记为“需要修改”,维护人员将与您讨论应在合并之前进行的其他更改。如果发生这种情况,请不要将其视为对您工作的个人拒绝。当首次为一个新项目做贡献时,通常会有一些小事情,比如编码风格,您可能不太了解。