Square Pegs and Round Holes

A round hole in a wooden plankThis post is more of a brain dump than anything else; just a place to put my thoughts.

I’m currently architecting the ‘cluster manager’ application for the EuroPetitions EU project that we are a part of. This is a fairly easy piece of work, a simple dashboard with some APIs through to external ePetitioning systems.

Ideally, I want to use the flexibility that our CitizenScape product provides, but ‘widgetising’ the cluster manager in order to incorporate it seems like a lot more work than necessary. The proper way to do it would be to create an external cluster manager application and then provide a widgetised version to CitizenScape. The alternative is to incorporate the code for managing EuroPetition clusters into CitizenScape. Here are the plusses and minuses, as I see them, to these two approaches.

External Cluster Application

Plus:

  • Appropriately architected
  • Easier development / maintenance, particularly where multiple developers are involved.

Minus:

  • Potential integration issues
  • Widgetisation may limit how the cluster manager can function
  • Time constraints (this has to be done in 15 man hours – and counting)

Cluster Manager in CitizenScape core

Plus:

  • Can use existing core code / helpers / views / templates – should reduce development time

Minus:

  • CitizenScape code muddied with non-core functionality
  • CitizenScape database schema muddied with non-core structures

Conclusion

Much as I hate to say it (due to time constraints), I’m going to do it the proper way. I can’t imagine that this application will not run for a long period of time and I need it to be easily maintainable. So here’s what I’m going to do:

  • Create the cluster manager as a new application / schema
  • Develop the ‘business logic’ / models in full
  • Create an API controller and views to supply widget-compatible snippets to CitizenScape.
  • Create the CitizenScape widgets to incorporate EuroPetition cluster management into the CitizenScape platform.

Right, now that that’s sorted, I’d better get on with it…