[00:01]  * pleia2 nudges ClassBot 
[00:02] <pleia2> ok, let's get started
[00:02] <pleia2> Hi everyone! Welcome to a short class on being an operator (+o) in #ubuntu-women and #ubuntu-women-project
[00:03] <pleia2> We'll have a pretty informal class here, so please feel free to jump in at any time and ask questions :)
[00:03] <pleia2> who all is here for it?
[00:03] <MichelleQ> o/
[00:04]  * charlie-tca waves
[00:04] <arand> \o
[00:04] <pleia2> OK, we'll start off with some basics about opping in our channels
[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.
[00:05] <pleia2> this is not consistant across ubuntu namespace
[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
[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
[00:06] <pleia2> = Class Outline =
[00:07] <pleia2> 1. Etiquette
[00:07] <pleia2> 2. Basic technical op basics: freenode and channel options, opping yourself, removing a user, banning a user
[00:07] <pleia2> 3. Writing good bans
[00:07] <pleia2> starting with the fun one :)
[00:07] <pleia2> = Etiquette =
[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
[00:08] <pleia2> As an Ubuntu channel we are upheld to the standards of ops throughout the Ubuntu namespace: https://wiki.ubuntu.com/IRC/IrcTeam/OperatorGuidelines
[00:08] <pleia2> and of course to the Code of Conduct http://www.ubuntu.com/community/conduct
[00:09] <pleia2> Additionally, as our channel presents certain challenges, so we have our own guidelines which can be found here: http://wiki.ubuntu-women.org/IrcGuidelines and a page with further Op guidelines is here: http://wiki.ubuntu-women.org/IRCOpGuidelines
[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: http://rkcsi.indiana.edu/archive/CSI/WP/WP02-03B.html
[00:10] <pleia2> er, interesting
[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 :)
[00:11] <pleia2> so I'd strongly encourage everyone to have a look, even if they just skim it
[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
[00:12] <pleia2> this isn't easy, I still make mistakes sometimes - either by letting someone troll too long or removing too quickly
[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
[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 :)
[00:13] <pleia2> Now, the escalation process for handling disruptive users:
[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)
[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.
[00:15] <pleia2> so perhaps you ask why they joined, what interest they have in the project
[00:15] <pleia2> 2. Issue a warning
[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
[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
[00:16] <pleia2> 3. Ask them to leave
[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
[00:17] <pleia2> 4. Remove them from the channel
[00:17] <pleia2> I typically just remove users rather than setting a ban right away, but it depends on the situation
[00:18] <pleia2> if they keep trolling...
[00:18] <pleia2> 5. Ban
[00:18] <pleia2> Once the user has been taken care of, please deop yourself
[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
[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
[00:19] <pleia2> frequently trolls are looking for getting a reaction, acting reasonably and maturely to remove a problem counters this
[00:20] <pleia2> Any questions? Comments?
[00:21] <pleia2> ok, we'll get to the technical aspects we all came for :)
[00:21] <pleia2> = Basic technical op basics =
[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 irc.ubuntu.com
[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: http://freenode.net/using_the_network.shtml
[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 :)
[00:22] <Pici> May I add that its by no means necessary to memorize what all the different modes mean.
[00:23]  * pleia2 memorizes very little, has memory capacity of a sieve
[00:23] <pleia2> thanks Pici
[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: http://wiki.ubuntu-women.org/Courses/IRCOp
[00:23] <pleia2> First, if you're an op in the channel, how do you op up?
[00:24] <pleia2> /msg chanserv op #ubuntu-women
[00:24] <pleia2> For more about what you can do with chanserv, /msg chanserv help
[00:24] <pleia2> How do you remove your op status?
[00:24] <pleia2> /msg chanserv deop #ubuntu-women
[00:25] <pleia2> How do you remove a user?
[00:25] <pleia2> /remove #ubuntu-women nickname
[00:25] <pleia2> ..but in some clients, like irssi, you will need to: /quote remove #ubuntu-women nickname
[00:25] <pleia2> just play around and see how your client works (we'll have a playing session over in ##pleia2 after this session)
[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
[00:26] <pleia2> (and remove tends to be the "preferred freenode way")
[00:27] <pleia2> So, how do you ban a user?
[00:27] <pleia2> A simple ban can usually be added with:
[00:27] <pleia2> /ban nickname
[00:27] <pleia2> But often the automatic ban a client sets isn't good enough, so now we'll talk about writing good bans
[00:27] <pleia2> any questions before we get to that?
[00:30] <pleia2> so over in #ubuntu-classroom-chat someone asked about why /quote may need to be used
[00:30] <pleia2> ;)
[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
[00:32] <pleia2> so for commands like that in irssi you need to use /quote
[00:32] <pleia2> alright, let's move on
[00:32] <pleia2> (oh, and you don't need to ask questions in -chat, feel free to speak freely here :))
[00:32] <pleia2> = Writing good bans =
[00:33] <pleia2> Writing bans is an intimidating topic at first, but it turns out that it's actually not that hard!
[00:33] <pleia2> When a user joins a channel, you'll typically see something like:
[00:33] <pleia2> MeanTroll (~verybad@1.2.3.4-example.com) has joined #ubuntu-women
[00:33] <pleia2> (in some clients you may need to enable viewing hostnames)
[00:34] <pleia2> There are 3 important pieces of this which can be targeted in a ban: nickname (MeanTroll), ident (verybad) and hostname (1.2.3.4-example.com)
[00:34] <pleia2> In a ban stanza, it would look like: nickname!ident@hostname
[00:35] <pleia2> notice that a ! separates nickname and ident, and the @ symbol is put before hostname
[00:35] <pleia2> there are more options with this, which nhandler will cover in a bit, but this is a basic ban
[00:36] <pleia2> So in this example, MeanTroll!verybad@1.2.3.4-example.com would be a ban exactly matching their nickname, ident and hostname
[00:36] <pleia2> Any questions so far?
[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
[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:
[00:38] <pleia2> /mode +b *!verybad@1.2.3.4-example.com
[00:38] <pleia2> As you can see we put a * where the nickname used to be, this is a wildcard
[00:38] <pleia2> What if they decide to change their ident too?
[00:38] <pleia2> /mode +b *!*@1.2.3.4-example.com
[00:39] <pleia2> again, a * is put where the ident used to be
[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*@1.2.3.4-example.com
[00:40] <ClassBot> mhall119 asked: is * the only wildcard, or can do you some regex-style matching too?
[00:40] <erUSUL> what if they change nick ident and renew ip with his/her isp? back to square one ;)
[00:40] <pleia2> regarding mhall119's question - there are some options here, nhandler will cover them :)
[00:40] <pleia2> erUSUL: that's next!
[00:40] <pleia2> So, what if they get really desperate and reset their modem to get a new hostname?
[00:40] <pleia2> You can try: /mode +b *!*@*-example.com
[00:41] <pleia2> But be careful - this will ban everyone coming from the exmaple.com service provider
[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
[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
[00:42] <ClassBot> mhall119 asked: is using proxies in general against freenode policy, or just to avoid bans?
[00:43] <pleia2> "proxy" is a broad term
[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
[00:43] <pleia2> and of course this is ok :)
[00:43] <pleia2> same with bouncers you run, etc
[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
[00:44] <nhandler> freenode also bans open proxies
[00:45] <pleia2> there we go, thanks nhandler :)
[00:45] <nhandler> http://freenode.net/policy.shtml#proxies
[00:45] <pleia2> any more questions about basic bans before I hand things off to nhandler to explain extbans?
[00:46] <pleia2> alright, well, freenode also has "Extbans" which are discussed more at http://freenode.net/using_the_network.shtml which are used less frequently but you will see them
[00:46] <pleia2> nhandler: all yours!
[00:46] <nhandler> Thanks pleia2
[00:46]  * pleia2 didn't know about these, and didn't have time to get up to speed :)
[00:47] <nhandler> Extbans are a new feature that came with ircd-seven. To quote http://freenode.net/using_the_network.shtml:
[00:47] <nhandler> "They take the form of: +b $type or +b $type:data
[00:47] <nhandler> 'type' is a single character (case insensitive) indicating the type of match, optionally preceded by a tilde (~) to negate the comparison."
[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.
[00:48] <nhandler> This can be done with: /mode #channel +q $~a
[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.
[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)
[00:50] <ClassBot> There are are 10 minutes remaining in the current session.
[00:50] <nhandler> mhall119 wanted me to explain $~a a bit more
[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
[00:51] <nhandler> The ~ negates that. So $~a:nhandler* could be used to ban everyone whose account name does not begin with nhandler
[00:52] <nhandler> $a with nothing after it is the same if I had used a wildcard
[00:53] <nhandler> $~a has the effect of matching all people not identified
[00:53] <nhandler> Examples of how to set these bans can be found on the freenode website: http://freenode.net/using_the_network.shtml
[00:53] <nhandler> That site also has a bit more information on what everything means
[00:54] <nhandler> Sometimes, you want a user to get forwarded to another channel when they attempt to join your channel.
[00:54] <nhandler> A common example of this is a user whose IRC client keeps quiting/joining, spamming the channel.
[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.
[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.
[00:55] <ClassBot> There are are 5 minutes remaining in the current session.
[00:55] <nhandler> An example of how to set this ban would be: /mode #mychannel +b $r:Foo*$#forwardtome
[00:56] <nhandler> This would prevent any user whose gecos begins with "Foo" (note the extban) from joining #mychannel.
[00:56] <nhandler> If they attempt to join #mychannel, they will get forwarded to #forwardtome
[00:56] <nhandler> Any questions?
[00:57] <erUSUL> why you use $r here ? can you explain that "type" ?
[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
[01:00] <mhall119> what is a "realname" in IRC?
[01:00] <mhall119> the ident?
[01:00] <nhandler> mhall119: Do a /whois on me. My real name is set to Nathan Handler
[01:01] <mhall119> ok, irssi is calling it "ircname"
[01:01] <pleia2> it calls it "real_name" in the settings
[01:01] <nhandler> Yep
[01:01] <pleia2> just to be confusing *pats irssi*
[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 :)
[01:03] <pleia2> (like me, until now!)
[01:03] <stooj> Thank goodness :)
[01:03] <mhall119> that makes me feel better
[01:04] <nhandler> Yep. The only extban you will probably actually see/use would be $~a (to quiet unidentified users during a bot attack)
[01:05] <pleia2> any other questions?
[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
[01:07] <pleia2> we can kick and ban some stuff for sport! ;)
[01:08] <nigelb> haha, thanks for the class you folks :)
[01:08] <mhall119> yes, thanks pleia2 and nhandler
[01:08] <pleia2> thanks for coming, everyone
[01:08] <pleia2> we'll post the logs soon :)
[01:10] <stooj> Thanks pleia2 & nhandler
[01:11] <MichelleQ> braavo, pleia2 & nhandler
[01:11] <nhandler> :)
[01:13] <charlie-tca> Thanks very much
[19:52]  * jcastro taps on the microphone
[19:52] <jcastro> who's here for adopt-an-upstream in 10 minutes?
[19:54] <cjohnston> o/ mayb
[19:54] <cjohnston> e
[19:59] <jcastro> 1 more minute!
[19:59] <jcastro> anyone else around?
[20:00] <cjohnston> I guess it may be just you and me
[20:00] <cjohnston> your opped.. you dont get to see all the coolness that is ClassBot
[20:00] <jcastro> oh, should I unop?
[20:00] <cjohnston> doesnt matter.. ClassBot will voice you if you are not opped or voiced
[20:01] <cjohnston> but since your already opped and it already ran, prolly better to stay the way you are
[20:01] <jcastro> ah
[20:01] <jcastro> let's give it one more minute
[20:02] <jcastro> for the stragglers
[20:02] <cjohnston> want me to leave and come back in? :-P
[20:05] <jcastro> ok let's get started!
[20:05] <jcastro> anyone else here or just cjohnston supporting the cause?
[20:08] <jcastro> cjohnston: hmm, should we reschedule again?
[20:09] <cjohnston> jcastro: I don't know if you will get much of a better response without being in a UDW/ODW type setting
[20:09] <cjohnston> except maybe by doing some advertising
[20:10] <jcastro> yeah, I should have blogged about it
[20:10] <jcastro> what do you think about next week, but I can blog about it now?
[20:10] <jcastro> and ask some other people to blog it too?
[20:10] <cjohnston> sure
[20:11] <cjohnston> day/time?
[20:11] <jcastro> at least you were here. *hug*
[20:11] <jcastro> wednesday same time I think?
[20:11] <cjohnston> sure
[20:11] <cjohnston> rescheduling now
[20:11] <cjohnston> done
[20:12] <jcastro> bah I wouldn't be in this mess if I did it right the first time!
[20:13] <cjohnston> or the second time? :-P
[20:13] <jcastro> heh
[20:16] <cjohnston> maybe you should teach me something else then.. ;-)
[20:17] <jcastro> Well, first the earth cooled, and then the dinosaurs came ...
[20:17] <cjohnston> lol