FYI: If you don't want to read a massive rant about what I think is wrong with the IRC protocol and what I'm doing to break the mould, skip to the next section.
Unlike other IRCd programs, Amelia is designed with a plug-n-play idea in mind. The default settings are intended to allow you to have a minimal or even no configuration file and host a small IRC network. Many IRCd's that I have come across require the user to self-compile and edit configuration files that can sometimes exceed 2000 lines. I believe that it doesn't have to be this way. With sensible defaults programmed straight into the core, Amelia can run a reasonably secure and hassle free network without even giving it a configuration file. If you want that extra bit of functionality, you can always create one yourself, all you need to know is simple JSON and have some idea as to what is secure.
Another thing that I don't like about current IRCd software is the lack of portability. For example, ircd-hybrid, while I believe that it is an excellent program and it is one of the main inspirations and sources of information for the creation of Amelia, is written in C. Because of this, it needs to be recompiled for every platform it is run on. Java doesn't have this limitation. To add to this point, I also don't like C due to it being a very "closed" language. By this I mean that it is not friendly for beginners. Java on the other hand is very easy to read and extensible.
The IRC protocol at this current time is not clear. The last official update by the IETF was back in 2000 and is showing it's age. Atheme (http://atheme.org/) is producing an IRCv3 specification, and it looks very promising, however we cannot be sure of support for it at this current time.
One final point for now (until I decide to update this text at some point) is that I don't like the way that most IRCd software implement their configuration files. ircd-hybrid has probably got the best configuration file for all of the mainstream IRCd software packages, however it is not standardised. A goal that I wanted to accomplish for Amelia is the use of a standardised way of writing the configuration file, making the front-end as easy as possible for the end-user, while making everything under-the-hood as advanced as I can.
- Implement compliant server linkage (i.e. a tree model)
- Implement Amelia to Amelia linkage that allows every Amelia server to communicate directly with every other Amelia server (non compliant)
- Implement compliant and non-compliant methods for protecting against netsplits. (non-compliant will only work if the other servers identify themselves as Amelia)
- Implement IRCv3
- Built-in services that can be toggled off to allow for 3rd party services to be enabled.
- Jython integration to allow extra modules for the services to be written in Python.
- Jython integration to allow extra raw IRC commands (e.g. PRIVMSG, OPER ect) to be written in Python.
- If possible, integrate Aphelion (https://github.com/nedhyett/Aphelion) into Amelia's core.
- Extra commands that are not usually part of the IRC spec.
- Bot registration (networks can require that bots created/hosted by third parties are registered with Amelia)
- Saving channels even if the server goes down.
Amelia is by no means professional. It is created in my free time. If you encounter a bug, please report it ASAP using the issues tracker (I can't fix bugs that I don't know exist). Amelia will most definitely not be compatible with all clients (especially if they are programmed incorrectly) since I don't use EVERY client at the same time. No. I won't change Amelia if one client doesn't work properly.
Clients known to work with Amelia
- HexChat 2.9.6
- MangoIRC for iOS
Clients known to have issues with Amelia
- IceChat 9 (RC 8.21)
- Currently does not show the messages sent by the user to a channel. This appears to be an issue with IceChat? No other client I tested experiences this bug.