2025-09-28
起源
d2learn社区群中讨论技术与如何学习等话题, 并不少人感到在学习知识/技术时正反馈很少, 最后呈现出两个主题 从动手实践中去学习 + 寻找自己感兴趣的方向(才能坚持下去) + 让自己参与开发的项目真的有人使用他。
随后@sunrisepeak提议, 是否有感兴趣的群友可以几个人基于dstruct这个开源项目(半停滞发展状态), 进行开发/运营, 发展成一个初步可用和有一些人愿意尝试的基础库, 并成为项目的核心贡献者/维护者, 从实践中感受一个项目是如何从0到1
演化
初期只是纯技术视角来做这件事, 但做这件事是有一定技术门槛的(至少能根据文档, 差不多的实现标准库中的泛型容器, 例如Vector/Map), 这样能参与的人其实并不多。由于@sunrisepeak之前是一个开源爱好者且经常调研一些相对发展还不错的开源项目的发展历程: 初期项目形式、项目推广、社区及生态运营及治理、用户及开发者培养、可持续问题的解决等等, 在社区群里提出是否可以更泛化一点, 基于社区和dstruct项目, 以团队的思想组建一个核心项目组, 来开发和运营这个项目, 最后实现项目最小方式的可持续发展(例如: 项目创造的价值可以支撑2~5个全职维护者 + 5~10个兼职维护者的基本生活问题), 如果发展超出预期的好, 甚至可能存在成立项目的开源基金会的机会
如此一来, 不管是不是计算机专业, 甚至是高中生或初中生都有机会参与到项目中来感受团队合作以及与项目共同成长的感觉
- 数据结构开发
- 项目管理
- 测试/CI/CD/工作流
- 技术社区运营
- 用户分析与新媒体传播
- ...
MOGA项目的诞生
基于以上, 就会诞生两个项目。而参与者具有双重视角
视角一: 具体的dstruct开源项目的开发和运营 视角二: 把从0开始基于开源社区组建团队并开发运营dstruct的过程, 包括开发过程、遇到的问题、运营、商业化等等, 全部公开并记录到一个项目中, 形成 [如何 可持续的开发/运营 一个开源项目并产生社会价值] 的案例
视角一, 是我们要具体做的事; 视角二, 对应的就是MOGA项目;
如何这个事情能做成, 我相信视角二对应的MOGA项目将具有更大的参考价值。因为, 当一个项目或产品被大家所熟知时, 我们看到的更多是结果。即使有一小部分[想要成为创作者, 关心过程的人]去调研他, 也只能对过程做粗力度的采样, 甚至曲线都能被采成直线, 而MOGA要做的就是把这个过程开源出来, 即所有的活动(包括问题和错误)都公开在仓库或使用commit记录到仓库里
社区群中部分讨论
而且我有个最小最快路径, 就是你找一下 近几年 数据库的论文 和 流行的数据库 看一下他们里面核心的 kv存储用到的数据结构 然后把他做成通用容器放到dstruct里, 然后通过随着项目发展 你也会参与/了解到一个 项目的组成和架构 工具链 测试 代码分析/内存分析 开源项目运营 ... 基本可以像面试官证明你具备以下能力:
代码能力
数据结构设计能力
项目工程能力
工具链(cmake/xmake / 编译器
跨平台经验
项目分发体系(xlings/pacman/aur....
开源项目运营能力(教程文档/视频 传播...
如果https://github.com/Sunrisepeak/dstruct/blob/main/core/ds/queue/DoubleEndedQueue.hpp
这个代码能看懂或自己能实现个大概 (任何人) 感兴趣的 可以私聊我。
我个人感觉 dstruct 这个项目是有一些发展潜力的, 但奈何个人时间有限[表情] (我大概知道怎么做能让你成为这个项目的核心开发者和维护者 并把项目发展起来
大概的方向, 任何要使用数据结构的库都可以在dstruct找到 而且使用时又不用很多依赖
起初是为了 数据结构 教学, 工业界应用方面 就是 可以做无任何库依赖的 数据结构库 支持 任何平台 嵌入式 甚至没有操作系统的平台(目前已经初步支持 我实现了一个静态内存分配器) 以及 可以支持把一个数据结构模块单独导出 进行使用 避免包含所有数据结构。总结:
- 无依赖
- 跨平台 + 支持无操作系统硬件
- 包含尽可能多的数据结构, 包含一些变种 (stl里只有通用的
- 支持单数据结构导出应用 + 基于这个做自定义优化
例如, 实现数据库 或文件系统 就不用自己重新实现数据结构了 而且可以导出避免 只想使用一个数据结构 却要引入一堆数据结构甚至库的问题
这样吧, 不从纯技术上来看。从开源项目发展的视角来看, 对以下任一有兴趣即可
- 数据结构开发
- 能写或感觉自己能写简单版本Vector即可
- 或d2ds教程练习没问题 ( https://github.com/d2learn/d2ds
- 项目测试/CI/CD
- 项目规划和管理
- 技术/知识分享
- 开源项目社区维护
- 新媒体运营/传播
- ...
尝试从社区的角度, 汇集感兴趣的人, 从把一个项目从零到1到10的做出来感觉应该挺有意思的, 可以体验到一个项目是如何发展起来的。 过几天我再做个这个计划的介绍视频发B站上, 感兴趣的可以先加上面的群