- Five First Impressions of the Sylius eCommerce System
- Symfony’s Service Container
- Symfony: Autowiring Services
- A Brief Look at Every Symfony Service Configuration
I recently took a few days to kick the tires of the Sylius Open Source eCommerce framework and came away impressed. Here’s five things that stood out and make this a platform worth paying attention to.
No “Not Invented Here” Syndrome
For decades the model of a successful PHP information system (“CRMs”, “Line of Business Software”, etc) included introducing the world to a new software framework. WordPress, Joomla, SugarCRM (now SuiteCRM), Magento, Drupal, etc. — all these systems have a custom programatic framework baked into their bones. Some of these systems may borrow code from more generic programming frameworks, but they have their own opinionated foundations. i.e. Magento has always used the Zend Framework, but it’s not a Zend Framework application.
The reasons for this could fill a book, but in three broad strokes this comes down to
- The tools these teams needed were not available
- New technology attracts developers to a platform
Sylius is different, and in 2018 that’s a good thing. Sylius is, down to its bones, an application and system built within the constraints and opinions of the Symfony Framework.
Why is this the right move in 2018? At the risk of being overly broad twice in one article
- The tools for developing web application are available now, with custom frameworks offering diminishing returns.
- Using an established platform like Symfony means you inherit a developer base and get to take advantage of Symfony’s infrastructure when on-boarding new developers to your platform.
- The more you tighten your grip, the more star systems will slip through your fingers.
While I do hope we haven’t seen the end of innovation in PHP Frameworks, a new company choosing to use established tools shows a sign of maturity and pragmatism that’s not always on display in software and other “Big Tech” companies.
Test Driven Development, not Tests as Marketing
One of the first ways to understand any modern software project is to jump into their tests, and Sylius doesn’t disappoint. There are PHPUnit tests, Behat tests (including selenium based UI testing), phpspec specifications, and static analysis via PHPStan.
In addition to checking all the boxes, it looks like Sylius actually uses test and behavior driven development. i.e. their test suites grew organically out of the feature and bug fix work and wasn’t just a deliverable built after the fact by developers uninterested in actually using the platform.
These are the sort of tests that can both provide developers with the confidence their changes haven’t broken the system in some fundamental way, but also give developers a clear path towards how to produce high quality code from day one.
All that said, the Sylius travis based testing harness is a bit over-baked for my tastes, but we’ll talk about that momentarily.
NPM/yarn First Frontend Workflows
The Sylius “download and get started page” (linked prominently on the Sylius home page) includes the following instructions for getting started.
$ composer create-project sylius/sylius $ cd sylius $ php bin/console sylius:install $ yarn install $ yarn gulp $ php bin/console server:start $ open http://127.0.0.1:8000
You’ll notice that right after the PHP bits are installed via composer, there’s two steps that use the
yarn frontend to the NPM package management repository to install all the
node_modules that makeup Sylius’s frontend build system.
Solid Open Source Community Fundamentals
Just as important as the technology stack, Sylius appears to have some solid open source community fundamentals in place.
Remember earlier when I said the test harness was a little over-baked for my taste? When I first grabbed Sylius it was a bit of a struggle to get their tests up an running locally.
Fortunately, because Sylius is an open source platform (and uses GitHub), I was able to dig into their
.travis.yml file, and take a look at a few test runs to see what was going on.
When what I found there didn’t add up, I was able to open a few issues and jump on to their Slack (one of many options) for help. In short order I quickly heard from
- A wildly enthusiastic community member who was able to rattle off four of five things that might be the problem.
A more soberly enthusiastic community member who was able to ask me the right questions that helped me better understand my problem.
A member of the Sylius core team, who was also able to ask me the right questions AND provide a sense of project norms and expectations.
To be clear, no one jumped in and magically solved by problem — that’s not (despite current thinking in certain big corps and agencies) what open source is about. But at no time did anyone ignore my problem, or try gaslighting me into it not being a problem, or give me the boilerplate “we have reviewed your issue and will consider it for a future release — see CORP-853876 in JIRA for more information”.
Sylius has all the right ingredients for an open source community to flourish, assuming the harsh realities of eCommerce don’t crush it before things bloom.
Innovation from the Heart of Eastern Europe
“Offshoring” is a — lets call it tricky — topic, so all I’ll say on this point is it’s fantastic to see legitimate innovation and new platforms come out of an area of the world that’s too-often seen as a source of cheap and disposable programmer labour.
I’m semi-retired from the “build me a bespoke e-commerce system that can be made to do anything” business — but if I was starting out today I’d have a hard time coming up with a reason not to use Sylius. I’m looking forward to seeing what comes out of this project over the coming years.