消失了一年,我带来了一款开源软件 Fresns

作者: 唐杰 分类: 一些分享 发布时间: 2021-07-26 10:21

去年六月份,我准备重新捡起笔,想以每周一篇的频率再梳理和输出自己的一些知识,开篇我以 Discuz Q 产品为引子,写了我对社区产品的研究开源生态的前景,最后还写了一点关于开源软件推广的观点,连写三篇,没想到一发不可收拾,勾起了我多年的产品夙愿,于是我中途转弯闭关一年做了一个开源产品。

2007 年我以「个人站长」的形式进入互联网行业,创建和运营过很多垂直主题类网站(其中有两个还被收购了),这些网站都是基于开源软件搭建的。因为深爱开源,并且长期受益于开源,所以一直希望自己也能有一个值得长期投入的开源产品,为自己的职业生涯增添别样的色彩。

凡是做过「个人站长」的,应该都知道 Discuz 社区软件,而我自从进入互联网行业,就是 Discuz 开源软件的用户,这些年一直关注 Discuz 发展,前前后后也写过很多篇关于 Discuz 方面的观点文章。当 Discuz 宣布重启开发,我当周就在访问 Discuz 社区时看到了消息(冥冥之中,好似有安排),非常的激动,还在各个社交平台发布了一条期待的动态;毕竟进入移动互联网时代,已经没有人愿意做开源的完整产品解决文案了。

但是当 Discuz 的新版 Discuz Q 发布内测后,其实我有点小小失望,并不是产品不好,只是跟我想象的不一样,所以我连写了三篇观点文章,还带着自己完整的产品方案(需求文档、原型、数据字典、Demo、专利)与 Discuz 团队沟通了三个月,希望自己能有幸参与一份开源项目,可惜最终也没能将我的方案贡献出去。

我能有一套完整的产品方案,还带专利,说明我早就有了这方面的心思,只是因为一些原因一直没行动。这次被 Discuz 勾了起来,贡献方案没成功,自己被勾起的产品夙愿又无法平复,于是我决定直接上场自己做了。

我的这款产品,实际上研发只用了三个月时间,但是前期准备我却用了九个月,其中前三个月是与 Discuz 团队沟通;后六个月,我都在找人,找到能够实现我的产品想法的研发人员。

我在 GitHub、电鸭、v2ex、LearnKu 等社区,找过 PHPWind Fans、Dcat Admin、Laravel-Admin 等开源软件的开发者,结果我主动找的人,都没有兴趣参与;最后是我的一篇文章起到了作用(写作对我的人生起的作用太多了,这一次又是证明,以后要加倍写了),让我被动的找到了拥有同样兴趣的技术人员。

动工前,首先要想好怎么做,所以在移动互联网时代,跨平台通用型社区产品会是什么样子呢?我给出的答案是 Tweet 信息流的样子,它奠定了移动互联网的信息流体验,因为我觉得移动互联网时代,社区应该是订阅式的(关注式)。由于手机屏幕的局限性,信息流成了一种主流的浏览方式,而这种方式和传统的「社区论坛」是冲突的。传统「社区论坛」形式,无论列表页如何改变显示方式,都无法最大化的改进浏览效率和减少信息嗓音。于是,基于信息流设计理念和数据流插件机制,并兼顾传统「社区论坛」形式的 Fresns 就此诞生,这是一款通过灵活配置就可以应用到任何运营场景的通用型产品。

Fresns

如果仅仅是信息流的产品,还称不上通用型产品,也费不着我花六个月找人,那么 TA 到底有什么特点呢?目前我已经实现了 16 个特点,先供大家品品。

1、轻量简约

功能灵活多样,可以实现目前已知的任何社交产品的功能,但是主程序非常的轻量简约,按需配置和安装扩展。不需要的功能,不会出现在你的面前干扰你的使用,你需要的功能,可以后台使用,也可以前台所见即所得的使用,甚至可以脱离主程序独立使用。

2、支持跨平台

无论是 Web 网站,还是小程序、快应用,或者是 iOS、Android 等客户端,均可支持管理控制和多形态内容的跨平台运行,实现统一、通用和标准的一体化服务。

3、支持多语言

从数据流层面支持多语言,无需修改主程序、主题、插件、客户端,就可以无限新增各种语言。支持 187 种语言,239 个国家/地区(数据策略符合全球各地区的法律法规),只需要后台简单配置就可实现任意语言和时区的支持。

4、支持选装引擎和模板

网站引擎和主题模板分别可以单独选装和二次开发,并且原生支持多语言 SEO 配置,无论在哪种语言环境里运行或者切换,都无需担心搜索引擎收录问题。运行部署也可以非常的灵活,可以选择集成部署或者像 App 那样独立部署,甚至支持部署多个相同引擎或者不同引擎的站点,可实现一套数据在多种功能形式上差异化运营。

