我开发了一款 IM 项目 Tailchat,总算在2023年6月28日凌晨达到了 1k star 的里程碑。我感到十分激动。当然,关于许多知名开源项目来说,这只需求几天就可以完结,但关于我来说仍然十分重要。因此,我十分想分享一下我作为一个开源爱好者是怎么运营开源项意图。

分享下这几年我是如何运营开源项目并达到1k star的

分享下这几年我是如何运营开源项目并达到1k star的

首要,我有必要承认我是一个十分典型且纯粹的程序员。我没有背景,没有资源,也不拿手沟通,可以说是比较社恐的人。关于像我这样的人来说,困难并不在于怎么开发一款运用,而是在开发完结或许达到一定阶段后怎么推行我的运用,并让咱们可以了解我的理念。

从前,我天真地以为开源只是将源代码分享出去,让咱们可以看到我的代码。然而,我逐渐意识到开源更像是一个企业,不仅需求开发自己的产品,还需求想办法将产品销售出去。

一个好的官网十分重要

官网是一个运用的门面,关于许多库来说,README便是它们的官网。然而,关于相对巨大、复杂的项目来说,简略的README或许无法供给足够多的信息,这时一个独立的官网页面就变得十分重要。

一个优秀的官网可以添加用户对项意图信任感。通常情况下,我对开源项意图根本信任感来自于以下几个方面:是否有README或官网、是否有足够多的star以及运用量/下载量怎么。

举个比方,Tailchat的官网 tailchat.msgbyte.com/ 经过几次迭代后变得恰当出色。首屏简直占满整个页面,并展示了桌面端和移动端的预览图,这意味着我的项目一同支撑桌面端和移动端。然后简洁明了地列出了我以为重要的特点,这些特点也是我希望我的产品与其他类似项目区分开来的要害点。

官网是产品考虑的体现。经过官网向用户传达自己的主意,让用户了解你的规划哲学,明白你为什么要做出这样一个产品。

另一方面,官网也为用户在运用过程中供给辅导。除非你的产品不需求用户做任何操作,只需翻开即可运用(比方各种小游戏),不然一个完好的文档对用户的协助远远超出你的想象。

不要以为只由于开源了源码就可以不去做这些工作,代码自身便是文档。回想一下自己的开发经历,在运用一个库时,除非万不得已,不然咱们不会挑选去检查源码。关于库来说都如此,更何况是一个完好的项目呢?

关于开源项目来说,一个完好且兼容多渠道的部署方法是最根本的底线。

注重差异化

关于开源项目来说,向其别人介绍自己的产品的时分最简略的方法便是 xxxx 的开源替代品, 这里的 xxxx 一般是你耳熟能详的商业运用。这样可以十分快速的让用户对你的产品有一个很根本的概念。你也能经过咱们的共识快速树立起一个根本的概念。

比方你想做个在线商城,那么你就可以说自己做了个淘宝的替代品。比方你想做一个论坛那你可以说你是要做一个discuz的替代品。

可是,在说自己的项目是 xxxx 的替代品的一同需求时刻清晰自己与对方的差异点,而不是在不断复刻其他项意图功用。比方我在与其别人介绍、推行我的项意图时分我会说我是一个IM,是discord/slack的开源替代品。但与此一同我也会着重不仅仅是一个IM。我会与对方议论为什么咱们需求插件体系,以及插件体系可以给咱们带来什么,为什么我会花2年时刻来做底层架构、打磨体系来完结这套架构,以及为什么我觉得我的产品是优于其他的项意图。

这是一件十分困难的工作。由于大部分的用户并不会在乎你的差异。关于大部分用户来说只会用到最根本的功用,而且用户愈加注重的是是否能满意自己的需求。一件十分哀痛的工作是不论做什么你都会有许多的同行与你竞赛,让用户决定是否用你的产品的理由并不是由于你的功用多么强壮,而在于你的功用是否能满意需求 —— 当然假如你的功用足够多,多到一切能想象到的需求都能满意也行。可是那是企业做的工作,假如你是个人开源者更要学会专注,专注于打差异化。

注重国际化商场

多国言语是十分必要的一件事。尽管我国有很大的商场,可是咱们把目光放远一些,我国商场也不过是全球 1/5 的商场。特别是在开源范畴,你作为开发者愈加不用在乎言语的鸿沟。由于你不受控于各地的法律法规隐私政策的差异。作为开发者只需求做好你的产品就行了。

