OpenSesame is the world’s marketplace for buying and selling elearning courses.

OpenSesame is the first marketplace to make buying and selling corporate elearning as easy as downloading a song from iTunes. Using crowd-sourcing similar to iStockPhoto, OpenSesame’s marketplace and technology displaces the leaders in the highly fragmented $4.5B U.S. off-the-shelf elearning content market.

The marketplace enables sellers of all sizes to reach new buyers without investing in additional sales and marketing resources. Sellers post their courses in the marketplace and set the price and discounts. OpenSesame hosts the content, attracts buyers, collects payment, and keeps a portion of sales revenue. OpenSesame enables buyers to access the broadest and freshest selection of elearning content from a worldwide set of publishers all in one location. Content hosted on OpenSesame’s patent-pending platform will work on any learning management system.

OpenSesame launched in November 2010 with an ecommerce site built using Drupal 6. After developing the content catalog and customer base, the OpenSesame team decided to upgrade to Drupal 7 in order to support ecommerce more effectively and prepare the site to scale quickly.

Features: From Ecommerce to User-Generated Content

OpenSesame relies on Drupal in order to offer users a variety of complex features, including:

  • User-generated products: Users can self-serve to upload courses for sale in the marketplace.
  • Ecommerce sales: Customers can purchase courses using a credit card and download license files instantly.
  • Multi-faceted, searchable catalog: The course search can be filtered by more than 10 facets.
  • Custom product-level discounts: Sellers can create custom bulk discount tiers for each course.
  • Multi-language support: The most-trafficked pages are translated into seven languages, with language switching. Users can also upload courses for sale in any language.

Team & Timeline

The OpenSesame development team includes four software engineers of whom one focuses on theming and design. In addition, OpenSesame worked with consulting designers on architecture and design.

The dev team began focusing on the Drupal 7 upgrade shortly after DrupalCon Chicago. Beginning in April, two engineers began testing the new modules and migrating code in a local environment. By June and July, the Drupal 7 upgrade took up most of the development team’s time, including two engineers at close to full time and another two engineers at about half time. The OpenSesame team successfully met its goal of rolling out the new Drupal 7 site in time for OpenSesame’s participation in Demo Alley at TechCrunch Disrupt in September 2011. Based on a rough estimate, the Drupal 7 upgrade represented 1,800 engineer hours.

Design and User Interface

As a crowd-sourced marketplace, OpenSesame depends on having a crowd of sellers and a crowd of buyers: Two audiences with distinctly different destinations and needs from the site experience.

In order to meet the needs of both buyers and sellers, the OpenSesame development team focused on creating a simple site with an intuitive workflow. OpenSesame hired Ai Leen Chong, a user interface consultant with experience designing complex sites, to create a concept map and identify the key user workflows. For example, sellers are focused on how to add their products for sale in the marketplace while buyers are focused on searching for, reviewing, selecting and purchasing products. The development team started with this concept map as a basis for the architecture of the new site.

For the design of each page, OpenSesame worked with Susie So, a graphic designer who also has experience with UI design and usability testing. So started by identifying the key focus of each page within the site and then generated a design that would attractively present the needed information and functions as simply as possible. During implementation, OpenSesame’s engineers focused on simplifying the design to the cleanest possible presentation throughout.

OpenSesame Infrastructure

  • OpenSesame runs in AWS
  • Takes advantage of the smaller memory footprint of Nginx with php5-fpm
  • Uses APC as both an op-code cache but also a non-database Drupal cache (taking advantage of Drupal 7’s built-in caching layer)

Challenges

The OpenSesame team was developing the site while the Drupal code base was still largely in development itself. This concurrent development process meant some of the modules were moving targets.

From a process perspective, the developers started by working with one module at a time, migrating them from Drupal 6 to Drupal 7 in a local environment. They started with some of the more complex modules in order to ensure that Drupal 7 was able to support OpenSesame’s essential functions.

Some of the biggest investments of engineering time were devoted to getting Apache Solr to work with the ecommerce module. In addition, the SQL migration from UberCart to Drupal Commerce was extremely complex and required a lot of debugging.

Modules Used

The OpenSesame site includes more than 150 modules, from address field to WYSIWYG. Some of the most significant applications include Drupal Commerce and Apache Solr.

Since our primary goals included creating a flexible ecommerce marketplace, OpenSesame allows users to set prices, custom discount tiers and control when items were available for purchase.

As the Drupal 7 modules were in development concurrent to the development of the OpenSesame site, the OpenSesame team unearthed a variety of bugs and missing snippets in Drupal 7 beta code. The development team submitted 8-10 code patches (especially to Drupal Commerce), of which several were committed to the code base.

Theme

The OpenSesame team implemented the theming throughout the site, including using custom view modes to display products to customers. The theme was heavily developed on top of the jBase5 theme which is available on Drupal.org.

Lessons Learned

For development teams who are considering the upgrade to Drupal 7, the OpenSesame team shares these recommendations:

  • Using the rules engine to manage actions based on events saved time during development and made the inevitable migrations of logic easier as related modules changed.
  • The database migration from Ubercart to Commerce was challenging and really should only be approached once the use of commerce has been solidified in a test site.
  • Lots of custom shims were necessary to make the commerce products (entities) work with the Apache Solr indexing system (not to mention facetapi) which expects nodes.
  • Using rules will also reduce the business logic in code and, in turn, make future upgrades easier.

Comments

niceds’s picture

This is great. I haven't seen Commerce used in this capacity yet.

Anything you can contribute to this discussion?
http://drupal.org/node/991054

RKS’s picture

What module did you use to get a marketplace in Commerce? Right now there are a few discussions on how to achieve what you already have in Commerce.

As in The Path to Commerce Marketplace.

Thanks for sharing your site.