如何为您的开源项目找到合适的工具





0/5 (0投票)
一系列技巧,帮助您为开源项目找到合适的管理工具。
引言
我们的 DNN 即将迎来 11 周年纪念,但即使过了这么多年,我们仍然没有找到一套完美的项目管理工具。市面上有如此多的不同选择,而且每年都有更多新的选择出现。在 DNN 最初启动时,现在市场上的领导者们甚至都不存在。
最近,我们决定将我们的源代码仓库迁移到 GitHub,并将我们的问题跟踪器迁移到 Jira。我们之前的源代码仓库和问题跟踪器都是很棒的工具,但它们已不再符合我们项目的需求。
寻找合适的工具就像寻找一个合适的家
我仍然清晰地记得刚开始找公寓的时候。我的预算并不像我希望的那样宽裕。那里没有漂亮的游泳池、精心打理的草坪,甚至连带顶棚的停车位都没有。我很快列出了一份“必须有”和“最好有”的清单,然后根据这个清单寻找合适的房源。
尽管我没有找到我的梦想家园,但我确实找到了一个能满足我需求的地方。最终,我搬出了那个公寓,住进了一个更大的公寓,最终拥有了自己的房子。DNN 也遵循了类似的路径,随着我们需求的改变,从一个项目托管服务迁移到另一个。
为您的开源项目寻找一个好的项目托管服务,就像在找公寓或房子一样。作为一个小型项目您可以不关心的功能,随着项目的增长可能会变得至关重要。以下是我过去十年管理 开源项目 时学到的五个技巧。
技巧 #1:地点、地点、地点
任何成功的开源项目的关键在于您的社区。建立社区的一部分就是让新用户更容易找到您的项目。就像房屋一样,将项目托管在热门地点并使用流行的工具,将更容易让用户找到并参与到您的项目中。
您选择的问题跟踪器和项目托管服务,能很大程度上反映您的项目。如果您的项目面向 Microsoft 技术栈的开发者,那么您可以选择托管在 CodePlex 这样的网站上。但是,如果您想吸引 PHP、Ruby 或 NodeJS 开发者,那么这些环境有更好的项目托管选择。
在为您的项目选择托管地点时,环顾四周,看看那里还有哪些其他项目。是荒凉的“鬼城”还是一个新兴的项目社区?多年来,SourceForge 托管了许多最新和最大的开源项目;然而,近年来,您会发现大多数热门项目都托管在 GitHub 上。
技巧 #2:别忘了您的社区
许多开源项目最初只是为了满足几个人需求而开始的。随着项目的增长,它开始发展出一个 用户和项目贡献者社区。在寻找一套完美的项目管理工具时,请务必考虑将使用这些工具的社区成员。
您的社区更喜欢使用 TFS、SVN、Mercurial 还是 GIT?用户创建新的 bug 报告有多容易?社区与项目团队之间的沟通呢?项目托管服务是否支持论坛、wiki 甚至项目页面?在决定哪些工具最适合您的项目时,花几分钟从社区成员的角度来考虑。
技巧 #3:规划增长
每个开源项目一开始都很小。您可能只有几个代码文件以及一些简单的安装和使用说明。随着项目的增长和社区的壮大,曾经适用的工具将开始给您的项目带来问题。
在寻找项目管理工具和托管地点时,请务必考虑随着项目增长可能需要什么。集成的的问题跟踪器能很好地处理几十甚至上百个问题吗?您可以参与项目的贡献者数量是否有限制?您能否禁用已经过时的功能?
技巧 #4:规划迁移
最终,您的项目可能会面临迁移所有或部分管理工具集的可能性。如果您的项目非常成功,您最终可能会超出许多当前项目托管服务所提供的能力。
您当前的托管服务提供商可能跟不上现代开发趋势,或者您的提供商可能变得停滞不前,而所有新的开源项目都已迁移到新的“社区”。
无论出于何种原因,您都需要考虑如何将您的代码和数据迁移到另一个服务。在 DNN 项目 的过程中,我们使用过四个不同的开源项目托管提供商、四个不同的源代码仓库和三个不同的问题跟踪器。
每一次迁移都要求我们不仅要评估将数据迁移到新工具的难易程度,还要评估将来我们最终不再使用该工具时,将数据从该工具中迁移出来的可能难易程度。对于我们的前两个项目托管提供商,我们没有考虑这一点,结果丢失了大量的项目历史和数据。
不要让这种情况发生在您身上。提前规划迁移,当需要迁移时,会更容易。
技巧 #5:集成
每个开源项目都会发现它在很大程度上依赖于四到五种关键的项目管理工具:源代码仓库、问题跟踪器、讨论论坛、项目页面和一个 wiki。您的项目可能不需要所有这些工具,或者您可能希望用您自己的替代工具来替换开箱即用的工具。
使用单个提供商提供的工具的好处是,它们都已集成,并且对您的社区成员来说都很容易访问。当您的项目超出集成工具的能力范围时,关闭该工具并集成第三方解决方案的难易程度如何?如果您想为您的项目开发自定义报告工具——您能访问底层项目数据来开发您的报告吗?也许您希望在有人提交代码时启动自定义流程——您选择的项目托管服务是否支持这一点?在选择在哪里托管您的项目时,您需要调查一些集成场景。
奖励技巧:没有完美的工具
无论您多么仔细地研究项目管理工具和托管服务,您最终都会发现没有一个工具能 100% 满足您的所有需求。即使您找到了接近您要求的东西,您通常会发现,就像您的第一个公寓一样,您最终会“长大”而不再适用。所以,与其寻找完美的解决方案,不如寻找一个能解决您当前大部分挑战,同时仍有增长空间的解决方案。考虑到行业变化的快速步伐,当您准备好迁移时,很可能会有更好的选择。
结论
DNN 团队对我们迁移到 GitHub 和 Jira 感到非常满意。Jira 使我们更容易管理我们的问题——无论是我们的产品经理在开发新功能时创建的故事、我们的社区提交的功能增强请求,还是我们的 QA 团队和社区成员记录的 bug。
Jira 具有处理我们所有需求的灵活性,甚至与 GitHub 集成,因此我们可以轻松地看到哪些提交和文件被更改以处理特定问题。
同样,GitHub 使我们更容易公开我们的代码仓库供公众查看和贡献。此外,GitHub(基于 Git)使得处理多个分支和由内部及外部贡献者组成的分布式开发团队变得更加容易。
总的来说,我们对最近的迁移非常满意,但我们知道,在未来 3 到 4 年内,我们可能又会为我们的项目寻找一套新的管理工具。如果发生这种情况,我们已经做好了充分准备进行迁移。