thesii/wintermute — pull request #12 by jalcine (2013-03-08 10:42:15+00:00)
Title: Rewriting Foundation

This rewrite took a few days, and it's not yet complete. But the following things are necessary in order to make Wintermute not only is a USable and USEful application, but also can be developed and tested quickly. Feel free to critique, but these are the ideas I've had for Wintermute.

Targets to Reach
------------------------

- **Testing** - I've been working to implement a good level of CDash + CTest + QtTest support in the test suite to have simple unit testing down. We need to have __feature__, __regression__ and __integration__ testing in place as well. In the future,

- **Logging** - Reasonably robust applications have a robust level of logging. This said, a proper tool that can be embedded with Wintermute with no huge concerns about portability is required as well.

- **Extensibility** - The initial plug-in architecture was interesting. It worked, but it was very flawed and was more of an experiment for me. Investigating another means of extending Wintermute is absolutely necessary.

- **Dynamic Bindings** - Wintermute's core setup can be written in C++, but I strongly feel that the application itself would become even more powerful if it was able to support more languages like JavaScript or Ruby. The programming languages that should be in Wintermute's extensibility suite can be as follows:

- [ ] JavaScript
- [ ] Python
- [ ] Ruby
- [ ] Perl
- [ ] Java

These languages are popularly known; **Java** was added for the potential native support of Android, in providing a SDK.

- **Transparent Configuration** - Wintermute's configuration retrieval and storage system should be as transparent to the rest of the system as possible. This said, I've considered using **JSON** as our de-facto means of storing configuration. However, Wintermute shouldn't rely nor depend on this as a primary means of storage and should be able to swap underlying formats with ease.

That said, I think that Wintermute is going to be moving in the right direction.