你已经为一个有趣的问题工作了几个月,现在决定启动一个开源项目。你在 README.md 中编写了一些说明,并发布了1.0版。几周后,人们对这个项目仍然没有什么兴趣。你做了大量的工作,付出了最大的努力,但是最后,仍然没有谁对它感兴趣。
怎么会这样?更重要的是,怎样才能使你的开源项目成功?
我创建了一个开源库 vocajs.com,经过努力,这个库成为了 GitHub 上最受欢迎的项目之一。在这个过程中,我学到了一些重要原则,这些原则涉及如何制作高质量的开源项目。我想要与大家分享这些想法。
首作为作者,要转变你对开源的看法。你可能会认为,如果你对你感兴趣的项目(库、工具、框架等)投入了大量精力,那么许多人也应该会感到兴奋。
不幸的是,事实并非如此……
听起来可能很苛刻,但是开发人员仅对解决他们的问题感兴趣。因此,当有人访问你的 github 存储库时,就是在寻找解决方案。
甚至在启动开源项目之前,甚至在编写第一行代码之前,都要花大量时间去寻找要解决的实际问题。
总而言之,一个好的开源项目解决了开发人员正在积极寻求解决方案的问题。
根据我的经验,我决定写一个 JavaScript 字符串库。我的主要理由是当时的解决方案质量低下。另外 JavaScript 本身没有全面的标准字符串库。
我对字符串并不特别热衷,创建这样的库甚至可能很无聊……但是更重要的是,我发现了一个需要解决的问题。
寻找问题要用到的一些策略:
成功的开源项目解决了一个已知的问题
大多数开发人员都在闭源项目中工作。除了你的队友以外,很可能有一些开发人员会阅读你的代码。
但是,当你为所有人开放代码时,情况就不同了。
事实是,很多开源代码并不是最好的质量。没人会依赖于难以理解、不稳定且充满错误的代码去解决问题。
这方面是增加信任度并证明你的开源项目正在测试质量的好方法。你可能需要至少 80% 的代码覆盖率。
你甚至可以走得更远,并在 README.md 上放一些标记,以证明代码库已经过全面测试。
源代码的可读性也是一个重要方面。如果你想在以后的阶段吸引更多的贡献者,则代码必须易于阅读且结构合理。
此外,开源工具将只从实现非功能性需求中受益:
成功的开源项目具有高质量代码和高代码覆盖率
好,你遵循了我的建议,发现了一个不错的问题,并实施了一个相对不错的解决方案。这就够了吗?
不幸的是,只完成了一半的工作……
README.md 文件是项目的入口点。而且,如果你不能简洁明了地解释项目的确切目的,人们将几乎不了解它的任务。
如果 README.md 缺少详细信息,你可能会认为开发人员慧深入研究实现细节,并自行找到如何使用该工具的方法。通常,这种情况不会发生,因为没人喜欢解密代码。
每个人的期望是了解你的工具可以解决什么问题以及如何使用它。就这样。
告诉你一个对我有效的真理:
花 50% 的时间编写引人注目的 README.md 和简单明了的文档。
是的,你没有看错。花一半时间解释项目的用途以及如何使用它。
用户在访问项目存储库时最先看到的是 README.md 文件。你只有20-30秒的时间吸引注意力去兜售你的东西。
我建议 README.md 包含以下部分。
首先用简短的句子解释你的项目的任务:“它做什么?”将其放在项目名称的后面。
例如,对于我的开源库 Vocajs,我用了以下单句进行解释:
“Voca 是一个用于处理字符串的 JavaScript 库”
这句话能够告诉你我的项目是做什么的:一个处理字符串的 JavaScript 库。
如果有的话,在任务结束后立即插入指向详细文档的链接。
任务结束后,将进行简短说明:“我为什么要用它?”它应该稍微详细说明任务。
例如这就是我用来描述的内容:
“Voca 库提供了有用的功能,使字符串操作变得舒适:更改大小写,修饰,填充,段化,拉丁化,sprintfy,截断,转义等。 “模块化设计”允许加载整个库或单个函数以最小化应用程序构建。该库经过了“充分测试”,“有据可查”和“受到长期支持”。”
说明中不要添加太多技术细节。只突出好的部分。
之后,你可以通过列出功能来更深入地解释技术细节:“它提供哪些功能?”。
为了便于阅读请使用列表。
最后描述“如何安装和配置?”
如果有的话,你可以在此处再次插入指向详细文档的链接。
可以把 https://github.com/panzerdp/v... 作为例子。
如果项目很大,README.md 可能不适合描述详细的 API。需要创建一个仅描述 API 的附加页面。
详细文档示例:lodash,ant.design。
文档简明扼要地说明了所有的使用方面。例如:列举函数的参数,说明可接受的数据类型,并给出适当的示例。
你可以轻松地了解如何使用 kebabCase()
函数:它的作用、接受的参数以及返回的值。还提供了一些示例。你甚至可以找到到源代码和单元测试的链接。
成功的开源项目应该具有引人注目的 README.md 和出色的文档
人类是视觉生物。这就是你构建可视工具(图表、UI小部件、移动/桌面应用等)的原因,我强烈建议你包括 demo 和截图。
一个好的 demo 胜过千言万语。
例如我实现了一个小型的开源 Chrome 扩展程序 Cliboardy。它能将代码从 stackoverflow.com、github.com 和 npmjs.com 复制到剪贴板。
与人打交道是管理开源项目的一个重要的部分:与用户沟通、实现新功能、修复错误。
虽然乍一看似乎不是很重要的,但沟通是一项复杂的任务。响应问题和审查代码pull请求可能比预期要花费更多时间。
有时您会遇到沮丧的用户,无论如何,找到了与大家礼貌地交流的意愿。
准备对某些请求说“No”或拒绝 pull 请求。始终试着礼貌地解释你的决定,并感谢贡献者所花费的时间。
目标是吸引新的人参与项目。有人说,流行的开源项目基于强大的贡献者社区。
成功的开源项目建立在有效的沟通和活跃的社区上
一切都准备就绪。你的项目的版本为 1.0,有出色的 README.md 和文档。
现在该推广你的开源项目了:让全世界都知道它。
把你的项目共享到 reddit.com(一个或多个相应的 subreddits)、news.ycombinator.com,echojs,Twitter 等。幸运的是,你的项目可能会在普及方面有一个良好的开端。
但是要注意两个微不足道的问题。
首先,抵制发布尚未完成的项目的冲动。先搞定一切。 你永远不会有第二次机会去留下良好的第一印象。
其次,在 Reddit 等网站上分享可能会引来一些键盘侠对你的工作发表严厉评论。不要受到这些评论的影响而使你沮丧。
批评很容易,但是创造却很难。请记住,创造的人是当今的英雄。
接受建设性的批评,忽略垃圾评论。
一个成功的开源项目需要付出大量的时间和精力。
首先,项目必须能够解决一个问题,并将其解决好。开发人员正在为他们的问题寻找更好的解决方案。你必须花费大约 50% 的时间来创建高质量的 README.md 和详细的文档。对于用户而言,工具的使用应该尽可能省力。
拥有良好的代码覆盖可以建立对代码质量的信任。也不要忘记对非功能性需求进行投资,例如支持许多环境且几乎没有依赖性。尝试与项目的用户进行交流。他们将经常报告问题并提出改进建议。要礼貌和建设性的沟通:你的目标是吸引贡献者。
如果你想了解更多信息,我建议你阅读 “Producing Open Source Software” 这本免费书籍。
一个开源项目维护者必须一年到头无偿地做这么多复杂繁琐的工作。当我们很方便的使用开源项目时,太容易忘记项目维护者的辛苦付出了,有时候,开源项目维护者真的需要你对他说一声谢谢。
Emoji(表情符号)的使用到处都有,想通过js为自己的网页添加Emoji吗?今天就为大家整理在Github上最受欢迎的Emoji开源库,让自己的页面显示Emoji。
开源软件open source software创立 20 周年的纪念日。由于开源软件渐受欢迎,并且为这个时代强有力的重要变革提供了动力,我们仔细反思了它的初生到崛起。
得益于开源运动的蓬勃发展,众多技术顶尖的公司、团队或者个人通过开源的方式向技术社区贡献了许多优秀的开源项目,一方面大大促进了整体技术的发展
开源的本质是什么,免费还是自由?国内的很多软件公司或研究机构对开源的热情仅限于免费的代码,而绝少深度参与开源社区的活动。我们对于开源始终是利用多,而贡献少,从国内发起的有一定影响力的开源项目如果不是完全没有,恐怕也是凤毛麟角。
很多人也想了解一下最新和感觉有用的.NET开源项目,最近准备面试为了有料说,在网上找到了一些开源的项目,个人觉得还不错,所以给大家分享一下,共同进步。
无论是开发新手还是经验丰富的老手,我们都喜欢开源软件包。对于开发者来说,如果没有这些开源软件包,很难想象我们的生活会变得多么疲惫不堪,而且靠咖啡度日也会成为家常便饭。所幸的是,随着 Vue.js 和 Nuxt.js 社区的不断壮大,每天都会出现一些很好的软件包。
在去年的 Microsoft Connect(); 开发者大会上,微软宣布开源三种主要的 Windows UX 技术,其中就包括了 Windows Presentation Foundation (WPF),除此之外还有 Windows Forms 和 Windows UI XAML 库 (WinUI)
Arachni是一款基于Ruby框架构建的高性能安全扫描程序,适用于现代Web应用程序。XssPy一个基于Python的XSS(跨站脚本)漏洞扫描器。w3af,从2006开始使用python开发的开源项目,可以用在window和linux环境下
任何一个开发者,都是十分喜欢使用开源软件包的。因为它使开发工作变得更快速、高效、容易。如果没有开源软件包,开发工作将变得疲惫不堪,不断的重复造轮子!下面整理了 Github 上 36 个实用的 Vue 开源库,建议收藏!
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!