nerd-fonts/contributing.md
2017-04-21 23:34:27 -04:00

3.3 KiB

Contributing Guide

How to contribute

Work In Progress, for now the minimum:

  • Fork the project from the master branch and submit a Pull Request (PR)
    • Explain what the PR fixes or improves
    • Screenshots for bonus points
  • Use sensible commit messages
    • If your PR fixes a separate issue number, include it in the commit message

Adding a new font or removing an existing font

  • Check the license even allows the font to be modified and shared
  • Add the original (unpatched) version of the font and any readme and/or license files to the unpatched-sample-fonts directory inside a new directory
    • e.g. Adding XYZ Font, create directory src/unpatched-fonts/xyz/{PUT FONT FILES HERE}
  • Do a basic test with the new font to ensure it patches correctly and generates a new font file, e.g.
    • ./font-patcher src/unpatched-fonts/XYZ/XYZ.ttf --complete
    • Make sure to then delete this new font file if it is in the repository (all patched fonts should be generated in the patched-fonts directory)
  • When fairly satisfied the font patches correctly, run the following scripts in this order:
    • Copy all the unpatched readmes to the patched location with additional info on variations appended:
      • ./standardize-and-complete-readmes.sh
    • Patch all of the variations/options, e.g.
      • ./gotta-patch-em-all-font-patcher\!.sh XYZ
  • Add the new font to the README table of supported fonts
  • Update the "counts" in the Features Section
    • You can get this information by simply passing a second param to the "all patcher": ./gotta-patch-em-all-font-patcher\!.sh "" info
      • "X already patched font families" -> Give exact number from 'typefaces' line
      • "Over X unique combinations/variations..." -> round down to nearest hundred from 'variation' line
      • "Over X glyphs/icons combined" -> manual process for now (@todo)

Things to keep in mind

  • Smaller PRs are likely to be merged more quickly than bigger changes
  • If it is a useful PR it will get merged in eventually
  • This project is using Semantic Versioning 2.0.0
  • I try to group fixes into milestones/versions
    • If your bug or PR is not trivial it will likely end up in the next MINOR version
    • If your bug or PR is trivial or critical it will likely end up in the next PATCH version
  • Most of the time PRs and fixes are not merged directly into master without being present on a new versioned branch
    • Sometimes for small items I will make exceptions to get the fix or readme change on master sooner but even after there will always be a versioned branch to keep track of each release

Commit messages

  • squash or not to squash into 1 commit ? (@todo)
  • require a specific format for commit messages for consistency ? (@todo)

Code standards

Shell Scripts

Python

  • Use 4 spaces for indentation
  • Consider PEP8 and other (@todo)