5、灵动的技术架构

主程序不会牵制任何个性化的需求,一切以运营为导向,基于业务需求可以灵活修改。没有固化的主程序,功能也不受制于任何引擎,不仅使用和二次开发非常灵活方便,还不用担心影响主程序,甚至主程序升级也不会覆盖或影响到你的定制功能。让你使用过程中一直专注自己的运营方向,不用担心自己的改动会影响以后的升级。

6、平级菜单模式

用户感知一款产品的功能(空间感),并不取决于 URL,主要来源于 UE 和 UI 层面(面包屑导航),因此产品采用了平级菜单模式,任何一个页面都不限父级或者自己当父级做一级页面。在菜单层面,没有了层级区分,完全由你使用的主题和客户端决定,配置更方便、定制更灵活。

7、后端命名控制

用户感知一款产品的服务(体验感),并不取决于技术逻辑,而是来源于功能点命名,因此产品的任何功能点均可在后台自定义名称。从用户资料内容到互动交互行为等等,你想到的任何功能点和描述点,都可以自定义命名(支持多语言),通过命名塑造用户对产品的认知(无需修改主程序、主题、插件、客户端),实现各种运营场景。

8、公开和私有模式

站点运行模式可公开可私有,私有模式可以打造自己的秘密小圈子,用户加入方式也多种多样,邀请、付费、问答等等方式均可随性支持。如果想要扩展独立的玩法,产品从数据库到接口层面还预留了 More Json 扩展,让你随心定义新参数,结合匹配的主题和客户端,你可以实现目前已知的任何社交产品的功能。

9、产品模式形态多种多样

产品架构和内容形态上支持已知的任何社交产品的功能,包括但不局限于 Blog、CMS、BBS、Wiki、SNS、榜单等等模式,可以实现 Facebook、Twitter、Instagram、Tumblr、领英、知乎、豆瓣、即刻、雪球、懂车帝、猫眼、Soul、TapTap、小红书、知识星球等等形式。

10、用户功能可扩展

支持多用户、多角色、多图标、多色彩、多分值、匿名、头像挂件、钱包等等可扩展的用户功能,开启后可以全员使用,也可以指定角色使用。多用户和多角色可以用于马甲、子品牌、助理等用户场景;多图标可以用于勋章、徽章、身份等级、互动成就、用户状态等展览图标场景,并且图标还支持绑定功能,可用于商品橱窗、秘密树洞、向我提问等功能图标场景。

11、内容形态可灵活扩展

得益于数据流插件机制,通过安装编辑器插件,你可以实现多种内容形态,比如投票、问答、语音、商品、悬赏、辩论、活动、直播、书影音、互动游戏(例:我画你猜)、付费阅读、密码阅读、指定用户或用户角色阅读等等内容形式。

12、高度组件化

前后端分离、动静态分离,支持任何组件独立部署,比如注册、登录、发布、编辑器、个人中心、管理后台等等模块均可独立部署或者集成在现有主程序中,并且支持绑定自定义域名。高度灵活的架构,让你可以随心选配自己喜欢的功能,甚至你可以个性化定制管理后台(后台都可以选装其他方案)。高度组件化不仅能让功能扩展更丰富,也能阻止广告机器人的入侵,因为部署方式灵活,入口也就非标准化,这让关键性操作的地址更具有随机性和不规律,使机器人无从入手。

13、支持跨语言

如果你的现有产品想要实现社交功能,何必“重造轮子”再开发,直接集成 Fresns 产品,不仅节约大量时间成本,还有现成的众多扩展。另外,我在数据结构规划时就考虑了跨语言的数据流转逻辑,所以将来你发展壮大,想要换编程语言开发,或者多种编程语言混合运行等等,产品从底层上就已经支持,无论你发展多大,都不用担心后顾之忧。

14、支持外载算法

如果你希望有个性化的数据列表,可以自行开发或者安装相应的算法插件,让数据输出更个性化。比如图片、视频、商品、文档等等各类内容,如果需要输出符合用户喜好的结果,不仅需要构建用户喜好画像,还对检索引擎有更高的要求。当主程序满足不了你的需求时,你可以外载指定的插件提供支持,而这一切的操作,都不需要修改主程序、主题、插件、客户端。

15、支持数据流订阅

插件可订阅数据流转动态,无论客户端是 Web 还是 App,都可实现数据流层面的功能扩展,比如用户发表了内容或者上传了文件,插件将收到订阅通知并被唤醒,可执行内容安全性检查、待审核通知管理员或者随机奖励等各种功能行为。

16、命令字框架设计思路

