OpenSesame homepage

OpenSesame is the world’s marketplace for buying and selling e-learning courses.
OpenSesame is the first marketplace to make buying and selling corporate e-learning 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 e-learning 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 e-learning 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 e-commerce 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 e-commerce more effectively and prepare the site to scale quickly. Since rolling out the Drupal 7 site in September 2011, the OpenSesame software team has continued to make improvements to commerce and payout processes.

Why Drupal was chosen: 

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.
  • E-commerce 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.
  • Custom order types: In addition to e-commerce purchases of licenses with defined numbers of users, customers can get unlimited licenses for content and then get billed at the end of the month for actual usage.
  • Custom payouts: Sellers can receive different shares of revenue based on their agreements with OpenSesame. OpenSesame will contribute the payout module back to Drupal 7.
  • Site speed improvements: OpenSesame has improved page load time by pre-theming content and pre-caching content on the CDN.
Describe the project (goals, requirements and outcome): 

Team & Timeline

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

The dev team began focusing on the Drupal 7 upgrade shortly after DrupalCon Chicago in 2011. 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. 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. OpenSesame uses consulting graphic designers and user interface designers to create the simplest possible design. OpenSesame continually iterates on site design by using anonymous user testing services to seek feedback on the purchasing experience.

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 (for product search) to work with the Commerce module. In addition, the SQL migration from UberCart to Drupal Commerce was extremely complex and required a lot of debugging.

Modules/Themes/Distributions
Key modules/theme/distribution used: 
Why these modules/theme/distribution were chosen: 

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 e-commerce marketplace, OpenSesame allows users to set prices, custom discount tiers and control when items are 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 original D7 theme was heavily developed on top of the jBase5 theme which is available on Drupal.org. The current theme is based upon 960.gs, also available on Drupal.org. The team uses the Compass framework with 960.gs to streamline the theming workflow and minimize complexity of CSS.

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 Facet API) which expects nodes.
  • Using Rules will also reduce the business logic in code and, in turn, make future upgrades easier.
OS Seller Page
OpenSesame Resources
OpenSesame search results