avoiding feature explosion - plugins

Hi,

I’ve got a number of features that I don’t think all foodcoops will use. And they’re really small. Something like membership fee, for example, I have currently implemented as a check that an ordergroup has paid at least a certain amount. Or a dropdown on each page to choose a language, which some coops might want, others not. Or an online banking option - with several possible providers.

Would it be possible to have plugins/extensions/addons offering these kind of features? In that way foodsoft core can remain clean and simple, and foodcoops can pick and choose what they need.

Is this easily possible in Ruby/Rails? I tend to think as Ruby being flexible enough - being able to modify existing classes, e.g. to add filters. Modifying views may be more complicated (jQuery-like dom manipulation, perhaps?). Does anyone have experience with this?

Apart from this general approach, there are two kinds of more contained plugins I’m thinking of:

  • Import plugins - so that different file formats can be imported. We have suppliers that send an excel sheet that does not easily map to the foodsoft csv format. We are already using this in branch multiimport [1].
    Since suppliers can be really specific to certain foodcoops, and may need to be updated often, I think it is useful not to require keeping them in the main repository.

  • Payment plugins - it has really helped us start to allow new members to pay using online banking. That lowered the barrier to attracting new members. I think it makes sense to introduce a simple plugin api for online banking providers. We are currently using mollie (branch onlinepay [2] - needs cleanup though), but consider switching.

  • Willem

[1] [2]