You’ve probably seen a lot of references to ADC in the changelog for DC++, in the forum (people saying “no, this won’t come in NMDC, but in ADC” etc), the bugzilla, here and on the public DC developers hub.
What is ADC exactly then? It’s basically a way of defining how two clients (or client and server [hub]) communicate over the Internet. ADC is a protocol, just like HTTP (which you’ve probably noticed when you’re viewing web sites), FTP, IRC or NMDC. Think of this communication, the protocol, as two people in real life talking to each other. They both need to understand each other, otherwise they are just making noise with their mouths. Think of protocols as natural languages; English, French, Italian or Swedish.
ADC is not complete, but the current draft is what (basically) is going to be the final version.
What does this mean then? Well, it means different things, depending on who you are and what you want do.
For the common man, this is what ADC will bring (though, not necessarily will be in DC++);
- Secure overall communication. This means the use of SSL (secure socket layer).
- Secure password. This means it is impossible(1) for other people to find out what your password is when you’re logging into a hub. (Not depending on above.)
- When searching, you can use regular expressions to accurately find what you are looking for
- You can change nick when you are still connected to the hub (provided the hub allow you to).
- Due to the identification scheme in ADC, different shares in hubs is possible.
- Using partial file listing.
- All text (between you and other users) are in UTF-8. This means that Chinese people can write characters and everyone sees them properly. Basically, any type of letter/symbol in any language will be viewable.
- A native support for hashes (every client has to serve hashes).
- If the hub chooses to, it can avoid sending main chat messages if you don’t want them.
- Native support for “/me” (”* ullner is now away”). (That is, speaking in third person.)
- Responses to searches can now be directed properly.
Wow. That’s a lot, ain’t it? And this is only what I can think of now. Think about when the protocol is finished!
So, what does ADC mean for developers?
- A clear structure over what and when to send things. (There is no “spec” on how or when to send things in NMDC, only an semi-accurate order.)
- We don’t need to have commands that are badly spelled ($LogedIn etc).
- $ and | etc isn’t forbidden in commands.
- Hub developers don’t need to depend on client developers to implement something for clients to safely log in.
- One can change state and add features while connected.
- Information about the client is now incremental, meaning you only send those parts that are changed.
- Clients now don’t have to “guess” if two users in two hubs are the same.
So, I hope you have a better picture of what ADC is and what it can potentially bring.
(1) Unless the Tiger algorithm is broken, which is not likely in the next years.