Wed, Jan 29 2014 20:09:00
As probably every DareNET user has noticed, in early 2013, there was no DareNET. Some shambles, single servers still up, but nobody reachable and nothing to see. Given that I have no idea how that happened, I'll just pretend everyone knows what went down around that time and move on to the things I do have something to say about. Beware, this article is quite technical in nature and may or may not be easy to read for people who are not intimately familiar with IRC.
Okay, so there was this network called DareNET, I've been there once, saw it was in shambles, but knew that NiTeMaRe (aka MadHatter aka trip aka one hundred or so other nicks) supposedly owned that network or something along those lines. Feeling kind of let down after having seen ruins of an IRC network that made me feel sad and empty, yet at the same time gave me a distinct fear of coming work, I approached MadHatter and somehow got dragged into this network. Can't say I regret it, though.
First thing we needed was a bunch of servers to run IRCd and services from. One way or another, the same way he still does, MadHatter made servers appear out of thin air: io was born, linked under some different name to make sure I can't remember it. It took us two a while to get things running because of the way services store accounts (namely, they store it in LDAP with some magic that neither of us understand) and had to wait for SecretAgent (aka SA) to pull that up along to get going. More servers followed, while I and peer (aka rails) got put into the infrastructure team since we were obviously not going to get anything done with two people who used to be borderline perma-idle, though that's improved lately; both SA and MadHatter are around frequently now. And of course, you can't have an IRC network without a dev team: SecretAgent and me are the dev team.
Along the way, we realized the wiki is in shambles (we still have to clean some old, outdated pages up, sadly). Some policies were clearly written for a network that had more than four or five relevant staff members and were completely impossible to follow simply by now not having enough people. We're still lacking some policies here and there and make up things as we go along, but we've been fine so far, even though we're testlinking new servers without having finished the testlink process itself. Whatever, man. I guess this generation would go "#yolo #swag" now or something?
Similarly, the IRCd documentation is way out of date. We're aiming to ship ircd-darenet2 with complete documentation (the example configuration looks promising so far) so that we can possibly drop the wiki documentation. The P10 protocol docs are still mostly current except for the whole oplevels stuff.
(Those who don't care about technical details can skip this. Probably nobody but me finds this interesting.)
There was this network called Undernet, right? They had those two bots called X and W, from the same codebase, but their performance seemed to be so bad that they'd needed a complicated channel registration process and two instances of the same bot to make sure everything ran smoothly. For the reference, X and W were replaced by the mod.cservice in GNUWorld, now online as X on Undernet. At that time, Uworld just barely came to be and had met some resistance, so implementing something like Chanfix was maybe planned, but likely to fail a vote amongst Undernet administrators.
However, channels were taken over and went opless left and right, clearly something had to be done. X and W couldn't live up to the imagined increased load (or Undernet was simply too set in its ways to bother with channel registration for the masses, which would've been the obvious solution from the get-go). Given that Chanfix wasn't an option and X/W could be considered out of commission, Run of coder-com introduced oplevels in ircu.
Basically, oplevels are just that: levels for channel operators. However, 0 is the highest level (called "channel manager") and 999 is the lowest. When a channel is created with the first join, the user who created it is considered the channel creator. What a surprise, right? Channel creators can set an admin pass ("apass"), that'll allow them to re-enter their channel through all channel modes to keep them out and regain level 0. The apass cannot be changed after 30 minutes of the channel creation. Similarly, a upass can be set, and the only difference is that the upass can be used only for gaining level 1 instead of 0. A channel with an apass/upass set will only die after roughly 48 hours of having 0 users in the channel, as opposed to two to three minutes, or immediate destruction on other IRCds. Every user receving +o will have an oplevel greater by one than the user setting +o.
This model doesn't come without its flaws, however. First of all, if the passwords are lost, the channel can become opless again, but even worse, it can't help itself anymore (except for Chanfix, which was introduced on Undernet a while later and was initially unpopular with the admins there), especially since the channel expiry is roughly two days. Given that, we strongly recommend not using oplevels/apass/upass for your channel on DareNET. We might even laugh at you.
Whatever, tell me about DareNET!
What connects oplevels and DareNET? ircd-darenet2 for one. As some of our more avid users may know, ircd-darenet is based on the Nefarious IRCd, itself a fork of ircu from ages ago. However, Nefarious isn't exactly the cleanest codebase we've ever come across for one. Initially, due to my personal investment in the TSora world of IRCds such as ircd-hybrid, ircd-ratbox and Charybdis, we had planned to rewrite ircd-darenet using Charybdis as a basis, called ircd-helios. We actually got quite far and were probably close to being feature-complete enough to work with SRVX if we'd had a few more months. However, as fate would have it, ircd-helios would get stashed away (we still have the code and to-do list, talk to SecretAgent if you're interested): The seemingly impossible, the moment I'd been waiting for a long time, the reversal of fortune and life and 42 and everything: QuakeNet was actually close to open sourcing Newserv, meaning we'd need to go to something that properly works with it to ensure nothing goes wrong: We had to rebase ircd-darenet2 on the current snircd, QuakeNet's fork of IRCu, patchqueue against the current IRCu.
Newserv really does live up to its reputation: It's not a pinnacle of good design, but it's actually good and easy to make new pseudoclients with, highly modular (which guarantees a decent uptime provided none of the coders decide that it's dereferencing-NULL day and blow it up).
If you've ever checked how you get from "irc.darenet.org" to some IP address your computer can actually work with and connect to, you'll have seen that our servers return DNS results based on the reported geolocation of the server querying the DNS servers. However, for that to be not a great pain to manage (as we've done in the beginning, NiTeMaRe and me), we'd needed software to do it for us, ideally also reacting to server delinks and other events. Initially, I'd just shoehorned something together that I'd consider nowhere near production quality, but MadHatter stole it from me and put it in production faster than I could tell him it's a bad idea. Much to my surprise, it even works if you ignore the fact that services segfault almost every time its pseudoserver is linked. Given that it sucks so much, I couldn't help but be excited to have a platform to rewrite the DNS manager on.
Newserv provides an actually good framework that allows me not to reinvent the wheel for the n-th time. We also get some fantastic oper tools (Seriously, nicksearch is brilliant. Check it out if you get a chance!) bundled, so I'm not complaining about the small faults it has and the amounts of trickery it (ab)uses.
However, progress on ircd-darenet2 has been kind of like a rollercoaster, partially due to me being lazy and working on everything but DareNET. Don't worry, we'll have it released in a few months, promise! Similarly, Services, are based on X3, which also shows the amount of hackery that went into it and the age of its codebase. We're forking SRVX again to deliver a much cleaner experience. Now, that doesn't seem very exciting, and honestly, it wouldn't be to anyone who cares about stuffing more features in. Nonetheless, NiTeMaRe has been working relentlessly on making pseudoserver bots for Newserv to have some fun toys for the users. Needless to say, given that he is not much of a programmer, and the process of watching him struggle has been infinitely more interesting than the results will ever be, I suppose; not that I'm much of a friend of bMotion bots, Google searching from inside IRC and all that jazz. Someone else do that, but I'm sure lots of our users will actually poke the toys with a stick. Additionally, TheGreatSparky has also been working on some more toys to deploy (a karma bot, I hear), look forward to them!
As you can see, we're quite busy behind the scenes trying to get our development efforts in order and our policies sorted out again and are making headway steadily. After all, we wouldn't want to anger our users yet again, now would we?