There is absolutely no difference in Magento Community and Enterprise extensions / modules

Wed, 02/01/2012 - 13:45

Submitted by markoshust Wed, 02/01/2012 - 13:45
Tags: 

Let me start off my saying that I am a Magento Enterprise Developer, and that I work with both Magento Community and Enterprise editions every day. I also sell customized Magento Extensions through this website.

Do you notice something about my modules? As in, the option to purchase a Community or Enterprise edition? There isn't one. Why, you may ask? Because there is a zero difference in core functionality between a Community "version" and an Enterprise "version" of an extension / module. Yes, I said it.
No difference.

This is because when creating an extension, you are overriding the Magento core code that exists in app/code/core/Mage (or app/design/frontend & skin/frontend for theming updates). Do you know something about the app/code/core/Mage folder? Everything in that folder is exactly the same regardless of Magento version. This means that both Community and Enterprise versions have the exact same files in that folder.

When it comes to theming, both editions also share the same folders and files in app/code/design/base and skin/frontend/base. Now, the Enterprise edition has a much nicer theme installed (in app/code/design/enterprise and skin/frontend/enterprise), while Community edition has the more mundane "classic" Magento look you are used to (in app/code/design/default and skin/frontend/default). Both versions share the same 'base' package, and all Magento extensions, if they are designed properly, should store theming files in the 'base' package, as that is the final fallback layer of Magento theming and provides the greatest ability for you to customize, override and extend any theming file.

So, why do extension developers charge more for "Enterprise-only" versions, and tell you that they only work on Enterprise? One reason:

  • They know Enterprise customers have a larger budget, so they can pad pricing to these clients

Now, while I continue to rant on the absolute similarity of developing extensions for these two versions, I do want to make note that extension developers offer an additional reason to make an Enterprise "version" of the extension: support. They say that support of the Enterprise version is higher than that of a Community "version". Um, read this article again, thoroughly; both versions share the same code-base, and the level of support is therefore, you guessed it: exactly the same.

All of my ranting aside, it is definitely viable for an extension developer to in fact offer an "Enterprise-only" extension. For it to be an actual "Enterprise-only" extension, it needs to override app/code/core/Enterprise namespaced files, possibly in addition to the Mage files. I've never come across an extension that actually does this, and while it's possible for extensions like these to exist, they would be few and far between. My best guestimation of the actual figure of extensions such as these would likely total less than 1% of all Magento extensions that exist in the entire communtiy, if it is even possible with Magento's licensing model to develop extensions such as these.

The reason for this article was not to tick-off any of the Magento extension developers out there (a lot of them make absolutely great extensions!), but to inform the public how Magento extensions work, and to help stop the spread of Magento misinformation.

So, it is very valid for you to ask the extension developer if it contains overrides of Enterprise-only features.

And if it doesn't? Go ahead and buy that Community "version", and save the padded fees at no risk.

Comments

Mark,
very good points, and generally I agree that EE and CE share most of the code base, and developing modules for one or the other is almost the same.

One reason I missed in your post for enterprise modules to be more expensive is that a properly tested enterprise module needs to be tested with all the Enterprise_* modules functionality, e.g. the giftcard product type, full page cache, Solr search indexing, reward points, the gift registry, and more.
Also, the enterprise theme replaces some of the default theme blocks, e.g. the enterprise search module and the layered navigation. So, all in all, and depending on your module, I'd say it generally is a fair bit of additional work to be able to say a module is EE ready. At least thats my experience.
Also, a developer who is not only familiar with the CE modules but also the EE modules will have invested more learning time. As a former freelancer I had to learn to add the time I invested in learning things to my hourly wage.

Just my .02$
Vinai

Hi Vinai,

Completely agree with all of those points. There are definitely circumstances where it could come into play, but 90%+ of the time, a CE extension will work completely out of the box on EE! I have noticed that FPC does come into play quite a bit on specific product attribute and search functionality, but those are usually times where it is quite specific to EE, in which case an EE-supported extension is necessary!

Mark

Just wanted to add that in my experience also most modules that work in CE also work in EE with only minor adjustments. And I think thats great :)

Seconding what Vinai said. There can be major differences. However, often times there are not!

Adding my ¥0.02 :-)

Yeah, I agree with everything for the most part. All I work on is EE sites, so I always get the questions from managers saying it says it only works with Community. I have to set them straight on that.

The biggest difference is, if you are on EE and not using FPC then there is something wrong. However if you are and you load an extension that is suppose to update content on page specific to that customer or whatever it might be. There will need to be a full page cache container built out for this and then this is a reason why you might have to have two different versions, even if your code does not extend any other EE specific code.

I think people started selling EE specific modules back in the day because when it was first released all the newest stuff was in 1.6, 1.7, 1.8 before it got to the community editions, I think, I might be wrong. For example I think all of the flattening of the order tables were done first in EE. However now I think the releases are aligning for how the core code is released in both editions.

You have done very well on throwing light on this aspect of magento... I was always wondering that why EE extensions are so costly... in fact I installed few CE extensions on my EE shop and they worked really more fine than I was expecting without changing a bit of code. So Why people always thinks that EE shops and there extensions are extra ordenary... which you can achieve with the CE too, as far as EE more focus on full page cache and solr Search, we can do that too also in CE like I used Varnish Cache Extension and it improved alot...
Once again many thanks for sharing information

Does a CE extension work without changes as a Magento Go extension too?

Theoretically it should work fine, but Magento Inc. controls the content of Magento Go and what is offered on that platform. It's SaaS so we don't have any control over that info.

Yes this is killing most customers. How many of you use and try AW CE extensions on EE? Does it work well? They have the craziest difference in terms of CE and EE edition of extensions.

If it's a full admin/backend module, there is a very high likelihood you will experience no problems whatsoever running a CE module on EE. I've noticed specific companies add 'version-checks' which you can completely comment out easily, but most companies, thankfully, do not do this. If it is a frontend module, there may be changes you will need to copy/paste into the EE-version template and layout files.

You are wrong when you say "zero difference" in core functionality between Enterprise and Community. Enterprise have a few extra features like gift card and SOLR search capability. Are these not core functionalities? Are there no core files different because of these?

There is no difference in the core way modules are setup. They both use the base 'community' core. The extra features of enterprise are definitely specific to that version as noted above.