Between Ubercart 1.0 and 2.0 we dumped as many dependencies as we could, because they were typically difficult for the end-user to understand. This was especially true for people who were new to Drupal. However, as has been discussed in our battle plans thread, we'd looking at adding a CCK dependency for the next version. Now I'm wondering, and would appreciate feedback, about whether or not to consider a Views dependency as well.
The reason is this... right now, we have various tables in Ubercart that it is possible to customize using something called TAPIr (the tables API). It has its limitations, but it's particularly used for product listings and the add to cart form. Now, with advances in Views since the time we started development of Ubercart 2.0, we can most likely use Views for these things instead.
Furthermore, more development has been going on in the Ubercart Views integration module, proving that it is possible to even do something like replace the main order admin page with a View (given a little bit more integration). I'm wondering if we shouldn't begin to explore a replacement of various product, cart product, order product, customer, and order lists with default Views and turn something like the catalog module into more a set of Views instead of various overrides and theme functions. I don't think Views would be an end all solution, but it may be possible to deprecate TAPIr by just making Views a dependency.
Granted, the implementation will require some very sensible defaults. Everything should still work the same, but if someone needs to tweak the way a table is displayed, they'd just as soon learn how to use Views (which will benefit them all over the place) as learn how to develop with TAPIr.
A possible drawback is the way we're using TAPIr to render forms. However, in this case, I think we might be able to just as easily leave those forms as normal forms with theme functions and allow people to alter them with hook_form_alter() if need be. I just don't believe we've really ran into too many use cases where the obvious solution is to have a more robust TAPIr.
My thoughts on having another core dependency are that if we're going to make Ubercart 3.x dependent on CCK, why not go for Views, too? It's just as popular a module, and while it can be stinkin' hard to learn how to use, with sensible defaults the newcomer will have to do nothing more than enable the Views module. Used correctly, they shouldn't even need the Views UI until they get to a point where they decide they need to tweak a display.
So... I'd like to hear your thoughts and possible pitfalls / benefits that I may have overlooked.








