Ubercart Development Roadmap

Posts: 4727
Joined: 08/07/2007
AdministratorHead Code Monkey - I eat bugs.

Well, I've refrained from posting a roadmap till now because we've been crazy busy and I often just don't know what's going to come up. Per some forum discussion, IRC discussions/chats, and in-office/lunchtime conversation I'd like to offer up the following roadmap and hear your feedback.

The mantra I'm working on is something along the lines of "Foundation. Optimization. Innovation."

With Drupal 5 we laid the foundation in terms of code and community. It took a long time to get where we are, and in hindsight we'd do some things differently and a few things very differently. But we're here now, and we've got something to work with. We also have an awesome community of users, testers, and developers. The whole D5 Ubercart 1.0 cycle has made all this possible, and we're happy to have come so far.

Now we're looking at migrating our current work over to Drupal 6, and there are a lot of exciting core enhancements that will benefit Ubercart users and developers. As such, I see Drupal 6 as a time for optimization where a bulk of the work is spent making Ubercart leaner, quicker, and easier to use in areas like theming, workflow, and internationalization. We also need to work on our development process so it's optimized for community development. I'll be the first to say I don't know what I'm doing and am learning as I go, so I'd love to continue refining our development process to make it easier for contributors to get involved.

Finally, come Drupal 7, we should be more than ready to innovate. We had to play catch-up with our initial release, and we need to clean up/trim what we have to avoid an enormous design debt in future versions... but I'm more interested in letting innovation drive Ubercart than keeping up with the Joneses. Smiling More about this later, as it's not immediately applicable... just know that I hear a lot of great feedback and ideas, and our inability to implement them now doesn't mean we aren't looking to change the way things are done.

So, what does this look like for development now?

We want to move to D6 as soon as possible. This means we'll hold off on taking advantage of many core enhancements for the initial migration, including things like the file handler in the new menu API, #ahah in the updated forms API, module level .tpl.php files, and more. We'll be stripping off dependencies that would hold up the migration and continue to implement a custom conditional engine to handle things like taxes, shipping quotes, order workflow, etc. I will allow API/bug fixes and UI improvements, but major features are likely to be postponed during this phase. Minor features delivered with patches will be more likely to get committed. In the end, we'd release this as Ubercart 2.0 (codenamed Uber Tuber) for Drupal 6 (per japerry's/schaub123's comments on the Drupal 6! thread). I'd love to have the Uber Tuber delivered pre-Drupalcon Szeged.

