At long last we’re ready to take the wraps off the next generation of the Shopp project. This version of Shopp is an impressive feature release with something for everyone! We’re also announcing the new Shopp beta program and want to invite everyone in the Shopp community to take 1.2 for a test spin and provide feedback to get it production quality as quickly as possible.
Before we get to all of that, I want to take a moment to officially welcome Dave Kress to the Ingenesis Limited team as our new Shopp Support Lead. Dave’s been a part of the support team awhile now so many of you already know (and love) him. He joins the team with a the perfect mix of skills and experience for his new position. He has several years of experience in different technical support roles and has also served in several management roles. We couldn’t have hand picked a better team member. He’s already brought a lot of new ideas, fun and enthusiasm to our support team making the Shopp support experience among the best in our space. Congrats Dave and welcome aboard!
Shopp 1.2 Development
We laid out a lot of groundwork in Shopp 1.1 by solidifying our gateway and order processing architecture. Shopp 1.2 takes it so much further with engineering improvements across the board and a refactoring at a fundamental level. It’s been a winding road to get the 1.2 release where it is, but it’s definitely been worth it.
When we set out to start building the next version of Shopp we aimed to keep the scope small and focus on tackling subscriptions & memberships plus a few other assorted refactoring projects. That is not what happened. At all. We took the “Red Pill” and followed the white rabbit down a rabbit hole of research that took us through a twisty, bendy, zig-zaggy maze of system requirements. The process revealed a number limitations within the system that had to be fully addressed before we could even dream about adding subscriptions and memberships. So we went back to basics and did something we never expected to do at this stage of the project. We rebuilt Shopp to use WordPress custom post types and custom taxonomies. The hidden masterpiece in all of this is that Shopp’s core development systems were able to be adapted to wrap around WordPress objects without the need to gut the system and build from scratch. That means we get the best of both worlds… all the power, structure and flexibility within the WordPress platform with the ease of our development toolkit.
The ramifications of this change are monumental. Developers can take advantage of adding custom taxonomies to Shopp products and use standard WordPress API calls to get at core product information. Other WordPress Plugins designed to work for posts will now also work for Shopp products (think SEO or post/product ratings). Comments for products are essentially built-in. The list goes on and on…
As if that wasn’t worth it alone, we’ve even redesigned our entire query strategy to vastly improve the raw speed of Shopp’s catalog. We’ve gone to great lengths to make it as efficient as possible to load and process a tremendous amount of product data.
To take it even further we added WP Cache support to the catalog queries so that your object cache plugin of choice will boost the speed and scalability of your site as far as technically possible. Early estimates suggest that this will enable Shopp to efficiently handle a 50-100k product catalog with the right kind of hosting configuration (it should be obvious, but shared hosting won’t cut it at that scale).
If this sounds great it’s because it really, really is! But it doesn’t come without sacrifice. While Shopp will have subscription/recurring billing support in 1.2, the bad news is that membership support will have to wait. In the end it was just too much to tackle membership along with the custom post type integration with subscription support. On the bright side, we’ve already done the research and a good chunk of development has already been completed giving us a jump start on 1.3.
In any event, the new improvements in Shopp 1.2 don’t stop there. Here’s a rundown of the other areas of Shopp that got some TLC:
- Script & Image Server Reliability The script server and image server both can be called directly without loading the whole WordPress environment, but in 1.1 we had a rather hack-ish albeit comprehensive solution for doing so. In 1.2 we do it the WordPress-way still only loading the barebones WordPress environment enough to get things done quickly but in a much more reliable way making these individual server scripts usable in more installations.
- Collections Query Engine The collection query is really the core of Shopp’s overall performance. It takes complex requirements and has to efficiently find and load product information for display. In 1.2 we made magic improving query performance up to 9x faster than in Shopp 1.1. For the ultimate performance, we wrapped it in WP Cache support so that when Shopp is used with a cache plugin you get an incredible speed boost and much more efficient CPU and memory utilization.
- Shopp Pages & Permalinks We ditched the preinstalled pages for completely virtual pages. No more accidentally deleting the Shopp pages and breaking the storefront. The new approach still retains flexibility allowing adjustments to the page title and permalink slug, but it guarantees your store always works. Additionally, caching plugins won’t cache the virtual pages, only the content within the pages so it keeps interactive pages working interactively like the cart and checkout pages.
- Recently Viewed Smart Collection We added a Recently Viewed collection to collect the customer’s last 25 (or more) visited products so they can be displayed in a category-like listing. This provides a great way to keep “top of the mind” awareness to products that the customer has already expressed some interest in.
- Recent Shoppers The recent shoppers widget allows you to display a list of masked shopper names (J. Doe from Springdale, OK). Why would you want to do that? It helps boost customer confidence to know that other people are placing orders through the site, improving conversion rates.
- Payment Settings The payment settings has been completely redesigned using the progressive enhancement approach described above. It uses the WordPress list view to list the payment settings which provides a streamlined and simplified overview of the payment settings. The editor loads in place of the setting row and collapses back to the list row when saved.
- Shipping Rate Settings The shipping rate settings were redesigned in a similar style to the new payment settings, but with an important distinction. All of the table rate shipping calculators have been completely redesigned to be more flexible and more powerful than ever. Instead of a set number of column rates for pre-determined destinations, you can setup table rates for any destination, even using postal codes to set shipping rates to very specific geographical zones. Even the Free Option (often used for free pickup options) can be specific to a local region.
- Tax Settings The tax settings continue the trend using a consistent list manager interface for editing each individual setting. All of the power of that tax settings are still there, including conditional rules and locale support wrapped in a progressive enhancement interface.
- Named Image Settings Perhaps the biggest criticism we heard when 1.1 launched was the removal of the image settings. We maintain that a plugin should have a very limited role role in presentation. As such, Shopp isn’t really designed to control layout, we believe that is the theme’s job and creating settings to control layout boxes designers in. Still images assets are something that Shopp has to manage, and it is here that the line blurs a bit. In 1.1 the image server allows you to specify – using code – exact image settings in the precise context that the image is being used in (thumbnail sizes on the category page, or giant banner images for product pages). Once the images are setup, the only way to adjust them is to adjust the options in code-laden template files. In 1.2 we’re introducing “named image settings”. You create a new image setting with all the image parameters set in the Shopp settings interface. Then the developer, when setting up the templates, can call an image using the name of the settings instead of including each individual image parameter. Developers can still use the individual settings in specific places where adjusting the image sizes can possibly break the layout. Then in areas where it is desirable, developers can offer store owners image control by setting up images in the templates that use a named setting. And, lest it is forgotten, the named image settings use the same list view progressively enhanced management interface as the payment, shipping and tax settings for ease and consistency.
- Improved Order Management One of the key pieces to supporting subscriptions and recurring payments is to have a way to track the history of payments. We had to invent a whole new system that really redefines order management. With Shopp 1.2 we’ve added an order event system that we use internally to send commands to the payment gateways. Why is that important? Decoupling. Really it’s a fancy development term for reducing dependencies. For us, it’s programming nirvana. Gateways that have been developed to support the new order event system and that have API support for it will allow separate payment authorization and payment capture, combined authorization and capture (the only process Shopp 1.1 supports today) and refunds (full or partial) right from the Shopp order manager. As if that wasn’t enough, shipment tracking notices have been added that will send the customer an email notifying them of the shipments with package tracking links.
- Plugin API Just one more thing to put it over the top…: Shopp 1.2 comes with a comprehensive Plugin API that provides a library of 80+ functions to get, set, and manipulate Shopp to do just about anything you can imagine programmatically. Using the API you can add a product to the shopping cart, or add new products to the catalog (nice for importers), update a Shopp setting or get a customer marketing list to pass on to a CRM system. The key is that the Plugin API provides developers a protected Shopp programming toolset without fearing that internal changes to Shopp’s architecture will break the API.
There are a myriad of other small jewels that add that little bit extra to complete the entire experience. But rather than spoil it all, we’ll leave those as a surprise when you try it out for yourself.
Shopp 1.2 hits feature freeze this weekend and that steps us into beta testing. We’re going to be kicking off our beta program for Shopp by running things a bit different from our past programs. This time any Shopp access key owner (developer and single-site) will get access to prerelease versions. Those with single-site access will be able to download a staged pre-release that we will update on a periodic basis as we reach certain stability points. Those with developer access to the project can of course download the bleeding-edge version updated every day at about 3am (Eastern).
We want to invite everyone in the Shopp community to take Shopp 1.2 out for a test spin. The more that participate, the faster we can clean up bugs, the sooner we’ll have a release candidate. Ideally we’d like to see a release in Septemeber, but we need help to make that goal happen.
The beta program for Shopp 1.2 relies on the feedback from testing. We will be introducing a number of ways to participate so you can be as involved as much or as little as you want. Even if you’re not a developer, or comfortable filing good bug reports, you can still test and provide feedback!
Watch for updates to your shopplugin.net store account dashboard for prerelease downloads and access to all of the beta program resources. We’ll have more beta announcements and updates coming some time next week. Login to the Shopp forums and watch for official announcements in the coming days!
So lots of exciting things that we can’t wait to share with our community. With that we’d like to hear back from you. What are you most excited for in Shopp 1.2? Let us know in the comments!
Shopp 1.2 Beta 1 has been released and is available for Shopp developer and single-site access key owners. Login to your Shopp Store Account Dashboard to get started!
Update – September 26, 2011
A lot of progress has been made and while we are closing in on a release candidate, there is still a good amount of work to be done. We recognize that the timing of this release is crucial to everyone, but we’re not ready to commit everyone to the current state of 1.2. With that in mind, the timeframe we’re shooting for is now sometime around early December.
That said, no Shopp access key owner has to wait that long to start developing with 1.2 as a pre-release version is available for developer and single-site key owners. Just login to your Shopp Store Account Dashboard and select “Pre-Releases” or “Bleeding Edge” (only available for developer access key owners).