我应该如何为(主要是)废弃的GitHub项目做出贡献?


43

我最近一直在尝试在GitHub中进行开源协作,并且遇到了一种情况,我对此感到好奇,这是首选的处理方式。

大约一个月前,我在GitHub上找到了一个项目库,该项目已经使用了一段时间,并且在其中找到(并修复了)一些错误。

作为与GitHub合作的最初尝试,我发现该回购似乎是最近活动量最大,修复了一个错误,添加了单元测试,推送到GitHub并发出请求的仓库。在几个小时内,我分叉的仓库的维护者接受了PR,并合并了其他也在等待中的PR。

受此刺激,我修复了另外三个bug,分别在我自己的repo的单独分支中,并分别提交了问题和请求请求。

那是一个多月前的事,从那以后,请求就一直没有动过。我分叉的存储库的用户似乎并不活跃,在过去的一年中,他在GitHub上总共贡献了7次,并且自从我提出第一个请求请求以来,该存储库就没有任何提交。

所以我的问题是:

在这种情况下如何进行?理想情况下,我想避免关闭库并在我自己的存储库中进行一堆未合并到父存储库中的更改来避免造成数据库碎片。尽管如此,我仍想继续进行错误修复并添加功能,但是如果我将所有内容合并到我的master分支中,并基于该分支建立所有新的修复程序,那么如果我分叉的仓库的维护者回来了,我就赢了。无法针对每个功能/错误修复将所有更改拆分为单独的拉取请求(我已经阅读到,拉取请求通常应该是每个功能或错误修复的一个拉取请求)。

我应该保留一个与原始存储库保持一致的分支,将所有新分支作为该分支的基础,然后将所有提交合并到我的主分支中吗?每次我需要将新更改合并到我的主分支中时,这似乎将给我留下大量的分支和越来越繁重的任务。

应对这种情况的典型方式是什么?在原始贡献者不在的情况下,一个项目将被放弃而无法审查新的请求请求,这似乎很普遍。是在这种情况下,有人应该承担起并掌舵吗?如果原始贡献者再次回来并希望再次从事该项目,则似乎会造成碎片。


4
当您发现这个问题很有趣时,您可能也对新的开源stackexchange网站的建议感兴趣。
菲利普

想要分享给我们好奇的旁观者的电子邮件对话内容是什么?:)
winkbrace

@winkbrace到目前为止,什么都没有。我没有收到任何回复,但是我只在两天前发送了电子邮件。我会告诉大家是否有进展。
JLRishe 2015年

Answers:


39

我还没有遇到过这种情况,但这就是我会尝试的方法:

尝试联系所有者

也许他们真的失去了兴趣,但愿意将项目转移给其他人,特别是已经表现出体贴承诺的人。

但是也许他们只是忙于其他事情(工作,假期,疾病,其他项目)而没有时间来处理您的PR,但计划以后再做。

或者,也许他们真的出于某种原因永久停止了该项目的工作。

不问,您将找不到答案。

与社区保持联系

当然,还有其他人为该项目做出了贡献,或者至少使用了该项目。检查谁分叉了该项目(即使他们没有进行任何更改,他们可能仍然对看到这个项目蓬勃发展感兴趣);检查谁举报了问题或对问题进行了评论。也许在GitHub之外还有一个社区,例如邮件列表,论坛或StackOverflow成员。

我是您最终真的要接手该项目,您可能需要他们的支持。他们需要知道新的主存储库在哪里。

继续提出良好的要求

这向所有者和社区表明您对此很重视,让他们来判断您的贡献。


1
谢谢。经过更多搜索后,看来此建议类似于npm软件包针对此类情况提供的指南。我刚刚通过电子邮件发送给所有者,将看到他/她的答复。
JLRishe

当回购的“所有者”实际上是一个拥有数十个用户的组织时,很难找到能够批准特定回购的PR的人。
cowlinator '18

15

如果在任何地方都找不到原始存储库的所有者并且在相当大的程度上找不到原始存储库的所有者,那么我将发布自己的存储库,作为项目的其他版本。

这样,您就可以接管该库的开发工作,而不必再次对其进行更新就不会死掉。如果原始所有者关闭了回购协议,那么全世界仍然可以使用分叉版本。


1
是的,只需添加fork项目,然后在中README.md,留下引用并“感谢”原始所有者。
Jared Burrows'2

感谢您的回答(+1)。您肯定会提出一些要点。我可能最终会诉诸于此,但就目前而言,我将遵循oefe的建议,看看是否可以通过电子邮件与回购协议的所有者联系。
JLRishe

当然,只是不要让存储库被遗忘。必须在Github的深处某个地方隐藏很多好的代码,因为原来的所有者已经没有了。
cllamach

我处于类似情况,可能需要采用此选项-项目的原始所有者未响应重复的联系尝试。是否保留项目名称并继续从上一个正式版本开始增加版本号?我担心如果更改名称,项目的现有用户将很难找到它。
pericynthion 2015年

1
我可能也在这种情况下。但是原始项目已经在Bower注册。保留名称将意味着必须让原始作者为您取消注册,或者与Bower维护人员联系并要求他们干预。不过,我不太在乎后者。重命名可能是最好的选择。
劳伦斯·西恩

0

由于当今大多数中小型的免费和开源项目都托管在github,gitlab或类似项目上,因此可以使用其Web API 自动化某些过程

假设原始仓库位于https://github.com/someUserX/projectY/,则过程如下所示:

  1. (“手册”)以不同的方式联系原始作者,至少通过其git committer电子邮件和问题(如果启用)联系原始作者。

    如果几周内收到许可或没有响应,则可以运行一个脚本,该脚本将使用主机Web API执行以下步骤:

  2. 创建一个名为的新(GitHub)组织projectY,并在其中分叉原始仓库->https://github.com/projectY/projectY/

  3. 将原始作者和拉取请求的所有作者(已合并并仍处于打开状态)添加为组织管理员
  4. 在新fork中重新创建原始回购中的所有(开放)拉取请求
  5. 对(开放)问题做同样的事情
  6. 通知所有管理员新的仓库
  7. 创建对旧存储库的最后一个拉取请求,添加“放弃” /“存档”通知,并链接到自述文件顶部的新存储库

我用这种方法看到的主要问题是,一些“错误的”贡献者可能会获得管理员访问权限,但是正如自由软件推广者Pieter Hintjens解释的那样(例如,在本次演讲中),错误的提交可以简单地还原,并且不构成任何线程一个长期存在的项目,可以帮助坏的提交者成为一个好的项目。
houiui
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.