如何使你的开源项目成功[每日前端夜话0xD0]

你已经为一个有趣的问题工作了几个月,现在决定启动一个开源项目。你在 README.md 中编写了一些说明,并发布了1.0版。

几周后,人们对这个项目仍然没有什么兴趣。你做了大量的工作,付出了最大的努力,但是最后,仍然没有谁对它感兴趣。

怎么会这样?更重要的是,怎样才能使你的开源项目成功?

我创建了一个开源库 vocajs.com,经过努力,这个库成为了 GitHub 上最受欢迎的项目之一。在这个过程中,我学到了一些重要原则,这些原则涉及如何制作高质量的开源项目。我想要与大家分享这些想法。

1.没人关心你的项目

首作为作者,要转变你对开源的看法。你可能会认为,如果你对你感兴趣的项目(库、工具、框架等)投入了大量精力,那么许多人也应该会感到兴奋。

不幸的是,事实并非如此……

听起来可能很苛刻,但是开发人员仅对解决他们的问题感兴趣。因此,当有人访问你的 github 存储库时,就是在寻找解决方案。

2.解决实际问题

甚至在启动开源项目之前,甚至在编写第一行代码之前,都要花大量时间去寻找要解决的实际问题。

总而言之,一个好的开源项目解决了开发人员正在积极寻求解决方案的问题。
如何使你的开源项目成功[每日前端夜话0xD0]

解决问题
根据我的经验,我决定写一个 JavaScript 字符串库。我的主要理由是当时的解决方案质量低下。另外 JavaScript 本身没有全面的标准字符串库。
我对字符串并不特别热衷,创建这样的库甚至可能很无聊……但是更重要的是,我发现了一个需要解决的问题。

寻找问题要用到的一些策略:

  • 思考你遇到的问题。你可以为此创建解决方案吗?

  • 探索被广泛使用但性能中等的开源项目。可以实施自己的更好的解决方案。

  • 在 GitHub 的热门项目、Stackoverflow 问题甚至 Twitter 问题中搜索想法。

关键点
成功的开源项目解决了一个已知的问题

3. 强调质量

大多数开发人员都在闭源项目中工作。除了你的队友以外,很可能有一些开发人员会阅读你的代码。

但是,当你为所有人开放代码时,情况就不同了。

事实是,很多开源代码并不是最好的质量。没人会依赖于难以理解、不稳定且充满错误的代码去解决问题。

这方面是增加信任度并证明你的开源项目正在测试质量的好方法。你可能需要至少 80% 的代码覆盖率。

你甚至可以走得更远,并在 README.md 上放一些标记,以证明代码库已经过全面测试。

源代码的可读性也是一个重要方面。如果你想在以后的阶段吸引更多的贡献者,则代码必须易于阅读且结构合理。

此外,开源工具将只从实现非功能性需求中受益:

  • 有直观、可配置和可扩展的 API

  • 支持广泛的环境(跨平台,跨浏览器等)

  • 提供选择功能的可能性

  • 几乎没有依赖关系

  • 体积小

关键

   成功的开源项目具有高质量代码和高代码覆盖率

4.优秀的 README.md 和文档

好,你遵循了我的建议,发现了一个不错的问题,并实施了一个相对不错的解决方案。这就够了吗?

不幸的是,只完成了一半的工作……

README.md 文件是项目的入口点。而且,如果你不能简洁明了地解释项目的确切目的,人们将几乎不了解它的任务。

如果 README.md 缺少详细信息,你可能会认为开发人员慧深入研究实现细节,并自行找到如何使用该工具的方法。通常,这种情况不会发生,因为没人喜欢解密代码。

每个人的期望是了解你的工具可以解决什么问题以及如何使用它。就这样。

告诉你一个对我有效的真理:

  花 50% 的时间编写引人注目的 README.md 和简单明了的文档。

是的,你没有看错。花一半时间解释项目的用途以及如何使用它。

4.1 README.md


用户在访问项目存储库时最先看到的是 README.md 文件。你只有20-30秒的时间吸引注意力去兜售你的东西。

我建议 README.md 包含以下部分。

1. 任务
首先用简短的句子解释你的项目的任务:“它做什么?”将其放在项目名称的后面。

例如,对于我的开源库 Vocajs,我用了以下单句进行解释:

“Voca 是一个用于处理字符串的 JavaScript 库”

这句话能够告诉你我的项目是做什么的:一个处理字符串的 JavaScript 库。

如果有的话,在任务结束后立即插入指向详细文档的链接。

2. 说明
任务结束后,将进行简短说明:“我为什么要用它?”它应该稍微详细说明任务。

例如这就是我用来描述的内容:

“Voca 库提供了有用的功能,使字符串操作变得舒适:更改大小写,修饰,填充,段化,拉丁化,sprintfy,截断,转义等。“模块化设计”允许加载整个库或单个函数以最小化应用程序构建。该库经过了“充分测试”,“有据可查”和“受到长期支持”。”

说明中不要添加太多技术细节。只突出好的部分。

3. 特点
之后,你可以通过列出功能来更深入地解释技术细节:“它提供哪些功能?”。

为了便于阅读请使用列表。

4. 安装和使用
最后描述“如何安装和配置?”

如果有的话,你可以在此处再次插入指向详细文档的链接。

可以把 https://github.com/panzerdp/voca/ 作为例子。

4.2 文档


