EggModules
irc.mod is anything that affects live channels and live users on channels channels.mod has nothing to do with the live connection and is just userfile/chanfile storage of handles and permissions and flags the line between server.mod and irc.mod is blurry at times - for example when we receive an AWAY notification we break it down for the channel-users it triggers for, so the message itself has nothing to do with channels but we call it for each channel the user is on, so that's irc.mod. server.mod and irc.mod separation is historical, I wouldn't separate them these days. cross-module stuff is a bit annoying (as opposed to modules calling into the core) because of it, easier if you put it in the "right" spot
irc.mod guarantees server.mod is loaded, but not vice versa
server.mod works without channels.mod, irc.mod requires channels.mod
channels.mod is .+user, .+chan etc. channels.mod can check and do IRC stuff via server.mod/irc.mod if they are loaded but it does not require it