TypeORM – 谷歌夏季编程大赛(GSoC)项目想法列表
本文档概述了 TypeORM 的潜在 GSoC 项目想法。每个想法都包含描述、目标、预期成果以及难度等级。
TypeORM 中的一等多态关联
描述
TypeORM 当前缺乏对多态关联(单个关系指向多个实体类型)的原生支持。用户只能依赖难以类型推断、容易出错且跨数据库不一致的变通方案。
导师
目标
- 设计 TypeORM 支持的一等多态关联 API
- 保证与现有关系装饰器兼容
- 提供迁移和模式同步支持
预期成果
- 新的多态关联装饰器
- QueryBuilder 支持多态连接查询
- 清晰的文档和示例
- 向后兼容的实现
难度
中等 - 预期耗时 175 小时
所需技能
TypeScript、ORM 内部机制、SQL 模式设计
TypeORM 中改进类型安全和推断
描述
虽然 TypeORM 使用 TypeScript 编写,但在许多地方(关联、查询构建器结果、仓库方法)类型较弱。改进类型推断将大幅提升开发体验和正确性。
导师
目标
- 改进关联类型推断(懒加载与 eager 关联)
- 强类型的
QueryBuilder返回结果 - 减少公共 API 中的
any使用 - 改善
Repository和EntityManager的泛型设计
预期成果
- 更佳的编译时类型保障
- 减少运行时错误
- 逐步且非破坏性的提升
- 推荐类型使用模式的文档
难度
中等 - 预期耗时 175 小时
所需技能
高级 TypeScript、泛型、库 API 设计
向量支持:类型、索引及跨数据库搜索
描述
向量嵌入在现代应用(AI、搜索、推荐)中日益常见。虽然 TypeORM 部分支持向量列类型,但缺乏针对跨数据库的统一、完整的向量存储、索引及查询解决方案。
本项目旨在为 TypeORM 提供端到端的向量支持,涵盖向量列类型、数据库特定映射、向量索引及高层向量搜索抽象。
导师
目标
- 为剩余数据库(如 Oracle)添加向量列支持
- 调研 SQLite 限制,尽可能支持
libsql向量 - 定义一致的跨数据库向量列 API
- 实现数据库支持的向量索引
- 通过
QueryBuilder暴露向量相似度查询 - 在仓库之上实现高层向量存储抽象
- 可选:探索知识图谱风格查询(如类 SPARQL API)
预期成果
- 新的
@Column({ type: "vector" })跨数据库支持 - 数据库特定向量映射、降级方案及限制说明
- 跨数据库向量索引支持
- 高层向量搜索及相似度查询 API
- 可扩展架构支持未来 AI 和搜索相关功能
- 清晰文档和示例
难度
中等 — 预期耗时 175 小时
所需技能
SQL 方言、数据库内部机制、TypeORM 驱动架构、索引策略、查询优化、API 设计
实体定义 API 的模块化
导师
描述
TypeORM 目前支持两种定义实体的方式:基于类的实体(装饰器)与实体模式(Entity Schema)。随着时间推移,这两种方式已逐渐分化,实体模式的功能和类型安全往往落后于基于类的实体。
本项目聚焦于提取和模块化实体定义方式,将其拆解成更清晰、隔离的组件,目的是保持两者同步并为未来架构改进奠定基础。项目不会进行完整 mono-repo 重构,而是针对一部分明确且可行的工作。
目标
- 将实体定义逻辑提取至明确分离的模块或包
- 改善基于类实体与实体模式间的功能一致性
- 探索具备强类型推断的函数式实体定义 API
- 减少实体定义方式间的代码重复
- 为未来模块化(如 CLI、日志、缓存)奠定基础
预期成果
- 更好同步实体模式与基于类实体的功能
- 更清晰的实体元数据定义内部抽象
- 非基于类实体定义的类型推断能力提升
- 明确边界,使未来重构和模块化更安全
难度
困难 - 预期耗时 350 小时
所需技能
TypeScript、TypeORM 元数据系统、API 设计、大型代码库重构
自定义驱动开发的 SQL 方言抽象
描述
TypeORM 中新增或维护数据库驱动目前较为复杂且紧耦合于现有驱动实现。引入更清晰的 SQL 方言抽象能更容易支持新数据库并减少驱动间重复代码。
本项目旨在定义并引入 SQL 方言层,封装数据库特定的 SQL 行为,促进新驱动开发并提升 TypeORM 内部关注点分离。
导师
目标
- 设计捕获数据库特性行为的 SQL 方言抽象
- 从现有驱动提取通用 SQL 生成逻辑
- 定义清晰扩展点以支持实现新方言
- 撰写如何基于方言系统构建自定义驱动的文档
预期成果
- 明确定义的 SQL 方言接口
- 减少现有驱动间重复代码
- 提升现有驱动的可维护性
- 为社区贡献数据库驱动提供清晰路径
难度
困难 - 预期耗时 350 小时
所需技能
SQL 方言、数据库内部机制、TypeScript、TypeORM 驱动架构
社区征集项目想法
TypeORM 欢迎贡献者和社区成员提出 GSoC 项目想法。
如果你有 TypeORM 经验,发现了痛点、缺失功能或架构改进,鼓励你提交 GSoC 项目建议。
建议内容可包括(但不限于):
- 现有驱动或数据库支持改进
- 性能优化
- 开发者体验及工具增强
- 文档或测试基础设施改进
- 新功能
建议应包含:
- 简短的问题陈述
- 预期成果和范围
- 预计难度
- 相关技术领域(TypeScript、SQL、驱动等)
社区提交的想法将由维护者审查,可能会加入官方 GSoC 项目列表。
现代迁移工具和快照
描述
TypeORM 的迁移工作流目前以 CLI 为核心,在基于 TypeScript 的项目中使用较为笨重,限制了高级用例。此外,迁移历史较长的项目在新环境数据库初始化时启动缓慢且容易出错。
本项目旨在通过引入可编程迁移生成 API 及可选的模式快照,现代化 TypeORM 迁移工具。这些改进将使迁移生成更灵活,并允许通过快照快速初始化新数据库,避免回放所有历史迁移。
导师
目标
- 引入可编程 API 以无需依赖 CLI 生成迁 移
- 支持定制迁移模板
- 设计表示数据库最终结构的模式快照机制
- 允许使用快照启动新数据库同时保留迁移历史
- 确保与现有迁移工作流兼容
预期成果
- 改善基于 TypeScript 和非 CLI 工作流的开发体验
- 大型项目数据库初始化更快更稳定
- 更灵活的迁移生成及模板机制
- 清晰文档及推荐实践
难度
中等 - 预期耗时 175 小时
所需技能
TypeScript、SQL、TypeORM 迁移系统、CLI 内部机制、API 与工具设计
入门指南
有意作为 Google Summer of Code 一员贡献 TypeORM 的学生,建议尽早参与。熟悉代码库、贡献流程和社区实践是提交提案前的强烈建议。
入门步骤:
- 加入我们的 Discord 服务器。
- 阅读 CONTRIBUTING.md。
- 浏览 TypeORM 仓库及文档,了解架构和支持的数据库。
- 尝试修复一个小问题或改进文档,熟悉贡献流程。