V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
moonrailgun
V2EX  ›  程序员

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

  moonrailgun ·
moonrailgun · 303 天前 · 6170 次点击
这是一个创建于 303 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

首先,我必须承认我是一个非常典型且纯粹的程序员。我没有背景,没有资源,也不擅长沟通,可以说是比较社恐的人。对于像我这样的人来说,困难并不在于如何开发一款应用,而是在开发完成或者达到一定阶段后如何推广我的应用,并让大家能够理解我的理念。

曾经,我天真地认为开源只是将源代码分享出去,让大家能够看到我的代码。然而,我逐渐意识到开源更像是一个企业,不仅需要开发自己的产品,还需要想办法将产品销售出去。

一个好的官网非常重要

官网是一个应用的门面,对于许多库来说,README 就是它们的官网。然而,对于相对庞大、复杂的项目来说,简单的 README 可能无法提供足够多的信息,这时一个独立的官网页面就变得非常重要。

一个优秀的官网能够增加用户对项目的信任感。通常情况下,我对开源项目的基本信任感来自于以下几个方面:是否有 README 或官网、是否有足够多的 star 以及使用量 /下载量如何。

举个例子,Tailchat 的官网 https://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 作为我的开源项目方向,并且为止付出了数年的努力。我也相信我的设计理念会在一堆同质化严重的同类竞品中脱颖而出,当然不可否认的是会有失败的可能,可能这就是理想主义者,我愿意为我的理想付出心血。

我相信,世界往往是被理想主义者所改变的。如果可以选择,我更喜欢与一群理想主义者一起共事。相信看到最后的你也一定是一位热爱着开源的人,共勉,一起走下去。

55 条回复    2023-07-06 16:44:15 +08:00
danbai
    1
danbai  
   303 天前
为开源点赞!
wushigejiajia01
    2
wushigejiajia01  
   303 天前
可以理解为网页版电报?
FranzKafka95
    3
FranzKafka95  
   303 天前 via Android
非常棒呀,已 star 支持
jokimina
    4
jokimina  
   303 天前
感谢分享,有两个小问题有点好奇

1. 官网是用的模板么 还是直接自己写的 感觉很不错
2. 首屏 png 大图居然只有 80k 是怎么做到么
moonrailgun
    5
moonrailgun  
OP
   303 天前
@wushigejiajia01 有客户端,而且产品思维是完全无关的。电报是注重隐私的 IM ,Tailchat 更多的是注重业务的 IM
相比来说更像是 discord ,工作方式更像是飞书,形式更像是 vscode

正如我文中所说,想要让用户理解你的产品形态与设计哲学是非常困难的一件事。我还在为止不断努力
SenseHu
    6
SenseHu  
   303 天前
点赞,加了讨论群,但是一直没怎么说话 >.<
ospider
    7
ospider  
   303 天前
我感觉发上去就有人点赞啊,我放上去半年就有 300 个 star 了。借楼推广一下: https://github.com/yifeikong/curl_cffi
mokecc
    8
mokecc  
   303 天前
加油!坐等被收购
moonrailgun
    9
moonrailgun  
OP
   303 天前   ❤️ 1
@jokimina
1. 自己写的,但是借鉴了一些比较成功的案例。如果你也想自己写官网的话可以提前收集一下别人好看的官网做参考。重点不是堆积内容而是把重点尽可能简洁的给用户
2. 因为包含大量的同色色块,因此压缩算法的压缩率会比较高。你可以使用在线的压缩工具来帮你压缩图片体积比如 tinyPNG 。另外还有一个小细节是切换亮色 /暗色模式是两张不同的图。
cheneydog
    10
cheneydog  
   303 天前
赞!
qloog
    11
qloog  
   303 天前
感觉最像 slack, 支持多 space 或多 team ,多 channel
jiulang
    12
jiulang  
   303 天前
我感觉 10k 都简单
moonrailgun
    13
moonrailgun  
OP
   303 天前
