Apr 29 2005

Application Design & Plugins

Published by at 12:27 pm under .NET

This is an old article and the information contained within it may be out of date, not reflect my current views and/or contain broken links. If you feel this article is still valid and requires updating, you can use the contact form to let me know. However, I make no guarantee that it will get updated.

I’m currently starting to design a new application in VB.NET. Well, actually its a re-working of a previous application I’ve created, MojaviBuilder. This time, however, I’m actually taking the time to design the application before I start writing it. The previous version sort-of evolved as I was writing it and as a result the code is a bit chaotic.

One thing I would like I the new version is to have a plugin architecture so that users can extend the functionality of the application, e.g. add a code editor to change the file template. The trouble I have though, is that at this point in the design I can’t see which areas of the application will need to be extended with plugins.

It would be nice to be able to have different object models for the different Mojavi versions as plugins, however I see that as being rather central to the application. This quandry has left me with three possible solutions:

  1. I leave out the plugin architecure at this time and re-work it into the application at a later date.
  2. I try and second guess how users might want to use plugins in the future and do a best guess architecture from the beginning.
  3. I say “to hell with it”, create the application as a plugin controller and write the actual workings as plugins for the controller.

My initial thoughts were to go with option 2 and try to second guess what the users would want. I can think of a couple of possible plugins but don’t want to have that functionality in the main application, therefore I could write an architecture to facilitate those plugins.

I am now, however swinging towards the central plugin controller option. This I fear may take a large amount of time to create and optimise so that it runs efficiently, so I think I am therefore being driven towards option 1: write MojaviBuilder as I think that average user would require it, look back at it in the future to see how a plugin architecture could be retro-fitted. Whilst following option 1 I would also be looking at how the plugin-controller could be created.

No responses yet