从立项到发布仅三个月,开源技术问答社区 Answer 是如何诞生的?

news2024/11/27 2:50:27

在祁宁家里,有一套完整的赛车模拟器,他甚至还请人到国外代购了最新的 VR 设备。作为沉浸式赛车游戏发烧友,除了享受速度与激情带来的愉悦感,祁宁在玩的过程中更多的是思考如何将技术能力进行产品化的问题。

Answer.dev 就是将技术问答社区能力提炼而成的产品,也是祁宁深度思考的一个成果。

开源问答社区软件 Answer.dev 于 2022 年 10 月 24 日在 GitHub 上线,发布后就在 GitHub Tending 上持续霸榜了一周左右,不到一个月就拿到了逾 4,000 个 Star,四个月内收获的 Star 数更是超过 6,300 个。

需要补充说明的是,Star 数是 GitHub 上最直接的热度指标,意味着该开源项目对开发者的吸引和关注程度,体现了该项目的流行程度。

Answer.dev 在 GitHub 上的受欢迎程度,远远超出了其创始人祁宁的预期。在国内开发者的印象中,祁宁更为人熟知的身份是 SegmentFault 思否(下称「思否」)联合创始人兼 CTO——同样为人所熟悉的还有他的网名昵称 joyqi 。创办于 2012 年的思否,是目前中文领域最大的编程问答交流社区平台,累计注册开发者用户近 700 万。在思否 10 余年的发展中,祁宁积累了大量问答社区领域的经验和资源。

近年来,不少 B 端企业用户向祁宁提出需求:能否帮助搭建企业自己的问答社区,或者协助建设类似思否这样的企业社区。当时,囿于商业运营条件等限制,祁宁和思否团队很难去响应这样的需求,只能提议对方在思否建一个专区或子站。但实际上,企业的需求此时并没有被完全满足,因为客户希望能自定义社区内容,自主掌控数据,而不是「寄居」于一个公共社区之下。

于是,祁宁和思否团队一直都在思考:能不能将思否在问答社区领域多年沉淀下来的能力完全开放出来呢?最好的状态就是做成一个开源项目让所有人都能使用,也就是将思否的技术问答社区形态转化为一个软件产品。

直到 2022 年 5 月,研发管理平台 ONES 完成对思否的收购后,祁宁及思否团队得以将输出问答社区能力的「夙愿」变成现实。「ONES 是一家对市场和商业化都有深刻理解的软件公司,对于将问答社区能力产品化,ONES 给予了思否很多灵感。」祁宁说,开发 Answer.dev 相当于颠覆了思否的商业模式——之前思否是一个社区公司,主要通过广告服务来盈利;如今,思否变成了一家开源商业公司和软件公司,提供的是软件产品,「我们开始用社区来驱动开发,跟我们此前的驱动方式完全不一样。」

然而,祁宁又说:「思否和 Answer.dev 两者最终要做的事情其实没区别,归根到底还是做一个社区。」在他看来,开发 Answer.dev 的目标是把社区当作一个产品来使用,具体就是,一个商业软件公司把自己的代码免费让其他人使用。建立一个真正以开发者为中心的开源社区,用社区的力量去推动项目开发,这是思否和 Answer.dev 共同的目标和使命。

Answer.dev 于 2022 年 5 月正式立项,6 月初启动。为了赶在 10 月 24 日发布(「1024」被公认为是中国程序员节),9 月底就必须得交付内部预览版,所以,该项目的开发实际上只有不到三个月的时间。

在如此紧张的期限内,祁宁及其团队相继迎接了产品设计、技术选型、团队磨合以及研发管理等挑战,准时在「1024」发布了 Answer.dev 开源软件。尽管 Answer.dev 已经发布了一段时间,但祁宁并不止步于此,而是继续思考人工智能对问答社区软件的影响,以及探索如何融合和接入相关人工智能的应用——最近,祁宁的爸爸买了一款智能手表,但面对复杂的操作使用说明书一筹莫展,只好致电儿子祁宁求助。「未来人工智能可以天然地解决这个问题,哪怕是老人家也可以轻松地玩转各种电子产品。」祁宁如此畅想。

