Page 1 of 1

UnrealIRCd celebrates its 15th birthday!

Posted: Sun May 18, 2014 4:09 pm
by Syzop
It all started when Stskeeps created UnrealIRCd in May 1999. When I first joined the project as a coder in 2001 UnrealIRCd was already very popular. Now, in 2014, it is still the most widely deployed IRCd with a market share of over 50% (according to SearchIRC). Clearly, UnrealIRCd is (still) very much a success and I'm proud to be part of it!

Thanks!
I'd like to take this opportunity to thank Stskeeps, who started the project. Codemastr, with whom I coded a lot of the foundations for the successful 3.2.x series. Naturally, all the other coders and contributors, including but not limited to: Luke, aquanight, Trocotronic, WolfSage, binki, and many others. Thanks also to the head of support, Stealth, and all our supporters who are helping out people every day on the forums and IRC support channel.
Thanks to CKnight^ who wrote the initial HTML documentation and all our translators who translate the docs into their own language. The documentation is really appreciated by the community and is vital for a feature-rich IRCd like this.
Thanks to all the testers who test out our Release Candidates, pre- and alpha-versions to make sure we catch as many bugs as possible, so they don't end up in the final stable version.
Finally, thanks to all users for your continued use and support of UnrealIRCd! Without you UnrealIRCd wouldn't be this successful. Also, your feature suggestions and bug reports really can't be missed.

UnrealIRCd survey results
Speaking of community input, I've made a document summarizing the results of the UnrealIRCd survey that ended a few months ago. In total 342 people completed the survey, (almost) all admins running UnrealIRCd. Thanks *a lot*! This was really useful. In general people are really satisfied with UnrealIRCd (49% even gave us a 9 or 10 out of 10), but we can always do better and we got many suggestions. Check out the UnrealIRCd survey results (apologies in advance for the lack of graphics).

Development: The past and the future (UnrealIRCd 3.4)
Now is also a good time to look back at the past. Has it always been easy to keep the project going? Certainly not. A lot of people joined and left a while later. This isn't unnatural for open source projects, but at times I was the only coder involved, which really isn't good. In the end, though, the project has always kept going on and fortunately wasn't left abandoned at any point.

I've always felt we should be very careful with our stable branch (3.2.x), carefully reading code before putting it in, rejecting too drastic changes (but still allowing in major new features), having Release Candidates which people can test before it becomes a final 'stable' version, and so on. The stability of UnrealIRCd was rated an 8 out of 10 or better by 82% of our users in the survey. A clear reward for my 'don't break it!'-paranoia that made the 3.2.x branch so stable (thanks!).
However, there is a downside to this. It means you need a separate development branch - like many projects - where you can do major code cleanups, rewrite entire parts of the code, try out new ideas, etc, all without affecting the 3.2.x stable series. Such a concurrent development branch requires a lot of work, and the results of it are generally not directly seen by other users so isn't always particularly rewarding, it's always a long-term project, often taking years for the development branch to become the new stable branch. In the past 10 years at least 3 attempts were made at setting up such a branch and they have been called UnrealIRCd 3.3, 3.4, and even 4.0. The ideas ranged from copying 3.2 to 3.3/3.4 and work from there, to doing a total recode from scratch (quite insane!). At the start they were all announced as 'the new big thing'. Unfortunately all these attempts failed. People were enthousiastic in the beginning, but development slowed down to a halt later. Sad to see, especially to see it three times in a row.

Except for one attempt in 2006 which I had to abort due to an elbow and wrist issue, I have not been part of the other attempts to create an 'UnrealIRCd 4'. With all the history of failed attempts I felt that I should just continue my work as head coder on 3.2.x, introducing new features to keep the version interesting and up to date, while at the same time ensuring it stays very stable. Given the resources we had, I can only call this approach a success.

In the end it's inevitable to start a new branch, it's a necessity. But I felt I should be pretty sure of myself before we announce development on yet another "new UnrealIRCd". When another coder, nenolod, offered to join the UnrealIRCd project and get seriously involved for a longer period of time, I finally announced on Christmas 2012 that we would start development on a new series. We would be using 3.2.x as a base and work from there to create an UnrealIRCd 3.4 (or whatever it will be called in the end). Development indeed took off and the work nenolod did were mostly code cleanups, removing old features and work on the I/O engine to better cope with (ten) thousands of clients. This work was necessary to make the code more up to date, better maintainable and understandable for new coders to the project. For admins and end-users the changes were less noticeable.

Unfortunately after 9 months nenolod stopped and a few months later threatened to leave the project if we would not drop Windows support. I was very unhappy by this, nenolod made many code changes when he was active and he was the only other active coder besides me. However in the end it was an easy decision: Even though the majority of our users run on *NIX, the Windows version is important for us.. people often start their (small) network on it. If the network later grows bigger they migrate to a hosted Linux server. This, combined with me feeling very uncomfortable with such threats, made it so nenolod left the project and I was on my own again.

It turned out all the code cleanups and the new I/O engine caused a lot of bugs. The IRCd was pretty much unusable: two 3.4 versions couldn't even link, Windows support was completely broken, several major security holes were present and the IRCd would crash from time to time. Not trusting the current code and knowing how important stability is for an IRC server, I decided to go through all 500 pages of changes in 3.4 and fix things. This took a lot of time, even more than I expected. In hindsight, I wonder if it wouldn't have been better to just throw away the 3.4 work and redo the work from scratch rather than fix all these issues, but that doesn't matter anymore now that most of the issues have been fixed.
Once that work was finally done, I started on modularizing features. In particular moving channel and user modes to modules. This was one clear result from the UnrealIRCd survey: people want to decide which feature to load. This is the area I'm working on at the moment and will be a key aspect of UnrealIRCd 3.4.

Now, I really wanted to announce a 3.4-alpha1 version on UnrealIRCd's 15th birthday, but it'll be a little later. The new target is June 2014.
Once 3.4-alpha1 is out I hope people will start testing it and I also hope more people (especially coders!) will become involved.

Thanks again everyone for your continued support on UnrealIRCd!

Bram Matthys (Syzop), project leader & head coder of UnrealIRCd.

Re: UnrealIRCd celebrates its 15th birthday!

Posted: Thu May 22, 2014 1:55 pm
by CrazyCat
Happy birthday Unreal, and a great thanks to all the people working on it, past, present and futures.

The survey results are really interesting.

Now, I'm waiting for the next step, second 2014' half will be a testing one :)