Flat World Knowledge
Zivtech acted as the lead Drupal developers for Flat World Knowledge, an Open Source textbook publishing company, from June 2008 until January 2010. Instructors can adopt and customize books and annotate inline on a per-paragraph basis, and these changes are made available for purchase automatically. Extensive custom modules, a number of which have been contributed back to Drupal, create custom functionalities for the books, which are actually stored in xml publishing format, converted by the site into XHTML, and further converted through integration with external APIs to allow the sale of PDF and hardcopy versions.
We began building the site in Drupal 5 in June 2008. We knew the site would benefit from new features in Drupal 6, but the timeline required us to build and launch a Beta in Drupal 5 and then upgrade to Drupal 6 while development continued in both Drupal 5 and 6 versions of the site. The upgrade required us to rewrite significant portions of not only our own custom modules but several Drupal contributed modules that we needed. By planning for this necessity throughout the process, we were able to take the version upgrade in stride (during September - December) without missing a beat on the rapid development schedule. One of the strategies we used to facilitate the smooth upgrade was the creation of “bridge code” that was used to backport some of the needed Drupal 6 architecture into the Drupal 5 site. For example, we planned for major restructuring in Drupal’s book module by creating the “book bridge” module: http://drupal.org/project/book_bridge. We were also able to migrate the site from a private files system to a mixed public/private system (for enormous performance gain) mid-process without a hitch. During all this development we have continuously deployed changes to the live site.
The site has adapted flexibly throughout the ongoing customizations and changes. The Drupal system allows us to not only create the architecture quickly, but to modify it as architectural needs evolve without much difficulty. We use contributed code as much as possible, contributing new modules to the Drupal project when necessary, and pushing some of the improvements back into Drupal core itself.