Contributing to Devicon

First of all, thanks for taking the time to contribute! This project can only grow and live by your countless contributions. To keep this project maintable we developed some guidelines for contributions.

Table of Content


Overview on Submitting Icon

Here is an overview of what you have to do to submit your icons to the repo.

  1. Create the svgs for each logo versions that you have
  2. Put the svgs for each logo into its own folders in /icons
  3. Update the devicon.json to include the new icon
  4. Create a separated pull request (PR) for each icon (no matter how many versions).
  5. Include the name of the icon in the pull request title. Follow this format: new icon: {{logoName}} ({{versions}})
  6. Optional: Add images of the new icon(s) to the description of the pull request. This would help speed up the review process
  7. Optional: Reference the issues regarding the new icon.
  8. Wait for a repo maintainer to review your changes. Once they are satisfied, they will build your repo . This will create a PR into your branch.
  9. Review the PR. It should contain the icon versions of your svgs. Accept the changes if you are satisfied
  10. Once you accept the changes, a maintainer will accept your PR into the repo.

Versions and Naming Conventions

Each icon can come in different versions. So far, we have:

It is not mandatory to have 6 versions for each icon. An icon can only have one or two versions available. Just keep in mind that the minimum is 1 and the maximum 6 (for now). You must also have at least one version that can be make into an icon.

The plain and line versions (with or without wordmark) are designed to be available in the final icon font.

The original version are only available in svg format, so they do not need to be as simple and can contain numerous colors.

Some icons are really simple (like the Apple one), so the original version can be used as the plain version and as the icon font. In this case, you'll only need to make only one of the version (either "original" or "plain"). You can then add an alias in the devicon.json so they can be found with either the "original" or "plain" naming convention.


SVG Standards

Before you submit your logos/svgs, please ensure that they meet the following standard:


Organizational Guidelines


Updating the devicon.json

Before you open a PR into Devicon, you'd have to update the devicon.json. This is essential for our build script to work and to document your work.

Here is the object that each of your logo must have:

  
    {
        "name": string, // the official name of the technology. Must be lower case, no space or use the dash '-' character.
        "tags": string[], // list of tags relating to the technology for search purpose
        "versions": {
            "svg": VersionString[], // list the svgs that you have 
            "font": VersionString[] // list the fonts acceptable versions that you have
        },
        "color": string, // the main color of the logo. Only track 1 color
        "aliases": AliasObj[] // keeps track of the aliases
    }
  

Here is the AliasObj interface:

     
    {
        "base": VersionString, // the base version
        "alias": VersionString // the alias version that's similar to the base version
    }
  

Here is what VersionString means:

  1. If you have "html5-original", the version string would be "original"
  2. If you have "react-line-wordmark", the version string would be "line-wordmark"
  3. See Icon Formats and Naming Conventions for more details

Example

As an example, let's assume you have created the svgs for Amazon Web Services and Redhat logos.

For the Amazon Web Services svgs, you have the following versions: "original", "original-wordmark", "plain-wordmark". However, the "original" version is simple enough to be a "plain" version as well. Note that we are not using the acronym AWS.

For the Redhat svg, you have the "original", "original-wordmark", "plain", "plain-wordmark" versions.

  1. Put the svgs for each logo that you have into its own folders in /icons
  2. Update the devicon.json to include the icon (or variations)
  3. Create a separated pull request (PR) for each icon (no matter how many variations).
  4. Include the name of the icon in the pull request. Follow this format: "new icon: {{logoName}} ({{versions}})"
  5. For the rest of the steps, you can follow Overview on Submitting Icon

Requesting an Icon

When you want to request a new icon please feel free to create a issue following some simple guidelines:


Regarding The Build Script

To make adding icons easier for repo maintainers, we rely on GitHub Actions, Python, Selenium, and Gulp to automate our tasks.

So far, the tasks that we have automated are: