Magento Forum

How is extensibility of magento? 
 
mikeyao
Jr. Member
 
Total Posts:  17
Joined:  2008-08-21
 

I’m evaluating a shopcart system. I need the shopcart system to work with our POS system. I haven’t figured out how to intergate two systems. Maybe extending magento database, ask POS system write data into magento, or write magento modules to read data from POS system. Is it a easy way to extend magento, not modify the core?

 
Magento Community Magento Community
Magento Community
Magento Community
 
nikefido
Guru
 
Avatar
Total Posts:  481
Joined:  2008-07-11
New Haven, CT
 

Magento is 100% extensible. It is completely class based and follows many design patterns.

That being said, it’s also a complex system to wrap your mind around. A strong OOP background is very helpful.

 
Magento Community Magento Community
Magento Community
Magento Community
 
joyously
Guru
 
Total Posts:  447
Joined:  2008-08-21
 

OOP will get you nowhere with this code.

It is very difficult to write code to integrate with the existing core code. You have to override whatever the core is doing because it isn’t parameterized and there are no hooks. So if you override it and then they change the core (which they will), you have to revisit the change to see if it still works.

There are no objects to interact with. You just call class functions to operate on some data held by little classes that don’t make sense. The functionality is spread all over the place. There is hardly anything you can find where one change in one place does the job. You usually have to make the same or similar changes in a lot of places.

The database is not at all efficient either. The Zend interface with the database is obscure and decentralized. There is much duplication of data and the “design” of the database makes it very difficult to maintain the products. There are not very good reports either and they are not easy to write. Some of the visitor information being saved is excessive and has caused some people big problems with database space. It’s not obvious what or how to delete some things either like test data for searches, test orders, etc.

There are memory leaks and performance issues. If you have a lot of products or a lot of categories, don’t bother with it. It’s too slow.

 
Magento Community Magento Community
Magento Community
Magento Community
 
mikeyao
Jr. Member
 
Total Posts:  17
Joined:  2008-08-21
 

If i want to extend customer, i should how to do it or where to find the document ?

 
Magento Community Magento Community
Magento Community
Magento Community
 
nikefido
Guru
 
Avatar
Total Posts:  481
Joined:  2008-07-11
New Haven, CT
 
joyously - 02 November 2008 04:56 PM

OOP will get you nowhere with this code.

It is very difficult to write code to integrate with the existing core code. You have to override whatever the core is doing because it isn’t parameterized and there are no hooks. So if you override it and then they change the core (which they will), you have to revisit the change to see if it still works.

There are no objects to interact with. You just call class functions to operate on some data held by little classes that don’t make sense. The functionality is spread all over the place. There is hardly anything you can find where one change in one place does the job. You usually have to make the same or similar changes in a lot of places.

The database is not at all efficient either. The Zend interface with the database is obscure and decentralized. There is much duplication of data and the “design” of the database makes it very difficult to maintain the products. There are not very good reports either and they are not easy to write. Some of the visitor information being saved is excessive and has caused some people big problems with database space. It’s not obvious what or how to delete some things either like test data for searches, test orders, etc.

There are memory leaks and performance issues. If you have a lot of products or a lot of categories, don’t bother with it. It’s too slow.

I know this sounds like a flame, but I don’t want it to be. You’re frustration is the result of lack of OOP and/or design pattern knowledge. Everything in Magento is an object for instance. Magento does have a “hook” system - It uses the Observer design pattern to accomplish this.

Although I can’t disagree with a lot of things you said.

Most of the problem is lack of good documentation.

Reporting isn’t fleshed out enough, I agree there.

The database structure is efficient to the data structure of the site, but it’s not a main stream form of normalization making it hard to deal with.

Creating complicated modules is difficult because of how over-engineered Magento is, but it’s a great system when you get to know it. It’s complication is the result of how extensible and flexible it is.

 
Magento Community Magento Community
Magento Community
Magento Community
 
dan_w
Sr. Member
 
Total Posts:  290
Joined:  2008-01-04
 
mikeyao - 02 November 2008 05:31 AM

I’m evaluating a shopcart system. I need the shopcart system to work with our POS system. I haven’t figured out how to intergate two systems. Maybe extending magento database, ask POS system write data into magento, or write magento modules to read data from POS system. Is it a easy way to extend magento, not modify the core?

@mikeyao:
I’m not sure which POS system you are working with, I can only assume that it is one of the major ones like Microsoft Dynamics, QBPOS etc. While I don’t have experience navigating the intricacies of EVERY POS solution available, I can speak from my experience working with Quickbooks POS (QBPOS), which has a handy tool called the Quickbooks Web Connector (QBWC). With that said, my initial experiences integrating the two have really been positive. The magento api has been a real boost to accomplishing this, without altering core code.

@nikefido:
I completely agree with you. I think what is lost alot of times, is that magento truly is an enterprise class solution which, given its infancy, does have a lack of documentation. While it could be classified as convoluted by many, I really do think that Varien is a team of dedicated professional engineers who are trying to be an enterprise class product that can fill a growing need at all levels.

That reads; if you are a small, entry-level ecommerce op, you can enter the game with a full set of keys features that customers are expecting based on their experiences with major players with no core customization; if you are an enterprise level player, magento can be extended and integrated to your wildest dreams. I do feel that, like with all endeavors, the newness of magento and both its radical design and philosophy in the open-source ecomm arena has led to alot of discouragement from early adopters.

 
Magento Community Magento Community
Magento Community
Magento Community
 
joyously
Guru
 
Total Posts:  447
Joined:  2008-08-21
 
nikefido - 02 November 2008 06:03 PM

I know this sounds like a flame, but I don’t want it to be. You’re frustration is the result of lack of OOP and/or design pattern knowledge. Everything in Magento is an object for instance. Magento does have a “hook” system - It uses the Observer design pattern to accomplish this.

I don’t want to start a fire either, but I have to correct your mistake. I am very well versed in Object-Oriented Design, so it is painfully obvious to me that Magento has none.  Everything in Magento is a class. It is not an object. The word object is used interchangeably with class in programming, but not in design. Most of the world makes this mistake and very few actally get what real OOD is.  If these were real objects, there wouldn’t be so much code and so much dabbling in other class’s data. This code is programmed with a functional mindset, not an object mindset, but using a framework that is class oriented.  It’s a mess, but it’s open source and will stay a mess.

The Observer design pattern you mention is not a hook system. To see hooks in action, look at WordPress. Magento does have a small start at using the Events to trigger function calls, but most of the code runs without any Events triggering.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top