修改开源应用程序


9

当我想向最初未编写的开源应用程序添加功能时,一般的工作流程是什么?我怎么知道代码?如何找到需要更改或添加的位置?我如何实际进行更改而不破坏其他内容?我如何测试一切仍然正常?
这样的项目的一般准则是什么?


2
您还应该将更改(通常作为补丁)提交给项目,以便其他人可以受益。

Answers:


6

有一些协议,每个人或多或少都会随着时间的推移而废止它,但在这里却展开了。

  • 您下载分布式源。
  • 您可以自己开始浏览代码

    • 如果它是已编译的程序,那么您现在将学习如何编译它。
    • 如果编译失败,请向作者/邮件列表报告并询问方向
  • 如果您不太了解代码的话...

    • 好吧,不,您不会在附近问他们。
    • 您放弃它,因为您可能达不到标准,也无法提供任何实际帮助。
    • 如果作者接受功能请求,则可以提交功能。
  • 其他

    • 您会找到要更改的位置。

    • 如果您想知道一些小的细节,请询问作者/邮件列表,并说明您的意图。

    • cd到发行版的主目录(最上层的目录来自于untarring / unzipping)

    • diff -ur . > mypatch.path

    • 您向mypatch.patch作者发送了解释说明您做了什么,为什么这样做,并且(因为您已经在那儿)明确声明您放弃了补丁对他们的权利。

  • 如果作者不喜欢您的文稿

    • 您检查是否有办法将您的修改作为某种插件发布

      • 在这种情况下,现在您就可以成为插件维护者了
    • 其他

      • 您可以在博客上了解情况,然后在其中发布补丁,可以免费下载并尝试使用您的解释和咆哮,

      • 您现在困扰,然后是错误系统/邮件列表,试图为您的补丁购买支持。避免被禁止。

    • 在所有这些情况下,都不会产生代码分叉,因为这是一个非常累人和无聊的过程,您几乎无法跟上时间:这会让用户感到悲伤和困惑。实际上,只有在一家大公司试图在某项OSS上欺负他的决定时,才应该发生叉子。

  • 其他

    • 您会收到该作者的进一步指示

在侧面:该diff -ur .补丁有一个最新的替代方法,是github方法

  • 您以您的名字在github上“分叉”了他们的代码
    (现在您的帐户中有他们的代码的副本)
  • 将您的git连接到您的个人副本,
  • 对此进行修改,签入,
  • 并告诉主要作者看一下您的github项目。

  • 如果他们喜欢,他们将同步进行

  • 否则,您可以在博客上链接“ gitfork”。

一切都好,直到您建议OP激怒产品作者不接受新功能补丁为止,尚不清楚这是有趣还是严肃的,无论哪种方式,有效地像个小孩子一样向全世界哭泣是非常糟糕的形式,因为产品团队不喜欢/想要您的新功能补丁。无论如何,将其张贴出来,但如果不被接受,则总是宽宏大量,无论该决定看起来多么不合逻辑。-1-仅供参考,如果您删除我的选票,我会很乐意推翻。
ocodo

我要更改的应用程序遵循严格的标准,而我的更改将违反该标准。我认为我什至无权要求应用我的补丁。
丹妮,

@Slomojo OSS充满了不成熟的人,这种事情一直在发生,每个人都应该准备好像a子一样工作,然后基于有时是坚实的有时是无聊的被拒绝。然后,至少,您始终有机会对此大肆吹捧,并找到认为您可能是对的人。现在,出于恶意分叉,这将是错误的步骤,而且是非常愚蠢的。
ZJR

@Dani哈哈,您真的必须采取共享补丁并大声疾呼。避免分叉,因为它会消耗您的生命,感觉就像无薪地连续重构。...无论如何,请检查邮件列表和错误报告系统是否存在,以查看是否有人会对这种扩展感兴趣,也许您并不孤单。Aaa,最好的是,他们可以扩展一些API或一个插件来插入您的更改。在这种情况下,这始终是最佳选择:维护插件。...将在其中进行编辑
。– ZJR

2
如果有自动测试用例,请在提交补丁之前运行它们。
oenone

0

通常。

如果这是一个随机的OS项目,则很可能会在此处和此处修复一些小错误。

最终,您将提交一些更改,作为“补丁”。

通常,如果您的工作做得好,您将获得提交权限。

由于这个问题,我在谈论一般话题,尽可能模糊且不具体

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.