Running a mixed UnrealIRCd 4 and UnrealIRCd 5 network

You can link UnrealIRCd 4.x with 5.x fine, provided you follow the 3 important recommendations below. However, there are some caveats.

= Why you may want to run a mixed network = Ideally you should run your network 100% with UnrealIRCd 5 servers. However, we don't live in an ideal world. Many people run an UnrealIRCd 4.x network and there are two reasons why you may be running a mixed UnrealIRCd 4.x - UnrealIRCd 5.x network: In both cases you will run a mixed network for a limited amount of time (say, a month)
 * 1) You may wish to evaluate UnrealIRCd 5. You can do so on a separate test network but many people will (also) link in an UnrealIRCd 5 test server to the existing 4.x live network.
 * 2) When you're ready to migrate your UnrealIRCd 4.x network to UnrealIRCd 5 you can choose to upgrade all servers at once, or you may go the slower route and upgrade servers once at a time.

= Important recommendations = We only have three important recommendations:
 * 1) No UnrealIRCd 3.2.x. There can be no UnrealIRCd 3.2.x server on your network. This shouldn't be a problem since 3.2.x was deprecated many years ago.
 * 2) Use up to date services! If you use Services then upgrade these to the latest version and use the latest protocol module (usually called "unreal4"). Yes, even if the server that services links to is still on 4.x then you must still upgrade services. We currently tested and support anope 2.0.7 or higher or atheme 7.2.9 or higher.
 * 3) Don't run a mixed network too long. We don't recommend running a mixed network for e.g. 6 months. This is because as long as you run a mixed UnrealIRCd 4 - UnrealIRCd 5 network you'll encounter a number of issues. These can only be resolved by running a true 100% UnrealIRCd 5 network.

= Issues = Below you can read all details about the user-visible issues that you may run into when your network is partially 4.x and partially 5.x.

Summary: as long as you run a mixed U4-U5 network some things won't work at all, while other things may work only partially, in particular channel-related things. That's why you don't want to run a mixed-U4-U5-network for too long. It is not fatal and it will not cause a crash, but it can be confusing and annoying.

Functionality that works fine
Some U5 functionality should cause zero problems, even network-wide when the new U5 server is linked they can immediately be useful for your U4 network:
 * Storing of *LINES and spamfilters via the tkldb module (loaded by default in U5)
 * Storing of Permanent channels (+P) via the channeldb module (loaded by default in U5)

Missing functionality on U4 servers
This is the most obvious one: new functionality for users in UnrealIRCd 5 will not work on your UnrealIRCd 4 servers. This ranges from the various new IRCv3 features, channel history, server ban exceptions (/ELINE), etc.

There can also be functionality that is half-working, which is usually more confusing, see next section.

Functionality that works partially on U5 servers which can be confusing
Channel modes have been added (eg: +H) or have been changed (eg: +f with subtype r for repeats). These features may be broken or only working partially if you run a mixed U4-U5 network.

History may be half-working
For example, if you have 4x U4 servers and 1x U5 server and enable chat history with  then chat history will be played back only on the U5 server. Everyone will understand that. However, depending on channel membership and your linking topology, in a mixed U4-U5 network you may also be missing channel history from certain people while still seeing playback for other people. In the last 15 lines of history playback you may see Person1 talking, but Person2 from a 'far server' is not shown. This may look rather odd when you see the channel history.

Channel modes will not spread well
Similarly, channel modes may not be spreading well if you set +H or the new +f with subtype 'r'. Any U4 server in the path (linking topology) will block or alter such requests. So if you have a toplogy of: U5--U4 hub--U5 then the other U5 server will not see the MODE change properly.

Cannot join channels containing non-UTF8 characters
By default in UnrealIRCd 5 channel names may only contain valid UTF8 characters (see set::allowed-channelchars). If you have some very old clients using for example Russian/Cyrillic windows-1251 codepage instead of UTF8 then this means those channels can't be joined on UnrealIRCd 5. It is recommended to tell these users to upgrade their client and use UTF8. If this is not feasible then you can change the setting.

Functionality removed in U5, present in U4

 * Spamfilters of type posix are no longer supported. They were already deprecated in later 4.x releases. Use spamfilter type regex instead.
 * Extended ban ~R. So instead of using  you should use

Using these features (setting them on UnrealIRCd 4) will have no effect on users connected to UnrealIRCd 5 servers.