如何应对开源项目中的程序员难题?

日期:2018-06-19 浏览:6

这个问答是每周发布的一系列帖子的一部分,这些帖子强调了技术爱好者遇到的常见问题,并由100多个问答站点组成的免费社区网络Stack Exchange的用户回答。nathan 055问:

我有一个特定站点的开放源代码脚本(我 m试图不叫任何名字),我和其他一些开发人员最近搬到了GitHub。自从我们搬到新系统后,有几个新的开发人员加入了我们的行列,特别是一个非常活跃的开发人员。不过,这个活跃的项目已经开始改变很多项目。

首先,他删除了我们的版本控制系统(不像Git,而是像Git那样——我们称之为版本4 . 1 . 16 ),并说最好是在我们认为代码准备好的时候简单地将代码推送到站点。现在没有集中放置发行说明的地方,这已经令人讨厌了。

让我准备打包走人的是推送脚本。项目的另一个开发人员编写了一个简单的基于Python的推送脚本。由于我们在不同的地方保持脚本的多个版本在线,我开始用图形界面来编码一个更大的Java程序,取代Python脚本。我继续在IRC上通知大家,程序员给了我一个非常讨厌的回答,说老Python脚本可以做我能做的一切,而且轻量级多了(他还评论说Python比Java好,等等)。我查看了旧推送脚本的代码,发现他所说的所有功能都不存在。

所以现在我想知道该怎么办。我花了很多时间在这个项目上,所以我不想只是站起来离开,但是我发现和这个新开发人员一起工作很困难。另一方面,他现在是项目的第一提交者,提交量甚至超过了主要开发人员。我真的不知道该怎么办。还有人经历过这个问题吗?如果是,你做了什么?

请看这里完整的原始问题。

我们的路还是高速路gbjbaanb回答( 45票) :

你可以退出。不是最有建设性的事情,但有时这是唯一的选择。如果你这样做了,不要坐在那里抱怨你不得不放弃它,把那种能量直接投入到别的事情中去——继续换句话说。你可以用叉子叉。你没有理由要和任何人一起工作。福克,改进代码。让其他人继续自我陶醉。你的新项目将简单地与旧项目竞争,它由你决定你是否成功,或者旧项目是否在用户和功能方面胜过你。您可以与项目中的其他开发团队一起表达您的关切。不要把它变成个人的,但是要指出你对代码流失不满意,或者缺乏既定的质量流程,或者不高兴新的决定没有得到大家的同意就被推出。你要么被告知没有什么不对的地方可以改变,要么你会得到其他一些人的同意,团队需要修复。这可能会导致捣乱分子失去承诺访问权。也许大家都同意,有些改动不是改进,项目需要恢复。(后一种选择是最有可能的结果,除非它变成根深蒂固的观点的大争论。)当有人来改变你已经习惯的安全舒适的习惯时,可能会很困难,但可以说,有人来改变过去舒适的习惯本身就是一件好事。

相关: 加入前如何评估开源项目?

你站在哪里?本·麦考密克回答( 33票) :

你的角色有点不清楚。答案取决于你如何适应。

如果您正在领导项目并控制git存储库:

收回控制权。如果这个人不咨询你就做出你不喜欢的承诺,删除他的直接承诺访问权限。他可以划分项目并提出合并提交的请求。这就是开源应该如何工作,直到用户建立信任。你不需要也不应该马上给予完全的访问权限。

如果其他人控制了repo :

向控制者表达您的担忧,并鼓励规划和批准变更的过程更加严格。如果领导不服从某个过程,那么你可以选择接受现状并继续做出贡献,你可以把项目分成你自己的版本(带上任何同意你的人),或者你可以选择离开并做其他事情。无论如何,你不需要继续处理这个问题。

处理猎鹿人的回答( 15票) :

请原谅我的直言不讳,但你的帖子读起来像是咆哮。

你说是另一个一个想要盲目改变的人,但是当你谈到你的这个新的闪亮的Java程序时,你会自相矛盾。

休息一下;这不是单行道,请努力寻求妥协(如果你想继续做这个项目——分叉是最简单的决定,但它不会让你有任何有用的地方,尽管它可能打击你的自我)。

请仔细考虑项目中的分工——如果你没有明确的界限告诉你谁擅长什么,地盘之争是不可避免的。是的,有时候你得相信别人的判断。

拿Google的advicekurovision答案来说( 4票) :

Google几年前就此进行了几次技术会谈。看着他们:这里,这里。简而言之:

理解:理解你的社区在项目上工作的动机与所有其他机会成本,并保留这些原因。强化:建立一个有礼貌、尊重、信任和谦逊社会规范的健康社区。识别:寻找有毒人员的蛛丝马迹(太多无法列举,但如果你问这个问题,你可能已经知道了很多)。消毒:保持冷静,站稳脚跟,对侮辱、轻视、挑战、不尊重等保持不动。,并坚持加强你的社区规范。如果你更喜欢阅读而不是观看,那么也有一个完整的书面提纲。

找到更多答案,或者把自己的答案留在原来的帖子里。在程序员处看到更多这样的问答,这是一个专业程序员对软件开发概念问题感兴趣的问答网站。如果您有自己的编程问题需要解决,请登录程序员并提出问题(免费)。