如果项目很大,README.md 可能不适合描述详细的 API。需要创建一个仅描述 API 的附加页面。

详细文档示例:lodash【https://lodash.com/docs/】,ant.design【https://ant.design/docs/react/getting-started】。

文档简明扼要地说明了所有的使用方面。例如:列举函数的参数,说明可接受的数据类型,并给出适当的示例。

这是我为库中 v.kebabCase() 函数【https://vocajs.com/#kebabCase】记录文档的方式:

如何使你的开源项目成功[每日前端夜话0xD0]

kebabCase()函数文档
你可以轻松地了解如何使用 kebabCase() 函数:它的作用、接受的参数以及返回的值。还提供了一些示例。你甚至可以找到到源代码和单元测试的链接。

关键

  成功的开源项目应该具有引人注目的 README.md 和出色的文档

5. 展示 demo 和截图

人类是视觉生物。这就是你构建可视工具(图表、UI小部件、移动/桌面应用等)的原因,我强烈建议你包括 demo 和截图。

一个好的 demo 胜过千言万语。

例如我实现了一个小型的开源 Chrome 扩展程序 Cliboardy【https://chrome.google.com/webstore/detail/clipboardy/gkafpbdjggkmmngaamlghmigadfaalhc】。它能将代码从 stackoverflow.com、github.com 和 npmjs.com 复制到剪贴板。

在 README.md【https://github.com/panzerdp/clipboardy】的开头,我没有文字说明,而是提供了一个演示 gif:

如何使你的开源项目成功[每日前端夜话0xD0]

剪贴板演示
观看这个演示,你甚至无需阅读说明。

6. 尝试建立社区

与人打交道是管理开源项目的一个重要的部分:与用户沟通、实现新功能、修复错误。

虽然乍一看似乎不是很重要的,但沟通是一项复杂的任务。响应问题和审查代码pull请求可能比预期要花费更多时间。

有时您会遇到沮丧的用户,无论如何,找到了与大家礼貌地交流的意愿。

准备对某些请求说“No”或拒绝 pull 请求。始终试着礼貌地解释你的决定,并感谢贡献者所花费的时间。

目标是吸引新的人参与项目。有人说,流行的开源项目基于强大的贡献者社区。

关键

 成功的开源项目建立在有效的沟通和活跃的社区上

7. 让全世界都知道

一切都准备就绪。你的项目的版本为 1.0,有出色的 README.md 和文档。

现在该推广你的开源项目了:让全世界都知道它。

把你的项目共享到 reddit.com(一个或多个相应的 subreddits)、news.ycombinator.com,echojs,Twitter 等。幸运的是,你的项目可能会在普及方面有一个良好的开端。

但是要注意两个微不足道的问题。

首先,抵制发布尚未完成的项目的冲动。先搞定一切。你永远不会有第二次机会去留下良好的第一印象。

其次,在 Reddit 等网站上分享可能会引来一些键盘侠对你的工作发表严厉评论。不要受到这些评论的影响而使你沮丧。

批评很容易,但是创造却很难。请记住,创造的人是当今的英雄。

接受建设性的批评,忽略垃圾评论。

8.结论

一个成功的开源项目需要付出大量的时间和精力。

首先,项目必须能够解决一个问题,并将其解决好。开发人员正在为他们的问题寻找更好的解决方案。

你必须花费大约 50% 的时间来创建高质量的 README.md 和详细的文档。对于用户而言,工具的使用应该尽可能省力。

拥有良好的代码覆盖可以建立对代码质量的信任。也不要忘记对非功能性需求进行投资,例如支持许多环境且几乎没有依赖性。

尝试与项目的用户进行交流。他们将经常报告问题并提出改进建议。要礼貌和建设性的沟通:你的目标是吸引贡献者。

如果你想了解更多信息,我建议你阅读 “Producing Open Source Software” 这本免费书籍【https://producingoss.com/】。

你知道哪些使开源项目成功的其他策略?请在下面的评论中告诉我。

原文:https://dmitripavlutin.com/how-to-make-your-open-source-project-successful/

更多相关文章

  1. “狗屁不通文章生成器”项目登顶GitHub热榜~
  2. 10 行 Java 代码实现最近被使用( LRU )缓存
  3. 看完这篇,别人的开源项目结构应该能看懂了
  4. 做完小程序项目、老板给我加了6k薪资~
  5. Java 8 Lambda 表达式和流操作如何让你的代码变慢 5 倍
  6. 没用过这些IDEA插件?怪不得写代码头疼
  7. Java8 Lambda 表达式和流操作如何让你的代码变慢 5 倍
  8. Spring Boot 项目中的三种多数据源方案,一个比一个强!
  9. 把 WebAssembly 用于提升速度和代码重用[每日前端夜话0xBC]

随机推荐

  1. 互联网开发十大顶级开源项目巡礼!
  2. 怒薅羊毛:白嫖GitHub作为个人博客免费图床
  3. 基于Spring Security和 JWT的权限系统设
  4. 芋道 Apollo 极简入门
  5. 芋道 Spring Boot WebSocket 入门
  6. 洞玩年!刚面世的黑洞照片快被玩坏了!
  7. 直观讲解一下 RPC 调用和 HTTP 调用的区
  8. Apollo 源码解析 —— 调试环境搭建
  9. 白嫖七牛云作为个人博客免费图床
  10. 第九周作业