I'm currently part of a team developing a solution intended for small business. One of it's components is kind of a dynamic business rules engine (note the quotes) and because of it's nature we would like it to be highly configurable.My idea was to implement/use an external DSL to write the rules with a simple configuration utility to create and edit them. We could also keep a set of common rules and distribute them with the application. An external DSL + the editor will allow us to fix or modify rules as needed, and our clients need that agility in their process.My team members think that the best approach here is to provide the rules as plugins to the application and redeploy or upgrade those plugins, they argue that, in that way, we'll have better quality control given that testing the plugins will be easier than testing a DSL script. But in my opinion, maintaining a group of plugins, most of them in a per client basis will eventually become a living nightmare.Bottomline my question is: Which solution do you think will work better with a small team of jack of all trades freelancers who have to develop/deploy/maintain/upgrade around four or five clients?
Plugin versus External DSL
architecture;deployment
I am of the opinion you should not invest in a DSL with only 4 or 5 clients potentially using it. I am saying potentially because you do risk it being regarded as too complicated, ending up in the situation where your team will be the ones create these DSL scripts for your customers. Effectively creating a DSL for yourself.What would -you- rather use? I like my regular programming language(s) and tools enough to frown upon having to learn yet another DSL.