基于大型服务系统的 RPC 思路,设计了独创性的「命令字」框架,通过命令字实现网络通信编程模型,减少处理网络数据的复杂度,提升主程序和插件机制的灵活性,让跨业务跨插件间的交互更方便。从后续的框架扩展来看,单体框架可以支撑多插件,同时后续也能支撑多系统多插件模式,并能以微服务的模式实现系统之间的分布式调用。命令字不仅通信灵活,升级也更方便,当主程序业务或数据库发生变动时,无需插件联动升级,甚至跨编程语言或者 SaaS 运行的时候,也能兼容使用。

目前已经实现部分命令字,计划未来通过两个大版本的迭代,实现全部业务命令字化。

我在前东家(外企)干了 8 年,由于英文不好,后 4 年做了运营工作,所以我已经好久没有感受到做产品的那份喜悦之情了。在打造 Fresns 这款产品的时候,因为我从策划、设计、编程、测试等全流程全岗位的参与了这款产品(需求是我策划的、前端模板代码是我写的、数据库结构和插件机制是我设计的、开发者文档是我制作的、上千个测试用例是我统筹的),虽然因为技术有限,还有一些想法没能实现,但是在对产品的每一处小优化和完善,哪怕只是改进一下原型界面或者修改一个开发者文档的错别字,我都能感受到恋爱般的甜美。这种甜美,并不盲目乐观,也不会移情别恋,所以我会将 Fresns 一直维护下去。

我能自信的说出“一直维护”的承诺,原因有三:

1、Fresns 是一个没有商业任务的项目,他的立项来自我多年的产品夙愿,研发资金来自我的“项目基金”账号(我十年前就习惯每月将工资定额存储一定金额作为项目基金,用于业余折腾项目使用;当有灵感的时候,我会将这笔基金投入到项目运作当中,如果项目失败,可以当作学费,毕竟自己从中学到了知识,也有助于职业成长;这笔钱原本就从生活中划分出去了,损失了也不会影响我的生活质量;有人花钱报班培训、有人花钱提升学历,而我就喜欢花钱折腾项目),所以 Fresns 没有商业和运营压力。

