这是在开源社2021年活动上的分享ppt及文稿
大家好,我是Typecho开发团队的 sluke,感谢大家在线上线下听我分享
我给大家分享的,是一个小故事,一个开源博客程序坚持 15 年的故事,是这个团队的一点点启发和心得
介绍一下Typecho这个产品,这是一个 PHP 写的轻量级博客程序,前身是诞生于 2006 年底的个人项目 Magike 博客,在 2008 年升级成为 Typecho,经历了很多很多个版本,中间有很多次重构,在 2014 年发布了 1.0 正式版,到 2021 年,发布到 1.2 版本,所以,这真的是一个坚持了 15 年的项目。
typecho代码最早是托管在 Google code,后来放在 GitHub,各位开发者抬爱,目前的表现是这样,8.3K个star,1.7K个fork,勉强算是一个老牌的开源项目
Typecho 是一个组合词,由Type和echo构成
Type,有打字的意思,博客这个东西,正是一个让我们通过打字,在网络上表达自己的平台。
Echo,意思是回声、反馈、共鸣,也是 PHP 里最常见、最简单的函数,相信大部分 PHP 爱好者都是从 echo 'Hello,world!'; 开始自己的 PHP 编程之路的。
我们选择这样一个项目名字,也是希望 typecho 能成为我们在开源世界表达自己的一种方式。
介绍一下 typecho 团队,
主力组,Joyqi 和 Fen,typecho 99%的代码,是由他俩完成的;剩下这些不配拥有姓名的人是气氛组,大概完成了 1% 的代码;整个队伍大概相当于 RPG 游戏里,圣骑士 Joyqi 和法师 Fen,带着我们几个路人。
介绍一下我自己,
我是 Typecho 专职催更师、第一个产品运营、第一个文案策划,本身呢,是一个产品经理,现在是一个帮助项目融资的FA,可以通过 GitHub 找到我
这个长达 15 年的故事,要从一个叫做 exblog 的开源程序开始,当年,joyqi 还是一个年轻小伙,还在上大学,给 exblog 开发了几款受欢迎的皮肤,被吸纳进入了 exblog 的开发团队,exblog 就是 joyqi 同学的启蒙之光,后来这个项目因为种种原因停更了,很可惜。2006 年末,从北京实习结束的 joyqi 回到学校,开发开发自己主导的 Magike 项目,在后来才有了 typecho。
从这个故事的开头看,typecho 实际上是 joyqi 和后来加入的我们对开源世界一种回馈,我们都从开源世界里获得了很多,这里不完整列举了一些我们参考研究过的博客程序,有几个算是 CMS,感谢这些开源作者。
说完了开始,接下来说说坚持,我尝试着总结一个非盈利开源项目能坚持下来的模型,也许能给在听分享的开源爱好者一点启发。
想找到坚持的理由,就需要回到遥远的起点,那是 2007 的 wordcamp beijing 活动,这是 wordpress 爱好者的聚会,第一次遇到那么多独立博客博主和知名网红,Typecho 团队第一真正意义上的聚会也是相约在这个活动上,总之,我们在这个活动里聊得很开心,感受到了开源社区的魅力,之后我还参加过很多次 wordcamp。
后来,typecho 有了自己的社区,有了自己的聚会,我们逐渐认识到想要坚持下来,社区承载的“关系”是最重要的动力。
人,是坚持的路由,开源项目以热情开始,以关系维持,从 2007 年到现在,typecho开发者之间,开发者与用户之间,保持着良好稳定的关系。
稳定的关系,为开发者带来的稳定的价值感,也带来了坚持的核心开发者和外部开发者;
稳定的关系,为用户带来确定感和归属感,也带来了对产品的容忍和爱护
稳定的关系,为社区带来细水长流,也形成了typecho的文化
想要稳定的关系被固化下来,就需要一个持续的行为,总结起来一句话,就是锁定一群人,用新玩意儿,不停满足少量固定的需求,对于typecho来说,细化下来就是锁定 独立博客用户群 ,用新技术和新工具,迭代开发一个博客程序,不停满足用户群通过博客网站本身和内容,来表达自己的需求。
这里包含了两个对立统一的意思,
用户群和需求,是固定下来的,不轻易变动的,独立博客用户这个人群,是很小的一个人群,甚至是更新越来越少的一个人群,非常稳定,从“表达”这个特定需要来看,也是稳定的,只是其中有细节上的变化,比如在不同的终端,用不同的语法,使用不同的编辑器来写内容,因此,对用户群和需求固定相对的,是技术和产品功能的流动
做个类比会更加清楚,我们来看非主流音乐,或者是一些小众的乐队
音乐跟博客内容一样,是个人表达的一种载体;
专辑和博客程序一样,是保存内容的容器;
非主流音乐是少数人的玩具,乐队或歌手选择一个小众的音乐风格,实际上是主动放弃了很多受众,这使得小众音乐跟主流流行音乐走上了不同的道路。
流行音乐欣赏门槛低,学习成本低,受众广,是快消品
小众音乐欣赏门槛高,学习成本高,因为需要了解很多背景知识甚至是欣赏技巧,受众窄,是耐用品
这样,小众音乐就变成了具备明显的差异化的内容,小众乐队的乐趣,就变成了需要很长时间才能慢慢释放出来的乐趣。
于是,我们就同样得到了一组对立统一的固定和流动。
小众乐迷和他们欣赏的音乐风格是相对固定的,也就是个人想表达的东西不变
而音乐的编曲和乐队的表演,是流动的,不固定的,也就是表达的细节是变化的
同时,就像乐队要经常演出一样,一个开源程序,也要经常发版本来面对用户
回到“关系”这个关键词,能让一个小众音乐或者小众乐队走得远的,乐队和乐迷可能形成的就是一种“养成系”的关系,一起走过很多很多年,想一想,一些城市的球队,甚至是现在热门的德云社和脱口秀,是不是也很像这种“养成系”的关系。
找到了“关系”这个关键词,接下来就是分享一点点维持“关系”的心得,未必会适合所有的开源项目,心得有三点
第一点心得:资源有限,需要取舍
我们的时间有限,资源有限,需要勇气和智慧主动放弃很多东西,才能具备坚持下来的条件
这涉及到开发者对自己的定位、对项目的定位、对取舍标准的定义
首先,开源项目如果不是你的收入来源的话,不要影响养家糊口,面对时间和资源冲突的时候,以主业为重,不要想兼顾,而是想先顾主业,后顾开源
说来很有趣,typecho的开发团队,都是爱折腾的人,都跟创业有关
joyqi&fen&sunny,是segmentfault思否的创始人,这是最好的中文开发者社区之一
我曾经是pmcaff产品经理社区的联合创始人COO,这是最老牌的产品经理交流社区,现在是一个帮助创业企业,开源项目融资的FA
其他人不是正在创业就是创业成功
主业上有保障,我们才能持续探索和回馈社区,才不会耽误我们更新typecho
Typecho 这个产品,有自己的人设,就是 轻量级 博客程序,所以在开发的时候,我们可以根据这个人设,取舍很多东西
比如强调国际化支持;强调灵活的插件API;强调极少量的数据库表;
比如不做静态缓存机制;早期没有编辑器,仅支持手写markdown;没有官方的备份插件;
我们就是想让 typecho 成为一个简约的容器,真正的主角是博主写的内容,取舍,让 typecho 不会向着一个复杂的CMS发展,而是保持博客程序这个形态,这样对开发团队的时间要求更低,更容易坚持开发。
简单说,产品理念会让产品自己选择用户群,从而留下“臭味相投”那些人;而产品的人设,实际上就是用户对自己的人设。Typecho 的简约定位,也要求用户做出取舍,选择 typecho,就意味着有一定的使用门槛,甚至是不便,就像是开手动挡的汽车一般乐趣和痛苦并存。
用什么评价我们的取舍是否正确呢?那就是使用 typecho 的用户,是不是主动发朋友圈,主动安利这个小程序,是不是以使用一个简约取向的博客程序而强化了对自己的认同。
时间宝贵,热情容易消逝,尤其是容易消逝在无穷无尽的讨论中,这个像 typecho 这样的项目能否坚持,很大程度上取决的核心成员的热情,取决于他们写代码是不是上头。因此,要让极少数人作为核心团队,去决定第一点所讲的取舍。
让多数人提isssue,跟少数人讨论,让极少数人做决定
核心的开发者,一定要有机会就见面,以前joyqi和fen在杭州,我去杭州出差的时候就会去他们办公室拜访,他们在北京办活动的时候我也会参加,现在好很多了,思否在北京有办公室
第三点心得:能力有限,需要社区
这不只是说开源项目需要其他开发者贡献代码,而是开源社区才是“关系”的真正载体,是项目活跃和存续的基石。
首先,工具和技术要时尚,保持工具的更新,借力工具来刺激社区用户和开发者,热情的开发者总会使用新的工具
开源项目首先要是玩具,常玩常新的玩具才有意思,被打上“过气”标签的技术,就算在稳定完善,也很容易被开发者抛弃。
所以 typecho 在选择支持新技术和新架构方面,是相对激进的,比如放弃对PHP5的支持,开发官方容器化脚本等
其次,社区要有梗,甚至基于产品理念和现状造梗,很幸运,typecho 社区用户就挺能自己吐槽的
Joyqi 自己也是一个有梗的人,社区的 KOL 如果有专属于自己的梗,会让这个 KOL 显得更鲜活,跟用户的关系也更近
比如,Joyqi 总是年度总结要更新 typecho ,但是总跳票的梗
比如,Joyqi 步步高升的发际线
总结一下 typecho 坚持下来的几个关键点
做准一点,有产品定位,不偏离
做少一点,懂得取舍,才能在某些心血来潮的时刻里更新
做个人,保持热情,保持互动,保持关系
最后,借用 Joyqi 博客里的一句话,说明 Typecho 这个项目最底层的价值
个人博客就像大海中的小岛,在信息海浪中显得那么不起眼,但它的存在本身就彰显了一种意义。
我的分享就到这里,希望能跟热爱开源的各位有更多交流,可以是开源项目运营,可以是开源项目融资,也可以是产品咨询建议
都通过这个邮件可以联系到我