Unreal4 is a fork of InspIRCd. UnrealIRCd will sync its code with InspIRCd. The goal is to make this fork feature-complete to produce a modern Unreal. Do also view our main development site - has information on teams and such.
svn checkout svn://svn.unrealircd.com/trunk/unreal4
http://cvs.ircsystems.net/cgi/viewvc.cgi/UnrealIRCd%20SVN/trunk/unreal4
We will be syncing towards InspIRCd 1.2 fixes and not trunk from the time of InspIRCd 1.1.10 release, as there will be major breakage in the trunk from that moment. We will however be using trunk again once 1.2 is stable. This will allow us space to work on making a stable Unreal4 without having to work on an IRCd in pieces.
CIA.vc page for Unreal4: http://cia.vc/stats/project/Unreal4
Target: A “modern” UnrealIRCd without the shackles of the old code base that can last at least 8 more years.
UnrealIRCd will work with InspIRCd to tackle the core issues shared by both products. This will allow contributors to exchange features between the two. UnrealIRCd and InspIRCd will complement, not compete with, each other.
Reasoning:
Unreal3 will continue to be maintained as long as adoption of Unreal4 doesn't overwhelm the the adoption of Unreal3, with bug fixes and some features to aid in the transition from Unreal3 to Unreal4.
In the future UnrealIRCd will work on issues that InspIRCd would never touch, but our users request, to make Unreal4 as feature rich as Unreal3. Unreal4 will live in the same spirit as all prior Unreal products have, complete with support channels, documentation, and professionalism.
Inspircd features a more enhanced way of defining opers. Opers aren't divided into predefined groups, but instead totally customizable. This is a big advantage over the old style, but also has some problems that needs to be dealt with. One big problem is that an opertype consists of several classes. A terminology used for what is called connect now. This will be a huge step in u4 support, as a class is a connect for years now. It would be better to rename <connect …> to <class …> and call the new oper class definitions e.g. flag definitions. flag netadmin { …. } and then opertype { foo; flags { }; bar; }
| Unreal | InspIRCd |
|---|---|
| Spamfilter | m_filter & m_filter_pcre |
| UMode +d | m_deaf |
| deny channel {} & allow channel {} | m_denychans (needs allow too!) |
| LUSERS on connect | m_conn_lusers |
| set::modes-on-connect | m_conn_umodes |
| Ping cookies/NOSPOOF | m_conn_waitpong |
| Umode +H | m_hideoper |
| GLOBOPS | m_globops |
| Ident lookup | m_ident |
| KNOCK & chmode +K | m_knock |
| Chmode +A | Missing (and maybe obsolete, see #3420) |
| Chmode +a | m_chanprotect |
| Chmode +c | m_blockcolor |
| Chmode +f | m_messageflood (Misses the various flags available in u3) |
| Chmode +G | m_censor |
| Chmode +h | Available in core features. |
| Chmode +i | Available in core features |
| Chmode +I | m_inviteexception |
| Chmode +l | Available in core features. |
| Chmode +L | m_redirect |
| Chmode +R/+r | m_services & m_services_account |
| Chmode +C | m_noctcp which blocks CTCPs to a channel |
| Chmode +V | m_noinvite support for unreal-style channel mode +V which blocks INVITEs to a channel |
| Chmode +Q | m_nokicks support for unreal-style channel mode +Q which stops most KICKs on a channel |
| Chmode +N | m_nonicks support for channel mode +N which prevents nickchanges on a channel |
| Chmode +T | m_nonotice provides support for unreal-style channel mode +T |
| Chmode +O | m_operchans provides support for oper-only chans via the +O channel mode |
| Remote Includes | Missing (Planned for M2) |
| U3 Configuration Parser | Missing (Planned for M2) |
| Oper MOTD | m_opermotd |
| Bot MOTD | Missing. But isn't very useful, is it?? |
| CMD DCCAllow | m_dccallow |
| who w/o parameters shows all users | m_operwho (but limited to opers, which does not seem to be the case in u3) |
I'll start out by my overview of how the state of the UnreaIIRCd project was when I started having the consideration if to kill the UnrealIRCd project or not.
Slowly dying would/could have caused this:
Quickly dying:
Talking to some of our users about this move, Stealth suggests a radical move instead - to keep the project alive but change things radically.
We look around - how can we improve our situation? We can't start from scratch. It took InspIRCd 5 years to get to sane stability.
It would be stupid to base off any of the other current ircds - we would just rehash the same bugs of the past that haunts every single ircd
Upsides of this move:
Redundancy: InspIRCd dies - unreal continues, someone wants an Insp - they just unload all modules. Unreal dies? People can fork and keep on syncing their code with InspIRCd easily, keep the unreal branch going with updates.
Better I/O engine support - kqueue, epoll, and I/O completition ports on Windows.
The fact they gained windows support instead of cygwin.
Fresh code base, free of the bugs of the past - lost messages, etc.
“Free work force” - InspIRCd “works” for us and we may choose to contribute back if we share interest in a matter. - and reverse.
Many of the InspIRCd community members are former Unreal users - many who still like the form of Unreal and the principles - and this has shown in the last couple of days too - that means, many new recruits who want to make a difference on a “bigger” IRCd
We can fix what's wrong with InspIRCd - they want not to include dependancies or when they think they can code it themselves (remote includes - http client, we write it ourselves instead of using something sane).
We have a different attitude towards users in general and listen more to what networks would like (this view may vary)
For the matters that we share same opinion, we have a louder voice together with InspIRCd. In the future, more traditional IRC networks would move to InspIRCd if the conditions are right.
The module API is 200x easier to learn than Unreal3 API, making it possible for people to easier enter into the project and code and move on to core issues
UnrealIRCd doesn't want to be InspIRCd and InspIRCd doesn't want to be UnrealIRCd, yet we share some same concerns - performance, server protocol, modularity
Downsides:
There is craq in the code and many stupid things, but not as hard to fix as to fix Unreal3.2.* - this view is from the side of our paradigms and ideas.
We'll have to take the blow of the incoming InspIRCd bugs - which may require some taking users in the hand and guiding them through reproducing and telling us the information we need.
The trolls disliking InspIRCd now hates us :)
The fact it's C++ and old shell providers (versions) don't work properly with it
It takes up more space, but there are things we can do to help that.