Why we Forked Spree and Started Solidus

Why did you fork Spree? It's a question I hear often. Usually people are just curious. Others see the fork as a caustic action to the Spree community and want a clear justification. Some, usually lacking a heavy tech background, want to know what "forking" means. Whatever the reason, I'm always happy to have the discussion.

We’ve been very clear about the technical goals of Solidus, but that alone isn’t sufficient to understand why we forked Spree.

It’s impossible to start this post without a big disclaimer: We loved the Spree project. We have the utmost respect and adoration for the people behind it. Ecommerce is tremendously hard. Sean Schofield and everyone at Spree Commerce made a significant contribution to the open source ecosystem in building Spree as an open source platform.

Most of what they did, they did alone. Serious contributions by the community were few and far between, and the amount of money and personal energy they poured into that project is immeasurable.

Stembolt wouldn’t be the company it is today without their efforts.

Forking Considered Harmful?

The act of forking is to take a single project and split it into two, each going its own direction. It is by definition very divisive for the community.

Forking a project is a difficult decision that nobody takes lightly. To anyone unfamiliar with the ins and outs of forking a project, here are some of the drawbacks:

  • Duplication of development effort and project infrastructure.
  • Reduced compatibility in the ecosystem.
  • Increased confusion to outsiders.

It takes time and dedication to set up and run the fork, effort that could have gone to advancing the original platform. Forks take focus away from the codebase and put it on the politics of the ecosystem.

Everyone in the ecosystem has to decide which of the forks to use, or choose a competing platform that doesn't have the same issue.

The Origins of Spree

To explain why we forked Spree we need to understand its history. Spree the platform began in 2008 when it was spun out of the RailsCart project as sponsored by Endpoint. Development continued through “Schofield Tech Works” until Sean started Railsdog. Railsdog was a consultancy not unlike Stembolt. It helped companies navigate the quagmire of ecommerce by customizing the open source platform.

Eventually Sean took funding to start a new company and sold Railsdog. This new company, named Spree Commerce after the open source project, would allow the team to donate more time and energy to the growing Spree platform. The goal was to shift from Railsdog’s agency model to monetizing the entire ecosystem.

Over the next 4 years Spree Commerce tried to bring a number of products to market: Spreeworks, the Spree Hub, the Spree Integrator, Spree Professional, and eventually settling on Wombat. To continue development of these projects Spree Commerce raised another 5 million in capital.

By 2015, Wombat was no longer “Spree specific” and instead integrated “anything to anything”. Spree Commerce’s future was no longer tied to the success of the Spree platform. The majority of developers that worked on Spree the platform had left the company, and Spree Commerce had become a Wombat company. To grow and thrive, Spree Commerce needed to grow and sell Wombat, not Spree.

Our History with the Platform

Our company has been working on the Spree platform since 2012. As Rails developers, we chose Spree to execute a small ecommerce project and found it a great foundation to build from.

After our first success we wanted to use Spree for larger, more complex projects. At Stembolt we’re all open source nerds at heart and wanted to be a part of a community we enjoy collaborating with. Before we could adopt Spree long-term, we decided we needed to try submitting a non-trivial feature back to core.

We identified its lack of multi-currency support as a big blocker to adopt it for our multinational clients. In late 2012 we worked with Ryan Bigg to add multi-currency support. It was a huge success. We were able to collaborate with the core team and community to merge a very complex and structurally far-reaching feature. It was a great experience for us. We were hooked. We decided to focus our consultancy on ecommerce and use Spree as our platform.

We started using Spree to develop stores from scratch. Companies that were already running Spree contacted us to offset or augment their internal development. We quickly found ourselves swamped with Spree to the point it took over all development in our company. Using Spree, we built powerful and scalable systems for managing entire ecommerce infrastructures. We weathered Black Fridays and worked with stores on all the constantly shifting challenges of fast growing ecommerce.

While we were using Spree to meet our business goals we were also active members of the community. We contributed back in the form of PR’s. We offered feedback on code and architecture. We hung out in IRC and helped people adopt and use the platform. Unfortunately, as we became more dependent on Spree's core, Spree Commerce was moving away. With the rise of Wombat it became increasingly apparent that the focus of Spree Commerce as a company was shifting away from the Spree platform.

The Decision to Fork

In 2014 Ryan Bigg had left the project and he was not replaced with a new full time maintainer. The code quality suffered to the point where we felt we could no longer rely on the platform. The community fractured around specific versions and were unable to work together to move the platform forward.

After Ryan left we tasked ourselves with watching and attempting to improve the quality of the PR's being sent to the Spree repository. We took a rotating schedule in the company, each person responsible for a day of the week. We gave up after two months of being unable to affect any meaningful improvements to the code.

Spree Commerce the company was tied to Wombat, not the Spree platform. We felt that the Spree platform was lacking the leadership, effort, and energy it needed to grow.

Finally, in early 2015, Spree Commerce was acquired by First Data. They were tasked with building a competing platform, Clover, which originally started life as the Payeezy webstore.

We were unable to fix these issues with Spree, but were dependent on the platform. We decided the only successful path forward for ourselves and the clients that depended on us was to fork. By February 2015 we picked 2.4 as our forking point and chose the name Solidus; named after a golden coin of the roman empire.

15 Months Later

With over a year of development behind us, I'm very confident that Stembolt made the right decision. Relying on First Data to manage and lead the Spree project was too risky for us or our clients. Spree (and now Solidus) is the crux of our business and its health is paramount to the success of our company, our clients, our partners and our employees.

We're thrilled with the progress in the codebase since our fork, and are amazed at the wonderful people that continue to join and contribute to the community. The speaker and attendee roster of SolidusConf has some of the most impressive stores and developers in ecommerce today. The Solidus community has exceeded our wildest expectations and we're looking forward to where the next 15 months takes us.