First timer uCommerce Migrations
Some of you already know uCommerce.
Those of you who don’t should get to know it. Go, go. Download it, install it and play with it. I can wait. This post is not going anywhere and you can bookmark it.
Ready now? Buckle up.
A problem with UIs
uCommerce is an e-commerce platform. I have personally used it in a previous project and was pretty pleased with it. It worked pretty well my team and did not get in our way (which is a lot to say about e-commerce platforms).
Like any e-commerce platform that calls itself one, it includes a back-end user interface that allows, amongst other things, managing the product catalog.
That is all nice for business users and small projects in which there is a single uCommerce installation in a single environment and managers hack their way around in the backend interface in their live catalog.
But those are not the customers we target. And we are not that kind of developers.
Instead, our customers have lower tolerance to screw ups with new features and there are several environments in which those features are tested and approved until they make their way to the website people spend their money on.
And us, developers, aim for repeatability and less screw-up rate by the means of automation.
And one can only get that far with furious pointin’ n clickin’ on a pretty UI and database schema comparison tools.
Fortunately (for us), uCommerce is backed up by a database, and they have a quite sensible object model that can be used not only for reading, but for writing as well.
That means that all the actions that one can do in the UI can be done using the exposed object model.
And since schema management is almost a solved problem by the use of migrations… Why not adapt the raw object model into a simpler scenario-based API for create/alter/drop uCommerce artifacts that can be run using proved database migrations tools?
And so, my team executed.
And now our customers, my employer and uCommerce creators agreed that it would be a good thing that many people can benefit of (and hopefully contribute back) and it has now been open-sourced.
Give me the bits
The solution is delivered as a Nuget package:
Visit the project page. Fork it. And contribute.
Or you can head to the group discussion to ask questions, should you have any.