Answer.dev  的极限冲刺

ONES:苏格拉底说:「人类最高级的智慧就是向自己或别人提问。」除了苏格拉底,莎士比亚、爱因斯坦、乔布斯等名人都擅长通过提问来寻找答案以追求创新,那么企业该如何利用 Answer.dev 来建立自己的问答社区,并沉淀高级智慧呢?

祁宁:

首先,Answer.dev 是易用的。我们的目标是:非专业人士或非程序员们也可以非常轻松地将它运行起来——当然,这可以是在我们的指导协助下或在文档的帮助下。目前,市面上的部分社区软件或开源产品,在运行时需要一些很专业的知识,比如配置、技术名词等。但在 Answer.dev 中,我们想面向的是一个更广大的人群,所以在产品设计及文档设计之初,我们更多考虑的是:如果用户是一个非专业人士,怎样才能很好地上手这个项目。

其次,Answer.dev 是一款开源软件。我们之前做互联网产品的创业,可能只会发布一个最终的产品,直接给用户用,或发布给特定的商业用户。而开源项目的话,就会把该项目的直接源代码开放出来,让所有程序员都可以看到源代码,然后可以参与到我们的项目中来。

最后,在设计之初,我们就将 Answer.dev 定位为一个国际化的项目。我们以国际化的标准来开发这个项目,包括后续的文档以及在代码中的注释,都是执行的国际化标准,其目的是希望它的受众足够广,各个国家和地区的程序员都可以以同样的标准参与进项目里,而不仅仅是面向中文的用户和开发者。

ONES:Answer.dev 的开发实际上只有不到三个月的时间。如何在这么短的时间内完成一个全新的项目开发?高效率的秘诀是什么?

祁宁:

据以往的开发流程,研发队伍通常会按照产品说明做项目研发。但对于 Answer.dev 这个项目,在研发的过程中会不断地迭代,在中间设置很多持续交付的节点。因此,按照这样的特点,我们对产品的交付流程做了改进。

正是基于这样的交付流程,我们采用了 ONES 研发管理平台。

首先,将功能模块全部按功能维度拆分,变成一个个子任务。也就是说,通过 ONES 平台整理项目,分批次地提取其中一部分的功能模块,按照功能组别将任务拆分成子任务,继而逐项落实,最后再监控其工时及完成情况。ONES 对项目进度状态的跟踪是很全面的。

然后,按周来设立里程碑——项目的启动为第一周,第二周是正式开始开发,接着,将周设为持续交付的节点,每个节点交付一部分功能模块。「1024」的前夜就是第 11 周的「最终节点」,该任务开发阶段的任务即终结,后面会进入产品迭代的过程。

期间,如果本周功能模块最终验证完成,那这一周的任务就完成了,还可在 ONES 上查看整体交付的百分比进度。我们每周会做定期检视,了解这周交付的内容有哪些问题,是否需要调整;如果需要调整,就规划到下一周的任务中去,这是个持续迭代的过程。

此外,ONES 对于各个角色及任务分配都很清晰,例如关注者、处理者、参与者等,各司其职,体现了高效协同的特点。

当然,每周任务进行时,我们必须紧盯总目标,才不会在每周执行时逐渐迷失、将总目标丢失,或做成了另外的项目。在任务排期或任务分配时,我们会以总目标为最高优先级来安排工作。

AI 是思维工业革命

ONES:Answer.dev 项目采用的是前后端分离的方案,前端使用的是 React 技术栈,后端则是使用 Golang 编写。于此,你是如何进行技术选型的?对未来的技术趋势,你有哪些思考?

祁宁:

之前,思否的后端主要开发语言是 PHP,而 ONES 是 Golang。ONES 并购思否后,出于技术协同、系统互通的考虑,我们还是决定用同一套语言进行开发。

无论 Golang 还是 React,两者都已经是业界特定领域认可的标准。彼此在各自的领域都很稳定,从人才储备到各种工具链的建设上,都相当完善。当然,前端的技术变化可能更快一点,但是我觉得,相对来说,前端技术更新迭代不是那么麻烦,因为它其实是跟着用户的需求走的。

