(notes from a session at DrupalCon 2010)
Commerce Guys' vision: make Drupal the #1 platform for ecommerce
- Ubercart has a lot of legacy code and can't easily take advantage of D7's advances
- D7 has tons of features for a killer ecommerce platform, only needs the ecommerce features: checkout, shipping, payment, security.
Drupal Commerce development principles
- hard separation of APIs from UI
- core development (like payment) separated from plugin modules (like PayPal) so they don't hold up each other's development
- use D7's core entity and field systems to re-implement products, orders, line items, receipts.
- more structured product entry and flexible add-to-cart form display
- customizable checkout flow with form API integration
- stronger lateral integration with key modules like Views (for display) and Rules (for role-based discounts, location-based tax, etc.)
- strictly enforced code and documentation standards
- plan to release distributions for specific use cases - nonprofits, etc.
- catalog is a default View of products with their SKUs, titles, prices.
- each product has D7 fields rather than attributes ... adding a new field option doesn't auto-generate a new SKU, but a contrib module will do that. Trying to keep core lean.
- "Add to cart" button/selector is a display format for the referenced product, so each SKU doesn't necessarily have to have its own representation in the catalog
- Order entity (not a node) available to Views. Customizable-format order numbers will be separate from auto-increment orderid to prevent disconcerting gaps when orders are not completed.
- line items (formerily order products) are also entities, so you can edit an order to add/remove/edit line items.
- checkout panes are now built with form API, so can be altered through standard hooks.
- no more serialized arrays! Only objects! Hooray!
Migration path may be tricky -- CCK to D7 fields upgrade path is yet to be determined.
- but current Ubercart data is not in CCK, so that may not be an obstacle
- there will probably be a migration module, rather than an upgrade script.