Sylius Roadmap Update
Hello Sylius community!
Here it is - the long awaited status and roadmap update. I am really sorry for the delay, but keep reading to learn what has been happening with Sylius for the past few months and what is coming!
WebBundle and old UI are going away, completely new shop and admin interfaces, v1.0.0-alpha around the corner; some non-essential features removed, focus on stabilization and docs, v1.0.0-beta by the end of November, which is based on the current velocity and Scrum development process.
For those who have not been following Sylius from the very beginnings, here is a short explanation of where the project is coming from and how far we have gone. Sylius adventure started for me when I was 18. As you can imagine, I did not have the experience needed to run such an ambitious project smoothly from the day 1.
Sylius is a bit more than just a purely technical PHP library. In order to make it a good product you need a lot of eCommerce experience, work on the UI. You have to define a set of features desired by both developers and merchants, sell it commercially… It has really been an amazing challenge, that I am extremely happy to be facing for the last couple of years, but trust me - it can be tough!
Since the first days of the project, Sylius had no other funding than generous customers, who have supported the project by purchasing my services. Basing the Sylius roadmap only on voluntary work of the Open Source contributors was very difficult and I repeatedly set dates for the expected stable Sylius release, but to be perfectly honest with you - it was always wishful thinking.
Luckily, we have managed to build a community, which has been a tremendous help in the whole process. There are multiple companies that have supported Sylius by adopting it early and allowing their developers to contribute. We definitely want to highlight REISS and Hypebeast (HBX.com), who have helped shaping Sylius and constantly supported the project. That’s why we have so many great tools and ideas in Sylius! Still, with many people and brands requesting different features - it was really hard to focus on the right thing…
I always wanted to bring Sylius to its full potential and this has become finally possible thanks to co-founding Lakion two years ago with my friend, Michał. Of course, you need some time to spin up a company, especially if it is your first venture. That being said, we have managed to build a great team of 11 people in a single year - a team that is rocking with Symfony, Behat, phpspec and is crazily excited about eCommerce technology. What is more, we are constantly growing!
This allowed us to finally treat Sylius as a product and we have invested a lot of time, energy and money to focus on the development. During the last 12 Scrum Sprints (6 months) of our development we have managed to reduce a lot of the “product design” debt, that was created during the first years and would be a huge overhead after the stable release, but also we’re able to deliver the whole new UI for the admin panel and shop.
We also finally have the resources to work on the documentation, which have been one of the worst parts of Sylius, as a project. Except working on Sylius core itself, we now have one full time Sylius developer working on the docs.
Except the amazing team, we also got plenty of experience. Over the course of last 2 years - we have worked with businesses of various sizes - from super small retailers to enterprises with millions in revenue. This allowed us to learn what is the real target of Sylius 1.0 and what are we best at doing as a company.
The answer is - highly custom eCommerce applications and products that need to evolve constantly. Sylius is a framework that enables crazy developer productivity and it is meant for businesses with custom requirements or brands that want to constantly evolve and require a technology that supports this strategy. I like to say that Sylius grows with your business, because you can be a start-up company with rapid growth and thanks to our modular architecture and flexibility - Sylius can support you at the stage of MVP and also when developing your product with great speed without the need to sacrifice quality.
This was a bit long, but I wanted to be very open about our successes and mistakes. What is the current status of Sylius project?
During the last months, we have been migrating away from our legacy WebBundle, which used to provide a default web UI for both frontend and backend interfaces. Thanks to actively working with Sylius on commercial projects, we have learned that people use it in many different setups:
- As a full-stack platform for eCommerce
- As a set of standalone components, combined in their own, unique way
- As an eCommerce “plug-in” to existing Symfony applications
- As an eCommerce API for mobile and web (Angular, React) applications
- As core only, without default interfaces, building their own marketplace/multi-tenant shopping experience
Our previous architecture did not support these use-cases properly and we believed this is the future! That’s why our new setup is:
- CoreBundle, which is undergoing a lot of refactoring, but in general it has remained a similar concept to what we had before;
- AdminBundle, which is now mostly generated by our ResourceBundle (RAD format agnostic CRUDs) and brand new GridBundle (YAML configured grid views, filters, sorting, actions). This minimized the duplication between templates and pretty much allows you to create your own admin interfaces with a couple of templates and configuration;
- ShopBundle, which provides a standard B2C shop interface, but is also a lot simpler than the previous frontend and has a completely new, state-machine based, checkout process that gives us a better control over the business flows in Sylius.
- ApiBundle, that gives you a standard REST API to work with Sylius core.
All of this is decoupled, so you can use it in any combination. Read more about the division in the documentation. Sylius-Standard has also been refactored to support this new architecture.
Some of the changes deserve separate blog posts (and will get them), but I’d like to highlight most important points:
- Moving the entire business logic to more decoupled services, used in state-machine configurations - this means Sylius adapts to your eCommerce flow on every level thanks to configurable workflows;
- Moving to a brand new Behat setup, that allows us to finally write totally valid scenarios in business language and supports testing on Sylius-sized projects, which has been a challenge for the Behat community - we will be definitely blogging about our solutions! You can already check our rewritten features and new setup in our repository.
- Decoupling B2C shop interface to ShopBundle and separating the admin to AdminBundle, both based on NPM and Gulp for managing frontend deps;
We have been getting great results with this new architecture, while still supporting the old WebBundle in the repo. That’s been the case until v0.19.0, but we finally need to turn the switch. I am fully aware that this will be a hit to some of the early adopters and I really appreciate the patience! Templates will mostly be compatible and our new tools are much easier to use.
To summarize what will go away with the switch to the v1.0.0-alpha development branch (which happens with this blog post):
- SyliusWebBundle is removed from the main repository;
- SyliusSearchBundle is removed from the main repository; (out-of-the-box ElasticSearch support will be back for BETA, but it is super easy to add it thanks to the Symfony bundles)
- Some of the CMF functionality will go away, we are not a CMS and will only have basics, we would rather focus on integrating with other Symfony-based CMS projects;
Unfortunately, some of the bundles & features need to be removed from the core. Even with more resources, it is impossible to stabilize them on time and they do not really belong to Sylius core, at least not in version 1.0. We basically want to focus on the core functionality to make it stable and well documented, but also start gathering more feedback during the Beta stage. This means, that following bundles will be removed from the main repo and/or the kernel:
- FlowBundle (deprecated)
- ContactBundle (deleted completely, replaced with a simple form in Core)
- SequenceBundle (deprecated)
- MoneyBundle (migrated to a different organization)
- Originator component (deleted completely, replaced with a simpler mechanism)
- InstallerBundle (moved to Core)
I understand this is rather controversial and some people will be upset, but we really can’t support all of the features in the core and this is not what Sylius is about. The benefit of Sylius is not having as many features as Magento and other mainstream platforms, but being able to customize it rapidly and implement the features you need, tailored specifically to your business. Nevertheless we will have 1.x versions that will bring more to the platform.
I am also sure everyone prefers Sylius with less features, but finally stable and well documented. I have done and seen other people doing things, which are considered impossible right now and I am confident that Sylius will change the way eCommerce is developed. With that in mind, sometimes a strong turn is needed to get back on track and this is what we have been working on for the past months.
Upgrading from Sylius =our demo to show what we have achieved over the course of last months.
What is next?
Next is more hard work and new challenges every day! But we are prepared. As I have mentioned above, we will be releasing much more posts and documentation about changes and new features, so keep an eye on our blog!
I’d like to thank every single person that was ever involved with Sylius - you are amazing! Some of you may be upset about these BC breaks - I understand and take full responsibility. That being said, I strongly believe that we are on the right path to change the world of eCommerce and hit the mainstream hard! Will you join us?