业界的先进技术,我们每个开发者都需要去定期跟踪。ChatGPT 横空出世,可以预见人工智能的发展会有很多颠覆,包括它的交互模式。例如,以后用户的界面会更加简单,人们直接和计算机交流,不需要太多的按钮或者复杂的界面。

ONES:你是如何理解以 ChatGPT 为起点的人工智能普及浪潮?

祁宁:

根据人们对 ChatGPT 的使用反馈,我们看到了人工智能的巨大潜力所在。ChatGPT 是计算机第一次在交互上能够对人的话语进行分析,并且能够理解更准确的指令,继而作出更准确的回应。

之前的工业革命是解放人的体力,让人不需要再用手工去做重复的体力劳动,而像 ChatGPT 这样的人工智能,解放的是人的思维。如今,我们从小学就开始学习知识,学习的时间很长,要学到 20 多岁甚至 30 多岁,才能开始做一些前沿性的研究。那么,当未来人工智能普及后,有没有可能将知识直接移植到我们大脑中来呢?就算不能,能否实现制作一个「知识共享的大脑」呢?这样一来,我们人类就不需要去耗能记住很多知识,需要的时候就直接取出来;而是把精力放在更多有创造性的东西——也就是解放了思维。

人工智能更深层次的应用被开发出来后,应该会推动社会的发展。但也不排除会带来一定程度的不确定性,因为人工智能或许会影响人类的思想,也可能会把我们社会带到一个不可知的地方去——我们人类对此不能掉以轻心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计网】第四章 网络层

文章目录 4.1-1 网络层概述4.1-2 SDN 的基本概念一、路由器功能:转发,路由选择二、数据平面三、控制平面介绍(1)传统方法/每路由器法(2)SDN 方法:Software-Defined Networking 四、控制平面中的…

一文掌握DTC

1. 前言 从单片机STM32开始转到汽车电子已经有一年时间了,到如今为止,很少写文章了,原因很简单,肚子里面没有墨水,就不给大家献丑了。而现在写在这篇文章,属实也是有了一定的了解。所以还不是很了解这个方…

从一到无穷大 #9 Firestore:开发者友好的Serverless NoSQL Database

引言 简单浏览了下ICDE 2023 industry-and-applications-track 部分的文章,其中我感兴趣的文章有三篇,分别为: Accelerating Cloud-Native Databases with Distributed PMem StoresBackward-Sort for Time Series in Apache IoTDBFirestore…

10年测开经验面试35K公司后,吐血整理出高频面试题和答案!

一:前言 在当今竞争激烈的职场环境中,拥有丰富的测试开发经验已成为众多企业青睐的重要条件之一。而在面试过程中,高频面试题更是能够考察应聘者的实际能力和知识水平。本文作者具备10年的测试开发经验,并通过面试获得了35K公司的…

VMWare16和Ubuntu20.04虚拟机安装记录

VMWare网盘链接:https://pan.baidu.com/s/1zZvtwnH9N47_k3pAy2dZCg 提取码:1234 Ubuntu下载网址:Ubuntu Release 推荐20.04,网上的教程也比较多 列举两个我参考的,其实都大差不差。 保姆级教程|VMware安装Ubuntu20…

Android之 activity活动页面详解

一 四大组件 1.1 Activity组件,它一个单独的窗口,程序流程都必须在Activity中运行,所有它是最基本的模块。 1.2 service组件,用于在后台完成用户指定的操作。 1.3 content provider组件,会为所有的应用准备一个内容…

线对象QgsLineString

几何对象中线用QgsLineString进行封装支持Z和M值,用于表示2维的,2. 5维的,3维的线线是由一串点连接而成 创建线 QgsLineString() #创建空的线QgsLineString(points: Iterable[QgsPoint]) #从一串QgsPoint创建QgsLineString(x: Iterable…

[JavaScript]JSON对象

eval函数 eval函数能将一个字符串当做一段JS代码解释并执行。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name&quo…

大数据经典项目案列——滴滴数据分析(云服务器-零基础从配置到项目落地1)

