As soon as Wagn 1.0 was released, we began prioritizing for Wagn 2.0. The top priority was and still is creating great ways to extend Wagn's core functionality. A modular extension system will have two key benefits:
- Programmers can alter Wagn's functionality to their needs without having to fork Wagn's codebase and learn all its in's and out's.
- We can solve idiosyncratic problems quickly without bloating the codebase.
While we're generally on board with the open source principle of releasing "early and often", that's not our approach to creating a modular extension system. Instead, when we release an extensions api, we want to be prepared to support it for as long as we can, so that modules that use the api will function smoothly for as long as possible.
To that end, we've recently been doing round after round of clean-up to make sure the api is as simple and clear as possible. This includes moving more configuration into cards as we did in versions 1.1 and 1.2 and creating broad, consistent patterns of settings behavior, as we did in 1.3 and 1.4.
The refactoring in Wagn 1.5 is another vital step towards the modules system, and it fact it will have a much greater impact on the card api. It includes a unified card retrieval system that will hide the complexities of cache management, database queries, virtual card generation, built-ins, and so on behind a simple "fetch" api.
In the process, we did a lot of work on our performance. One indicator of the improvement is the test suite, which used to take as much as 20 minutes to run but now takes under eight. That's especially impressive given that tests will miss much of the benefit of the caching improvements, as the cache is reset before every test.
There isn't much new interface in Wagn 1.5, but there are a lot fewer bugs. One arena of particular improvement is in error handling. For example, it used to be the case that an error on any card on a page could break the whole page. Now you'll just see the error where the inclusion would normally appear. It's just one more benefit of the everything-is-a-card approach.