Join LVGL's community and leave your footprint in the library!

There are a lot of ways to contribute to LVGL even if you are new to the library or even new to programming.

It might be scary to make the first step but you have nothing to be afraid of. A friendly and helpful community is waiting for you. Get to know like-minded people and make something great together.

So let's find which contribution option fits you the best and help you join the development of LVGL!

加入 LVGL 的社区,在图书馆留下你的足迹!

有很多方法可以为 LVGL 做出贡献,即使您是库的新手,甚至是编程的新手。

迈出第一步可能会很可怕,但你没有什么可害怕的。 一个友好而乐于助人的社区正等着您。结识志同道合的人,共同创造美好。

那么让我们来找出最适合您的贡献选项,并帮助您加入 LVGL 的开发!

Ways to contribute(贡献方式)

  • Spread the Word: Share your LVGL experience with friends or on social media to boost its visibility.

  • Star LVGL Give us a star on GitHub ! It helps a lot to LVGL more appealing for newcomers.

  • Report a bug: Open a GitHub Issue if something is not working.

  • Join our Forum : Meet fellow developers and discuss questions

  • Tell your ideas: If you miss something from LVGL we would love to hear about it in a GitHub Issue

  • Develop features: Help to design or develop a feature. See below.

Mid and large scale issues are discussed in Feature planning issues.

An issue can be developed when all the questions in the issue template are answered and there is no objection from any core member.

We are using GitHub Labels to show the state of the issue:

  • planning: Still discussing how to approach it.

  • outlined: We have come to a conclusion and the feature is ready to be developed.

  • request-change(<user-name>): Each core member has a dedicated label, and when they request a change, they add their label.

  • under development: It's being developed by someone (can be developed only if no change is requested by the end of the cool-down phase).

  • ready: The pitch is developed and merged into master.

  • stale: Inactive, can be warmed up.

  • rejected: Not interested in this feature for some reason.

  • 传播信息 :与朋友或在社交媒体上分享您的 LVGL 体验,以提高其知名度。

  • Star LVGLGitHub 上给我们一个 Star !这有助于 LVGL 对新人更具吸引力。

  • 报告错误 :如果出现问题,请打开GitHub 问题。

  • 加入我们论坛 :与其他开发人员见面并讨论问题

  • 说出您的想法 :如果您错过了 LVGL 的某些内容,我们很乐意在 GitHub Issue 中听到相关信息

  • 开发功能 :帮助设计或开发功能。见下文。

中型和大型问题在 功能规划 功能规划问题中讨论。


我们使用 GitHub 标签来显示问题的状态:

  • planning: 还在讨论如何处理。

  • outlined: 我们已经得出结论,该功能已准备好开发。

  • request-change(<user-name>): 每个核心成员都有一个专用标签,当他们要求更改时,他们会添加自己的标签。

  • under development: 它正在由某人开发(只有在冷却阶段结束时没有请求更改的情况下才可以开发)。

  • ready: 音调已开发并合并到母版中。

  • stale: 不活动,可以预热。

  • rejected: 由于某种原因对此功能不感兴趣。

Pull request(拉取请求)


Merging new code into the lvgl, documentation, blog, examples, and other repositories happen via Pull requests (PR for short). A PR is a notification like "Hey, I made some updates to your project. Here are the changes, you can add them if you want." To do this you need a copy (called fork) of the original project under your account, make some changes there, and notify the original repository about your updates. You can see what it looks like on GitHub for LVGL here: https://github.com/lvgl/lvgl/pulls.

To add your changes you can edit files online on GitHub and send a new Pull request from there (recommended for small changes) or add the updates in your favorite editor/IDE and use git to publish the changes (recommended for more complex updates).

通过 Pull 请求(简称 PR)将新代码合并到 lvgl、文档、博客、示例和其他存储库中。PR 是类似于“嘿,我对您的项目进行了一些更新。以下是更改,您可以根据需要添加它们”的通知。为此,您需要您帐户下的原始项目的副本(称为分叉),在那里进行一些更改,并将您的更新通知原始存储库。您可以在 GitHub 上查看 LVGL 的外观:https://github.com/lvgl/lvgl/pulls

要添加更改,您可以在 GitHub 上在线编辑文件并从那里发送新的 Pull 请求(建议用于小更改),或者在您最喜欢的编辑器/IDE 中添加更新并使用 git 发布更改(建议用于更复杂的更新)。

From GitHub(来自 GitHub)

  1. Navigate to the file you want to edit.

  2. Click the Edit button in the top right-hand corner.

  3. Add your changes to the file.

  4. Add a commit message on the bottom of the page.

  5. Click the Propose changes button.

  1. 导航到您要编辑的文件。

  2. 单击右上角的编辑按钮。

  3. 将您的更改添加到文件中。

  4. 在页面底部添加提交消息。

  5. 单击建议更改按钮。

From command line(从命令行)