@ospider 因为你的项目是无需理解的且目的性比较强的库,因此运营的需求会相对少一点。运营更加在于如何让自己的项目在同类产品中竞争。比如以求职为例,你觉得你的能力很强,那你怎么表现出来让 HR 在 100 个候选人中选中你呢?再比如目前同类的 chatGPT 套壳应用这么多,大家功能大差不差,那么凭什么用户最后选择你呢?
BeiChuanAlex
    14
BeiChuanAlex  
   303 天前
1k ,我只用了 3 天,[捂脸]

moonrailgun
    15
moonrailgun  
OP
   303 天前   ❤️ 1
@jiulang 我说了这个数据其实并不高,甚至可以是辣鸡。仅仅是分享一下我为此做的努力,期望能帮助到更多为了几个 star 兴奋的开源爱好者。

毕竟大部分人都是为爱发电
fregie
    16
fregie  
   303 天前
请问你这个项目怎么给你带来收益呢?不能真的一直用爱发电吧?
xieyuheng
    17
xieyuheng  
   303 天前
你们好牛哇,我也想球 star T_T
oneisall8955
    18
oneisall8955  
   303 天前 via Android
已 star ,后面有机会搭建企业版,挺不错的
moonrailgun
    19
moonrailgun  
OP
   303 天前   ❤️ 1
@fregie 首先做开源是为爱发电是常态,所以做开源的都是一群理想主义者。一个开源项目对于大部分人来说最简单最直白的方式就是方便找工作。见码如见人,这不比一纸简历好用?另一种方式常见就是提供企业服务


@xieyuheng 你可以随意的在本帖子下方宣传你的开源项目,我不介意的,因为本帖子的内核就是分享。但是建议不要在其他人的帖子下面宣传,这其实是一个非常不礼貌的行为。类似 b 站弹幕礼仪 [请不要在无关的地方提 up 主]
mengkun
    20
mengkun  
   303 天前
很强大!
BeiChuanAlex
    21
BeiChuanAlex  
   303 天前
看了 OP 写的,结合我自己的感受,想达到 1k ,我总结有 4 个重点很重要:
1.抓热点
2.有价值
3.勤推广
4.国际化

OP 加油!
moonrailgun
    22
moonrailgun  
OP
   303 天前   ❤️ 3
@BeiChuanAlex 虽然你总结的很对但是第一点抓热点不推荐。

都做开源了,还是建议做长有价值的事情。就比如蹭热点搞个重复的 chatGPT 的代理套壳是有价值的么?我觉得可能短期有利长期无价值,只是为了做短期的话,其实没必要搞开源,赚快钱嘛不寒碜

当然这句话不绝对,如果是想基于 chatGPT 来强化已有的业务比如 chatGPT 生成低代码项目,chatGPT 构建报表之类的还是有价值的(因为 chatGPT 自身是长期有价值的东西)
fate
    23
fate  
   303 天前
楼主的官网写的很好看,想请教一下在去写官网的时候有用到什么设计工具嘛,对与文字字体和色彩搭配有啥好的建议嘛。
blinue
    24
blinue  
   303 天前   ❤️ 1
沉下心做真正有价值,别人没做过或做不到的事情,是金子总会发光的。蹭热点、面向 Markdown 编程是坏风气。
isno
    25
isno  
   303 天前
miniliuke
    26
miniliuke  
   303 天前   ❤️ 1
@moonrailgun 看用途,有些项目几个 md 文件就能获得 10k star ,但是没有意义。能完成并运营一个完整开源程序还是挺好的,而且后续 star 可能会有个快速增长,因为一般少于 1k star 的开源程序我是不敢用的
asuraa
    27
asuraa  
   303 天前
现在就缺一个开源的 telegram 只要简单的聊天就行了 我全网都没找到合适的
abnerustb
    28
abnerustb  
   303 天前
写的特别好,在没有深入了解前,有一个官网真的很容易建立起对项目专业性的认识
star7th
    29
