= Contributing to WeeChat :author: Sébastien Helleu :email: flashcode@flashtux.org :lang: en == Reporting bugs First, some basic things: * Use only English to communicate with developers. * Search in issues if the same problem or feature request has already been reported (a duplicate is waste of time for you and the developers!). * If you can, please check if the problem has been fixed in development version (if you are using a stable release or old version). * Report only one bug or feature request per issue. === Security reports Please *DO NOT* file a GitHub issue for security related problems, but send an email to instead. === Required info When reporting https://github.com/weechat/weechat/issues[issues] on GitHub, please include: * Your *WeeChat version*: the output of `/v` in WeeChat, for example: _WeeChat 1.7-dev (git: v1.6-6-g997f47f)_. + If WeeChat does not start at all, please include the version displayed by `weechat --help` (or the version installed with your package manager). * Your *operating system*: its name and version (examples: Linux Debian Bookworm, FreeBSD 13.0, Windows/Cygwin 64-bit, Windows/Ubuntu 64-bit...). * The *steps to reproduce*: if possible, please include a reproducible example: explain the steps which led you to the problem. + It's even better if you can reproduce the problem with a new config (and no scripts loaded): try `weechat --dir /tmp/weechat` and check if you have the problem here. * The *gdb's backtrace* (only for a crash): if you can reproduce the crash (or if you have a core file), please include the backtrace from gdb (look at https://weechat.org/doc/weechat/user/#report_crashes[User's guide] for more info). * The *actual result*. * The *expected result*: the correct result you are expecting. [IMPORTANT] Most of times, the WeeChat crash log file (_weechat_crash_YYYYMMDD_xxx.log_) is *NOT USEFUL* to fix the bug, so please report this file *ONLY* if a developer asked you to send it (and be extremely careful, this file can contain personal data like passwords and contents of your chats). === Scripts related issues If you are using scripts, they can cause problems/crashes. To check if the problem is related to one script, try to unload them one by one (using command `/script unload `). Many issues reported are in fact related to bugs in scripts, so please first check that before reporting any issue on WeeChat itself. If you think the problem comes from a specific script, please report the issue in the https://github.com/weechat/scripts/issues[scripts git repository] instead. == Translations Pull requests on GitHub for fixes or new translations are welcome at any time, for https://github.com/weechat/weechat[WeeChat] and the website https://github.com/weechat/weechat.org[weechat.org]. To start a translation in a new language (not yet supported), please look at https://weechat.org/doc/weechat/dev/#translations[translations] in Developer's guide. == Feature requests WeeChat is under active development, so your idea may already have been implemented, or scheduled for a future version (you can check in https://weechat.org/dev/[roadmap] or https://github.com/weechat/weechat/milestones[milestones] on GitHub. Pull requests on GitHub are welcome for minor new features. For major new features, it's better to discuss about it in IRC (server: _irc.libera.chat_, channel _#weechat_). Before submitting any pull request, be sure you have read the https://weechat.org/doc/weechat/dev/#coding_rules[coding rules] in Developer's guide, which contains info about styles used, naming convention and other useful info. == Semantic versioning Since version 4.0.0, WeeChat is following a "practical" semantic versioning. It is based on https://semver.org/[Semantic Versioning] but in a less strict way: breaking changes in API with low user impact don't bump the major version. The version number is on three digits `X.Y.Z`, where: * `X` is the major version * `Y` is the minor version * `Z` is the patch version. Rules to increment the version number: * the *major version* number (`X`) is incremented only when intentional breaking changes target feature areas that are actively consumed by users, scripts or C plugin API * the *minor version* number (`Y`) is incremented for any new release of WeeChat that includes new features and bug fixes, possibly breaking API with low impact on users * the *patch version* number (`Z`) is reserved for releases that address severe bugs or security issues found after the release. For more information, see the https://specs.weechat.org/specs/2023-003-practical-semantic-versioning.html[specification].