This project is read-only.

Orchard commerce, nwazet.commerce, and other toughts

Topics: Writing modules
Apr 18, 2013 at 12:01 PM
Edited Apr 18, 2013 at 12:03 PM
I'm following with real interest the growing nwazet.commerce module and I like it so much.
I know that at this time it is far from a complete solution but it is the only one at present and it is really pretty good event at this stage.
One problem that I see is that may people are starting add features and problem arise.

Currently there is:
Official main source

A great mod from ems
great changes, pay pal support and many other features
currently incompatible with current version and conflicting
waiting for integration

A great extension from csurieux
that features paypal, money currencies, orders

and maybe more will be added...
Now the real problem here I think is that so far the commerce base is a good code but not so extensible as it could and contains implementations that can be moved out.
In other words if base would not contains specific modules for checkout and if GoogleCheckout and PayPal would be separate modules depending on nwazet.commerce it would be great.
This would improve extensiblity (if you are forced to be separate from base module you enforce extensiblity)
So for shipping, that now is so tied to GoogleCkeckout.

So the idea here is to:
  • improve base interfaces at least for checkout and shipping
  • start move checkout and shipping implementation out of base as separate modules
  • encourage people to create other checkouts and shipping implementations for their needs
I think this way orchard could be a reliable platform for commerce and gain more and more users.
Apr 18, 2013 at 5:21 PM
Edited Apr 18, 2013 at 5:32 PM
Thanks for sharing.
As you requested my opinion, here it is.
Concerning Datwendo Commerce it is an extension an not a pull request for Nwazet.
I had a look on the great work in Nwazet and ems. Problem was that ems was bringing very good ideas but was a non validated replacement of Nwazet (I get manyproblems with it) and 'less operationnal'.
On my side I have 2 projects requesting some extensions not present in Nwazet neither in Ems, as I have explained in a previous thread here on the same subject.

My projects were requesting multi-currencies management , Money class in place of double (with secure rounding) price list management no shipping feature urgency, better discount, customer management, orders (with workflow), invoices, payments, tracing of raw payment transactions, as I work mainly in Europe GoogleCheckout was of no use and Paypal was to be adapted (Ideally I would have been interested by something as, I have also source for Atos payment which is often used in Europe but not free) and also OpenAuth authentication.

Nwazet was an elegant tool but limited concerning currencies and pricing, ems was bringing some new ideas (product recommendations, paypal) but was suffering from being built as a replacement of Nwazet code, necessitating a lot of work of Bertrand to merge, and each time something was corrected in Nwazet....
I did a first project trying to take what was interesting in ems and Nwazet, but it was creating a 3rd source code, not good idea. And basically Nwazet choices were the best in 80% of code.
So I rewritted all my code, restarting from Nwazet and taking a better modular approach: no change to Nwazet but new parts added as ProductExtend bringing Subscription management, prefered price list. Product Controller and Driver replacement using Autofact, etc.
I also tried to include Nick OPenAuth module (very useful) using the same process: no change on base code.

Today Datwendo Commerce is built on Nwazet: you install Nwazet, then you install Datwendo. If you need external OAuth, you install OAuth and my complement module bridging it with Datwendo.

There are certainly many features to improve inside ( My Money class is actually just put inside, not totally using its natural behaviors, but it works ideally with currencies)
My checkout is totally independant from Nwazet (not so difficult,thanks Orchard and Bertrand), shipping is Nwazet shipping with some 'bridging' dues to dedicated shopping cart.

My project was not to build an ecommerce product, I have already realized that based on an MS CRM extend named Addon Nice Server using Webform ASP.NET ....I spent 3 years on it, it's very complex, you have to include so many customer requirements....full time job.
I only need 2 ecommerce sites and if my code could interest somebody, it's here. Open to any extension. When/If Nwazet will evolve I still have its actual version and if necessary could adapt accordingly.

This was also the occasion to learn Orchard, I suffered a lot :) ... and it is not the end....
What are you looking for.
Apr 18, 2013 at 6:05 PM
Hello All,

Thanks CSADNT for your comments, very insightful. Just so it is clear, I wrote the EMS extension of the Nwazet commerce module out of necessity for my clients I work with. At it's core, my version is NOT intended to be a new implementation of the Nwazet commerce module. However, I did have to inject connection points into the core module and this is where you will find the major differences between my version and the existing version. Ideally the goal will be to go back and put these interface connection points into effect for the core module. As you might expect, it is very complicated to think of every extension point that will be needed for a "Core" commerce module. If you read Bertrand's blog you will also see the commerce module was built for a need he had (similar to how my extending it was built for a need I had).

manudea, I think what you are looking for is whether there is a means on consolidating back to one root kernel so that other developers can extend it. I think the wisest thing is to evaluate what needs to be in a "core" ecommerce module. This is NOT easy. While I was extending the Nwazet commerce I had a very difficult time keeping all the modules clean so that there was no interdependence (but if you look at my source code you will see the modules can pretty well stand on their own). Bertrand has a lot on his plate and I am sure that integrating my ecommerce changes into his code base so that my modules can stand on there own is not the highest on his list. I did not help any by doing a big pull request instead of incremental pulls along the way (necessity though demanded I get it done for work I was doing).

I have another ecommerce project coming up here so it is possible I can take some time to align my module with what Bertrand now has as a core and request the extension points I need added to be able to hook into the business logic.

Look forward to everyone else's thoughts.
Apr 21, 2013 at 5:32 PM
Just a point I forget to insist on : Dawendo Commerce used the new workflow not in 1.6, it works with actual 1.x code and with futur 1.7.
Apr 22, 2013 at 3:28 AM
"base would not contains specific modules for checkout and if GoogleCheckout and PayPal would be separate modules depending on nwazet.commerce it would be great."

The code is already built so that it is extensible, and all those are features that can be replaced. That they come as features of Nwazet.Comemrce is not a problem at all. They can still be enabled and disabled, and replaced.
May 1, 2013 at 5:32 PM
I just see noCommerce .... Dices have rolled, games are closed....
But they have an interesting authorise implementation in mvc4.
May 1, 2013 at 11:04 PM
The code put into nopcommerce around authentication/authorization was based on code I wrote... Look at the top of the files in their solution - You should see my name "Nicholas Mayne" :) p.s. that code is also in the OpenAuthentication module for Orchard.
May 2, 2013 at 7:38 AM
Edited May 2, 2013 at 10:47 AM
My remark was concerning the payment system with Authorize.Net API, but I am glad to know that they use same code as me :)

Each of us publishing some code is happy to know it is used.
This is such a changing world with few stability and we spent so many time sending these magnetic levels on metal surfaces...

Back to nopCommerce, I think I will take the Authorize.Net code when necessary, Orchard is more powerful as a global CMS, it's an option: take a pure player or extend a general and flexible CMS you like to do ecommerce.