star7th  
   303 天前
支持开源 !

同时顺便发下我的开源项目: https://github.com/star7th/showdoc

关于发展,我跟你的路线有点不一样,甚至可以说差异不少。

比如你说 “重视国际化市场” ,虽然我的开源项目确实也提供了英文版,但国际用户应该不到 1% ,对我的项目的影响很弱很弱。

还有你说的 “恰当的时候回访你的早期用户”。我这方面自愧不如,因为我确实几乎不会回访任何用户 ( ╯□╰ )

“积极写博客,写技术文章”——我虽然有自己的博客,但是跟宣传产品并没有太多关系,我也更新得比较少。

不过虽然大家发展路线不太一样,但是殊途同归,适合自己的发展路线就好。

我的开源项目发展过程中,比较重要的点在:

产品的易用性要非常高。容易部署,容易使用。
各个技术社区发文章宣传,适当投稿给自媒体
star7th
    30
star7th  
   303 天前
我再补充一下我对产品易用性的看法。

比如说,我制作了一键安装脚本,不懂运维的用户也能马上装好 showdoc 。
我会生成系统示例项目给新用户,引导新用户怎么使用
提供文档模板,并且允许用户自定义模板,方便复用
我单独开发了一个接口调试客户端 runapi https://www.showdoc.com.cn/runapi/30291 实现自动生成文档
lizheming
    31
lizheming  
   303 天前   ❤️ 1
