In the past couple days I've been playing with the code, and have reached a couple conclusions. First, KNS::Engine isn't an engine, it's an interface the apps use to interact with the engine. Apps don't need to know anything about the engine though (and currently don't/can't anyway). Also this interface class has no signaling mechanism, so it would be good to derive it from QObject so it can send out signals and apps can connect to them. In other words some binary incompatible changes will be necessary and I'm on the way to make them happen by creating knewstuff3. Because of this decision we have the chance to make some binary incompatible changes in the library itself which I believe will help keep the design cleaner and make it easier to maintain as a whole.
I had a discussion on irc today about what to name the interface class, and after a few suggestions settled on the name KNS::Client. I'll be getting that going this week, and hope to have something basic working by next week. We'll see.
This coming saturday we'll have another meeting on #ghns on freenode if anyone else wants to come along and share their 2c with the rest of us. As I blogged last time, last weekends meeting was productive. We've got a plan and are on the road to better things.