CommerceLive: A Solution for Innovation

June 8, 2010 · Posted by Cam Stevenson · 0 Comments · Trackback Url

Last week in our weekly 1 on 1 meeting, CommerceLive Lead Developer, Tasneem Saleem, made the comment “I know we’re not going to be able to build everything we want ourselves, and that’s not my goal.  My goal is to have the framework in place so that others can extend the solution as easily as we can.” 

I wrote this down when Tas said it, because I thought she captured very nicely the spirit of what we’ve been trying to do.  Based on my own recent experiences as well as observing some of the contributions made by other great developers outside of the CommerceLive team here at Cactus, I’d say that we’re well on our way to that goal.

With that introduction, here are my top reasons CommerceLive is a solution for innovation.


Getting Started
We work with CommerceLive in an automated, completely virtualized environment where all of the components are pre-installed on virtual machines, ready for a CommerceLive install.  This includes SharePoint as well as Microsoft Commerce Server.  There are two different ready-to-go environments:

  • Development – used by developers, and including a pre-configured installation of Microsoft Visual Studio
  • QA – used by Product Management as well as QA.  These are also used outside of engineering for marketing and demo purposes

    In both cases, our IT department generates these virtual machines on request, and supplies them usually within an hour.  Once you receive your VM, you either (depending on whether you’re a developer or not):
  • Get and build the source
  • Run a script to deploy CommerceLive
    OR
  • Copy the latest release build to your machine
  • Run a script to deploy CommerceLive
    The key here is “run a script to deploy CommerceLive”.  This really is a single script which builds, deploys and activates SharePoint features, creates sites and subsites, sets permissions and, about 30 minutes after you start it, pops up a browser and points you at your fully configured, ready to go, SharePoint-based CommerceLive site.  Even better, if you run it again, it will tear down your site completely and build you a new one – which makes testing a whole lot easier as you progress from version to version – or if you break something.

    My conservative estimate, based on years of working with complex systems – including SharePoint and Commerce Server - is that this saves us man-weeks across the company – which lets us spend more time writing software and less time setting up (and fixing) our work environments.


Working with (not against) SharePoint
SharePoint is a great platform, but it does take some getting used to.  The plus side is that once you are used to it, it can save you a lot of time constructing an e-commerce site, with the added bonus that you have at your disposal far greater flexibility than if you’d handcrafted a site using, say, ASP.NET or PHP.  This flexibility equates to being able to produce a more innovative site, because you spend less time on “plumbing” and more time solving real e-commerce problems (see www.mynslc.com for an example of an innovative and attractive site that really shows this off).

In CommerceLive “R2”, we’ve spent quite a bit of time making sure that we are working with SharePoint.  Generally this means making pieces of functionality into web parts when they should be web parts (and therefore arrange-able and configurable),  supplying page templates that make sense and ensuring overall that CommerceLive is a good SharePoint citizen.

 

The net result of this effort means that once (or if you already) understand SharePoint, you understand CommerceLive and can work with it the same way you’d work with SharePoint for any other reason, and can stir those great SharePoint features into your own CommerceLive based site.


The Out-of-box Site
One of the features that we’re quite excited about in CommerceLive “R2” is the new out-of-box site, which I’ve mentioned elsewhere in this post.  The team agreed early on that we’d build this as close as we could to a “real” site (which means sweating a lot of details) so that, in addition to providing something that’s able to be used as a basis for a new site (as well as demos), we’d understand and be able to anticipate any difficulties others might have doing the same thing.  Expect to see a longer dedicated article on the out-of-box site sometime in the near future.

There are a couple of interesting side benefits that have come out of this feature:

  • It’s a useful reference site
  • We use it as a focus when we’re collaborating on a design


Because we’ve been building this site as we’d build a real live one, it’s turning out to be a pretty decent reference site – and not just for how you’d build the site itself, but also for technical “How To’s”.  Let’s face it – developers work by example, and if we give them (mostly) good examples, we speed the process of building a solid live e-commerce site that’s flexible and extensible.

We’ve also found that when the team is working on a feature or feature set (or even deciding how to fix a bug), we tend to gather around a running version of the out-of-box site and use it to live-model the solution.  Paper just isn’t a substitute for this.


Extending the Solution
The first large feature for CommerceLive “R2” was, broadly speaking, a complete repackaging of the entire solution, in order to make it easier to build multi-site/multi-brand solutions.  This involved moving around over 1,500 code and artifact files – separating them for branding purposes, reorganizing them into logical, hierarchical SharePoint features and completely changing the way we deploy.

The basis for this work was the sum of the challenges we’d had on previous CommerceLive engagements, and it was designed by the people who had experienced the challenges first hand.  Due to the breadth of this feature and the number of moving parts, my friend Ryan Donovan referred to this as “juggling a lot of knives”.  He was correct – there were many injuries, but luckily no serious ones.

The net result however, once the dust had settled, was that it became dramatically easier to extend CommerceLive.



In the screenshot above, you can see the Visual Studio projects that make up the CommerceLive solution.  Although there are quite a few, they’re organized and named in such a way that you have a pretty good idea what each one does, which (as a developer), helps you decide the right place to add a new web part, artifact or other piece of functionality – or where you might find existing instances of these. 

This is often referred to as “discoverability”, and avoids the need for a whole lot of time spent searching for information.
If we open up one of these projects:


 
We can see that any feature code as well as the SharePoint specific configuration files are laid out in an understandable way.  The really cool part is that since each of these projects lands up becoming a SharePoint “wsp” (basically a deployment package), you can extend CommerceLive simply by adding your own feature specific code and SharePoint configuration files to the right folders, building and redeploying – no additional scripts, configuration or packaging required.

A personal example of this: I spent 20 minutes moving a simple web part from our incubation repository into CommerceLive.  5 minutes of that was choosing the right place to put the files, and putting them in.  The other 15 minutes was trying to figure out what else I had to do (because it just couldn’t be that easy).  When I finally asked Tas (remember, the CommerceLive Lead Developer) I found out much to my chagrin that it was really that easy.  A build and deploy and I was done and running.

Oh.  And when I say “build and deploy” I don’t mean that 30 minute full-site-deployment script from earlier.  A tool called  WSPBuilder is integrated into the CommerceLive solution:


 
…which means that fully deploying that updated package involved a couple of right-clicks and less than a minute.
The net result of this repackaging work is the ease by which you can extend the CommerceLive solution – from within the CommerceLive solution.  All of those usual problems with packaging, deployment, feature activation are eliminated – so once again you can focus on solving real e-commerce problems.


Finally
We’ve been experiencing the potential of CommerceLive as a solution that encourages future innovation and we’re quite excited about what we’ll be able to do, and perhaps more excited about what others will be able to do.  Look for these features in the upcoming CommerceLive code-name “R2” release.

  • CAPTCHA Image Validation