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 maintainable, we have developed some guidelines for our contributors.
<li>If there are no issues, they will accept your pull request and merge it using <ahref="https://github.com/devicons/devicon/discussions/470">squash merging</a>. If there are any problems, they will let you know and give you a chance to fix it.</li>
<li><b>original</b>: the original logo. Can contain multiple colors. <ahref="https://github.com/devicons/devicon/blob/master/icons/amazonwebservices/amazonwebservices-original.svg"> Example </a></li>
<li><b>original-wordmark</b>: similar to the above but must contain the name of the technology.<ahref="https://github.com/devicons/devicon/blob/master/icons/amazonwebservices/amazonwebservices-original-wordmark.svg"> Example </a></li>
<li><b>plain</b>: a one-color version of the original logo.<ahref="https://github.com/devicons/devicon/blob/master/icons/android/android-plain.svg"> Example </a></li>
<li><b>plain-wordmark</b>: a one-color version of the original logo but with wordmark.<ahref="https://github.com/devicons/devicon/blob/master/icons/android/android-plain-wordmark.svg"> Example </a></li>
<li><b>line</b>: a one-color, line version of the original logo.<ahref="https://github.com/devicons/devicon/blob/master/icons/apache/apache-line.svg"> Example </a></li>
<li><b>line-wordmark</b>: a one-color, line version of the original logo but with wordmark.<ahref="https://github.com/devicons/devicon/blob/master/icons/apache/apache-line-wordmark.svg"> Example </a></li>
You don't need 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.
Some icons are really simple (ex. Apple), 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 one of the version (either "original" or "plain"). You can then add an alias in the <code>devicon.json</code> so they can be found with either the "original" or "plain" naming convention. Note: this only applies to font icon versions only, not the SVG versions.
<li>The <b>plain</b> and <b>line</b> versions (with or without wordmark) need to stay as simple as possible. They must have only one color and the paths are united. We will strip the color when turning it into icons so they can have any color.
<li>Optimize/compress your SVGs. You can use a service like <ahref="https://compressor.io/">compressor</a> or <ahref="https://petercollingridge.appspot.com/svg-editor">SVG Editor</a>.</li>
<li>The icon's strokes and texts must be fills. This is to satisfy our conversion website's <ahref="https://icomoon.io/#docs/stroke-to-fill">requirements.</a></li>
<li>Each <code>.svg</code> file contains one version of an icon in a <code>0 0 128 128</code> viewbox. You can use a service like <ahref="https://www.iloveimg.com/resize-image/resize-svg">resize-image</a> for scaling the svg.</li>
<li>The <code>svg</code> element does not need the <code>height</code> and <code>width</code> attributes. However, if you do use it, ensure their values are either <code>"128"</code> or <code>"128px"</code>. Ex: <code>height="128"</code></li>
<li>Each <code>.svg</code> must use the <code>fill</code> attribute instead of using <code>classes</code> for colors. See <ahref="https://github.com/devicons/devicon/issues/407">here</a> for more details.</li>
Before you open a PR into Devicon, you must update the <code>devicon.json</code>. This is essential for our build script to work and to document your work.
<p>For the Amazon Web Services svgs, you have the "original", "original-wordmark", "plain-wordmark" versions. The "original" version is simple enough to be a "plain" version as well. Note that we are not using the acronym AWS.</p>
Devicon is living by it's contributors and <ahref="https://github.com/orgs/devicons/people">maintainers</a>. Everyone can and is asked to contribute to this project.
You <b>don't</b> have to be in a team to contribute!
</p>
<p>
The branches <code>master</code> and <code>develop</code> are protected branches and only members
with corresponding permissions (see teams below) are able to push changes to them.
Additional branches <b>must</b> follow the pattern <code><i>username</i>/feature/<i>description</i></code>.
The <code>/feature/</code> indicates that a change is made to existing code (regardless
if it's a fix, refactor or actual feature). The naming convention is based on the <i>gitflow</i>-workflow.
</p>
<p>For organisational purposes we introduced <ahref="https://github.com/orgs/devicons/teams">teams</a> with permissions and responsibilities:</p>
<dl>
<dt>Supporter (@devicons/supporter)</dt>
<dd>
Members of this team are responsible for reviewing pull request (auto assigned), managing issues and preparing the upcoming release.<br/>
Supporters have <code>Write</code> access to the repository (allowing them to create own branches)
and are allowed to push changes to the <code>develop</code> branch (pull request and status checks required).
</dd>
<dt>Maintainer (@devicons/maintainer)</dt>
<dd>
Maintainer role inherits from the 'Supporter' role and adds <code>Maintainer</code> permission
to the repository.
Members of this team are allowed to publish a new release (push <code>master</code> branch after pull
request and status checks).
</dd>
</dl>
<p>
Wanna join the team? Please <ahref="https://github.com/devicons/devicon/discussions/new">open a public discussion</a> where
you introduce yourself.<br/>
New member requests have to be approved by all active members of the team <b>Maintainer</b>. Every member
of this team has a veto permission to reject a new member.<br/>
<li>Upload svgs to <ahref="https://icomoon.io/app/#/select">icomoon.io</a> and get the icons back. For details, see <ahref="https://github.com/devicons/devicon/issues/252"> the original disscussion</a>, <ahref="https://github.com/devicons/devicon/pull/268">this PR that introduce the feature</a> and <ahref="https://github.com/devicons/devicon/issues/300">the final changes to it.</a></li>
<li>Build, combine, and minify CSS files. For details, see <ahref="https://github.com/devicons/devicon/pull/290">this</a></li>
<li>Publishing a new release to <ahref="https://www.npmjs.com/package/devicon">npm</a>; See <ahref="https://github.com/devicons/devicon/issues/288">#288</a></li>
We are running a Discord server. You can go here to talk, discuss, and more with the maintainers and other people, too. Here's the invitation: https://discord.gg/hScy8KWACQ. If you don't have a GitHub account but want to suggest ideas or new icons, you can do that here in our Discord channel.
<h2id='release'>Release strategy, conventions, preparation and execution</h2>
<h5>Release strategy</h5>
<p>Devicon does not follow a strict release plan. A new release is depended on current amount of contributions, required bugfixes/patches and will be discussed by the team of maintainers.</p>
<p>Generally speaking: A new release will be published when new icons are added or a bug was fixed. When it's predictable that multiple icons are added in a foreseeable amount of time they are usually wrapped together.</p>
<h5>Conventions</h5>
<p>The version naming follows the rules of <ahref="https://semver.org/">Semantic Versioning</a>. Given a version number MAJOR.MINOR.PATCH, increment the:</p>
<ul>
<li>MAJOR version when you make incompatible API changes,</li>
<li>MINOR version when you add functionality <b>(like a new icon)</b> in a backwards compatible manner, and</li>
<li>PATCH version when you make backwards compatible bug fixes.</li>
<li>Define the next release version number based on the conventions</li>
<li>Checkout <code>development</code> as <code>draft-release</code> branch</li>
<li>Bump the package version using <code>npm version v<i>MAJOR</i>.<i>MINOR</i>.<i>PATCH</i> -m "bump npm version to v<i>MAJOR</i>.<i>MINOR</i>.<i>PATCH</i>"</code> (see <code><ahref="https://github.com/devicons/devicon/pull/497">#487</a></code>)</li>
<li>Push the branch <code>draft-release</code></li>
<li>Manually trigger the workflow <code><ahref="https://github.com/devicons/devicon/actions/workflows/build_icons.yml">build_icons.yml</a></code> (which has a <code>workflow_dispatch</code> event trigger) and select the branch <code>draft-release</code> as target branch. This will build a font version of all icons using icomoon and automatically creates a pull request to merge the build result back into <code>draft-release</code></li>
<li>Review and approve the auto-create pull request created by the action of the step above</li>
<li>Create a pull request towards <code>development</code>. Mention the release number in the pull request title and add information about all new icons, fixes, features and enhancements in the description of the pull request. Take the commits as a guideline. It's also a good idea to mention and thank all contributions who participated in the release (take description of <code><ahref="https://github.com/devicons/devicon/pull/504">#504</a></code> as an example).</li>
<li>Wait for review and approval of the pull request (<b>DON'T</b> perform a squash-merge)</li>
<li>Once merged create a pull request with BASE <code>master</code> and HEAD <code>development</code>. Copy the description of the earlier pull request.</li>
<li>Since it was already approved in the 'development' stage a maintainer is allowed to merge it (<b>DON'T</b> perform a squash-merge).</li>
<li>Create a <ahref="https://github.com/devicons/devicon/releases/new">new release</a> using v<i>MAJOR</i>.<i>MINOR</i>.<i>PATCH</i> as tag and release title. Use the earlier created description as description of the release.</li>
<li>Publishing the release will trigger the <ahref="/.github/workflows/npm_publish.yml">npm_publish.yml</a> workflow which will execute a <code>npm publish</code> leading to a updated <ahref="https://www.npmjs.com/package/devicon">npm package</a> (v<i>MAJOR</i>.<i>MINOR</i>.<i>PATCH</i>).</li>