Skip to main content

🤝 贡献指南

Sponsored by Open WebUI Inc.
Open WebUI Inc.

We are hiring! Shape the way humanity engages with intelligence.

🚀 欢迎各位贡献者! 🚀

非常感谢您有兴趣为 Open WebUI 做出贡献。本文档旨在引导您完成贡献流程,确保您的贡献能够有效地提升项目质量。让我们一起把 Open WebUI 变得更好!

💡 参与贡献

想要贡献力量?太棒了!以下是您可以提供帮助的方式:

🌟 代码贡献指南

我们欢迎 Pull Request (PR)。在提交之前,请:

  1. 在此处针对您的想法发起讨论。
  2. 遵循项目的编码规范,并为新功能编写测试。
  3. 根据需要更新文档。
  4. 编写清晰且具有描述性的提交信息 (Commit Message)。

🛠 代码 PR 最佳实践:

  1. 原子化 PR: 确保您的 PR 规模小、专注且只处理单一目标或任务。这有助于代码审查,并降低引入无关问题的风险。如果更改范围过大,请考虑将其拆分为更小、逻辑独立的多个 PR。
  2. 遵循现有代码约定: 确保您的代码与项目现有的编码标准和实践保持一致。
  3. 避免额外的外部依赖: 未经事先讨论,请勿引入额外的外部依赖。
  4. 框架无关方法: 我们的目标是保持框架无关。尽可能自行实现功能,而不是依赖外部框架或库。如果您对此方法有疑问或建议,欢迎随时讨论。

感谢您的贡献!🚀

📚 文档与教程

通过改进文档、编写教程或创建关于设置和优化 Web UI 的指南,帮助我们降低 Open WebUI 的使用门槛。

🌐 翻译与国际化

帮助我们让更多人能够使用 Open WebUI。在本节中,我们将指导您如何向项目添加新的翻译。

我们使用 JSON 文件存储翻译。您可以在 src/lib/i18n/locales 目录中找到现有的翻译文件。每个目录对应一种特定语言,例如 en-US 代表英语(美国),fr-FR 代表法语(法国)等。您可以参考 ISO 639 语言代码 来查找特定语言的正确代码。

要添加新语言:

  • src/lib/i18n/locales 路径下创建一个以相应语言代码命名的新目录。例如,如果您要添加西班牙语(西班牙)的翻译,请创建一个名为 es-ES 的新目录。
  • 将美式英语翻译文件(来自 src/lib/i18n/locale 中的 en-US 目录)复制到这个新目录中,并根据您的语言更新 JSON 格式的字符串值。请务必保留 JSON 对象的结构。
  • 将语言代码及其对应的标题添加到 src/lib/i18n/locales/languages.json 的语言文件中。

🌎 无障碍环境至关重要

我们致力于让 Open WebUI 具有包容性,并可供每个人使用。无障碍 (Accessibility) 是优秀系统设计的核心部分。

在贡献时,您可以从以下几个方面帮助改进无障碍体验:

  • 语义化 HTML:使用语义化的 HTML 元素(<button><label><nav> 等),以确保屏幕阅读器和其他辅助技术能够正确解析界面。
  • 键盘导航:确保所有交互元素都可以完全通过键盘使用。避免仅限鼠标的交互。
  • ARIA 标签:必要时,使用适当的 ARIA 角色和标签来增强可访问性,但不要用角色和标签替代语义化 HTML。
  • 颜色对比度与视觉指示:使用高对比度颜色,并确保焦点状态等视觉指示清晰明确。您可以使用 WebAIM Contrast Checker 等工具来验证您的更改。
  • 图片的替代文本 (Alt Text):为传达含义的图片和图标提供描述性的 alt 文本。同样重要的是,如果图片不传达任何信息且纯属装饰性,请使用空的 alt 文本 (alt="")。

要测试您的更改,您可以使用 Lighthouse 或浏览器中的无障碍工具。

让我们努力让 Open WebUI 可供所有人使用。

🤔 问题与反馈

有问题或反馈?加入我们的 Discord 社区 或发起 Issue。我们随时为您提供帮助!

🚨 报告问题

发现异常?有了新点子?请查看我们的 Issues 标签页,看看是否已经有人报告或建议过。如果没有,欢迎发起新的 Issue。报告问题时,请遵循我们的 Issue 模板。这些模板旨在确保从一开始就提供所有必要细节,使我们能够更有效地处理您的关注。

important
  • 模板合规性: 请注意,如果不遵循提供的 Issue 模板,或完全不提供所要求的信息,很可能导致您的 Issue 在不作进一步考虑的情况下被关闭。这种做法对于维持 Issue 追踪的可管理性和完整性至关重要。

  • 细节是关键: 为确保您的问题被理解并得到有效处理,必须包含详尽的细节。描述应清晰,包括复现步骤、预期结果和实际结果。缺乏足够的细节可能会阻碍我们解决您的问题。

🧭 支持范围

我们注意到,一些 Issue 与 Open WebUI 并不直接相关,而是与其运行环境有关,特别是 Docker 设置。虽然我们尽力支持 Docker 部署,但了解 Docker 基础知识对于获得顺畅体验至关重要。

  • Docker 部署支持:Open WebUI 支持 Docker 部署。我们默认您已熟悉 Docker。关于 Docker 基础知识,请参考 Docker 官方文档

  • 高级配置:设置用于 HTTPS 的反向代理和管理 Docker 部署需要基础知识。网上有大量资源可以学习这些技能。确保您掌握这些知识将大大提升您使用 Open WebUI 及类似项目的体验。

🙏 谢谢!

您的贡献,无论大小,都对 Open WebUI 产生着深远影响。我们非常期待看到您为项目带来的精彩内容!

让我们携手为社区打造一个更强大的工具。🌟