====== UnrealIRCd Project Paradigms ====== * We will not release Unreal4 releases without approval of the release by the leaders of the QA team. * Settings from IRCd configuration are considered permanent until rehash (with removal from or altering in configuration) * Settings from IRCd configuration does not impose settings on other servers through server protocol * Settings from IRCd configuration that are in use by user records / server records are first removed when the last user/server etc using them has disappeared * Settings that are made inside the IRC interface are considered temporary while the IRCd runs * There must be a clear distinction between temporary settings done locally, and globally * Global settings are considered to be active and must be kept active and synchronised as long as there are servers left alive on the network * We do not support features in the core distribution that aid the admin or opers in spying on his users or retrieving private conversations * Backwards compatibility wrt. linking are kept at a level representing current state of IRC services and the previous stable version of UnrealIRCd * Backwards compatibility wrt. OS'es are kept at a level representing current common server operating systems in use, but not if it hinders innovation that could improve the quality of user experience for the majority of users, but if there is a way to easily keep backwards compatibility, this will be done. * We will maintain support for only the most recent stable release of UnrealIRCd, except in cases where we are helping with transition from one version to another * We will maintain support on IRC - though requiring a proper basic knowledge of the operating system the user runs, of the user. This support is voluntary from our side and not a right for the user to have. * We will maintain an open bug tracker where we strive to keep the discussion and reporting a bug as open as possible, with an open mind to new ideas and patches. We may in some circumstances keep a bug report away from the public eye if the implications can cause problems for the stability of IRC networks - and strive to fix the issue as soon as possible, and give major networks a head start on the fixes. * We will have an open development model - where people are free to submit patches through our bugtracker, and access the most recent development snapshots through our source control system. Patches will be committed with proper acknowledgement if they fit in our general distribution. Patches will automatically follow under the license of the IRCd * Our goal is to release when we have a new set of features, sufficient testing of the release, or in case of serious bug fixes - we don't work with deadlines as this is counterproductive to stability - if people want new features here and now, they can use the development snapshots. * UnrealIRCd is not a network-specific IRCd, it is meant as a common platform for IRC networks, where they through modularity can choose their own blend of features and per-network settings. This is contrary to previous times' network-specific IRCds which hindered innovation. * Our attitude towards RFC is that the RFC is how clients can handle things currently. if it is possible to pursuade major bot, or client projects to a change (as illustrated by RPL_ISUPPORT case), hopefully in cooperation with other IRCd projects, the line of current implementation will be moved. We will strive to support projects that are documenting the current state of IRC client protocol. We do not follow the IRCnet RFCs, which we believe only illustrates the IRCnet view of things, and the server-to-server part of RFC does not apply to us. * If anything is changed in the core IRCd (non-modular) by anyone but the UnrealIRCd team, that isn't meant to stimulate development of UnrealIRCd or create patches, our opinion is that you're not running our software - and will at this point not support or recieve bug reports until the bugs are reproduced on a non-patched IRCd. This will be evaluated on a case-by-case basis however, in case there are reasons for the UnrealIRCd project to support a network anyway. * We do not promote UnrealIRCd through evangelism or advertising - we do it through word of mouth, reputation, and satisfied users. * Our documentation license is GNU FDL * Our server notices is on form :server.name NOTICE target :*** what, except when target isn't a channel * Changes to the code are done in Changes file, bottom, prefixed with "- " and same message is used when committing * Unreal4 will only link to Unreal*, not to InspIRCd, due to the fact we will have to modify some user modes and such. It will however be possible to run a stripped down Unreal still, which in 95% of the cases be similar to InspIRCd, and there will still be a lot of code shared and similar. But linking to InspIRCd is not a priority - we plan to keep server protocol similar, but usermodes and such may be different - so for services coders the main protocol would be similar but some small changes in user mode/channel modes. * Unreal4 will only link to other Unreal4's that share same module set (modules that affect global state, ie. VF_COMMON) - same reason as InspIRCd - to prevent desyncs, and will exit servers running incompatible modules. * Source files -must- have a newline just before EOF. ===== Proper custom coding conduct for Unreal4.0 ===== If you want to use Unreal4.0 commercially, you have to follow these paradigms, or we will not be linking to your product or link to your paid modules * Most importantly - don't rip off your users. If you enter an agreement with a user, you have to hold your obligations, also regarding support and updates if that is part of the agreement * If you make modules for Unreal4.0, they have to be licensed GPLv2 (or compatible, but the conditions of GPLv2 will apply then), due to http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins . This does not mean you cannot charge people for access to the module code, but it means you cannot stop them from redistributing. You are free to terminate their support/updates access if they redistribute though - but you cannot stop them from redistributing. Nothing stops you from having a closed source part that the module through the network accesses for instance, though. * If you bundle Unreal4.0 in a solution, you have to provide access to the source - and keep the GPLv2 license conditions. * If you provide service and support and maybe maintance for IRC servers and through this have access to shells, you may not abuse your users' trust.