Etiquette for -women channels is a particularly sensitive topic due to the nature of the project, be familiar with core Ubuntu rules for Op conduct as well as the proper way of handling trolls in feminist spaces.

For basic Op commands, see:


   1 === ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - || Support in #ubuntu || Upcoming Schedule: || Current Session: Being an Op in Ubuntu Women channels - Instructor: pleia2 || Questions in #ubuntu-classroom-chat
   2 [00:02] <pleia2> ok, let's get started
   3 [00:02] <pleia2> Hi everyone! Welcome to a short class on being an operator (+o) in #ubuntu-women and #ubuntu-women-project
   4 [00:03] <pleia2> We'll have a pretty informal class here, so please feel free to jump in at any time and ask questions :)
   5 [00:03] <pleia2> who all is here for it?
   6 [00:03] <MichelleQ> o/
   7 [00:04]  * charlie-tca waves
   8 [00:04] <arand> \o
   9 [00:04] <pleia2> OK, we'll start off with some basics about opping in our channels
  10 [00:04] <pleia2> Operator status in the channels is given to responsible volunteers who have a history with the project and we (current ops) feel we can trust. Addition is pretty informal so if you've been with us for a while you're welcome to ask me.
  11 [00:05] <pleia2> this is not consistant across ubuntu namespace
  12 [00:05] <pleia2> Now, this class will cover a lot of the basics of being an op so will be applicable to opping in other channels, but the etiquette section of this class will be targeted at handling the types of trolls our channels frequently encounter
  13 [00:06] <pleia2> and for the other ops in the audience - if you have some information I missed (or get wrong!) please feel free to jump in and add/correct as needed
  14 [00:06] <pleia2> = Class Outline =
  15 [00:07] <pleia2> 1. Etiquette
  16 [00:07] <pleia2> 2. Basic technical op basics: freenode and channel options, opping yourself, removing a user, banning a user
  17 [00:07] <pleia2> 3. Writing good bans
  18 [00:07] <pleia2> starting with the fun one :)
  19 [00:07] <pleia2> = Etiquette =
  20 [00:07] <pleia2> First and foremost, as an op you have a responsibility to the community to uphold the rules, tactfully handle abusive users and set an example for other members of the channel
  21 [00:08] <pleia2> As an Ubuntu channel we are upheld to the standards of ops throughout the Ubuntu namespace:
  22 [00:08] <pleia2> and of course to the Code of Conduct
  23 [00:09] <pleia2> Additionally, as our channel presents certain challenges, so we have our own guidelines which can be found here: and a page with further Op guidelines is here:
  24 [00:10] <pleia2> As we frequently get trolled for being a feminist project, it's important to anticipate this kind of trolling and be informed about it, an interested document on the subject can be found here:
  25 [00:10] <pleia2> er, interesting
  26 [00:11] <pleia2> I actually re-read this document last night while doing my final prep on this class, given the recent discussions about our channels, logging policies and safe spaces, it was even more enlightening and useful than the first time I read it :)
  27 [00:11] <pleia2> so I'd strongly encourage everyone to have a look, even if they just skim it
  28 [00:12] <pleia2> So, in our channel there is a delicate balance that we must seek to maintain to be welcoming to all and handling questions about the project from those who honestly wish to learn, while also protecting our members from users who wish to do harm
  29 [00:12] <pleia2> this isn't easy, I still make mistakes sometimes - either by letting someone troll too long or removing too quickly
  30 [00:12] <pleia2> to help us with this, if you ever have questions about whether a user should be removed or how to handle a situation, please don't hesitate to private message another op and ask their opinion
  31 [00:13] <pleia2> we also have a number of current and former irc council members who spend time in the channel, and they're all friendly if you want an outside opinion :)
  32 [00:13] <pleia2> Now, the escalation process for handling disruptive users:
  33 [00:14] <pleia2> (again, this is not uniform across ubuntu namespace, this is the procedure we've developed in #ubuntu-women and #ubuntu-women-project)
  34 [00:14] <pleia2> 1. If someone appears to be disruptive, try to get a handle on the core of their purpose. Maybe they are not intentionally be troublesome.
  35 [00:15] <pleia2> so perhaps you ask why they joined, what interest they have in the project
  36 [00:15] <pleia2> 2. Issue a warning
  37 [00:15] <pleia2> this is often done privately if their behavior borderline as an attempt to nudge them back into respecting the intent of the channel
  38 [00:16] <pleia2> but a public warning may be issued if the infraction is more overt - remember, part of our job is making sure our members feel safe, we want them to know that attentive ops are paying attention
  39 [00:16] <pleia2> 3. Ask them to leave
  40 [00:17] <pleia2> warnings may not be enough, so a simple "you're not welcome here" notice does actually get rid of some folks who are causing trouble
  41 [00:17] <pleia2> 4. Remove them from the channel
  42 [00:17] <pleia2> I typically just remove users rather than setting a ban right away, but it depends on the situation
  43 [00:18] <pleia2> if they keep trolling...
  44 [00:18] <pleia2> 5. Ban
  45 [00:18] <pleia2> Once the user has been taken care of, please deop yourself
  46 [00:19] <pleia2> this whole process can frequently be stressful (yep, even to seasoned ops!) so it's important that you work at friendly throughout this whole process
  47 [00:19] <pleia2> ..even if they refuse to treat you with respect, even private message you after hurling insults, do your best to deal with this professionally too
  48 [00:19] <pleia2> frequently trolls are looking for getting a reaction, acting reasonably and maturely to remove a problem counters this
  49 [00:20] <pleia2> Any questions? Comments?
  50 [00:21] <pleia2> ok, we'll get to the technical aspects we all came for :)
  51 [00:21] <pleia2> = Basic technical op basics =
  52 [00:21] <pleia2> First, we'll start off with the network itself. Ubuntu IRC channels reside on the freenode irc network - this is where you end up when you log on to
  53 [00:21] <pleia2> The freenode network uses software called "ircd seven" and freenode has an excellent page to get you started learning how to use the network and the available channel and user modes here:
  54 [00:22] <pleia2> To quickly cover some important things, there are "user modes" on the network which determine attributes of a user, and "channel modes" which set attributes of channels on the network. Knowing what these are is pretty useful, so keep this document handy :)
  55 [00:22] <Pici> May I add that its by no means necessary to memorize what all the different modes mean.
  56 [00:23]  * pleia2 memorizes very little, has memory capacity of a sieve
  57 [00:23] <pleia2> thanks Pici
  58 [00:23] <pleia2> Now, to cover some basics you'll need as an op, I have documented much of this over on a page I wrote a few years ago:
  59 [00:23] <pleia2> First, if you're an op in the channel, how do you op up?
  60 [00:24] <pleia2> /msg chanserv op #ubuntu-women
  61 [00:24] <pleia2> For more about what you can do with chanserv, /msg chanserv help
  62 [00:24] <pleia2> How do you remove your op status?
  63 [00:24] <pleia2> /msg chanserv deop #ubuntu-women
  64 [00:25] <pleia2> How do you remove a user?
  65 [00:25] <pleia2> /remove #ubuntu-women nickname
  66 [00:25] <pleia2> ..but in some clients, like irssi, you will need to: /quote remove #ubuntu-women nickname
  67 [00:25] <pleia2> just play around and see how your client works (we'll have a playing session over in ##pleia2 after this session)
  68 [00:26] <pleia2> We like to "remove" rather than "kick" because this makes the client think it was a /part and so doesn't trigger auto-rejoin
  69 [00:26] <pleia2> (and remove tends to be the "preferred freenode way")
  70 [00:27] <pleia2> So, how do you ban a user?
  71 [00:27] <pleia2> A simple ban can usually be added with:
  72 [00:27] <pleia2> /ban nickname
  73 [00:27] <pleia2> But often the automatic ban a client sets isn't good enough, so now we'll talk about writing good bans
  74 [00:27] <pleia2> any questions before we get to that?
  75 [00:30] <pleia2> so over in #ubuntu-classroom-chat someone asked about why /quote may need to be used
  76 [00:30] <pleia2> ;)
  77 [00:31] <pleia2> this is because /remove is not a command that irssi understands, and it won't automatically pass things it doesn't understand to the server
  78 === ClassBot_ is now known as ClassBot
  79 [00:32] <pleia2> so for commands like that in irssi you need to use /quote
  80 [00:32] <pleia2> alright, let's move on
  81 [00:32] <pleia2> (oh, and you don't need to ask questions in -chat, feel free to speak freely here :))
  82 [00:32] <pleia2> = Writing good bans =
  83 [00:33] <pleia2> Writing bans is an intimidating topic at first, but it turns out that it's actually not that hard!
  84 [00:33] <pleia2> When a user joins a channel, you'll typically see something like:
  85 [00:33] <pleia2> MeanTroll ( has joined #ubuntu-women
  86 [00:33] <pleia2> (in some clients you may need to enable viewing hostnames)
  87 [00:34] <pleia2> There are 3 important pieces of this which can be targeted in a ban: nickname (MeanTroll), ident (verybad) and hostname (
  88 [00:34] <pleia2> In a ban stanza, it would look like: nickname!ident@hostname
  89 [00:35] <pleia2> notice that a ! separates nickname and ident, and the @ symbol is put before hostname
  90 [00:35] <pleia2> there are more options with this, which nhandler will cover in a bit, but this is a basic ban
  91 [00:36] <pleia2> So in this example, MeanTroll! would be a ban exactly matching their nickname, ident and hostname
  92 [00:36] <pleia2> Any questions so far?
  93 [00:37] <pleia2> Ok, well, this is not a great ban, since the offending user could just change their nickname and get back in to the channel - we need to write a better ban
  94 [00:37] <pleia2> It's easy to change a nickname (just "/nick SuperMeanTroll" and they get past our ban!) so here is how to ban based on ident and hostname:
  95 [00:38] <pleia2> /mode +b *!
  96 [00:38] <pleia2> As you can see we put a * where the nickname used to be, this is a wildcard
  97 [00:38] <pleia2> What if they decide to change their ident too?
  98 [00:38] <pleia2> /mode +b *!*
  99 [00:39] <pleia2> again, a * is put where the ident used to be
 100 [00:39] <pleia2> the asterisk can be used in conjunction with other numbers and letters too, so if a person always has "bad" in their ident, you can do something like  /mode +b *!*bad*
 101 [00:40] <ClassBot> mhall119 asked: is * the only wildcard, or can do you some regex-style matching too?
 102 [00:40] <erUSUL> what if they change nick ident and renew ip with his/her isp? back to square one ;)
 103 [00:40] <pleia2> regarding mhall119's question - there are some options here, nhandler will cover them :)
 104 [00:40] <pleia2> erUSUL: that's next!
 105 [00:40] <pleia2> So, what if they get really desperate and reset their modem to get a new hostname?
 106 [00:40] <pleia2> You can try: /mode +b *!*@*
 107 [00:41] <pleia2> But be careful - this will ban everyone coming from the service provider
 108 [00:41] <pleia2> and honestly this ban should only be put in place in emergencies and should be accompanied by joining #freenode and reporting that there is a user who is evading bans
 109 [00:42] <pleia2> there are also users who evade by using "proxies" which make writing bans essentially useless, this too is against freenode policy and should be reported
 110 [00:42] <ClassBot> mhall119 asked: is using proxies in general against freenode policy, or just to avoid bans?
 111 [00:43] <pleia2> "proxy" is a broad term
 112 [00:43] <pleia2> technically anyone who runs irssi from a server elsewhere is using a "proxy" since they aren't connecting from their originating connection
 113 [00:43] <pleia2> and of course this is ok :)
 114 [00:43] <pleia2> same with bouncers you run, etc
 115 [00:44] <pleia2> I don't know the precise policy (maybe a freenode staffer can help me out here) but in general abusing proxies which frequently aren't yours to cause trouble is where freenode starts putting in rules
 116 [00:44] <nhandler> freenode also bans open proxies
 117 [00:45] <pleia2> there we go, thanks nhandler :)
 118 [00:45] <nhandler>
 119 [00:45] <pleia2> any more questions about basic bans before I hand things off to nhandler to explain extbans?
 120 [00:46] <pleia2> alright, well, freenode also has "Extbans" which are discussed more at which are used less frequently but you will see them
 121 [00:46] <pleia2> nhandler: all yours!
 122 [00:46] <nhandler> Thanks pleia2
 123 [00:46]  * pleia2 didn't know about these, and didn't have time to get up to speed :)
 124 [00:47] <nhandler> Extbans are a new feature that came with ircd-seven. To quote
 125 [00:47] <nhandler> "They take the form of: +b $type or +b $type:data
 126 [00:47] <nhandler> 'type' is a single character (case insensitive) indicating the type of match, optionally preceded by a tilde (~) to negate the comparison."
 127 [00:48] <nhandler> One of the most common uses of this type of ban is to replace the old +R channel mode which prevented unidentified users from talking in the channel.
 128 [00:48] <nhandler> This can be done with: /mode #channel +q $~a
 129 [00:49] <nhandler> Type 'a' matches the account name, and the ~ negates it. This command has the same result as setting channel mode +R used to have.
 130 [00:49] <nhandler> Extbans can also be used to match the realname or gecos (type r, which is similar to the old +d channel mode) or to match against the full nick!username@host#gecos (type x)
 131 [00:50] <ClassBot> There are are 10 minutes remaining in the current session.
 132 [00:50] <nhandler> mhall119 wanted me to explain $~a a bit more
 133 [00:51] <nhandler> Basically, $a is an extban that can be used to match people with a certain account name. For instance, You could set a ban on $a:nhandler* to ban all people with an account name beginning with nhandler
 134 [00:51] <nhandler> The ~ negates that. So $~a:nhandler* could be used to ban everyone whose account name does not begin with nhandler
 135 [00:52] <nhandler> $a with nothing after it is the same if I had used a wildcard
 136 [00:53] <nhandler> $~a has the effect of matching all people not identified
 137 [00:53] <nhandler> Examples of how to set these bans can be found on the freenode website:
 138 [00:53] <nhandler> That site also has a bit more information on what everything means
 139 [00:54] <nhandler> Sometimes, you want a user to get forwarded to another channel when they attempt to join your channel.
 140 [00:54] <nhandler> A common example of this is a user whose IRC client keeps quiting/joining, spamming the channel.
 141 [00:55] <nhandler> You can append $#channel to the end of a ban to cause the user to get forwarded to #channel when they try and join your channel.
 142 [00:55] <nhandler> You will need to either be an OP in #channel or the channel will need to have mode +F set in order to create this type of ban forward.
 143 [00:55] <ClassBot> There are are 5 minutes remaining in the current session.
 144 [00:55] <nhandler> An example of how to set this ban would be: /mode #mychannel +b $r:Foo*$#forwardtome
 145 [00:56] <nhandler> This would prevent any user whose gecos begins with "Foo" (note the extban) from joining #mychannel.
 146 [00:56] <nhandler> If they attempt to join #mychannel, they will get forwarded to #forwardtome
 147 [00:56] <nhandler> Any questions?
 148 [00:57] <erUSUL> why you use $r here ? can you explain that "type" ?
 149 [00:58] <nhandler> erUSUL: $r matches on the realname field. So any users who had a real name that began with Foo in my example would be affected
 150 [01:00] <mhall119> what is a "realname" in IRC?
 151 [01:00] <mhall119> the ident?
 152 [01:00] <nhandler> mhall119: Do a /whois on me. My real name is set to Nathan Handler
 153 [01:01] <mhall119> ok, irssi is calling it "ircname"
 154 [01:01] <pleia2> it calls it "real_name" in the settings
 155 [01:01] <nhandler> Yep
 156 [01:01] <pleia2> just to be confusing *pats irssi*
 157 [01:03] <pleia2> for those of who who have their head spinning from nhandler's part - don't worry, this is advanced ban stuff that we covered to be thorough so you know they exist when you see them, I guarentee you that most of the ops out there don't know how to use them :)
 158 [01:03] <pleia2> (like me, until now!)
 159 [01:03] <stooj> Thank goodness :)
 160 [01:03] <mhall119> that makes me feel better
 161 [01:04] <nhandler> Yep. The only extban you will probably actually see/use would be $~a (to quiet unidentified users during a bot attack)
 162 [01:05] <pleia2> any other questions?
 163 [01:07] <pleia2> ok, well if anyone wants to test their new found skills, please feel free to nudge me and we'll hop over to ##pleia2 to play around
 164 [01:07] <pleia2> we can kick and ban some stuff for sport! ;)
 165 [01:08] <nigelb> haha, thanks for the class you folks :)
 166 [01:08] <mhall119> yes, thanks pleia2 and nhandler
 167 [01:08] <pleia2> thanks for coming, everyone
 168 [01:08] <pleia2> we'll post the logs soon :)
 169 [01:10] <stooj> Thanks pleia2 & nhandler
 170 [01:11] <MichelleQ> braavo, pleia2 & nhandler
 171 [01:11] <nhandler> :)
 172 [01:13] <charlie-tca> Thanks very much

Courses/IRCOp2010 (last edited 2010-05-05 17:51:27 by lyz)