Design Philosophy
Motivation
The goal of the project is to build a complete open source commerce solution for Ruby on Rails. The Rails commerce space is immature and is lacking serious solutions for developers looking for answers to their complex business needs. Rails is especially problematic because it is a relatively new technology and suffers from “small project mentality.” Most open source projects in Rails are maintained by a single individual and tend to be limited in scope. Spree seeks to create a large and healthy open source community of the type that developers of other languages are used to participating in.
The founder of Spree was motivated to start the project after failing to find an existing community in the Rails space dedicated to this vision. In addition, he was motivated by unsuccessful efforts to use other open source solutions in other programming languages, including (but not limited to) the infamous OS Commerce. These solutions seemed to be unsatisfactory when presented with even the simplest of use cases.
Opinionated Commerce
David Heinemeier Hansson (the creator of Rails) is well known for saying that Rails is “opinionated software.” Spree continues this fine tradition of adopting a few strong (possibly controversial) opinions which drive its development.
No Solution Will Satisfy Everyone
No solution can possibly solve everyone’s needs perfectly. There are simply too many ways that people do business for us to model them all specifically. Rather then come up short (like so many projects before it), Spree’s approach is to simply accept this and not even try. Instead Spree tries to focus on solving the 90% of the problem that most commerce projects face and anticipate that the other 10% will need to be addressed by the end developer familiar with the client’s exact business requirements.
Online Commerce is not for “Noobs”
Rails developers are the target audience for this application – not business owers. No serious company would ever try to run an online store by just paying some fool on Craig’s List to install OSCommerce for them. Serious businesses have complicated needs that require paying one or more software professionals to solve them. Spree seeks to be the platform that developers use as the foundation for their project rather than having to start from scratch or settle for less with other software.
Developers Need Complete Control of the Presentation
Most business owners will not be satisfied with the generic templates offered by other platforms. Why should they? They want their website to look just like the other professional sites they see on the web. Even if you can find a nice looking template to work with, invariably the client will want to see their inventory in some crazy way not previously imagined by the software’s creators. Spree comes with default views but allows you to completely customize these views using the actual Rails code that you are used to dealing with. No special templating language is necessary, just rely on the power of the Extensions system.
Stay Focused
This is perhaps the most important principle behind the design philosophy. We need to stay focused on core functionality (the 90% that everybody needs.) For this reason it is not appropriate for Spree to attempt to become a Content Management System (CMS). There are already some pretty good Rails based CMS projects out there such as Radiant. CMS is definitely important but it is a big enough task to warrant its own project. Spree will definitely be looking at ways to integrate with existing CMS platforms, we just won’t be attempting to reinvent the CMS concept.