Offer of reimplementation
I want to offer you the reimplementation of party of my patch from a few months ago, if you're intrerested in that:
- A clearer, more flexible setting architecture with JSON
- An Autoloading functionality for classes in combination with namespaces, maybe in combination with a CygUtility file. Personally, I think this centralized functionality is the only way to reduce duplicated code at (for instance) printing warnings and loading JSON files. Note: Autoloading is only useful if we choose a slightly more object oriented approach with at least some Exception classes.
- An improved engine for api requests with lower suspectibility to errors. This would decrease duplicate code, while increasing the simplicity of handling api requests and using Cygnus in general. The user wouldn't have to care about most api errors and should be able to to submit it's api params as array.
- Encapsulating BotCore. People shouldn't mess mit BotCore, but use it.
- Long-ranging: An object oriented handling of results of api requests instead of abusing arrays for these complex objects. This would be the first step, the goal could be to have a fully object-oriented framework with distinct frameworks for wiki communication, loggers, etc. Such a model would depend highly on Composition. An object-oriented framework would make maintenance easiser and improve flexibility. Furthermore, it puts more structure into the code, it is more like a human would group functionality. However, this is nothing you can build over the course of a few days, I think it'll take at least 80 hours of work to build the second part. (Note that the first part is coded already in many parts).
I'll split this stuff in multiple patches, making it easier to handle for everyone.
I've got some time to spare in March and I'll take some days of that and spend it to reimplement (and test) my patch, if you're interested. However, this is just an feer, you don't have to take it. I still think these are really useful improvals if done the right way, but I'm looking forward to a producitve debate what's useful for Cygnus and what isn't.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information