The real problem is that there is nothing better out there.
Magento is the Drupal of the eCommerce world - relatively prominent, but almost universally reviled by developers and not all that easy to use for users. It's the worst of many worlds.
It's too bad, really. Five years ago I was really excited for Magento, but within months I realized that it would almost universally be cheaper (from a development standpoint) to write an eCommerce project from scratch than use Magento - it takes you 95% of the way there in a lot of ways, but that last 5% is critical.
This a thousand times.
I've used both and as a developer it was incredibly painful to customize either for any specific feature or function. The first time I upgraded Magento, it completely broke the client's site. A nice Sunday afternoon was spent hacking together plugins to fix what the update broke.
Both are horrible to work with and I shudder anytime someone suggests it to me for their ecommerce platform. You'd be better just hiring a .Net developer and have them build you something from scratch.
I think the bigger issue with Magento 2.0 is the missed opportunity to use the backward compatibility breakage to clean out some of the horrible bits of home-grown code in Magento and replace them with 3rd party libraries.
If anything, I think Magento should actually drop features from core and become a solid platform for others to build upon.
EDIT: Speeling :)
A rewrite is sorely needed, and will help developers who have to work with and on Magento to save their bosses time and money.
The cost to maintain it, adding custom extensions and keep it up and running as a whole is way, way more than using off the shelf SaaS ecommerce solution.
Everyone on HN gloats about Shopify. Shopify is a plain ecommerce platform with a simple to use backend that also implements these marketing functions through plugins/extensions/modules. The difference is that with Shopify your functional needs can't always be answered as they evolve.
Other self-hosted ecommerce platforms are still playing catch up with Magento. It's not a perfect solution, but it's still the best one out there.
The core platform should be one thing, and the features should all be 100% modular. If you want the all-singing all-dancing version then you could just have a config tool on the website to generate your specific bundle of core + features. Decoupling the features from the core allows the feature set so shift over time to track merchant expectations while still maintaining a solid platform to build upon.
Did I get close? :)
I honestly think Magento should basically drop almost every core 'feature' and just become a rock-solid platform to build upon.
"This is how developers keep themselves employed: by regularly clusterfucking your code."
Ummm, no. This is what happens when feature requirements are poorly communicated over a long period of time, combined with implementing every half baked or ill advised feature asked for by the marketing team. You know, stuff like "automated SEO using artificial intelligence".
I have worked on Magento, and agree that it is painful and convoluted, but it's a bit hard to believe that every single dev that has contributed to it was either stupid and/or malicious. Hopefully, moving to a community driven approach on 2.0 will actually clean up some of the technical debt and make the product more reliable, although it's more likely that it's just going to result in future feature adds coming from more numerous stakeholders with conflicting visions.
Hopefully the Magento management can manage all that input and stay focused. What they absolutely need to ignore is misguided and obviously clueless (or even malicious) feedback like this article.
> automated SEO using artificial intelligence;
A very fancy way of putting it, but something very common sense from a business perspective.
Very unlike Wordpress this is hard. So you either shell out cash to outside developers (a healthy enough marketplace exists) or pay the price in learning how to program it yourself.
Enough decent materials on how to do this exist but it is definitely not aimed at weekend programmers.
To be fair, some of the features mentioned, for example abandoned cart reports, do exist in Magento EE. While some features like consumer profiling don't really belong to an eCommerce platform. Instead, those belong to CRM (consumer relationship management) tools. One of the reasons CRM is an independent system is a lot of shops have offline presence also, and lumping CRM features into eCommerce platform unnecessarily complicates things. There are extensions to sync between Magento and a few CRMs.
My wish list for Magento: built-in A/B testing, and multiple campaign management.
Merchants don't need security, performance, and a more easily developable system for the developers they hire to build on?
Also the EAV database was horrible to deal with.
But I know better than to think one average dev like me can do that so instead I just vow to never work on a e-commerce site again.
FWIW Magento or Prestashop can really make you a very decent e-commerce site quickly and cheaply. Hard to really complain when they offer free versions.
But still, Magento can sometimes calculate VAT wrong (among other things) ! You would thought being an e-commerce platform it would at least not screw that.
EDIT: here it is. No infringement intended.
Magento has been in decline since Varien sold to eBay. Magento Community Edition is dead. Magento Go is a failure surpassed by Shopify. Magento CE releases have dried up.
So now what?
Magento 2.0 sounds promising. However, Magento 2.0 is lead by developers-only. No marketeers are involved to communicate merchant needs. I have tested Magento 2.0 dev60 and it is nothing more than a technical rewrite. Magento 2 offers the same feature set as Magento 1. You'll just need to pay a developer to migrate all your 1.x extensions to 2.x, since there is no upgrade path.
But the community cost of everyone moving to Magento 2.0 ranges in the $USD 1 billion. This is how developers keep themselves employed: by regularly clusterfucking your code. A developer focus on Magento 2.0 gives us jQuery, OWASP security policies, faster product imports, better performance and less CSS. But it does nothing to advance merchant's needs. Magento is missing a most important suite of marketing and sales automation tools.
Here is some features online merchants really dream about:
built-in A/B testing; integrated social media ROI tracking (e.g. SumAll statistics); sales automation tools: abandoned cart reports, automated follow-up emails, automated payment reminders; consumer behavior profiling to live-target marketing efforts based on behavior; customer persona segmentation such as "single men / mothers with children / affluent customers", to increase marketing effectiveness; easy-to-use multi-site and multilingual installations (Magento is cumbersome); helpdesk ticketing system, built-in live chat; built-in onestepcheckout; automated SEO using artificial intelligence; scheduled product imports to update product prices, stock, images attributes - including the ability to create new products and disable out-of-stock products; automatic product categorization based on product description content; social ecommerce ("share this product" with product landing pages for Facebook/Twitter); clever discounts such as bundled product discounts: "buy A+B together, get 5% discount on B"; built-in product XML/CSV exports for ciao, kelkoo, thefind, google and so forth; built-in newsletter or at the very least built-in Mailchimp support (with automatic setup); None of the above features are going to be implemented in Magento 2.0. What is the incentive to move to Magento 2.0? There is none. Do merchants really need the latest gimmicky "html5" technology? Mercahnts need a suite of sales and marketing tools that help drive their business.
So again, like before Magento, there is a huge market potential for ecommerce software that offers the right marketing tools. Magento is dead. But who will bridge the gap? Shopfiy? Wordpress Woocommerce? Drupal Commerce? Each of these new projects is gaining on Magento's lead. My prediction is that Magento 1.x adoption has peaked and Magento 2.x adoption will never happen. Instead, The People will switch to far more advanced alternatives. Advanced in terms of marketing that is, not jQuery.
I agree 100% . The question is on what plateform and language should it be written (to be successfull) ?
We've been making eCommerce solutions (not just sites - CRM, warehouse management, analytics, lots and lots of marketing tools) for nearly a decade now. We started out with OsC, played with Magento, and saw, 8 years ago, that the strategy of these platforms was, well, broken.
How? Well. Let's consider the typical scenario. Joe sells kites. Joe wants a website that helps him sell kites. Magento looks like it does what he wants, as it's got a cart and all that stuff. Joe finds a contractor who looks good, and has decent references from his current clients. They start work. Part way through the build, Joe realises that he wants to sell custom-printed kites, and to do this, he needs to take a deposit, and then charge the customer the balance. "Uh-oh", thinks the developer, "I'm on fixed costs, and there's no plugin for that. The architecture is a nightmare... screw it, I'll just chuck it in the core and worry about it later". Joe is happy, as his site does what he needs it to, and the developer is happy because he got paid.
Six months later, Joe reads about a security update, and wants to apply it. His developer sucks his teeth, and applies it, manually re-patching in his previous hack, because making a plugin is hard, m'kay (never mind that in many scenarios, you can't make a plugin to make whatever you need to happen, happen). Joe wants another addition, and another hack is born.
This cycle continues for a while, until the developer fears looking at Joe's code-base, and Joe is pissed off that everything takes a long time, and that upgrades can't be done/take forever, because the developer is having to re-implement, and re-implement, and re-implement, rather than move forwards.
The other side of this is that a magento install will run a magento site - not ten, not two on different databases, and no mix-and-match of either, meaning that you end up with a whole bunch of code-bases, many of which differ, even if you're a shop exclusively running magento for your N clients.
It's not clear who Magento is built for. It's not for developers, as it's painful to work with... it's not for the end user, as the front-end experience is so-so at best, and again, hard to customise without screwing up upgradability... and it's definitely not for the merchant, as it's featureless, barren, slow, and ultimately expensive to run.
So what we did was build an eCommerce platform where everything is extensible and overridable. Core method doesn't quite do what you want? Not a problem, write a client-specific one, just keep your interfaces consistent, and you won't break maintainability. You can upgrade the core with impunity. You can hang as many sites as you can grind out off a single install. We deploy continuously.
As a result, we've been able to focus on building features marketeers and merchandisers want, by being able to build something once, respond quickly to market and client demands, and roll it out widely with minimal effort - rather than being stuck on the terminal treadmill of broken upgrade paths.
There is a learning curve, made steep by the esoteric MVC approach and initial lack of documentation. However, there is now a wealth of material available for learning and reference. Magento is opinionated as a framework and in its domain modeling. You mention your homegrown application; how easy is it for developers to spin up on your application, and how well would it satisfy & improve things as a drop-in app replacement for the hundreds of thousands of Magento instances out there?
"...it's not for the end user, as the front-end experience is so-so at best, and again, hard to customise without screwing up upgradability..."
Frontend experience - I'd say mostly okay, but I'll not fight you on "so-so at best". However for customizations, upgradability and obedience to DRY are the underpinning of the theming architecture. Again, lack of documentation was an issue at first (I remember duplicating the default themes for customization purposes when I first started out), but there is ample documentation now. I am most disappointed with the power given to templates, and I think this is the only legitimate gripe.
"The other side of this is that a magento install will run a magento site - not ten, not two on different databases, and no mix-and-match of either, meaning that you end up with a whole bunch of code-bases, many of which differ, even if you're a shop exclusively running magento for your N clients."
If this is an issue, you're doing it wrong. I would like to know more about how Magento cannot be a library for you to manage in VCS for your clients. There are SaaS offerings based on Magento, but at the point of building a SaaS you are beyond the edge of the intent/target of the problems which Magento is built to solve.
"...it's definitely not for the merchant, as it's featureless, barren..."
/me looks at all the routes in the admin and at the Connect marketplace...
"[it's] slow, and ultimately expensive to run"
Would like to know your numbers for this. Scalability is a concern, as Magento vertical and horizontal scaling are both costly.