- Bypassing a Slow Composer Repository
- Slow Composer Followup
- Getting Started with PHP Composer and Magento
- PHP: The Right Way; A Review
- PSR and Code Style Guidelines
- Sellvana: Developer’s Alpha Review
- PHP Primer: Type Hints
- PHP Primer: Namespaces
- PHP Primer: Interfaces
- Design Patterns, PHP, and Magento
- PHP-FPM and File Permissions
- Why did the Elephant join the Guild?
Two weeks ago, a new online retail company announced itself to the world. Sellvana promises that
Soon you will enjoy Ecommerce
If you’re not intertwined in the ecommerce development world, you might not think this is a big deal — another cloud provider? Great.
Except Sellvana isn’t another cloud provider. While their 6 person team has been tight lipped about their ultimate plans, the company is bucking recent trends by releasing Sellvana under an open source license (specifically, the OSL) and promising community development that’s collaborative, rather than the command and control style open source popular with eBay’s Magento project.
There’s a huge number of factors that influence the level of success for a new software platform — this review is going to stay focussed on the programming innovations the Sellvana platform offers. Make no mistake though — Sellvana’s reported to have five million dollars invested, and investors don’t invest if business and marketing interests aren’t aligned.
Magento Revisited
Details on Sellvana’s six person team are scarce, with one exception — its founder and lead software architect, Boris Gurvich. If you’ve ever worked with Magento, you may know Boris as the mind behind the extension company Unirgy. Also, and most interestingly to us, Boris was an early member of Magento’s core team, working at the LA startup from 2005 — 2008.
I say most interestingly because Sellvana, based on Gurvich’s Fulleron framework, can be seen as a second go at many of the concepts on display in early Magento code — concepts that the Magento core team moved away from as Magento Inc. groped with startup growth. As a Magento developer you often wonder if anyone at Magento Inc./eBay is listening to legitimate criticisms of the platform. While that’s still an open question, it’s clear that Boris has been listening, and many of the tradeoffs Magento made in favor of time to market have been addressed in Sellvana’s codebase.
Speed
The framework is fast. Fulleron, and its predecessor/library component buckyball have been under development since at least March of 2011, and careful reading of the Unigry twitter feed makes it clear performance is a priority.
Premature optimization may be the root of all evil, but that quote is decades old and speaking primarily about algorithm development. There are certain performance sacrifices that, when made early on, can never be recovered from in system software. Worked around? Solved with Hardware? Sure, but they’re always there, and always a thorn in the system’s side.
Sellvana is fast out of the box, and small merchants shouldn’t have any problems running it on standard generic PHP hosting providers.
Module Redux
A Magento developer will feel at home in Sellvana — it’s a similarly shaped house, just streamlined and improved. There’s modules for code/project separation, all joined by a global configuration. The configuration isn’t limited to XML files though — internally it’s represented as PHP arrays for performance, and the default data entry format is YAML, with support for other popular configuration formats like JSON. The configuration is much less verbose and abstract than Magento’s, which means the learning curve should be much shorter for new developers.
A concept similar to Magento’s code pools is present as well — however, instead of core
, community
, and local
, we have dlc
, and local
. The core code is kept out of a code pool, which should help discourage the infamous Magento core hacks. The code pool’s naming also makes it clear what each one is for — dlc
stands for downloadable content, and it’s reasonable to assume this is the folder that will hold extensions downloaded from a marketplace or package management system.
The lack of a Magento app store, while an understandable tactical business decision, has always been a sore spot among extension developers. While I have no inside knowledge of such things, common sense points towards this being a real possibility with Sellvana.
Other Improved Features from Magento
Sellvana also includes other concepts familiar to Magento developers, such as areas, MVC routing, events and observers, template based layouts, a “method rewrite” system, etc. While I haven’t had the time to fully delve into each one, from what I’ve seen their intent is much clearer in Sellvana, and much more thought out. By keeping the project relatively quiet for so long, the Sellvana core team has given themselves the chance to iron out details before presenting their system to the world.
There’s lots of good stuff here, and if you’re a PHP developer you owe it to yourself to get in on the alpha and take a look. Even if Sellvana isn’t right for you right now, it’s a fantastic example of a new PHP framework. Magento, Zend, and even Symfony, while great projects, all feel like a bunch of java and C# developers got together and built something with PHP. Sellvana, and its Fulleron framework, feel more like a native, modern, PHP system: Enough structure to contain and corral PHP, without sacrificing performance up front.
Whither PSR?
One criticism the Sellvana core development team will need to face is “Why no PSR”, “Why no Composer components”, or, put another way, “Why build something completely from scratch”.
I was a little disappointed by this myself — the past year has seen a community of PHP practitioners start to self organize online around the efforts of PHP-FIG. Having a new ecommerce system that fit into this ecosystem out of the gate would have been fantastic.
However, it’s easy to see the tradeoffs the Sellvana core team has made in going their own way for now. Working with a component framework means accepting the performance tradeoffs all your component developers have made. You’re as fast as your slowest composer package. If you look at projects like OroCRM, you can easily see how the component approach combined with the crucible of a startup can and will lead to long term performance challenges for the platform. That’s not the case with Sellvana.
Also, the dlc
folder makes me think downloadable content is an important part of Sellvana’s long term plans. Having full control over the delivery of commercial modules to your system seems hugely important. If you consider the ongoing problems Magento Connect had with PEAR early on, it’s easy to see why Sellvana is choosing to go their own way on package management.
Finally, Sellvana’s a young project, and while they’re not on the PSR/Composer path right now, with enough community feedback and support, I can easily see this changing over the years; this leads in nicely to my final thoughts.
“Real” Open Source
(As custom dictates: I am not a lawyer, and I am certainly not YOUR lawyer. Talk to a lawyer before making business or legal decisions about open or closed source software)
The term “open source” comes with a lot of baggage, but for me it’s always meant the license the code is released under: An open source license is one that doesn’t place direct financial burdens on developers who want to use the code. Whether that’s “do anything you like” licenses like MIT and BSD, or the “do anything you like, but share the code with the people you share your project with” like GNU2, these open source licenses have been vital to the hardware and software industry we have today.
That’s open source licenses, but in the past five to ten years the term “open source development” has come to mean something else. The license is taken for granted — what’s important to developers is a sense of involvement in the creation of the platform they’re working on. Making gems for ruby, contributing back to the Django source, being involved in discussions about the future direction of the platform, a DVCS to issue pull requests against, etc. These are all things an increasing number of developers want, and there’s no open source ecommerce system that gives this to them.
That’s the implicit promise in Sellvana’s messaging right now. Not only will this system be distributed via open means, but it will be developed with open means. Two weeks is too short a time to know how true this promise will be, but so far I’ve found the development team to be responsive to questions on their QA forum, and actively responding to bugs opened via the private alpha Bitbucket bug tracker.
Wrap Up
So should we all pack up and stop Magento development? Hardly. Magento has established itself as the premier solution for enterprise ecommerce systems. The slow adoption of technology in the ecommerce sector means Magento will remain a growing, and viable platform for years to come.
Magento is not, however, the right tool for every job. There are businesses and entrepreneurs, both big and small, who aren’t enterprises but need more control, and more flexibility than the current cloud platforms provide. Thinking speculatively, this will only become more true over time as these cloud platforms both start to target the enterprise market and look for ways to increase revenues on the backs on their current subscriber base.
Business, despite what you read in the disruption trades, isn’t a zero sum game. There’s room for multiple platforms, and right now there’s a huge gap that a completed Sellvana will fit into nicely. As PHP developers, we’ll always have favored frameworks and favored approaches to common problems, but it’s important we have more than one approach. I’m looking forward to both the day Sellvana is another important tool in my virtual belt, and to my day-to-day contributing to the nascent Sellvana open source community.