项目介绍
Canvas LMS 是由 Instructure 公司开发维护的开源学习管理系统(LMS,Learning Management System),项目托管在 GitHub,采用 AGPL-3.0 开源许可证,院校、机构可自由使用、部署与二次开发。
项目基础信息
- 仓库地址:github.com/instructure/canvas-lms
- 开源协议:AGPLv3
- 技术栈:**Ruby(52%)**为主后端,搭配 TypeScript、JavaScript 作为前端,辅以 SCSS、HTML;使用 PostgreSQL、Redis,支持 Kafka 事件流,CI/CD 基于 Jenkins,前端构建工具已从 Webpack 迁移至 Rspack,代码质量工具使用 Oxlint、Biome、RuboCop,测试框架 RSpec、Jest、Vitest。
- 仓库数据:6.8k Star,3k Fork,437位贡献者;累计 78765 次代码提交,377个分支,34029个版本标签,持续迭代超过16年。
核心定位与能力
Canvas 面向学校、培训机构、企业教育场景,一站式承载线上教学全流程,是全球广泛使用的开源教学平台。主要功能包含:
- 课程管理:创建课程、章节内容编排,支持富文本、音视频、文档等多种教学资源;
- 作业与测评:在线作业提交、自动/人工阅卷,测验、问卷、评分量表;
- 学习进度管理:追踪学生课程完成状态,学习进度统计;
- 师生互动:讨论区、私信、通知,支持多人协作;
- 成绩管理:成绩册、加权计分、导出成绩单;
- 权限与组织管理:多角色(管理员、教师、学生、助教)权限隔离,支持多机构部署;
- 国际化:支持多语言翻译,仓库持续维护多国语言包(如韩语翻译更新);
- 开放API:提供 GraphQL/REST API,方便与校园统一身份、教务系统、第三方应用集成。
项目架构与仓库目录说明
app:Ruby 应用主代码,业务核心;config:系统配置、国际化语言文件;db/migrate:数据库迁移脚本;lib:公共工具库;ui/packages:前端UI组件、页面代码,内置 InstUI 组件库;spec:全套单元、集成测试用例;docker-compose.yml、多份 Dockerfile:支持容器化本地快速部署与生产部署;Jenkinsfile:持续集成流水线,包含单元测试、浏览器自动化测试、代码覆盖率等任务;doc:项目文档;CONTRIBUTING.md:贡献指南,规范社区开发者提交代码流程。
部署方式
官方提供两种部署方案:
- Quick Start(快速启动):Docker 容器一键拉起,适合开发者本地体验、二次开发;
- Production Start(生产部署):面向院校正式环境,可基于 Docker 或裸机部署,需要 PostgreSQL、Redis 等中间件。
项目特点
- 开源且商业友好:AGPL 协议,可私有化部署,数据自主可控;Instructure 同时提供商业托管版 Canvas,开源版与商业版同源;
- 成熟稳定:十多年持续迭代,大量高校落地使用,CI 体系完善,包含自动化测试、安全扫描;
- 可扩展性强:支持插件扩展、第三方应用接入,开放API,可对接校园生态;
- 重视无障碍访问:代码持续优化屏幕阅读器兼容(aria 无障碍属性);
- 活跃社区:持续接收社区贡献,定期修复 bug、更新依赖、升级前端框架。
适用场景
- 高等院校、中小学搭建校内在线教学平台;
- 职业培训机构、企业内部培训系统;
- 教育技术团队研究学习LMS系统架构,二次开发定制教学平台。