Tuesday, 20 December, 2016 UTC


Summary

We've added a new userland section to the Electron website to help users discover the people, packages, and apps that make up our flourishing open-source ecosystem.

Origins of Userland
Userland is where people in software communities come together to share tools and ideas. The term originated in the Unix community, where it referred to any program that ran outside of the kernel, but today it means something more. When people in today's Javascript community refer to userland, they're usually talking about the npm package registry. This is where the majority of experimentation and innovation happens, while Node and the JavaScript language (like the Unix kernel) retain a relatively small and stable set of core features.
Node and Electron
Like Node, Electron has a small set of core APIs. These provide the basic features needed for developing multi-platform desktop applications. This design philosophy allows Electron to remain a flexible tool without being overly prescriptive about how it should be used.
Userland is the counterpart to "core", enabling users to create and share tools that extend Electron's functionality.
Collecting data
To better understand the trends in our ecosystem, we analyzed metadata from 15,000 public GitHub repositories that depend on electron or electron-prebuilt
We used the GitHub API, the libraries.io API, and the npm registry to gather info about dependencies, development dependencies, dependents, package authors, repo contributors, download counts, fork counts, stargazer counts, etc.
We then used this data to generate the following reports:
  • App Development Dependencies: Packages most often listed as devDependencies in Electron apps.
  • GitHub Contributors: GitHub users who have contributed to numerous Electron-related GitHub repositories.
  • Package Dependencies: Electron-related npm packages that are frequently depended on by other npm packages.
  • Starred Apps: Electron apps (that are not npm packages) with numerous stargazers.
  • Most Downloaded Packages: Electron-related npm packages that are downloaded a lot.
  • App Dependencies: Packages most often listed as dependencies in Electron apps.
  • Package Authors: The most prolific authors of Electron-related npm packages.
Filtering Results
Reports like app dependencies and starred apps which list packages, apps, and repos have a text input that can be used to filter the results.
As you type into this input, the URL of the page is updated dynamically. This allows you to copy a URL representing a particular slice of userland data, then share it with others.
More to come
This first set of reports is just the beginning. We will continue to collect data about how the community is building Electron, and will be adding new reports to the website.
All of the tools used to collect and display this data are open-source:
  • electron/electronjs.org: The Electron website.
  • electron/electron-userland-reports: Slices of data about packages, repos, and users in Electron userland.
  • electron/repos-using-electron: All public repositories on GitHub that depend on electron or electron-prebuilt
  • electron/electron-npm-packages: All npm packages that mention electron in their package.json file.
If you have ideas about how to improve these reports, please let us know opening an issue on the website repository or any of the above-mentioned repos.
Thanks to you, the Electron community, for making userland what it is today!