给 OP 点咱~ 我也是维护了两三年的项目,慢慢的升到了 1.5k 的样子( https://github.com/walinejs/waline),整体的新历路程和 OP 差不太多。关于国际化那部分我感觉 OP 可以项目里再补充下 issue 相关的国际化,可以试试我基于自己项目沉淀下来的工具 https://github.com/lizheming/github-translate-action
zkw111
    32
zkw111  
   303 天前   ❤️ 1
1Panel 应用商店已集成 tailchat
推广一下 https://github.com/1Panel-dev/1Panel
moxuanyuan
    33
moxuanyuan  
   303 天前
想问一下这种第三方 im 究竟有什么人会用?除了微信,其它 im 我都极少打开。。哪怕是 tg ,也只是偶尔看看。。
Monteli
    34
Monteli  
   303 天前
给你们点赞
aduangduang
    35
aduangduang  
   303 天前
cool
moonrailgun
    36
moonrailgun  
OP
   303 天前
@star7th 殊途同归。坚持自己的路,开源就是一条充满荆棘的路,开源人共勉。


@lizheming 看了下你 fork 的 github-translate-action 父项目我 star 过,也准备用来着。能说下你增加的 86 个 commit 是干啥来着的么

@moxuanyuan 工作一般会有其他的更加专业的 IM ,比如钉钉飞书企微,国外一般用 slack ,玩游戏的会用 discord 。吧目光脱离微信,你会发现这软件是真的辣鸡。但是正如我文章写的,因为微信的生态起来了,所以你就没办法撼动他的地位
moonrailgun
    37
moonrailgun  
OP
   303 天前
@lizheming 啊仔细看了一下就是我想要的。原项目没有用的原因就是因为我想要在原来的内容上修改而不是追加一条回复。研究一下,感谢
droppedbytech
    38
droppedbytech  
   303 天前
行文流畅,“重点不是堆积内容而是把重点尽可能简洁的给用户”,非常赞同,不是内容堆的越多的产品 /文档就是越好的。
vevlins
    39
vevlins  
   303 天前
本以为是推广,没想道内容很有干货,点赞。
isSamle
    40
isSamle  
   303 天前
试了下 docker-compose 部署部署起来了 但是访问不到😂
vaaagle
    41
vaaagle  
   303 天前
我想分享一下我的开源项目是如何通过自己不懈地努力运营到 11 star 的 o(→_→)o
Cloudust
    42
Cloudust  
   303 天前
看了下,不错的项目,star 支持一波
Colderer
    43
Colderer  
   302 天前
先赞后看
ryan4yin
    44
ryan4yin  
   302 天前   ❤️ 1
做有价值的东西、差异化、国际化、减少探索成本,我的感觉也差不多如此。

我没做过啥产品,不过感觉可以在这个帖子下分享我最近写一份文档的经历,这个文档仓库刚发布 5 天,目前 74 个 stars.

https://github.com/ryan4yin/nixos-and-flakes-book

------

过程大概是这样的,今年 4 月份的时候我对 NixOS 产生了点兴趣,开始尝试在虚拟机里面折腾它,到 5 月初的时候我把 PC 彻底迁移到了 NixOS 系统,同时将之前的折腾笔记整理成了一篇博客发表(现在内容已经迁移走了),也有在 V2EX 上分享过:

https://thiscute.world/posts/nixos-and-flake-basics/

https://www.v2ex.com/t/938569#reply42

我把博客在 NixOS 中文群分享了一下收到了许多好评,同时在一位群友的建议下,花了几天时间将文章又翻译成了英文发到了 Reddit 上,反响很强烈:

https://www.reddit.com/r/NixOS/comments/13dxw9d/nixos_nix_flakes_a_guide_for_beginners/

因为收到了许多好评,我从 5 月初博客发布开始,一直持续了差不多两个月,补充了很多内容。我觉得有必要再次分享一下,就在 Reddit 上又发了一个帖子:

https://www.reddit.com/r/NixOS/comments/14fvz1q/comment/jp4xhj3/?context=3

这个帖子中有两条很有见地的评论,点出了我这篇文章目前存在的诸多问题:文章太长阅读困难、包含很多不必要的冗余信息、目标读者定位不明确等等。有条评论说相比于一篇文章,这内容反而更像是一本给入门书籍,它不适合以博客这种短期阅读的形式分享出来。

收到批评心里总会有些不高兴,但是我仔细思考了下觉得他们说的很对,于是进一步将内容整理成了一本开源书籍,建了 GitHub 仓库,内容也做了一波调整,得到现在的成果:

https://github.com/ryan4yin/nixos-and-flakes-book


这份文档是我在与读者的沟通中一步步优化的,读者的好评带来的成就感是我更新的最大动力,一些读者的反馈也对它的「进化」产生了很大的帮助。
我最初只是想分享一下自己的 NixOS 折腾心得,内容也比较随意,没想到最后却成了一本包含中英双语的开源书籍,国外的阅读量甚至是国内的两倍,而且还得到了许多 stars ,这真是完全没预料到的。

这个经历跟做一个开源产品的关系可能不大,但是它确实帮我快速融入了一个大型的国际化开源社区( NixOS ),并且给了我归属感、认同感,对我而言它很独特,很有意义。我现在业余时间会越来越多的思考,我还能给这个社区贡献什么,大家还会需要什么。
ryan4yin
    45
ryan4yin  
   302 天前
想了想再补充下,我另外也有个从还没毕业开始一直写到现在的笔记仓库,目前 248 stars ,主要存放一些个人散乱的笔记,其中有些比较有价值的内容,我会在合适的时机整理成文章发布到我的博客上。

https://github.com/ryan4yin/knowledge

这个仓库我没做过多少宣传(毕竟本来也是些不成熟的笔记),只在之前 v 友讨论 homelab 时分享过两次,不过三四年来,慢慢的也有 248 stars 了,感觉就是件很自然的事。

就像 OP 说的,我的这些笔记不可能有啥实际收益,最大的好处也就是在我找工作时给我一份助力。
但实际上分享见地并得到认可,是能让人爽的,我想这也就是为什么会存在这么多开源项目与开源贡献者的原因。
cgglyle
    46
cgglyle  
   302 天前
@ryan4yin #44
看了一圈你写的 NixOS 教程,真的很棒!我之前也考虑过使用 NixOS 不过学习成本好高,只在虚拟机中玩过,之后可能会重新尝试。

不过你觉得 NixOS 与 Archlinux 对比来说,那个更好呢?我近期发现因为没有良好的分区,同时还是用 btrf 来作为文件系统。导致我的硬盘空间越少了。清理分区又好麻烦。
ryan4yin
    47
ryan4yin  
   302 天前
@cgglyle 单纯讨论硬盘空间的话,可能 NixOS 还更占空间一点...
另外说 NixOS 跟 Arch Linux 哪个更好,这我哪敢答,我要说 NixOS 最牛逼,感觉马上就要被 v 友冲塔了 emmm

只能说各有各的好吧,Arch Linux 的生态最完善,文档质量在所有发行版里排第一,还有 AUR 仓库提供丰富的软件包。
而 NixOS 拥有所有发行版中最大的包仓库 nigpkgs ,同时它的可复现性也是主流发行版里独一无二的,整个生态也非常活跃(有些借鉴了 nixos 的发行版如 guix ,以及其他不可变发行版 silverblue ,这个我不太了解不做评价)。
guguji5
    48
guguji5  
   302 天前
感觉好复杂的样子,一个 im 要做的感觉挺多的,做了多久啊
LonnyWong
    49
LonnyWong  
   302 天前 via iPhone   ❤️ 2
恭喜 OP ,1k 是个里程碑,也是个新起点。

我开源的这几个 https://github.com/trzsz 距离 1k 还有很长的路,加油~
moonrailgun
    50
moonrailgun  
OP
   302 天前   ❤️ 1
@ryan4yin 开源精神不仅仅是局限在代码/技术层面,哪怕 b 站美食区把自己研究了很久的食谱配方分享出来,让别人能够按照步骤复现那也是一种开源啊。开源的好处就在于社区能够推动你的前进,金钱报酬就是物质需求,当我们吃喝不愁的时候更加需要精神报酬。点赞

@vevlins 哈哈,单纯的重复的推广是最没有意思的,我们技术人能够分享过程中顺便推销一下,达成双赢才是最好的。

@guguji5 可以看图片。从 21 年 7 月开始做的。单纯的 IM 其实不复杂几个月就能做一个完成度很高的东西了,但是同质化的内容是最没有意思的,要把底层的设计做好,并实现一些个人的设计哲学,就会花费更多的时间。
huiwang520
    51
huiwang520  
   302 天前
CrispElite
    52
CrispElite  
   302 天前
@BeiChuanAlex 是这样的。markdown 仓库很容易收到来自国区的 star 😄
chancat
    53
chancat  
   302 天前 via Android
就像这样纯软文推广的
lameleg
    54
lameleg  
   301 天前
https://github.com/labring/sealos 我也来蹭一下楼主热度,tailchat 也可以直接部署到 sealos 上了。 我们有三个过千项目: https://github.com/labring/laf https://github.com/labring/FastGPT

也来总结一下:
1. 产品要好,比如 sealos 一开始是解决我个人的痛点问题的。
2. 有途径让别人知道,一开始几乎就是写博客。 要能形成口碑传播,这里需要思考用的用户怎么很快像别人介绍你的项目。
3. 多来蹭楼主热度
1874w
    55
1874w  
   295 天前
借楼推广
Elog ,开放式跨平台博客解决方案
随意组合写作平台(语雀/Notion/FlowUs)和博客平台(Hexo/Vitepress/HuGo/Docusaurus/Docz/Confluence 等)

文档: https://elog.1874.cool
Github: https://github.com/LetTTGACO/elog (求 star )

使用场景:
- 开源库的使用文档,在语雀/Notion/FlowUs 上维护,在 Vitepress 上维护,例如 Elog 使用文档
- 博客,例如 Hexo/HuGo 等
- 如果公司用的是 Confluence ,那么可以在写作体验更好的平台书写,然后同步到 Confluence 上
......
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2853 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 07:08 · PVG 15:08 · LAX 00:08 · JFK 03:08
Developed with CodeLauncher
♥ Do have faith in what you're doing.