Almost anyone who has used SilverStripe for client work for any length of time has had a brush with the dreaded spectre of commerce. It can be difficult to make sense of the modules that are out there and even more difficult to customize or integrate with another product (we’re looking at you Magento). Last month at StripeCon European Conference, we had some great discussion around this topic and what we could do to move the platform forward.
What can you build with SilverStripe now?
While it's not always straightforward, you can actually do a lot with the solutions already in place. Here are a few examples:
skinny.co.nz - built with SilverStripe Shop
What tools are available within the SilverStripe ecosystem?
SilverStripe Shop - Stability and Community
This fork of the original e-commerce module seems to have the most activity right now. It has a focus on creating an increasingly stable and extensible module through unit and Behat testing, semantic versioning, and sensible architecture. It uses the wonderful Omnipay library for payment, so you get 40+ payment processors out of the box.
It does have its weaknesses though: there’s a decent amount of technical debt from previous times; documentation can be confusing or lacking; and internationalization is spotty (but improving rapidly!).
Disclaimer: I'm one of the maintainers.
SwipeStripe - Clean and Lightweight
A relative newcomer - this module was written by SilverStripe developer Frank Mullenger in 2012. As such it boasts clean, tested code from the start. It's modular to a fault, and the CMS UI has had a little more love. It also has lovely branding as it started its life on a commercial license before being open sourced a couple of years ago.
The main downsides would be that the community seems to be less active these days and there are fewer payment drivers. You may find things like checkout to be less flexible than the other modules if you want to modify them.
SilverStripe E-commerce - Faster Progress
This is a continuation of the original e-commerce module, though not by the original authors. The pace of development is faster, so it tends to have more new features and more options (for example the order state machine is completely configurable via the CMS UI). The backend is much more developed and stylized and things like shipping, search, and ajax are built in.
The downside is that faster progress comes with a less disciplined development philosophy, so don't look for much automated testing and you may find new versions don't play as nicely with older code. If you can live with that and want the newer features, this one might be for you.
- Torindul Shop - https://github.com/torindul/torindul-silverstripe-shop - newer module still in early stages
- Shopic - http://www.shopic.se/ - Solid module with a commercial license
- FoxyStripe - https://github.com/dynamic/foxystripe - FoxyCart integration
- SilverCart - http://www.silvercart.org/ - This project has recently seen some new action and they’re promising a new release soon
- Moltin - https://moltin.com/ - API-based e-commerce (platform independent)
- Magento - http://magento.com - so many features, so much pain
What would it take for SilverStripe to be a first class commerce platform?
We can’t compete with Magento, Shopify, Sylius, or Spree for a breadth of features, but I don't think we have to. I think we can narrow it down to two use cases:
- SilverStripe developers and creative agencies who need to add a shopping cart to an existing site (i.e. adding a few simple products). These guys just need something that is simple and works out of the box.
- Agencies who need to build more custom e-commerce experience utilizing their team's expertise in SilverStripe. In this case, a solid foundation is needed that can easily be extended and customized.
Over the course of the conference in London, a vision began to emerge. What would happen if we picked the top 5 or 6 must-have features from those involved and put some time and resource into developing a "2.0" version of one of the existing modules? What if this release corresponded with the release of SilverStripe 4.0 and took on the same spirit of being willing to break some things to get on a more forward-looking course?
If you'd like to know more about the specific features we discussed, you might want to watch my talk, or have a look at the meeting notes and corresponding user stories, or this Trello board for ongoing updates.
Where to from here?
The next task is to identify the 4-5 features that will be targeted in this 2.0 release and then have a small team create a proposal that can be submitted back to the community RFC-style. From there maybe different companies or individuals will take features and run with them, or we can organize some hack days to knock out simpler features. If needed, we can run a small crowdfunding campaign to free up 1 or 2 developers to spend some concentrated time on this. Ideally we'll also be able to pull together a solid core team who can carry on the project from there.
The next step in that process though is to have a Google Hangout where we settle on those features and who will create the proposal. That will be a public hangout soon which anyone is welcome to watch and contribute to.
We've also created a Trello board to manage ongoing communication. Feel free to subscribe to and comment on the cards on there. That will be the central point of communication about this effort.
Additionally, feel free to drop by the Shop Gitter channel and share your thoughts or ask for advice if you decide to try out one of these modules.