Skip to content

Contributing to mwptools#

  1. Contributions are welcome
  2. Any contribution is governed by GPL3 (or later).
  3. AI / LLM usage. AI generated code is NOT encouraged, but is not explicitly banned. Any contributed code must be intelligible to the project owner. It may be necessary for you to explain your code; so please ensure you can so so. Be aware of (2) above. There may be significant delays in reviewing / merging what is (or appears to be) AI generated code.
    • You are advised to discuss any proposed AI generated contributions with the project owner prior to submission, in order to avoid wasted effort or outright rejection.
  4. PRs should be in a separate branch, based off development.

Musings#

Language#

mwp application#

  • The mwp application is written in Vala. OS specific low level interfaces may be written in C (or exceptionally, C++ where needed for Windows -- an extern C entry point must be provided). Any C / C++ function must have a vapi definition.
  • User interface definitions may be provided as blueprint UI definitions or as inline code.

Other applications and tools#

The following languages are considered acceptable:

  • C
  • Vala
  • Go
  • Zig
  • Rust
  • Ruby
  • Bash

Build environment#

meson and ninja for things that are intended to be installed by default, otherwise a Makefile is also acceptable.

OS#

New features (other than obviously OS specific items (e.g.BLE)), shall be available for:

  • Linux
  • FreeBSD
  • NetBSD
  • OpenBSD

Optionally

  • DragonflyBSD
  • Illumos

Even more optionally

  • MacOS (homebrew)
  • Windows (Msys2)

Note the specific environments for proprietary platforms.

Contributions that fail to build on all the above OS will be declined (OS specific extensions must be protected (#if, #ifdef etc.)).

Documentation#

  • mkdocs flavoured markdown (docs/manual/docs, the user guide)
  • Plain markdoc / text (docs).
  • AVIF is the preferred format for images in documentation.