2、Fresns 是我的一个作品,就像我的博客分享一样,当作品一样去支持。我从 2007 年进入互联网行业就喜欢分享,当时学习搜索引擎优化(SEO)而创建的一个分享站「唐杰SEO教程站」,累计有几百篇原创文章,并且著作了一本 SEO 教程的电子书;该网站也是当年 SEO 教程关键词排名第一的网站,启蒙了很多网络运营推广的从业者(我有好几次在和运营推广者合作时,遇到了对方是从我的 SEO 教程站开始学习网络推广的)。后来 2011 年我从事产品经理职业之后,又创建了自己的职业博客(https://tangjie.me),也是中国最早一批开始写“产品经理”职业知识的创作者,启蒙和帮助了上万名产品新人的入门学习与职业成长,并且知识内容和工作方法被多家企业采用为产品团队的工作规范;博客累计发表了两百多篇原创文章,并出版了一本《杰出产品经理》书籍、一套《杰出PM卡》产品技能卡和《杰出产品经理课》视频课。

3、今年是我的产品经理博客创建 10 周年,而 Fresns 将是我做产品经理职业的爱情结晶,是我对互联网分享精神的又一次支持;近几年已经没人愿意做开源的完整产品解决文案了,而我觉得自己是命中注定要做这一件事的人,在互联网混了 15 年,一直乐于免费分享,仅产品经理职业就分享过文章(两百多篇)、书籍(电子版和纸质版)、技能卡(五组共 35 张产品技能卡片)、视频课(三套)、WordPress 主题模板(四个)等等,但是一直缺少一个完整产品方案的分享(开源软件),所以自己多年来一直想做,也觉得我更适合做,并且能做好。现如今再做一个建站系统是没有意义的,要兼顾跨平台跨语言等各种场景,要做好一个比建站系统更长远的开源软件,至少需要具备五点要素。

1、经历过「个人站长」时代,了解一款通用型产品是如何百花齐放的;
2、懂“运营”,知道产品的扩展性,能想象出各种方向的市场背景和运营场景;
3、懂“技术”,有架构师能力,知道数据结构设计和插件机制的技术框架设计;
4、懂“法律”和“意识形态”,知道 UGC 产品的风险和技术支持;如果是多语言,还要了解各个国家的相关政策;
5、最重要的,当具备以上条件还要愿意做这件事,有「情怀」投入时间成本,有「闲钱」投入长期维护。

我不仅具备这五个要素,还在国内国外有一群朋友有这方面的软件需求,感觉自己「天时地利人和」都占了,还有专利作为护城河,这就是我为什么能自信的说出“会一直维护”的承诺。而且我在做这个产品的时候,时常涌现出童真般的喜悦之情,和我写出一篇非常满意的文章是一样一样的。当一个人不带任何目的,只是单纯喜欢做一件事,并且没有各种压力,不仅完成了兴趣爱好,而且还非常有前景,大家应该能了解那种心情和动力吧。另外,大家也不用担心我能坚持多久,就看看我写了十年的产品经理职业博客,Fresns 也至少十年起步。

Fresns 产品设计理念来自我在 2017 年的一个产品方案,当时应用在了电商领域,并且申请了专利《一种基于用户特征信息和产品成分信息的购物系统和方法(CN111008333A);后来 2019 年我又侧重社交领域改善了方案,申请了另一个专利《一种跨平台通用型论坛社区程序的控制方法和系统(CN111913698A);在 2021 年 Fresns 正式启动开发的时候,又申请了四个专利,分别是多形态内容扩展命令字技术框架业务编辑器自托管和 SaaS 模式的插件机制

由此可见,我对 Fresns 的设计方向有着非常系统化的规划,仅仅 1.0 版本就有非常优秀的 16 个特征,待我将所有想法实现后,我相信 Fresns 将是一个通用型跨平台软件设计的标杆,敬请期待。

虽然申请了专利,但是 Fresns 是一款免费开源、商业可用、扩展灵活的社交网络服务软件。为了体现免费和自由的特征,产品名称 Fresns 就取自 Free 和 sns 的结合。

Apache License, Version 2.0

免费开源:免费并且开放无加密的源代码,还有详细的研发文档(包含前后端原型、流程图、数据字典、API Wiki 等资料内容),可以完完整整了解产品逻辑。
自由使用:不限任何用途使用本产品,包括商业用途,甚至知识产权(发明专利和计算机软件著作权)使用权也永久免费授予 Fresns 用户。
生态支持:极致灵活的产品架构,集思广益的开发者生态,可以满足任何市场背景和运营场景的服务需求,包括商业变现的支持,让想象力无限可能。

我以开源组织方式协作,致力于将 Fresns 打造成一个通用、稳定、可扩展的灵活工具,让使用者可以在此基础上自由的发挥心中所想。所以我已遵守「贡献者许可协议」将所有相关专利的非独占的、不可撤销的、全球性的、免版税的、可再许可且可转让的许可授予 Fresns 产品。凡是使用 Fresns 产品的主体,无论是何种用途,包括商业用途,均可自由的使用、复制和分发 Fresns 产品,更多细节请见代码仓库的 License Notice 文件。

Fresns 中国版官网 fresns.cn

Fresns 国际版官网 fresns.org

中国版和国际版没有本质区别,只不过国际版所有开发文档均以英文为主,并且初始化安装的默认语言为英语。

虽然 Fresns 不是一个商业项目,但是开发者生态也是有非常大的商业前景的,所以下一篇我将介绍 Fresns 在全球的商业前景,欢迎大家加入进来,一起交流、互助、合作共赢。

推荐阅读《垂直方向的创业机会和成功案例分享

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

15条评论
  • 涂红伟

    2022年10月4日 17:15

    discuzQ 适合用私域流量变更,对于个人站长来说很难,尤其是国内运营的话。

  • 怦然心动

    2022年7月28日 19:25

    期待博主的主题

  • 王者荣耀

    2022年6月18日 17:48

    博主很久没有更新了哈

    1. 唐杰

      2022年6月25日 21:03

      7月上旬会正式发版了。

  • 我的大学生活博客

    2022年6月17日 09:26

    支持,这是一个伟大的梦想,而且最终产品会比wordpress优秀的多。

  • 王者荣耀

    2022年6月11日 18:10

    在我看来 会编程的都是大牛 必须点赞

  • 欧乐安

    2021年12月7日 17:15

    祝愿越做越好

  • 八爪鱼

    2021年11月29日 14:22

    说实话,可能感兴趣的人应该挺多的,不过涉及讨论的网站监管太严重了

  • 八爪鱼

    2021年11月29日 14:20

    博主被收购的垂直网站是啥,想看看

  • 城南旧事

    2021年11月6日 10:58

    加油吧少年,支持你

  • 一个货代群

    2021年10月27日 15:58

    哇,这个时候看到这样的文章,牛人,联系我啊! 1732681270 QQQQ

  • gensbook

    2021年7月31日 10:38

    写得很真实,期待。

  • okjoyel

    2021年7月30日 18:34

    期待,希望到时候支持dzq迁移,加油!!!

  • okjoyel

    2021年7月30日 11:47

    期待,有没有demo社区

    1. 唐杰

      2021年7月30日 14:56

      7 月份完成框架、API、控制面板等主程序功能的开发,然后开发网站、小程序、App 等,预计 10 月份完工,所以正式可体验的社区功能要到 10 月份。不过现在可以看到 demo 原型。

      控制面板:https://fresns.cn/prototype/control-panel/
      编辑器:https://fresns.cn/prototype/editor/

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注