因此,支撑多国言语十分重要。至少支撑英语,能很大程度扩展你的受众规模。假如你对自己的英语水平不够自信,请善用翻译软件。

别的,你可以多多去海外的渠道宣扬自己的运用,不仅仅是局限于国内的渠道。如 Reddit、Hackernews、medium 等。由于海外的用户对开源的接受度、了解度愈加高,假如这些用户可以认可你的项意图话在开源范畴会比国内用户带来的协助愈加多。一个很哀痛的事实是,国内开发者天天996根本没有时刻再去为开源做奉献,特别是个人开源的项目。

经过完善的文档、自动化测验给用户带来信任感

尽管一本厚厚的阐明手册并不会给产品自身带来任何的实践价值,但至少会让在这个产品上投入注重的用户感到安心。

安全感是一个很形而上学的工作。作为开发者你可以说自己的项目十分简略易上手,根本不需求任何文档。可是哪怕不去看这些文档,这些文档存在的自身会给运用者一种信任,至少能表明你对自己的项目投入了足够多的注重。

类似的还有自动化的测验脚本,前者是给普通用户的,后者是给开发者的。

作为开发者,咱们都知道CICD的重要性。CICD是确保项意图代码质量的重要方法,也意味着一个项意图底线。假如一个没有任何CICD工作流或许都是失利的工作流。那么我会十分对此十分具有不信任感。

开源项目天然的就比较商业项目是缺乏信任感的,由于后者是拿来牟利的,且是可以用来支撑起企业的运作的,意味着至少不会有什么问题。而开源项目往往起源于爱好,天然的就给人不靠谱的感觉。特别是在前期star数比较低的时分更是如此。

怎么打破这种不信任感也是作为开源的维护者想要让自己的项目起来的重要因素。

将你的内容串在一同,削减探究本钱

一个十分欠好的比方在于把相关的内容放的到处都是,让用户能看到一切的内容十分困难。

将重要的内容在一个当地被索引是十分重要的工作。比方你的社交媒体、你的文档、你的功用手册、你的演示环境、你的各种技能博客….

削减用户的探究本钱,由于假如本钱过高用户很有或许挑选放弃。这便是为什么大多数网站都会在页脚留有各个要害

假如你仅README文件,那就把一切的链接都添加到文档中,让用户可以清除知道有什么内容,这些内容是干什么的。

别的,不只是你的各种内容,你的项目自身也要牢记这一点。比方上来便是一个手机号注册就很容易让人劝退,而恰当的公开内容体验可以更好的让用户体验到产品的魅力从而长时间留存。在 Tailchat 中我是这么做的, 用户可以运用暂时账号登录,只需求填入一个昵称即可体验到完好的功用。当用户决定长时间保留你的账号时,你可以走注册流程招领该暂时账号。假如想要让用户加入到你的社群中,你乃至可以把进口直接换成邀请链接。

类似的,假如你的项目包含了多个子项目。monorepo会是比多个库房更好的挑选,我从前写了一篇博客便是从技能视点说的这个,议论从把多项目合并成一个项目中取得的收益 。

从开源运营的视点来说,多个项目库房不但更难让用户看清全貌,也会打击开源奉献者的信心,由于谁都希望大项意图奉献者上有自己头像,哪怕仅仅是改了文档的一个错别字。

注重社区的运营,注重生态

社区的运营是开源项目中十分重要的一环,只要来自社区的不断反应才干拉起开源项意图正循环。最简略的社区便是树立一个微信群或许discord群。我前期在运营的时分想着已然我自己是做IM的,为什么要到其他的IM渠道上去运营我的社区呢?然而这是过错的,由于作为开发者,应当去姑息用户而不是让用户姑息你。假如用户愈加喜爱用微信,那么你就应当挑选运用微信。假如用户更多运用discord,那么你就应该在discord树立自己的社群。保持社群的活泼才是榜首要素。

我十分喜爱Notion的大使文明与社区文明。树立杰出的社区驱动的生态是一个成功的开源项目必不可少的根本素质。尽管我的项目还远远达不到这个阶段,但我研讨过许多成功的开源项目无一例外。简略的说开源是抱负主义者的狂欢,一个好的开源项目则是一群抱负主义者的狂欢。让用户认可你的项目,并自发的宣扬,这是一件十分困难的一件事,可是是有必要去做的,一群人行进会比一个人行进轻松许多。

