Rules for 3rd party modules in unrealircd-contrib

This text is for module authors, C programmers, who wish to include their modules in the official unrealircd-contrib repository

UnrealIRCd ships with a Module manager and a default repository where 3rd party modules are stored. This allows end-users to easily install, upgrade and uninstall 3rd party modules with simple commands. If you are a module coder and want to submit your 3rd party module for inclusion in the repository (and keep it included) then you have to follow a couple of rules. Most of these rules should be common sense and not be any problem. They are outlined below.

The rules
The module must obey the following rules, both when submitting the module and thereafter:
 * You must be the author: the module must be written by you. If it is written by someone else (in total or large parts) then the module can still be included, but only when the appropriate copyright rules are obeyed and when the original/other author has no objections to list the module in our repository. We normally won't actively check this, but we may act if we get complaints from the original author.
 * License must be open source: such as GPLv2. See GNU.org GPL-Compatible Free Software Licenses. You must mention what license is used in the source file (.c file).
 * No malicious code or intent: in particular your module may not contain backdoors or allows unauthorized remote command execution.
 * No spy modules. Modules that allow silent interception or logging of messages are controversial. Also, distributing them to non-free countries - where people may be prosecuted and even executed for what they say - poses serious legal and moral issues. Therefore we do not include spy modules.
 * No bad quality code, module must be kept maintained: Keep in mind that we don't check modules actively for bugs. Bug reports from users should be made directly to the author (you). You are the only one responsible for fixing bugs. However, if you don't fix serious bugs, such as crash bugs, within a reasonable time frame, then we may warn you or take other actions.
 * Module must compile: the module must compile successfully on UnrealIRCd on *NIX. If your module is only known to compile on certain UnrealIRCd versions, then set the min-unrealircd-version and max-unrealircd-version fields appropriately in the module manager configuration block (more about this later). If a new UnrealIRCd version was just released that breaks your module, then naturally we will give you some time to fix these issues.
 * Use a proper MOD_HEADER and module manager configuration block. Your module needs a MOD_HEADER (which you probably already have) but also a magic module manager configuration block. See Special module manager block in source file for more information. For both MOD_HEADER and the magic block: fill in the required fields and don't use extreme lengths or weird formatting that may break the ./unrealircd module list or ./unrealircd module info commands.
 * Inclusion of your module in the repository is a privilege, not a right. We try to give everyone a fair chance to include their module and we have tried to list all the rules here that apply. However, in some cases we may still reject or retract a module even though they are not explicitly covered by the other rules in this document. This should be rare, and if we do then we will try to explain the decision and may update the rules (see next).
 * These rules can be changed. When necessary, we will update this document/rules to add, remove or update rules. In all cases the latest set of published rules apply.

If you have any questions about these rules or if your module qualifies, then send an email to syzop@unrealircd.org explaining your question or concern. If you think your module qualifies, then don't email and jump directly to below.

Failure to follow the rules

 * 1) Our main principle is that we assume good faith and that the author should be allowed to fix any problems
 * 2) When submitting a module and we deem that it does not follow one or more of the rules from above then the module is rejected and the author is informed of this decision with an explanation. The author can resubmit the module after fixing the problem if (s)he chooses to do so.
 * 3) Failure to follow the rules afterwards may result in temporary suspension or permanent removal of the module from the repository. However:
 * 4) In normal circumstances we will try to contact the author first and the module will stay listed until the problem is resolved, as long as it's handled in a timely matter.
 * 5) In more extreme cases, such as clear misconduct, malicious intent, grave security issues, we may take action first before making contact (or in parallel to).

How to submit your module
You submit your module by making a GitHub Pull Request to the unrealircd-contrib repository. Your request will be looked at by one of the UnrealIRCd team members. Be sure to choose the right branch, eg unreal5 and/or unreal60_dev.

Also, make sure you use the Special module manager block in source file.

TODO: perhaps a bit more information for people unfamiliar with GitHub?

How to submit updates to your module
This works the same as with submitting modules. Simply do a Pull Request on GitHub and one of our team members will take care of it.

Internal rules
There are a couple of UnrealIRCd project members with write access to unrealircd-contrib. The following rules apply to them:
 * Check new modules from other people, make sure it obeys the rule on this page. If OK, approve the PR. If in doubt, wait and ask Syzop.
 * Check updates from other people. This is a light check only, like no backdoors or scary stuff. If OK, approve the PR. If in doubt, wait and ask Syzop.
 * For new modules written by yourself, please have the module checked by at least another dev with write access to unrealircd-contrib, (s)he makes sure it obeys the rule on this page.
 * You may commit changes to your own modules directly, no need for a PR