The goal is to make it possible for any community member to submit libraries to the registry, regardless of their level of relevant technical expertise. For this reason, the project documentation includes a detailed and comprehensive set of instructions for submitting a library. Since the time these instructions were written, a regression was introduced into the GitHub website: When creating a commit via the GitHub web interface, the dialog allows the user to select which branch the commit should be made to. Typically this includes two options: - "Commit directly to the <target branch> branch" (where "<target branch>" is the branch the user had selected when they initiated the procedure) - "Create a new branch for this commit and start a pull request" If the branch protection rules configured for the target prevent the user from committing to that branch, then the first of the options is removed (which is the appropriate behavior). Following GitHub's regression, under the conditions produced by the previous submission procedure, the determination of whether the first option should be disabled is based on the branch protection configuration of the arduino/arduino-registry repository, not of the library submitter's fork. This is incorrect because the fork does not inherit the branch protection settings of the parent, meaning the target branch will never be protected in the fork and thus that the commit to that branch should be allowed in the dialog. Because we do have branch protection rules enabled for the `main` branch of the `arduino/library-registry` repo, this bug causes the default setting in the dialog to be changed from "Commit directly to the main branch" to "Create a new branch for this commit and start a pull request" when the documented submission procedure is performed. Strangely, the user flow is significantly different depending on which of these options is selected. The user flow when "Create a new branch for this commit and start a pull request" is selected forces the user to submit the PR to their own fork repository instead of to arduino/library-registry. It is essential for the PR to be submitted to arduino/library-registry so this change in the outcome of the previous documented submission procedure as a side effect of GitHub's regression is catastrophic. The submission instructions are hereby updated to once again produce a correct submission. Unfortunately, the procedure that is now required is more complex and less intuitive than the previous one. In order to mitigate this, I made an effort to be extra explicit both in describing the actions to be performed, as well as describing the expected result of each action. I reported the regression to GitHub. I will change the documentation back to using the more friendly submission procedure once it is fixed.
Arduino Library Manager list
This repository contains the list of libraries in the Arduino Library Manager index.
Table of Contents
- Frequently asked questions
- Adding a library to Library Manager
- Changing the URL of a library already in Library Manager
- Removing a library from Library Manager
- Report a problem with Library Manager
Frequently asked questions
For more information about Arduino Library Manager and how the index is maintained, please see the FAQ.
Adding a library to Library Manager
If you would like to make a library available for installation via Library Manager, just submit a pull request that adds the repository URL to the list. You are welcome to add multiple libraries at once.
See the instructions below for detailed instructions on how to do this via the GitHub web interface.
Instructions
-
You may want to first take a look at the requirements for admission into the Arduino Library Manager index. Each submission will be checked for compliance before being accepted.
-
Click the following link:
https://github.com/arduino/library-registry/fork
The "Create a new fork" page will open. -
Click the Create fork button in the "Create a new fork" page.
A "Forking arduino/library-registry" page will open while the fork is in the process of being created. -
Wait for the "Forking" process to finish.
The home page of your fork of the library-registry repository will open. -
Click on the file
repositories.txt
under the list of files you see in that page.
The "library-registry/repositories.txt" page will open. -
Click the pencil icon ("Edit this file") at the right side of the toolbar in the "library-registry/repositories.txt" page.
Therepositories.txt
file will open in the online text editor. -
Add the library repository's URL to the list (it doesn't matter where in the list). This should be the URL of the repository home page. For example:
https://github.com/arduino-libraries/Servo
-
Click the Commit changes... button located near the top right corner of the page.
The "Commit changes" dialog will open. -
Click the Commit changes button in the "Commit changes" dialog.
The "library-registry/repositories.txt" page will open. -
Click the "library-registry" link at the top of the "library-registry/repositories.txt" page.
The home page of your fork of the library-registry repository will open. -
You should see a banner on the page that says:
This branch is 1 commit ahead of arduino:main.
Click the "Contribute" link near the right side of that banner.
A menu will open. -
Click the Open pull request button in the menu.
The "Open a pull request" page will open. -
In the "Open a pull request" window that opens, click the Create pull request button.
The library will be automatically checked for compliance as soon as the pull request is submitted. If no problems were found, the pull request will be immediately merged and the library will be available for installation via Library Manager within a day's time.
If any problems are found, a bot will comment on the pull request to tell you what is wrong. The problem may be either with your pull request or with the library.
If the problem is with the pull request:
Edit the file in the
branch
you submitted the pull request from in your fork of the arduino/library-registry
repository, then commit.
Doing this will update the pull request and cause the automated checks to run again.
If the problem is with the library:
- Make the necessary fix in the library repository.
- Increment the
version
value in the library's library.properties file. - Create a release or tag. The Library Manager index always uses tagged versions of the libraries, so even if the development version of the library is compliant, it can't be accepted until the latest release or tag is compliant. Alternatively, you can redo the existing release/tag if you prefer.
- Comment on your pull request here in the
arduino/library-registry
repository, mentioning @ArduinoBot in the comment. Doing this will cause the automated check to run again.
Changing the URL of a library already in Library Manager
Submit a pull request that changes the URL as desired in repositories.txt. This can be done by following the instructions above.
Since this type of request must be reviewed by a human maintainer, please write an explanation in the pull request description, making it clear that the URL is intentionally being changed.
Removing a library from Library Manager
Submit a pull request that removes the URL from repositories.txt. This can be done by following the instructions above.
Since this type of request must be reviewed by a human maintainer, please write an explanation in the pull request description, making it clear that the URL is intentionally being removed.
Report a problem with Library Manager
First, please take a look at the FAQ. If a library release is missing from Library Manager, it is usually because it was not compliant with all the requirements listed in that document.
This repository is not an appropriate place to request support or report problems with a library. Check the library's own documentation for instructions or ask on the Arduino Forum.
If the problem is about something else, please submit an issue report here.