Pando: Sharing Big with Drupal
About Pando
Pando is small New York City-based startup with a large mission: to make it easy for anyone to send and receive large files via email, IM, and RSS and to post large files for free download on any Web site. To accomplish our mission, we developed a small piece of consumer software that runs on top of our BitTorrent-based P2P network. The goal of our Web site is foremost to drive downloads of the Pando client, but the site also houses documentation, FAQs, promotions, corporate info and even content feeds, which we'll explain below.
We chose Drupal for our primary company web site and for a number of related side projects. Over 3 million people have downloaded the Pando software on www.pando.com, and we're currently getting over 100,000 page views a day. (Our P2P network, by the way, now delivers over 40 terabytes/day of user generated data daily).
Choosing Drupal
When preparing to launch the web site to promote the first Pando beta we reviewed a number of options. We use Java, Tomcat and MySQL for our protocol application server so, wanting to play to our strengths, we first looked at Java-based options like blojsom. Not finding anything satisfactory, we then reviewed LAMP-based CMS frameworks, including Drupal. Pando CTO Laird Popkin had used Drupal in the past and was impressed by its powerful flexibility and relatively elegant implementation compared to other available CMSes.
Zero to Launch
In just a few days we assembled a basic theme, pulled together initial content and got our first site up and running. We made good use of the page and book modules right out of the box and quickly added front page, quotes and theme editor modules for design flexibility. We started with Drupal 4.5 to make life easy on our sysadmins, who could install it as a pre-built Debian package.
Rapid Hacking
Early on, we needed to quickly add a web-based user registration system to integrate cleanly with the Pando platform. Grabbing a copy of the existing LDAP integration module, modifying it and lightly hacking Drupal core, we were able to get the system up and running to spec in a few days. This wasn't the ideal implementation, but it was fast to implement and we met our deadlines.
We also needed to do some basic data collection to measure downloads of our app and collect email addresses from our beta testers. Again, on a tight timeline and with little Drupal expertise in house, and with relatively modest requirements, we simply put together some custom php snippets embedded directly in specific pages to collect and report on this data.
Cleaning House
Our ability to get up and running rapidly with little Drupal-specific experience was a testament to Drupal's generous flexibility and power. Once on our feet we brought on board a LAMP developer with some Drupal experience (Scott Trudeau) to help us move forward.
With Drupal 4.7 on the near horizon and a business decision to remove the user registration requirement in place, we made the update to 4.7 a priority. Since our web-based registration was integral to earlier versions, and since we'd altered core and hacked up the LDAP module to support it, the upgrade took some careful attention but went very smoothly. As our user base grew, we added extensive help and support documentation, using the book module extensively.
Search Engine Optimization
As Pando began to grow in popularity, we looked for ways to spread our reach even wider. One key area we sought to improve was in search engine optimization (SEO). Drupal turned out to provide a number of handy tools to make this task easy. We made use of the built-in path module to ensure human and search-bot friendly URLs; we grabbed the page title and node (key)words modules to have better control over page metadata; and used the site map and XML Sitemap modules to help search bots index our site.
Continual Development
We continually add functionality to our primary site and take advantage of the rich set of tools the Drupal community has provided. We used the Send module to build an "email postcard" system. Because send required the mimemail module, we found use for that in some of our php snippets that which had been using php's mail() function. We also began to use some simple taxonomy structures to create modified themes for special cases and to generate an RSS feed for our monthly newsletter.
Latest Projects
Pando's main site gets the most traffic and attention, but we're also using Drupal for a number of other projects.
Pando RSS
Pando supports RSS so that users can subscribe to video podcasts (for example), with P2P technology allowing for efficient delivery of higher quality files than typical podcasts.
To support this, we built a web site (rss.pando.com) that provides a sample Pando RSS feed.
To make it easy for podcasters to produce Pando RSS feeds, we then built a tool using Drupal (leaning heavily on the actions, workflow and views modules combined with Drupal's cron hook) to automatically index and convert rich media RSS feeds to Pando RSS feeds that can be subscribed to with the Pando client. Pando RSS audio and video podcasts are available from the Pando Podcast Gallery.
Pando Developer Toolkit
We recently launched a Developer Toolkit that allows web sites and applications to easily integrate Pando. Since we use Drupal so heavily, we have implemented a "demo" Pando module that demonstrates how to use the new Pando developer toolkit to make it easy to use Pando to share large files on any Drupal web site, which combines quite nicely with Drupal's powerful community capabilities. For example, anyone can submit content using Pando, which can be moderated, published, discussed, voted on, and syndicated via RSS. This module takes advantage of the Drupal 5.0's improved multi-step form handling capabilities, and may implement some dynamic behavior using the new jQuery javascript library. We are also working on producing a "one click Pando sharing site" based on Drupal 5.0's distribution profiles.
Pando Developer Web site
We're planning a launch of a separate Pando developers' site based on Drupal to house projects like the Drupal module. We are excited that this site will allow us to try out more of Drupal's community and project management capabilities.
Conclusion
Our experience with Drupal has been a largely positive one. It measure up to our early impressions of it's power and flexibility and has grown well along with us. We're delighted to be part of the large and growing Drupal community.