(I'm definitely interested in feedback to this post to make sure my reasoning related to dependencies/core conditions makes sense.)

Once this version is complete, we'll move into Ubercart 3.0 development (no codename yet Eye-wink). This will involve updating modules to take full advantage of the changes to core APIs in Drupal 6. I'd also love to see Ubercart be optimized for theming, internationalization, user access, and more. So, even though I consider D6 an optimization stage, I'm not averse to making big changes in the Ubercore. I just don't want this to hold up the initial migration to D6, and I'd also like to make sure we're able to move into Drupal 7 development a little faster than we'll end up getting into Drupal 6.

Where will development take place?

I started a Drupal 6 group on http://support.ubercart.org that we have ill used so far. We've been busy with the 1.0 release, and I've been personally busy/out of town lately. There's a good group of folks there ready to do some coding and testing, and as soon as the details are ironed out and we get some solid time on our hands we'll move in full swing.

Further, I'm serious about wanting our development process to empower contributors and be more in sync w/ drupal.org. This is why we've been encouraging modules to be posted up as projects on d.o. I'm not 100% decided, but it looks like we'll just totally disable the issue tracker here in favor of the tracker on d.o. This won't preclude forum discussions about bugs, fixes, and features, but it will better facilitate reporting, patching, community testing, and committing.

What else is on your radar?

I'm glad you asked. Cool

I've been keeping a text file for some time now with notes about improvements I'd like to see happen. Honestly, I look at some of the earlier code I wrote and wish I could rewrite it now. It's all part of learning!

My initial brainstorm list (not just for Uber Tuber) right now includes things like:

Disclaimer: I'm wanting to see improvements in these areas below, but there's no way I can code it all! Some of these I hope to do myself, but others will require community action. I'm happy to report there's already significant development in several of these areas!

- Addresses separated from orders.
- VAT support in core.
- Allow folks to switch to multi-page checkout.
- Separate validation from submission for checkout panes.
- Actual store administration theme.
- Better support for internationalization, including core VAT support.
- Remove uc_notify.module and replace it with conditional actions.
- Fix cart pane API Smiling
- Separate Views integration out into its own module.
- Get the rest of the manufacturer trappings out of core.
- Try to get rid of any other module_exists checks, too.
- Move Store Links block out of core and into a contrib module.
- Invoice templates should be overridden at the theme level, not in the module dir.
- Update stock support.
- Review line items API.
- Core conditionals system.
- Simpletest for full unit test coverage.

I probably won't get to all or even a majority of these points. However, I am committed to making Ubercart easier to use and develop. I'm sure you can all get behind these goals. Smiling

In the words of elephantiX, long lives drupal ubercart and my mother!

Posts: 2102
Joined: 08/07/2007
AdministratoreLiTe!

Progress! Huzzah!

Some ideas have also come to my attention that I will be working on in the future.
Begin brain storage dump:

  • Figure out how to do hierarchical or dependent attributes and options.
  • Rework the relationship between product classes and node types.
  • Allow conditional actions to filter returned shipping quote services (like 2nd day air, express shipping, etc.)
  • In reference to VAT and discounts, give products better access to the tax rules, or vice versa.
  • Create an "add arbitrary line item to orders" action.
  • Catalog images need some accessibility help.

EOF.

If anybody's got ideas, questions, concerns, or cookies, put 'em somewhere I can find them. Exciting times are upon us.

Posts: 1228
Joined: 08/14/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.

Sounds good! I have one question, though. I don't quite plan on moving to Drupal 6 until the majority of our site's modules have been ported (whether that's by myself, with my help, or otherwise) or I have found suitable replacements.

What does your roadmap mean for the 5.x version of Ubercart? Will it be ditched in favor of the migration to D6?

Thanks for all your hard work Smiling Looking forward to more coding and testing.

--

"Pain don't hurt." - Dalton

Mike Nelson's RiffTrax! www.rifftrax.com

Posts: 2102
Joined: 08/07/2007
AdministratoreLiTe!

All the shiny, new features will be put into the Drupal 6 versions, but if there are any bugs that need fixing in 1.0 (and I know of a few already), they will be taken care of. I suspect Ubercart 1.1 or 1.2 will be available by the time 2.0 goes out the door. We'll try to keep the bug fixes in sync as much as we can, but that will become less necessary and possible as the branches diverge.

Posts: 1
Joined: 06/11/2008

Great to hear a definitive list of things on the radar screen/updates to be made in the near future. I like the idea of getting a working UC for 6.x up before serious "streamlining" occurs because as a commercial user of the product, having the ability to implement the system is more important than having the "ideal" system to implement.

Finally I was wondering if (speak of ideal) there is any chance we might be able to add "productization" to the list of things on your radar. The ability to eventually productize any node type would be a great boon to UC in the long run.

Great Update, Thx,

Eclipse

Posts: 2102
Joined: 08/07/2007
AdministratoreLiTe!

"Productization" is part of what I meant in my second point, about reworking node types and product classes. I think there will be a lot of other things that will be easier because of it, as well.

Posts: 489
Joined: 08/13/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.Internationalizationizer
  • Addresses separated from orders.
    Totally agree, it will be more user friendly and will bring more possibilities about workfow and conditions, I hope it will not break the actual user database and it will be possible to import actual customer database in the new system.
  • VAT support in core.
    Totally agree, as an european seller, VAT is the things that bring me the most difficulties to configure, If some advices for an european seller is needed, don't hesitate to ask me.
  • Allow folks to switch to multi-page checkout.
    It could be a cool feature, but I'm afraid that it would make the creation of checkout related module extremly complicated and will bring a lot of bugs or will bring a lot of code, just for that things. If you make a magic hook that automatically manage all things, why not Eye-wink. But for me it's not a critical issue (true core discount possibilities module would be prior to me)
  • Separate validation from submission for checkout panes
    Not sure to understand about that, I thrust you ^^
  • Actual store administration theme
    Not sure to understand too, if it's to retheme administration, why not, but I already find it very good.
  • Better support for internationalization, including core VAT support.
    Totally agree, internationalization is a credo of drupal 6, it should be a credo of ubercart
  • Remove uc_notify.module and replace it with conditional actions.
    Totally agree, with workflow, drupal 6 actions etc.... there is enough possibilities to manage notification in a more powerfull way than the ubercart notify module
  • Fix cart pane API Smiling
    Agree
  • Separate Views integration out into its own module.
    Agree, I would add to bring some efforts about it. Like adding more fields (especially attributes related, more arguments, more all ^^). I say that for 2 reasons :

    • Actually, the catalog module is good for a people that quickly want a catalog in the oscommerce style. If you want something more extensible, more easy to maintain, you will use views, and the ubercart views integration is too light today.
    • Views will come into core with 7.x version of drupal, working on a great views integration will save some work later ^^

    For that reasons, I think it's more logic to bring efforts in a really good and complete views integration and let catalog module beeing a third party module that bringing a catalog module into core and make core views integration anecdotic.

  • Get the rest of the manufacturer trappings out of core
    For sure
  • Try to get rid of any other module_exists checks, too.
    Don't know what's the problem with it, maybe performance issue... I thrust you ^^
  • Move Store Links block out of core and into a contrib module.
    Yes, good idea
  • Invoice templates should be overridden at the theme level, not in the module dir
    Totally agree, and I would generalize for all module as you said. I would love to see some .tpl.php files to overide checkout page/panes pages etc...
  • Update stock support.
    Totally agree, it is a critical need for most shop, and the Cpill module is not maintained anymore, I would see more possibilities for the core stock module
  • Review line items API.
    Agree agree agree, it still need some work for about performances and bug
  • Core conditionals system
    Not sure to understand, does it mean the end of workflow ? Will you replace it by the core drupal 6 action and trigger module ? Or will you adapt Ubercart 2 to the new rule module (that is the next workflow-ng) ?
  • Simpletest for full unit test coverage.
    Don't know how simpletest work, it seems good ^^

I would add some personal questions for next releases :

  • Do you plan to continue support for catalog module ? I know it is pretty out of the box for a simple shop, but I can be easily replaced by some others modules like views, taxonomy list, taxonomy image...
  • Do you plan to add more reports on the reports module, if yes, but if you are out of ideas of what could it be added, I have a lot of commercial and marketing people that work with me, and I can ask them what they would see Eye-wink
Posts: 489
Joined: 08/13/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.Internationalizationizer

Hi,

I know this it a hard question, but I have an ecommerce project to finish for the 08/31/08... and I hesitate about the version of drupal to use. This is an heavy multilanguage website, so I would like to use Drupal 6 cause of the core implementation of internationalization, but, on the other hand I'm not sure Ubercart 2.0 will be released before this time.

So my question, do you have an estimation of the deadline for ubercart 2.0, I think you have a better idea than me about all the work it need, so maybe you can already imagine a date for the deadline of UC 2.0.

But congratulation for your work, I tried Ubercart 1.0 last days, and it's just awesome Laughing out loud

Posts: 4727
Joined: 08/07/2007
AdministratorHead Code Monkey - I eat bugs.

Thanks, zmove. I don't have a much better answer than the one I'm sure you expect... hopefully it'll be done by then, but there's no way to know. Sticking out tongue

My goal would be to have something to demo at Drupalcon Szeged, assuming we can make it. We're well underway, we just haven't had a chance to get things in a good state for testing and collaboration. Hopefully that'll happen sooner rather than later.

Posts: 5
Joined: 04/17/2008

Thanks for all your hard work.

Posts: 175
Joined: 12/28/2007
Uber DonorBug Finder

Even as a non-coder I can clearly see Ubercart, together with Drupal, is a cool set of scripts with amazing flexibility. Thanks so much to all developers, testers, document writers etc. for your hard work, appreciated!

I can see a lot of interesting new features and reorganizing of code in the road map above. Hopefully all this development makes it possible to build a gift shop, where one can buy gifts in one order to different people with different delivery addresses (thinking about making it easy to buy Christmas Presents, for example, to several people at the same time)

Keep up the Great Work!

Posts: 28
Joined: 05/06/2008

Ryan wrote:

My initial brainstorm list (not just for Uber Tuber) right now includes things like:

- Addresses separated from orders.

I wrote the uc_addresses module, which starts the process of separating addresses and orders. Obviously, it can only go so far without changes to the Ubercart core. If there are any features people need now and that are possible in the 1.0 architecture, please make a feature request at http://drupal.org/project/uc_addresses.

The big question I have is that my time is limited, but I would like to somehow stay in the loop on the address portion of the project. What's the best way to achieve this? I don't mind monitoring one forum (such as this one). Is this the best strategy or is there something else I should do?

Posts: 4727
Joined: 08/07/2007
AdministratorHead Code Monkey - I eat bugs.

I wouldn't make any movement on that particular feature without making sure you were in the loop. Smiling If it happens, I'd try to grab you for a chat on how your code can best fit into core or how core could best accommodate a module like yours to provide extra functionality that might not be needed in core (like a separate address book). Something like this wouldn't get into 2.0 given the dev. roadmap, though, so don't sweat being busy right now.

Posts: 28
Joined: 05/06/2008

Thanks, Ryan.

Posts: 24
Joined: 12/18/2007
Bug Finder

any idea about when to expect an ahah powered ubercart release?

we'd love to see some more ajaxy stuff

Posts: 2102
Joined: 08/07/2007
AdministratoreLiTe!

I think it'll be a while, honestly. The port to D6 is moving along very well, but any AHAH goodness will have to wait on that. The "theme" of the 2.0 release is Optimization. UI improvements fall under that, I think, but there's a lot of other parts of Ubercart that need attention first.

Posts: 5
Joined: 12/26/2007

zmove wrote:
... I know this it a hard question, but I have an ecommerce project to finish for the 08/31/08... and I hesitate about the version of drupal to use.

I am in a similar position, though I would like to approach this issue a bit differently.

The most time-demanding (and monotonous) task is the addition of all the product data, at least with a site that will contain 300+ items. So I am wondering - Can I, and how could I best, develop my content so as to leverage my product data for use with a future, 6.x release of Ubercart?

I'm referring mostly to custom content-types via CCK, and perhaps categories as well. Are there any recommendations for my pursuing a site development path like this? Is it possible to do without a crazy amount of headaches when integrating Ubercart into my 6.x site containing perhaps hundreds of nodes on a custom content type?

Posts: 489
Joined: 08/13/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.Internationalizationizer

If the deadline is like mine, I strongly suggest you to work on 5.x. You never know what can happen and, maybe a downloadable ubercart 6.x will not be out before the end of the summer, maybe the end of the year, don't know...

So you should develop for 5.x, and then upgrade. I hope there will have easy upgrade solution to jump between UC 1 and UC 2.

Posts: 15
Joined: 12/02/2007

I like that you have many many improvements on the list, that is the real Drupal thinking. http://www.lullabot.com./articles/drupal-community-philosophies

Quote:
The drop is always moving.

I would like to help with the internationalization. The dynamic string translation is not solved, not even in drupal 6 core. Will try to find a best way for doing this, or give suggestions at least, but don't want to spam this forum with an i18n discussion now..

Posts: 489
Joined: 08/13/2007
Bug FinderEarly adopter... addicted to alphas.Getting busy with the Ubercode.Internationalizationizer

pasqualle@drupal.org wrote:
I like that you have many many improvements on the list, that is the real Drupal thinking. http://www.lullabot.com./articles/drupal-community-philosophies
Quote:
The drop is always moving.

I would like to help with the internationalization. The dynamic string translation is not solved, not even in drupal 6 core. Will try to find a best way for doing this, or give suggestions at least, but don't want to spam this forum with an i18n discussion now..

It's true that i18n is a little weird in drupal, you can translate nodes, menus, but not contact form.... with Ubercart, it's pretty the same things, you can translate products, catalog, cart, but not attributes.... It would be good to have ALL content fully translatable because, when you make a multilanguage website, you have to translate all stuff. It's a joke to see a multilanguage website with non translated attributes for example.

Posts: 28
Joined: 05/06/2008

Bringing up the subject of uc_addresses again...

Someone has tried to upgrade the uc_addresses module to D6. They are using Ubercart 6.x-2.x-dev. The question I have is: as the module owner, should I officially support a D6 version of the module?

The problem comes from thinking about the future of addresses in Ubercart. There's been talk of making addresses a core feature. What I've been thinking is that addresses should be a custom node type, just like products. The module I finished works nicely but doesn't offer the extensibility it would gain if addresses were nodes. So the future code for addresses would be quite different than what I've implemented, at least on the inside.

The road map, if I understand it properly, the D6 version will be a clean-up but not enhanced version of Ubercart. D7 will have the enhancements. So I think a straight port of uc_addresses to D6 is OK, and the D7 version should be the one to consider integrating addresses. Just want to make sure my reasoning is OK.

Posts: 15
Joined: 12/02/2007

D6 and D7 means Drupal version. There will be new features in D6 version of Ubercart of course..

The question should be that address integration could happen in Ubercart version 2 or 3.

Posts: 4727
Joined: 08/07/2007
AdministratorHead Code Monkey - I eat bugs.

My quick thoughts... a major change like that would be slated at least for UC version 3.x. We're targeting that for release on Drupal 6 toward the end of the Drupal 6 development life cycle.

Posts: 28
Joined: 05/06/2008

Thanks for the corrections / information. I'll try to create a D6 version of uc_addresses (for Ubercart 2) as a straight-forward port of the existing code.

Posts: 2
Joined: 08/16/2008

I just tried installing the D6 version and now the Modules page comes up blank every time.
After I go in and manually drop the uc_* tables in MySQL and remove the ubercart directory the page comes back up just fine.

Is there a way to totally back out any initialization changes that happened during the module install?

What parts of the modules are enabled on the test D6 website?

Also, forgive me if this is in the wrong place.

Thanks!

Posts: 3
Joined: 10/01/2008

Ryan wrote:
Invoice templates should be overridden at the theme level, not in the module dir.

I have not read the rest of the thread yet, and swear that I am not here to be negative or whatever, but I actually would disagree with this and am curious as to what your reasoning would be... I honestly have no idea how to express my reasoning for disagreeing, but perhaps if I knew yours then I could crystallize a counter to it! Basically though, I see theme level stuff as being purely about esthetics and appearances.

Sorry, just noticed that and it caught me strongly enough to voice opinion, but in the end I am so grateful for the empowerment that Ubercart is giving me it makes no difference, things like this... VERY much appreciated!

Posts: 4727
Joined: 08/07/2007
AdministratorHead Code Monkey - I eat bugs.

Thanks for stopping by and giving your input. Smiling

I think I'd stand by the theme layer for the invoice templates for two reasons...

  1. It makes practical sense, as you don't have to worry about accidentally deleting your custom templates when you update your Ubercart version.
  2. The theme layer in Drupal consists of two parts... templating the layout of elements and addressing the appearances. The former is done through .tpl.php files and the latter through your style.css. So, the modules expose the data, the .tpl.php will output the HTML, and the .css will add the appropriate styles for further positioning and presentation. Obviously the modules will define the components available to the invoice, but the .tpl.php will define how those components should be displayed on the page. This is normal in Drupal and is done for things like node displays. What Drupal 6 allows us to do is ship a .tpl.php file with a module that can be overridden by anyone in their theme with a .tpl.php file of the same name. So, we'll still be shipping invoice templates, but it will be a little easier for folks to modify and maintain their own invoice templates. The alternatives are either to keep it like it is w/ custom files in a module directory that may accidentally be deleted on update, only allow invoices to be defined in custom modules which makes it significantly harder for folks to adjust, or force people to hack core.
Posts: 3
Joined: 10/01/2008

Ahhhhhhhh... I do see. I have yet to use the invoice functioning, but what I was seeing in my head was emailed invoices, but I now understand that you are referring to visual, more or less "graphical" invoices as part of the site itself, which sounds awesome, and makes total sense! Much appreciated!

Posts: 4727
Joined: 08/07/2007
AdministratorHead Code Monkey - I eat bugs.

Totally, but the same will apply for what's e-mailed, because at the moment you can send an HTML e-mail of the invoice from the site. So in Drupal 6 you can call the same theme function that would display it on the site to add it to the body of an e-mail... alternately, you could just use the UI to create a fully text version of the invoice for e-mailing. Honestly, I'm way tired of the current invoice template and hope to see that change sometime soon. Laughing out loud