Generates information related to Arduino Library Manager.
For each of Library Manager libraries, the following information is gathered:
- Current repository URL.
- Number of library releases.
- Number of GitHub stars.
- Number of forks.
- Whether repository has been archived.
- Date of most recent commit.
- Metadata for latest release.
For each owner of Git repositories of Library Manager libraries, the following information is gathered:
- Number of libraries
- Number of library releases
- Number of GitHub stars.
- Number of forks of the repositories.
- Date of most recent commit.
Latest version of Go.
Run the following command from the root of the project repository.
go build
This will generate an executable file named ino-library-manager-stats.
The application makes a GitHub API request for each of the libraries with a repository hosted on GitHub. Due to the large number of requests, the application is subjected to rate limiting. Unauthenticated API requests are subjected to very strict rate limit allowances, which would make the operation infeasible. So it is necessary to provide the application with a GitHub personal access token:
The token does not require any special permissions. If using a "classic" token, leave all checkboxes unchecked under the "Select scopes" section of the token generation page. If using a "fine-grained" token, select "Public Repositories (read-only)" from the "Repository access" section of the page, and do not add any "account permissions".
Define an environment variable named GITHUB_TOKEN with the token you created as a value.
The data is output as CSV files. Specify the path to the folder under which this files should be saved via the --output-path command line flag.
Note that the duration of each run of the application is very long. In addition to the need to gather a large amount of data, the more significant factor is the rate limiting imposed on GitHub API requests. Once a rate limit is reached, the application must simply wait until the limit resets.
The reports are CSV files. Open them in any spreadsheet program (e.g., LibreOffice Calc) to view, sort, and analyze the data.
- Name: registered name.
- Registered Repository URL: the repository URL at the time the library was registered.
- Resolved Repository URL: the resolved repository URL.[1]
- Releases: number of releases in the Library Manager index.
- Stars: number of stars on the repository.[2]
- Forks: number of forks of the repository.[2]
- Last Push (UTC): date of the last commit pushed to the repository.[2]
- Metadata: the remaining fields come from the library metadata at the time of the latest release. See the Arduino Library Specification for details.
- ^ Based on the registered repository URLs after following redirects (which are automatically generated by Git hosts on username/repository name change or transfer).
- ^abc Only gathered for repositories hosted on GitHub. It will have the value "
unknown" for libraries with repositories on other Git hosts.
The scope of the report is limited to libraries with publicly available repositories.
Library Manager contains libraries from repositories which are no longer available. This might occur through various causes:
- Owner deleted the repository.
- Owner made the repository private.
- Owner moved the repository, did not do so in a manner that caused a redirect to be produced (ino-library-manager-stats does follow redirects), and did not submit a repository URL update request.
Although these owners still made a contribution to Library Manager, the lack of repository availability diminishes the ongoing value because:
- The library can not be maintained
- The community can't contribute to the library
- The valuable revision history is not available to those forking the project
For this reason, libraries without available repositories are intentionally excluded as sources of data for the report. This means the report data will differ from data extracted from the Library Manager index data alone.
- Owner: organization or username on the repository host.[1]
- URL: owner's profile page on the repository host.
- Libraries: number of libraries with available repositories owned by owner.
- Releases: number of releases in Library Manager index across all libraries from owner.
- Stars: number of stars across all library repositories from owner.[2]
- Forks: number of forks of which library repositories from owner are the parent.[2]
- Last Push (UTC): date of the last commit pushed to library repositories from owner.[2]
- ^ Based on the library repository URLs after following redirects (which are automatically generated by Git hosts on username/repository name change or transfer), and thus may be different from the legacy owner name in the Library Manager index data.
- ^abc Only gathered for repositories hosted on GitHub. It will have the value "
unknown" for owners who use other Git hosts.