本次我们项目采用阿里云服务器&#xff0c;采用以下技术及框架协议&#xff0c;进行数据分析&#xff1a; HDFSHiveSpark SQLZeppelin 当然我们也可以利用数据库清洗好的数据&#xff0c;采用 1.Tableau 2.Pythonechartsweb前端 3.腾讯云、阿里云BI报表 4.当然我们也可以采…

51单片机(十四)LCD1602

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

SpringCloud Alibaba 配置中心功能

一、快速入门 1、创建工程nacos-client7777 pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&q…

基于企业网的信息安全防护系统的设计与实现_kaic

摘 要 这篇文章提供了一种新的&#xff0c;基于“禁止一切”安全策略和VxD技术的企业网络安全保障方案&#xff0c;旨在帮助企业更好地应对外界的威胁。通过设计一套完善的企业网信息安全防护系统&#xff0c;不仅可以有效地解决企业网络中存在的问题&#xff0c;而且还可以有…

一文带你了解和掌握Markdown编辑神器mdnice

无论你是博客写作爱好者&#xff0c;还是想要自己动手开发一个网站&#xff0c;你都可能会接触到Markdown。Markdown是一种轻量级的标记语言&#xff0c;它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的HTML内容。然而&#xff0c;当你想要将你的Mark…

MYSQL主从复制和读写分离.2

搭建MYSQL读写分离 master :192.168.142.10 slave1:192.168.142.20 slave2:192.168.142.30 Amoeba:192.168.142.40 客户端:192.168.142.50 ----Amoeba服务器配置---- ##安装 Java 环境## 因为 Amoeba 基于是 jdk1.5 开发的&#xff0c;所以官方推荐使用 jdk1.5 或 1.6 版…

Linux 指令3

文章目录 标题日期date时间戳 cal 日历find -name 查找which ls 搜指令whereisgrep 行文本过滤工具&#xff08;例如找到main函数入口&#xff09;例子 ps ajx 进程 打包压缩&#xff0c;解包解压&#xff08;过程是这么个过程&#xff0c;简化成压缩->解压&#xff09;zip多…

使用gitee上传vue项目

菜鸟教程&#xff1a;https://www.runoob.com/git/git-tutorial.html 参考文档&#xff1a;https://blog.csdn.net/handy_csdn/article/details/117400151#:~:text%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E6%90%AD%E5%BB%BAvue%E9%A1%B9%E7%9B%AE%EF%BC%8C%E5%B9%B6%E4%BD%BF%E7…

试用chatgpt写一篇文章,关于自动化测试框架的思路

当涉及到软件测试和自动化框架时&#xff0c;Python是一种广泛使用的编程语言。它提供了丰富的库和工具&#xff0c;使得构建测试框架变得相对容易。本文将介绍一个基于Python的自动化测试框架&#xff0c;结合了pytest、allure报告、日志记录、YAML配置、MySQL数据库以及钉钉和…

JNI 中Get<PrimitiveType>ArrayElements 和 Release<PrimitiveType>ArrayElements 函数讲解

文章目录 Get<*PrimitiveType*>ArrayElements 函数族Release<*PrimitiveType*>ArrayElements 函数族使用场景 Get<PrimitiveType>ArrayElements 函数族 函数原型&#xff1a; NativeType *Get<PrimitiveType>ArrayElements(JNIEnv *env, ArrayType ar…

vscode 标签的使用

使用标签就可以快速跳转到某一段代码,十分方便 安装 首先,我们需要安装 设置快捷键 shiftcommandp. 调出命令行 输入bookmark, 即可看到标签的相关指令 生成一个标签 设置一个你喜欢的快捷键 ,这代表 在光标所在的行上添加一个标签。需要设置一个label 调出列表 可以显示…

CMakeList.txt -- 编写保姆式教程

致每一个还坚持在互联网和软件行业的同路人。 最近有朋友问我为什么选择当程序员&#xff0c;我也不明白。可能是缺少社交能力&#xff0c;可能更喜欢心理上保存平静&#xff0c;可能是为了那份对于从无到有的沉浸感和满足感。 目录 欢迎加入陈达书--C交流群: Errrr113(非诚勿扰…