I am struggling with some things for the next rev of dC. Part of me wants to really geek out with it and do some neat stuff (I’m a little bored). But it is stuff that I consider neat – I am not sure the community will. I think with dashCommerce 3.0 we hit a bit of a sweet spot (as I documented here, here, and here) with how the application was implemented. It’s not perfect, by any means, but it was a good starting point and it resolved a ton of old issues that we had in it’s previous incarnation.
We need a better separation of concerns, a better / cleaner API, and some other stuff. That’s what we need, regardless of what we decide to do. But what I would like to do is move to a stronger SOA approach, which means using something like nServiceBus. And I’ve been looking at MEF for the extensibility of the application. I’d also like to create the public and admin portions of the site as two separate web application projects.
Why do I want to do these things? Because I would like to get dashCommerce to a place where it could scale to work in a web farm environment and I think these things will go a long way to helping it. nServiceBus is reported to handle 600 million messages in an hour based on their particular scenario – which is highly dependent on how they did things, but it gives you an idea of what I would like to be able to target.
Think HUGE.
One other thing I would like to do with the next rev is change the licensing somewhat. Basically what this will amount to is that all of the “framework” assemblies (including Store and Content) would be licensed under the MIT license, while the web application projects would still be licensed as they are now. I’d like to get some more community involvement in the framework side things and I think our current licensing makes people a little skeptical / suspicious of us.
I think if we open up the framework side of things, then we can build out a stronger framework for any e-commerce application, regardless of how the UI is implemented.
Now, that is what I would like to do. The alternative is to keep working on dC as it is, making some nice changes on separation of concerns, better API, loose coupling, etc. But keep it focused on small / medium sized sites and let it progress in a more traditional manner.
What do you think?
While writing this, I was listening to "Beautiful" by Damian Marley & Bobby Brown