The instructions describe the main lvgl repository but it works the same way for the other repositories.

  1. Fork the lvgl repository. To do this click the "Fork" button in the top right corner. It will "copy" the lvgl repository to your GitHub account (https://github.com/<YOUR_NAME>?tab=repositories)

  2. Clone your forked repository.

  3. Add your changes. You can create a feature branch from master for the updates: git checkout -b <the-new-feature-branch-name>

  4. Commit and push your changes to the forked lvgl repository.

  5. Create a PR on GitHub from the page of your lvgl repository (https://github.com/<YOUR_NAME>/lvgl) by clicking the "New pull request" button. Don't forget to select the branch where you added your changes.

  6. Set the base branch. It means where you want to merge your update. In the lvgl repo both the fixes and new features go to master branch.

  7. Describe what is in the update. An example code is welcome if applicable.

  8. If you need to make more changes, just update your forked lvgl repo with new commits. They will automatically appear in the PR.

这些说明描述了主 lvgl 存储库,但它对于其他存储库的工作方式相同。

  1. Fork lvgl repository 存储库。为此,请单击右上角的“Fork”按钮。它将把lvgl 存储库“复制” lvgl 到您的 GitHub 帐户 (https://github.com/<YOUR_NAME>?tab=repositories)

  2. 克隆您的Fork存储库。

  3. 添加您的更改。您可以从 master 创建一个 功能分支 来进行更新: git checkout -b <the-new-feature-branch-name>

  4. 提交您的更改并将其推送到Fork lvgl 存储库。

  5. 单击“新建拉取请求”按钮,从 lvgl 存储库页面在 GitHub 上创建 PR (https://github.com/<YOUR_NAME>/lvgl) 。单击 “New pull request” 按钮。不要忘记选择您添加更改的分支。

  6. 设置基础分支。这意味着您想要合并更新的位置。在 lvgl 存储库中,修复和新功能都会转到 master 分支。

  7. 描述更新内容。如果适用,欢迎提供示例代码。

  8. 如果您需要进行更多更改,只需 lvgl 使用新的提交更新您的分叉存储库即可。它们将自动出现在 PR 中。

Commit message format(提交消息格式)


The commit messages format is inspired by Angular Commit Format.

The following structure should be used:

<type>(<scope>): <subject>

Possible <type>s:

  • fix bugfix in the source code.

  • feat new feature

  • arch architectural changes

  • perf changes that affect the performance

  • example anything related to examples (even fixes and new examples)

  • docs anything related to the documentation (even fixes, formatting, and new pages)

  • test anything related to tests (new and updated tests or CI actions)

  • chore any minor formatting or style changes that would make the changelog noisy

<scope> is the module, file, or sub-system that is affected by the commit. It's usually one word and can be chosen freely. For example img, layout, txt, anim. The scope can be omitted.

<subject> contains a short description of the change:

  • use the imperative, present tense: "change" not "changed" nor "changes"

  • don't capitalize the first letter

  • no dot (.) at the end

  • max 90 characters

<body> optional and can be used to describe the details of this change.

<footer> shall contain

  • the words "BREAKING CHANGE" if the changes break the API

  • reference to the GitHub issue or Pull Request if applicable.

Some examples:

  • fix(img): update size if a new source is set

  • fix(bar): fix memory leak The animations weren't deleted in the destructor.

    Fixes: #1234

  • feat: add span widget

    The span widget allows mixing different font sizes, colors and styles. It's similar to HTML <span>

  • docs(porting): fix typo

提交消息格式的灵感来自 Angular Commit Format


<type>(<scope>): <subject>

可能的 <type>s 情况:

  • fix 源代码中的错误修复。

  • feat 新功能

  • arch 架构变化

  • perf 影响性能的变化

  • example 与示例相关的任何内容(甚至修复和新示例)

  • docs 与文档相关的任何内容(甚至修复、格式设置和新页面)

  • test 与测试相关的任何内容(新的和更新的测试或 CI 操作)

  • chore 任何会使变更日志变得嘈杂的细微格式或样式更改

<scope> 是受提交影响的模块、文件或子系统。通常是一个词,可以自由选择。例如 img, layout, txt, anim。范围可以省略。

<subject> 包含更改的简短描述:

  • 使用祈使句、现在时:“change”而不是“changed”或“changes”

  • 不要将第一个字母大写

  • 末尾没有点 (.)

  • 最多 90 个字符

<body> 可选,可用于描述此更改的详细信息。

<footer> 应包含

  • 如果更改破坏了 API,则显示“BREAKING CHANGE”字样

  • 参考 GitHub 问题或 Pull 请求(如果适用)。


  • 修复(img):如果设置了新源则更新大小

  • fix(bar):修复内存泄漏动画未在析构函数中删除。


  • 技术:添加跨度小部件

    Span 小部件允许混合不同的字体大小、颜色和样式。它类似于 HTML <span>

  • 文档(移植):修复拼写错误

Developer Certification of Origin (DCO)(开发者原产地认证 (DCO))



To ensure all licensing criteria are met for every repository of the LVGL project, we apply a process called DCO (Developer's Certificate of Origin).

The text of DCO can be read here: https://developercertificate.org/.

By contributing to any repositories of the LVGL project you agree that your contribution complies with the DCO.

If your contribution fulfills the requirements of the DCO no further action is needed. If you are unsure feel free to ask us in a comment.

为确保 LVGL 项目的每个存储库都满足所有许可标准,我们应用了一个称为 DCO(开发者原产地证书)的流程。

DCO 的文本可以在这里阅读:https://developercertificate.org/

通过为 LVGL 项目的任何存储库做出贡献,您同意您的贡献符合 DCO。

如果您的捐款符合 DCO 的要求,则无需采取进一步行动。 如果您不确定,请随时在评论中询问我们。