thinking about how hacking on ircd as a kid was a cope for being unable to be a trans kid (i grew up in oklahoma, in the 90s, the *vocabulary* did not exist, much less any feasible form of support)
@ariadne I clearly see IRC's early toxicity in a very different light nowadays.
in IRC, I found community that simply did not exist for a queer kid in Oklahoma. that still does not exist.
but *also* do you all remember DMOZ?
in an effort to find the vocabulary to describe how i felt about my identity, i discovered the otherkin and therianthropy communities through DMOZ.
...which led back to IRC anyway.
when i was a kid, i pretty much tuned out of real life, because real life *sucked*
(again, i was a trans kid growing up in oklahoma, without the necessary vocabulary or resources to make that work out)
@ariadne IRC was a great tool, it's a shame that it's largely been forgotten. At least over here. It seems to still have a bit of a user base in Europe.
I still hang out on IRC a bit and am in a couple channels with active populations. But most of the places I used to hang out are as empty as space.
somewhere i have spiral notebooks from high school where i had handwritten algorithms/routines for adding new features to ircd or improving its scalability.
i would think about things to add to ircd while in school, and since we weren't allowed to have laptops, i would just put it in the notebook, and then type it all in when i got home.
@ariadne i did this with programming language runtimes
i think in a lot of ways IRC became a catch-all for maladjusted youth who didn't have other outlets.
i kind of tried to allude to this in my psychoanalysis of the freenode kerfluffle 5 years ago.
in that piece, i found that i could understand andrew lee's motivations quite well.
to borrow a metaphor from final fantasy 9: perhaps andrew lee became IRC's kuja. what he did was wrong (destroy freenode), but his heart was in the right place (preserve IRC).
@ariadne Losing this sort of thing is what I dislike most about the "real name" and soon to be identity verified internet
anyway. i got introduced to IRC at the same time that i got introduced to GNU/Linux: although my dad had an SGI machine, my own computer was a hand-me-down pentium 133 running windows 95.
a friend of mine in real life was enthusiastic about GNU/Linux and gave me a burned CD with mandrake linux on it. i forget the specific version, it's not important. i eventually settled on slackware, spending allowance money on a money order to buy the official release CD.
when i first started using slackware, i was basically clueless. i had no idea what i was doing.
but, at that time, slackware directed folks to join #slackware on DALnet for help, so I did. DALnet became a space where I enjoyed hanging out quite a bit, because it was filled with interesting people to talk to.
but... DALnet had a policy of tolerance toward "warez" channels: channels which had XDCC bots in them that you could use to download pirated content.
BitTorrent didn't exist yet, everyone was using either IRC or USENET for that.
DALnet's tolerance policy towards warez channels would wind up biting them in the ass.
in late 2002, a new network called Rizon was started by nessun and acidst0rm.
their strategy to gain users was to:
- DDoS DALnet servers
- join the largest channels (which were warez ones) and invite them to use Rizon instead.
because of the disruptions, friends from DALnet created their own networks and #slackware moved to the Open Projects Network which later rebranded to freenode.
sidebar: people used to ask me why i hosted techrights for so long, despite techrights becoming increasingly problematic.
the answer is simple, i've known roy since DALnet #slackware.
in general, my IRC friends moved into two streams
OPN (which became freenode) became the place for techie stuff, and me and my fellow IRC friends built a succession of IRC networks for everything else we were talking about.
the final iteration of that network being one called staticbox.
and from there we come to how I started hacking on ircd.
we wanted to improve the software on our IRC network in order to make it more suitable for our needs.
first, we ran unrealircd and epona as most naive IRC network operators did at the time. it was great: you could run both on Windows, despite this being a horrid idea for reliability and scalability.
epona quit being maintained and got forked into anope.
meanwhile, OPN added a feature to dancer-ircd called +q (quiet lists). you could use these to mute people who were being annoying.
so i thought "how hard could it be to add this?", despite not knowing a fucking thing about writing code or anything.
but i toiled and toiled and eventually i hacked this feature into unrealircd.
but i did it in a really stupid way: unrealircd uses +q for "channel owner" mode, but i wanted it to be like OPN's +q instead. so i renamed unrealircd's +q to +y.
needless to say that ircd was buggy as hell because i didn't know what the fuck i was doing.
so, anywho, the first irc network i started blew up and split into two forks due to my lack of skills to keep it running.
at the time, it was a body blow, but in retrospect, it makes sense that people were upset that i was shoving unproven ircd patches out there and hoping for the best.
they just wanted to a place to chill.
another sidebar: one of the forks went on to create another ircd, from scratch, written in C# called openircd. it used a thread for every connected socket. it was also very unstable and the instability was comical, because it would spam exception logs to all of the connected IRCops.
@ariadne the era before async was hilarious 🤣
I mean that line of thinking predates epoll/kqueue which were still very new and very difficult to reason about, and select/poll sucked ass.
The thing was that was “the thing to do” back then: use a thread per connection because “concurrency.” Because it was better than forking per connection, and people wanted answers besides select/poll, and I don’t think people got accustomed to async thinking. Especially Windows devs. It doesn’t scale of course.
another another sidebar: by the way, we basically have continuity all the way from that first irc network, all the way to treehouse discord & treehouse mastodon. some people have come and gone, but largely it is the same community.
@noisytoot ironically, i don't think it was ever 'open sourced'
i will have to look and see if i can find the code somewhere.
(another another another sidebar: i wonder how ketrien is doing these days, maybe i can email it and ask it for the source code)
@Elizafox @ariadne One thread for all connections doesn't scale either... in a past life I had to make an IRC-shaped thing scale and it was a single threaded process and didn't do multiple servers.
I ended up writing a proxy in Rust (my first Rust code and only for several years, no I had no idea what I was doing either) and modifying the server to support a multiplex protocol with connection IDs per message, then making public messages send a single message to the proxy which would then fan out to all clients. Then ran a bunch of instances of the proxy in front to scale across multiple cores.
anyway, i regrouped and tried again. this time based on ircd-hybrid, creating a project called shadowircd.
i still didn't know what the fuck i was doing, but i was stubborn damn it, and i learned everything i possibly could about how to use gdb.
it mostly worked out for a couple of years, but mistakes were still made in the design.
now back to freenode for a moment.
through working on shadowircd, i learned enough to start contributing patches to dancer-ircd.
then lilo and asuffield had a falling out, and lilo forked dancer-ircd into hyperion. he encouraged me to contribute my patches to hyperion.
and so i started working on hyperion.
hyperion (and dancer-ircd) were forks of ircd-hybrid 6, while shadowircd was based on ircd-hybrid 7.
although i succeeded in rewriting large parts of hyperion to be more scalable, it became obvious to me that we needed to move past hyperion and adopt something based on ircd-hybrid 7.
@ariadne are these all straight-line derivatives of the og ircd?
@ariadne interesting perspective, thanks for that. it reminds us of that thing about how, when nostalgia is allowed to be purely backwards-looking, it winds up reinforcing hierarchical world-views.
@ariadne oh yes, sigh, we lived through those DoSes. very annoying.
at the same time, we realized that we actually did not really use any of the features that shadowircd had.
and we were tired of database corruption issues we had with anope at the time.
so my friends and i started building a new ircd (charybdis), and a new services package (atheme).
atheme was based on another services package we had experimented with that was an undernet-like services package called shrike.
charybdis was based on ircd-ratbox, which was a fork of ircd-hybrid 7.1 beta.
ircd sure has a lot of forks.
@ariadne probably a silly question, but what does the name atheme mean?
eventually, freenode wound up adopting both charybdis (a slightly modified version called ircd-seven) and atheme.
and these days, i don't work on ircd anymore. it just wasn't an interesting itch to scratch anymore.
and libera.chat directly maintains the successor to charybdis, solanum.
i really didn't expect to ever pursue a career in technology. not that i had a plan for a career at all, mind. it just sort of happened. this was meant to simply be a space for me and my friends.
[sidebar: i studied psychology in college for the same reason that i hung out on IRC -- i was still looking for vocabulary to describe the mismatch between my internalized identity and what the world saw.]
because of charybdis' success in scaling to 100k users, i was approached by Ustream to see if i could help fix the scalability of their IRC stack. and so i became an SRE.
Ustream does not exist anymore, Twitch was basically a clone of it, all the way down to using IRC as the basis of the chat system.
@ariadne @whitequark I don't think that was enough duplication of work. Y'all probably should have forked two or three more times, that would have worked much better. 😝
@andrew_shadura the codename was originally athame, which is a type of magical tool.
but people kept misspelling athame, so we just called it atheme instead.
anyway: i didn’t get to just be a trans kid. so i built a place where i could exist anyway. this place is the latest iteration.
it turns out other people needed that too.
@ariadne I remember *of* it. I don't think I ever seriously went? But I'm pretty sure I first heard of you through adjacent communities to those. Which I guess is very like second- or third-hand at this point.
final sidebar: you know how i mentioned acidst0rm above?
well, he used to show up on my IRC network, DDoS it into the ground, and then act like we were cool.
now he is on death row for murdering his landlord.
like seriously, i have no idea why he kept thinking we were cool
@ariadne guy who kills his landlord (acidst0rm) versus guy who almost kills his tenants (kip macy), who wins
@ariadne typical psychopath behavior I think, not all of them kill people but it doesn't mean they can't make damage. Whatever they want there is no wrong way to get it.
@dermoth yes, obviously, but actually experiencing it is still different than working with theory
@ariadne I remember this, I used Atheme to create an internal IRC server with AD-integrated authentication at work 😀
And then out of the blue GitHub sent me a notification that one project I contributed to had been archived somewhere very cold for posterity, or something like that, and looking into it that's how I realized you (I was following you on Mastodon) were the developer behind it, which I though was pretty cool...
@whitequark @ariadne back when I was still tinkering with charybdis, I tried making a family tree of sorts https://github.com/grawity/irc-docs/blob/master/family-tree.txt
@whitequark @ariadne which is also why I find it amusing that just like we used to have forks and patchsets named "ircd2.8.21+CSr29+LT" and "ircd2.8/th.v5a.3", we now have forks named "Mastodon/4.3.0-alpha.5+glitch.th" and "Mastodon/4.4.0-alpha.5+glitch+urusai+sakura"
that (and seeing people gather from random-ass @hosts) kinda makes it feel like a similar sort of culture, I guess
@cb i just had the pleasure of learning kip lives in washington state :|
@ariadne A most excellent journey. Thank you for sharing it. And for always building community for others along the way.
@ariadne From 2007 onwards, I spent a lot of time on freenode. I found community there, which distracted me during my first puberty.
I still very much remember the switch to charybdis and atheme. I also remember how shocked I was when freenode went to shit.
I did not know you were involved with freenode. Thanks a lot!