Open Source PHP E-Commerce Platforms Compared
Just a few short years ago, options for Open Source PHP
ecommerce platforms were extremely limited, and often the only way to
put together an ecommerce store online was to have a bespoke system
built. Not any more, though - now there are plenty of options. We take a
look at the top five contenders to see what each has to offer.
Contents
- The Contenders
- Installation
- Theming
- Extensibility
- Development
- Support
- Hosting and Performance
- Management
- CMS
- Security
- Consumers
- Comparison Table
- Winners and Losers
- Honourable Mentions
- TL;DR
The Contenders
The first name down was the big dog in this particular park -
Magento.
In a relatively short space of time, it has achieved remarkable
success, and its recent acquisition by eBay indicates little intent to
slow down.
Second, showing great promise, is the wonderful
OpenCart.
OpenCart is known for being a speedy way to get an e-Commerce site
online and for having an easy-to-work-with codebase. Not as
full-featured or "entreprisey" as Magento, it is nevertheless an
excellent platform.
Usually mentioned in the same breath as OpenCart as a worthy alternative to Magento,
PrestaShop
is a capable platform using the Smarty templating engine. The most
common complaint? It's developerd primarily by a company in Paris, so
unless your French is up to speed you may find the documentation a touch
tricky.
The only entry in the list which isn't a specialist e-Commerce platform,
Drupal
is still an extremely popular choice, largely because of its large
community and vast array of extensions. It has strengths in areas where
the other contenders are lacking, primarily due to its primary function
being as a CMS rather than an e-Commerce system. The Commerce plugin (as
one of several options) adds e-Commerce functionality to the system.
And finally, bringing up the rear, is the oldest of the lot -
osCommerce.
Despite a history of poor security, difficult maintenance and spaghetti
code, it remains one of the most used platforms and has a huge
community behind it. Development has slowed recently, prompting rumours
that the project may be heading for the graveyard.
With the exception of Drupal, where an extension is required to add
basic e-Commerce functionality, this comparison will not include
functionality added through extensions - I am comparing the products out
of the box.
Installation
Magento was simple to download, with older versions
of the software available in tabs, although, system requirements were
hidden away on the downloads page. Installation instructions were
provided during the download process, and the installation guide was
excellent. Installation was slow, though, largely because of the size of
the software. It could have done with more explanatory text -
osCommerce did this well - and any cleanup was handled automatically,
which was excellent.
OpenCart has a reassuringly professional feel to its
installation procedure. Downloads were easy to find, including earlier
versions, although no installation guidance was provided when
downloading. Requirements checking was simple and clear, and your stage
in the process well indicated. It also lacked explanatory text and there
was no option to clean up automatically after itself and set sensible
permissions.
PrestaShop downloads were easy to find and grab,
though system requirements were rather better hidden, with a link near
the bottom of the download page. The download screen links to
installation guides on the main PrestaShop site, which are excellent and
include videos - but these are not linked to from the installation
procedure, which is a real shame. System requirements checking was
simple enough, with clear instruction on what to do to correct any
issues. Cleanup is not automated, but is enforced (good idea) - you
can't log in until you've renamed your administration folder and deleted
the install folder. Finally, each of the two installations run during
the writing of this article resulted in errors in either the admin area
or the shop itself.
Drupal downloads were easy enough to find, and
installation instructions and system requirements were both linked
obviously from the downloads page. Indications of where you are in the
installation process are simple, and requirements checking during the
process was good, with clear instructions on how to address any issues.
Unfortunately, it is the only of the systems to require you to manually
create a configuration file, and this seemed rather unnecessary. As with
most of the other platforms, there was little help text along the way.
Drupal did clean up after itself though, with the installer being
disabled after it has been run.
osCommerce was less smooth than the others to
download - it's not obvious where to go to download the software from
the homepage, although the downloads page is very simple. Requirements
were specified on the download page, but no installation instructions.
It was simple to install, with a guided process that confirmed
requirements were met, gave good feedback and included plenty of help
text. It might have been nice if it had given the option to run a
cleanup script once complete, to wipe the install directory and set
sensible permissions.
Theming
Magento has an excellent theming engine, with the
ability to inherit elements from one theme to another, making theme
variants easy and quick to produce. The sheer volume of folders and
nesting can be daunting to someone new to the platform. There are some
excellent themes to download as well, which can often provide a good
starting point. Unfortunately, Magento is also extremely heavy, loading
large amounts of CSS and JavaScript by default. Themes often end up
being extremely large, making ongoing management sometimes more painful
than with other systems.
OpenCart uses PHP files for its templates, which is
something I am a fan of (why introduce a new variable and control
syntax, processed by PHP, when it already has these things?) and as a
result the templates are simple to write and maintain. Themes are held
in folders, so many can be installed to a site at once. There are plenty
of themes available as well, both free and paid.
PrestaShop makes use of the well-known Smarty
templating engine, and can handle multiple templates being installed at
one time. The themes don't have the ability, like Magento, to inherit
elements from each other, but they are easy to build and simple to
maintain. There are plenty of themes available as well, both free and
paid.
Theming
Drupal is not considered terribly good fun.
Designers and front end coders working with it for the first time have a
distinctive haunted look, largely because the parts of each page can
come from so many different places. On the plus side, multiple templates
can exist side by side, and templates can include extra functionality
when needed. There are also some excellent templates available to
download, although most will require some work to make them fit the
specifics of your site, depending upon the modules you have installed.
The default
osCommerce theme is terribly outdated
and a major let down. As with the other platforms, though, there are
some stunning templates available. Unfortunately, there is no integrated
templating engine, and as a result many templates require changing of
core files for installation.
Extensibility
All of the contenders score well on extensibility, with both the
type, range and ease of building of extentions (a.k.a. addons) taken
into account.
Drupal and
Magento are
pretty even - Drupal has a much larger collection of extensions, largely
because they are quicker and cheaper to build, but Magento's are
generally of a higher quality.
The rest are all fairly evenly matched, with extensions numbering in
the thousands providing similar added functionality to all of the
platforms.
OpenCart has a slight edge over
PrestaShop and
osCommerce
when it comes to extensions development though, thanks to better
documentation than PrestaShop and better architecture than osCommerce.
The most commonly required extensions - for payment and shipping
configuration - are all present on all platforms for most of the large
providers.
Development
Most stores require at least some ongoing development, integrating
with new services and adding new features over time. So how do these
platforms compare when it comes to having some custom work done?
It is difficult to know how to score
Magento when it
comes to development. The system's architecture, inheritance setup, XML
config system and use of the MVC pattern all make it usually excellent
to work with. It provides plenty of API interfaces, reusable objects,
and has intelligent use of namespacing to reduce the risk of conflicts
between modules. The code is also clean and well documented throughout.
On the other hand, it can be slow to write for - it is a monster, with
hundreds of files in a nested structure that really takes some getting
used to. The observer pattern used frequently in Magento can make
debugging some problems deeply painful, as you need to find which of
dozens of observers are causing a headache. Overall, it is the most
technically advanced, and by some way, but that carries with it
something of an overhead, making development for Magento often more
expensive than comparable systems.
OpenCart is, for the most part, pretty simple to
develop for. It's generally faster than Magento, thanks to a simpler
structure and faster page times. It uses an MVC pattern, and has great
documentation. It does suffer from an unfortunate folder structure,
where a single simple custom module can have files in lots of different
parts of the directory tree, but once you are familiar with the layout
this is less of an issue. There is a lot of repetition in creating
OpenCart modules as well - Magento's easy Grid/Edit/Form setup is much
simpler and faster. Overriding core functionality is also a painful
experience, relying on third party modules that search and replace
within code, rather than hooks or class overrides. Despite these
shortcomings, generally OpenCart's simplicity makes developing modules
more of a pleasure than with some of the competition.
PrestaShop has a better module folder structure than
OpenCart, similar to Magento's way of doing things, with every module
in its own distinct folder. The development documentation has not been
great in the past, though does seem to be improving. PrestaShop also
provides a robust system for
overriding core functionality as well as a variety of
hooks and an
API.
Drupal uses a simple and straightforward module
system for development, meaning modules can often be added extremely
quickly, each within its own folder. If the recommended development
practices are followed, it's easy enough to avoid conflicts between
modules. Where Drupal can be trickier is in overriding core
functionality. Often the only way to do so is to copy a core module,
alter it, and make the same changes whenever updating in future (this is
not dissimilar to other platforms, of course). Drupal does separate
themes from modules well, but does not go quite as far as an MVC
pattern. Drupal uses a system of
hooks
to enable you to tap into or override normal functionality in your own
modules, however this becomes problematic when wanting to modify or
interact with third party modules, as these may not implement hooks in
the same way, if at all.
osCommerce is extremely poor when it comes to
development. Almost all development work involves modifying core files,
and those are largely procedural code. There is no universal URL handler
to tap into, no module system, no hooks. This does mean it is often
extremely quick to make small changes to the site. It also means those
changes can have far-reaching effects, upgrades are extremely painful,
and security issues are easy to introduce.
Support
Drupal is well in the lead here, with extensive and varied support communities. They have
forums, their own
Stack Exchange site (in addition to a healthy amount of activity on the main
Stack Overflow),
and each module has its own mini-support system complete with bug
tracking. All of which is lucky, because with Drupal you can spend a lot
of time looking for help.
Magento is just a little behind Drupal. There is an active community on the main
Stack Overflow site, and Magento have their own
forums - although a large number of posts there seem to go unanswered. Magento also offer paid support options.
OpenCart,
PrestaShop and
osCommerce all score roughly evenly here. All have their own active forums (
OpenCart,
PrestaShop,
osCommerce), and all have small communities on Stack Overflow (
OpenCart,
PrestaShop,
osCommerce). PrestaShop offer a variety of paid support options as well.
Hosting and Performance
With Open Source systems a couple of the potential major costs
usually associated with ecommece businesses are no longer an issue -
building a system is unnecessary, and no need to pay for a license.
However, there are still significant costs associated with hosting to be
considered. Performance is a significant issue too, with slow sites
converting customers at a lower rate than faster competitors.
Magento scores poorly here, requiring a beefier
server than the other contenders to serve a comparable level of traffic,
as well as needing PHP modules that are not always present on web
servers by default. Performance can be very poor without tweaking of
server configurations and addition of opcode caching modules. Even with
plenty of server-side shenanigans, pages are heavy and difficult to trim
to a healthy size. It redeems itself slightly with its ability to scale
to multiple servers easily, but, for smaller online shops, this is an
area where Magento has much room for improvement.
OpenCart and
PrestaShop are evenly
matched, with comparable load times out of the box and similar hosting
requirements. They are not as demanding or as expensive to host as
Magento, and both will work on the majority of PHP hosts.
Drupal will run on most PHP hosts, but will usually
be pushing the limits of standard virtual hosts. It runs well on VPSes
and up, but also suffers from slow load times. As with the other sites,
speed can be vastly improved with opcode caching and some of the
community modules.
osCommerce is not terribly fast when it comes to
page loads out of the box, though there are plenty of optimisations you
can perform to bring it up to spec. Where it does score well, however,
it ubiquity of hosting. It has been around since early version of PHP
and runs fine on a standard virtual server, so can be one of the
cheapest and easiest system to host.
Management
Management of a store, including product pricing, inventory and data,
categorisation, order statuses and so on is important to any e-Commerce
venture. A management system should be intuitive and quick enough that
customer service staff can use it without extensive training, and should
allow restriction of access to different parts of the system for
different users. Functionality like the ability to manage multiple
stores from a single interface, handle multiple languages, or customise
designs for specific pages or sections, while not universally required,
is becoming more and more important.
Magento scores well in most ways, although their
management area is not particularly intuitive (especially when it comes
to order statuses, invoicing and shipping). Access control is excellent,
and the system allows almost every aspect of products to be controlled
through their EAV model. Products can be of various types (attribute
sets and configurable products both work very well), special offers are
powerful (although no 3 for 2 support is still a serious omission), and
rule-based product relationships are very useful. Magento also offers
multi-website and multi-store functionality, although this can have a
significant negative effect on performance.
OpenCart is more intuitive than Magento, handles
multiple stores well, and has a basic but functional permissions
management system. Editing of products, categories and orders is simple
and quick. Especially nice is its support of multiple languages.
However, special offer support is weak, automated relating of products
is missing, and stock control for configurable products is limited to
one criteria (so if you sell tshirts, you can't specify stock for each
combination of colour and size you have available).
PrestaShop supports configurable products well and
has good granular permissions management. Unfortunately, it is not
particularly intuitive, and does not support multiple stores from a
single installation (although this feature is currently in testing, so
should be available soon). Unfortunately, like OpenCart, it also has
weak special offer management facilities and no support for automated
relating of products. I do like that management of an item, that on
other systems is spread over several pages, is often on one page in
PrestaShop - a small point, but much appreciated.
Drupal scores badly here, largely as a result of
e-Commerce being an addon, rather than native functionality. As a
result, categories, products and related products are traumatic to set
up. Access control and multiple store support are both good, but the
kinds of refinements expected of a modern e-Commerce platform are
lacking - most things are possible, but slow and usually in a way that
makes introduction of errors almost inevitable. Finally, and possibly
most seriously, it is badly let down by its counter-intuitive
administration area.
osCommerce is simple to use, though not intuitive.
Unfortunately, that is largely where the positives end - it cannot
support multiple stores, configurable products, related products or
users with different levels of permissions. Many of these features are
available by way of community modules, however. It does have basic
support for special offers, and a simple to manage system for
categories.
CMS
This is an area where
Drupal shines, and where
Magento,
OpenCart,
PrestaShop and
osCommerce
are well behind the curve. A modern CMS allows granular control of
access to edit content, versioning of documents, publishing dates,
commenting on posts and so on. At the minimum, an e-Commerce platform
should be able to offer basic blog functionality. Only Drupal is up to
the task here, being first and foremost a CMS.
Security
Only
osCommerce presents a serious concern out of
the box, with a terrible reputation for, and history of, insecurity.
Efforts to improve it are ongoing, but once a product has a reputation
for poor security it is tough to change it.
Drupal fares a bit better, although the reliance on
modules means that sometimes, even though the main platform itself might
be secure, exploitable weaknesses are introduced (this is true of all
of the platforms to some extent, but Drupal has greater reliance on
extensions if run as an e-Commerce platform). Generally security of the
Drupal platform has been good, and it's been well tested, running high
profile sites like
Whitehouse.gov without incident.
Magento,
OpenCart and
PrestaShop
are all fairly even here. Exploits of the core platforms are comparable
in number and severity. Magento offers an Enterprise version of their
software (for a fee) and this claims to be fully PCI compliant - if this
were to be brought to the Community edition as well, it would have an
advantage in future.
Consumers
Finally, how easy is each for a consumer to use, and how good is each
platform at bringing in customers and marketing specific products? This
is almost entirely dependant upon the theme chosen, the quality of
development and hosting, and a thousand other factors. However, out of
the box, ...
Magento is excellent for consumers, despite a few
recurring issues. Filterable categories are excellent, and Magento
handles complex products extremely well, making the shopping process
very straightforward. Integrations with third parties for payments are
also mature and well tested, meaning few surprises for shoppers.
Sometimes let down by bizarre behaviour (categories showing as empty and
the search returning no results being common issues), it is still
comfortably ahead of the competition. Search engine optimisation is
excellent, and the ability to run promotions from the CMS at various
points in the site is also very welcome.
OpenCart,
PrestaShop and
osCommerce
are very evenly matched here. All provide a friendly browsing
experience, and both suffer from the serious ommision of category
filters; however all also have an excellent shopping and checkout
processes. OpenCart and PrestaShop both include product comparison,
while of the three only OpenCart includes wishlist functionality.
OpenCart and PrestaShop have excellent SEO capabilities, and both
provide support for promotions on the site.
With a little patience,
Drupal is capable of
providing a simple and easy to use shopping experience. It lacks some of
the options and more advanced refinements of the dedicated e-Commerce
offerings, but with Drupal anything is possible - given enough time. It
also has good SEO support and the ability to run promotions through the
site.
Comparison Table
Winners and Losers
Magento, despite extremely rapid growth, easy
installation and excellent extensions, is let down by a lacklustre CMS,
expensive running and development costs, and a comparatively poor
(unless you are prepared to pay) support setup. Third party extensions
and community sites exist to cover most of these shortfalls though, and
the quality of code and the power available to extensions make this a
great choice for serious e-Commerce businesses.
If you're looking to keep your development costs down, both
OpenCart and
PrestaShop
are fine choices, though for me OpenCart seems to have the edge at the
moment. Both have a bit of a way to go to catch Magento, though,
especially when it comes to addons and sales features.
If you're after content bells and whistles, you're going to find it tough to talk yourself out of
Drupal. It isn't the easiest system to develop with, but there's not much out there that can compete with it on power.
osCommerce is, at the moment, just not competitive, and has not kept pace with the comparable alternatives. Best avoided, for now.
Honourable Mentions
Other Languages
You'll have noticed by now that the above are all PHP/MySQL-based
platforms. There are plenty of languages out there and there are open
source e-Commerce platforms available on almost all of them. If you're
more comfortable with another language than PHP ... then very sorry, but
you've been reading the wrong list.
MODX
Personally, my favourite CMS for content sites is MODX - it's easy to
use, simple to develop for, and has a great community. Unfortunately,
e-commerce support is weak, with most solutions available being third
party integrations (e.g., FoxyCart) rather than native e-commerce.
However, talk of new e-commerce options is rife, and I'm hopeful
something will come along to fill this gap soon.
Wordpress
Much like MODX, Wordpress does not have native e-commerce
functionality. However, again as with MODX, Wordpress has plenty of
plugins that can add a store to a blog, such as
WP e-Commerce.
There's still a long way to go until either Wordpress or MODX is
competitive when it comes to e-commerce, but the signs for both are
encouraging.
Zen Cart
It was a tough choice whether to pick Zen Cart or osCommerce for the
fifth contender in this rundown. When I revisit this later on, most
likely it will be Zen Cart that makes the cut. osCommerce I chose for
this first comparison because of its age and because of its prevalence -
it is still widely used, even if well behind more modern options.
TL;DR
Drupal if you need a decent CMS. Otherwise, in order: Magento, OpenCart, PrestaShop, osCommerce.
More : www.addedbytes.com/blog/open-source-php-e-commerce-platforms/