ScrewTurn Wiki 4 Releases and News

Building a Plugin Framework, part 4

October 27th, 2006 by Dario Solera | Filed under Development, Software Design.

The Plugin Framework, as I said many times before, is very hard to implement. Its development, though, is being a nice way to understand the (many) architectural problems of ScrewTurn Wiki. The engine, basically, lacks of abstraction and expandability. This huge problem is due to the fact that the wiki wasn’t meant to become what is becoming, so the design was really simple. Maybe with too much easiness, the engine was just meant to handle local data without a database and without any kind of expandable data access layer (there is a sort of DAL, but it’s not expandable at all).

So, here is what is happening. The engine architecture is being completely redesigned, recycling code here and there, but adding a brand-new Storage Provider paradigm, which will be used both by plugins and the engine itself. All the main data (i.e. Users and Pages) will be completely handled by those providers. I’m setting up a simple yet smart architecture that will hopefully minimize the problems of wiring data modification with the correct providers, at runtime (you know, I don’t like configuration files). In the next days/weeks (when the architecture will become more stable) some documentation will be published.
As you can imagine, this process will need more time than planned, so the next version will ship a couple of months late. I’m sorry about this, but I think it’s the correct thing to do in order to produce good software.

I also what to thank all the users: your feedback is very important, this project is having way more success than I’d have imagined at the beginning. Thank you!


2 Responses to “Building a Plugin Framework, part 4”

  1. Mischa Kroon says:

    Good to hear :)

    It’s often hard to let go of code written to use something new… good to hear you guys aren’t above doing a bit of rewriting to realize new possibilities.

  2. [...] The architectural redesign is really too important for a minor release. As described in the previous post, the new version will implement a huge set of new features and will have a highly extensible architecture. Data Providers will be configurable at runtime, and the engine will be able to use many providers at the same time, choosing the “default” one for new data and still managing “old” data with the correct provider. [...]

Leave a Reply

Side Projects

  • RESX Synchronizer allows to synchronize multi-language .resx files (used for the development of ScrewTurn Wiki).
  • Pixel Picker enables to pick the color of pixels on your screen — very handy for day-to-day graphics-related activities.

About