It was hoped dclib/valknut could become a "good" client for the NMDC protocol,
before doing something about ADC protocol support, but that no longer seems practical,
and really wouldn't be that useful anyway.
Why development is ending?
- dclib is based on it's own "core" classes for common objects (string, list, map etc.) or networking. In the unlikely event that these are better than Qt's classes, they would still be more code so more opportunities for bugs.
- dclib almost entirely runs on a single thread, despite many things being threads or having several mutexes.
- dclib's files and hash database needs a complete overhaul, so that it is less prone to error.
- The download manager needs a complete overhaul to do data verification and auto segment sizing.
- dclib being separate from valknut is very unhelpful.
- All the time spent trying to improve dclib's existing functions means support for the ADC protocol will never get started.
There may be many other reasons, mostly about dclib, and since valknut originally was
coded using more dclib and less Qt, plus the Qt4 port is still using the Qt3 support library,
starting from the Qt4 valknut code doesn't seem a very good idea.
What if anything has this project achieved?
- The life of valknut was extended by supporting new commands required by DC++.
- The search results bug was eventually fixed, by completely replacing all the relevant code.
- Most changes were usually to improve dclib's ability to upload, e.g. during filelist refresh.
- Performance was improved slightly, from bad to slightly less bad. The only noticeable change is that dclib may have finished the filelist refresh while valknut is still only displaying "L 5.51%".
- Valknut can be compiled with Qt4, all this really achieved was doubling the amount of work I had to do since the Qt3 version was not discontinued, which also prevented dclib being merged into valknut.
Mostly besides gaining programming experience, I learnt that the NMDC protocol is a lot worse
than you would think. Even things added to the protocol were sometimes in themselves broken,
since they were apparently left open to interpretation.
Oddities
All of the "end of valknut" etc. seems very negative. It's not really the end,
except since it needs to be completely re-written, I'm also going to change the name.
I do not feel yet another DC++ port is required. In fact a good ADC hub might be more
useful than another client, but I do not plan on writing one.
Here's what valknut has that maybe some other programs do not.
- Backwards compatibility. Valknut can upload to microdc 0.11.0. I do not think that keeping this upload ability is particularly difficult. Keeping the ability to download from microdc 0.11.0 makes things much more difficult, and the ability to turn off the hashing of new files, if nothing else, also makes things more difficult.
- SSL connections to an NMDC hub. The only purpose is to avoid traffic shaping/blocking, there is not much point breaking the protocol some more. There are not protocol modifications, it just means you don't need to run stunnel. Update: now in StrongDC++ also.
- Encrypted private chat. Sent via the hub. The obvious replacement for this is to add a direct client to client chat extension. The only difficulty should be getting some kind of "chat slot".
- Valknut still uses an MDI (desktop with moveable, sizeable windows) style interface rather than tabs.