别的一方面,需求注重开发者价值。什么是开发者价值呢?便是你的项目对开发者可以带来什么。在推行Tailchat的时分我往往会与vscode进行类比。vscode便是插件化的文本编辑器。其本体便是一个拓展中心 + monaco 编辑器,其价值在于杰出的开发者生态。让不同的开发者可以经过vscode的插件体系来实现自己的主意,集成不同的言语支撑。不知道是否还有人记住在github还没被微软收购的时分 github有一款自己的编辑器 atom。我也十分喜爱用,自从微软收购了github后atom就被弃用了。我信任微软也是看到了插件体系的巨大潜力。而Tailchat也是以插件体系作为规划之初的底层能力。我很喜爱的一句话是: 得开发者得天下。这也是生态的力气,当生态起来了今后,你的产品就很难被其他同类运用替代了。

恰当的时分回访你的前期用户

在前期维系种子用户是十分重要的,适时的回访你的前期用户,让你的用户感受到自己被注重,这个产品的活跃性,这将会大大添加你的用户转变到社区奉献者的或许性。

许多技能人会觉得,只要代码奉献才是奉献。其实了解代码的毕竟是少量,更何况要匹配你的项意图技能栈的话就愈加少了,许多人假如能提提建议,打打下手做个国际化翻译我觉得关于一个开源项目来说就十分不错了。最重要的是这些东西会成为你行进的东西。人想要不断行进要么靠金钱,要么靠爱好,而社区便是继续不断为你的爱好充能的加油站。

在我接触到的前期创业者,都会很喜爱与自己的用户约个会,聊一下自己项意图发展以及用户的看法。假如你觉得自己做不到这一点,用文字问候一下也是可以的。信任我,收成会比想象中的愈加大。

活跃写博客,写技能文章

我很反感像广告机器人相同在各种技能社区中经过不断的、重复的发送自己项意图介绍来推行自己的项目。尽管看起来如同有点读书人的清高和不食肉糜,可是我依旧觉得这种行为是十分影响其别人的体验的。有的人或许会说,比较有人黑总比没有人知道好,但这是牺牲其别人的体验而成果自己的自私行为。

我作为技能人的挑选是,多写博客,多写技能文档。在技能文章中推行自己的项目。我希望这应当是一个双赢的行为:作为读者的你收成到了知识、作为作者的我收成了曝光。

一同,写文章也是对自己思路的一个收拾,这点和写技能文档是差不多的。从前的我十分反感写技能文档,由于直接写代码就能写完的东西还需求写技能文档来约束自己。一般来说写技能文档的时刻和写代码的时刻是差不多的,由于要写出一个正确的技能文档往往需求确认计划的或许性,根本上确认计划的可行性大部分的代码就写的差不多了。而现在我会了解写技能文档的必要性,更多的是为了收拾自己的思路。写代码是简略的,写代码让人可以了解是困难的,写了代码今后让人可以了解而且后期好维护是最难的。从前的我是依靠自己的经历来实现后期易于维护,而技能文档便是在我依靠经历的基础上追加了一层CICD来约束行为。写技能文章也是相同的,在闷头写代码的一同要把东西收拾出来形成方法论。这也是一种对自己能力的提升。

总结

开源的到底是坎坷的,而且大概率是最终没有实践收益的。这也是为什么我会说开源是抱负主义者的狂欢。

开源项目往往不追求盈余,支付又多,除了写代码还要投入精力去宣扬,去运营。关于大部分人来说都是一件吃力不讨好的工作。

当然,我这里说的是真正的、需求长时间支付的开源项目。假如仅仅是为了star高,来用于求职或许其他意图的话其实有许多方法,许多项目代码没几行,可是star数都是几十k这样的蹭热点的项目在github上还是有不少的。

相反的,我的选题无疑是红海中的红海,在C端十几年前就有早早占据了商场的巨头,在B端也有许多强壮的竞品进行竞赛。同样在开源也有很多的同类产品相互竞赛。我之所以依旧挑选IM作为我的开源项目方向,而且停止支付了数年的尽力。我也信任我的规划理念会在一堆同质化严重的同类竞品中脱颖而出,当然不可否认的是会有失利的或许,或许这便是抱负主义者,我愿意为我的抱负支付心血。

我信任,世界往往是被抱负主义者所改变的。假如可以挑选,我更喜爱与一群抱负主义者一同同事。信任看到最终的你也一定是一位热爱着开源的人,共勉,一同走下去。