Contributing

February 18, 2024 · View on GitHub

Patches are welcome in whatever form. However, you must agree that your code will be provided by MIT License.

To Documentation

You can contribute to the homepage by sending pull-request to the docs directory if there is an error, a better way to describe the content, or writing a translation. Jekyll is used as the framework, and can be written in markdown format. We also use jekyll-docs-theme as a theme, which allows extended expressions.

Setup local test environment

To test a GitHub Pages site locally, refers this documents.

The following is a brief description using chocolatey.

  1. Install Ruby using chocolatey.

    $ choco install ruby
    
  2. Install Jekyll and Bundler.

    $ ridk install
    $ gem install jekyll bundler
    

    See Jekyll documentation for details.

  3. Build site locally in docs directory.

    $ bundle install
    $ bundle exec jekyll serve
    
  4. Access to http://localhost:4000.

Add translation of document.

The win-vind documentation has the potential to easily add manual translation and manage continuously. A Japanese translation is available as a sample in here. Please use it as a reference when translating. The following are the steps for translation.

  1. Create a translation directory (e.g. fr).

    $ ./tools/create_trans.bat fr
    
  2. Add the following to the headers for each file.

    keyNotes
    translationSpecify the name of the directory you just created. This will be used for language selection.
    translatorsWrite your GitHub id. It will appear at the bottom of the page. If more than one person translates the document due to revisions, give them in list form.
    versionWrite the version that corresponds to the document. If a newer version than this is released, it will indicate that the content may not be up to date.

    Like this.

    ---
    translation: fr
    translators:
      - foo
      - bar
    version: 4.2.1
    ---
    
    
  3. Add a label to _config.yml to be displayed in the language selection.

    - translations:
      - id: fr
        label: Français
    
  4. All that is left to do is to translate it, and use DeepL to check the content during the pull-request.

To Development

You can contribute to development by sending pull requests to the master branch to fix or add features, add test cases, modify typos and expressions, improve security. When adding new code, please consider adding test cases in the test directory to satisfy branch coverage. Codacy and Travis and Actions run by pushing, and Coverity checks programmatic resources at releasing as Continuous Integration. If you want to discuss development, please create a thread in Discussion with #Development category.

Quick Start for Build

If you have already installed MinGW-w64 or Visual Studio, all you need is the next steps.

Visual Studio
$ cmake -B build -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 17 2022" -A x64 .
$ cmake --build build --config Debug
$ ./build/Debug/win-vind.exe
MinGW-w64 >= 8.2.0
$ cmake -B build -DCMAKE_BUILD_TYPE=Debug -G "MinGW Makefiles" .
$ cmake --build build --config Debug
$ ./build/win-vind.exe

Run Test

See here for unit tests and runtime test.

Make Installer

$ ./tools/create_assets.bat 1.0.0 -msvc 64

Dependencies

Softwares

I recommend to install follow softwares.

NameRecommended VersionDownload Link
CMake3.14.4Download - CMake
NSIS3.06.1Download - NSIS
Windows10 SDK10.0.19041.0Microsoft Windows10 SDK - Windows app development

Libraries

These libraries are bundled in the libs directory.

NameWhat isPurposeLicense
fluent-trayGUI frameworkCreate GUI for the system tray or popups.MIT License
argparseArgument ParserParse arguments in the command line.MIT License
doctestUnit test frameworkFor basic unit testMIT License
fffMacro-based fake function frameworkTo mock Windows APIMIT License
pydirectinputMouse and keyboard automation for WindowsTo emulate inputs for runtime testsMIT License