SourceForge vs Google App Engine hosting

The hosting of BleachBit's web site, bug tracker, and blog has bounced between SourceForge, Google's Blogger, Launchpad, Google App Engine, and SourceForge again. Certainly there have been some lessons learned on the strengths and weaknesses of each hosting provider. These may be useful to other open source projects choosing a web host—particularly for demanding, dynamic sites.

Permanence

I could have registered my own domain name and used it with either SourceForge or Google App Engine or another hosting provider, but other than me being cheap, the main reason I chose a free subdomain is permanence. How annoying is a 404 error for an old project? URLs should be permanent, and I trust SourceForge and Google App Engine will probably continue the host the content after I am dead and buried. I'm glad both companies are making money—a sign of strength.

Reliability

Both SourceForge and Google App Engine have noticeable downtime. SourceForge intermittently returns 504 Gateway Timeout errors from nginx (which seems to be their reverse proxy software), and occasionally there are longer outages. Not all SourceForge service disruptions are reported to the official SourceForge Downtime page. For example, about a month ago I couldn't update files because the SSH service was out: it was acknowledged when I mentioned it on IRC but never acknowledged on the web page. Later on September 8, 2009, my web space and others were reporting ERROR 1040 (08004): Too many connections from MySQL. This caused the BleachBit web site to fail. It took 15 minutes to fix from the time I reported it (though other people reported it sooner), but it was not mentioned on the SourceForge Site Status page.

Google App Engine has had notable outages such as the July 2 incident, and I don't remember a time when the GAE status page showed everything as normal for a week.

My OpenOffice.org Ninja site on Blogger (also running by Google's cloud) returns an Out of Service about 1-5% of the time, and I can't get a hold of anyone at Google to look in to it. I haven't noticed the same issue for the BleachBit blog on Blogger.

Overall the reliability of both hosting providers is acceptable. I know even pay-only providers have unexpected downtime too.

Performance

On normal days without service disruptions, my tiny, homemade CMS on Google App Engine seems to serve pages faster than Drupal on SourceForge. Often both return the HTML in under a second, but SourceForge occasionally takes several seconds. This delay could be the fault of Drupal, the SourceForge databases, or something else.

Customer Service

During a SourceForge SSH service disruption, I quickly reached a technician live on IRC. When the SourceForge MySQL service was down after normal business hours, I was pleasantly surprised to speak with a technician on IRC. In both cases the issues were resolve quickly. When Google App Engine suffered a massive failure for hours, my only option was to turn to the forum with a long thread of fellow customers saying, "Me too." Eventually Google responded with updates and a detailed analysis, but Google does not offer individual support (apparently because it doesn't fit in to their scalability mindset). Ironically only SourceForge, which is completely free of charge, offers individual support on its ticket system, on email, and live on IRC.

The only time I needed assistance on Launchpad was to fix a translation credit, and after filing a ticket, it took about 30 days to get a human response and a resolution. It was slow but acceptable.

Dynamic content

SourceForge runs PHP, Perl, Python, Tcl, Ruby, and shell scripts, while Google App Engine runs Python and Java. All are well established languages, but PHP is the most popular for open source web development, so some of the best software, such a Drupal, runs on PHP. Google App Engine includes Django, but Django itself doesn't do anything useful out of the box. Also many Django applications don't run unmodified on Google App Engine because they require a SQL database, and Google's database is very different. App Engine's free hosting has been slow to spur development of ready-to-use software: I could only find one mediocre blog and one mediocre forum software.

I wrote a dinky forum application on Django for Google App Engine, but later I found what I wanted all along was Drupal: a mature, integrated CMS with forums, blogs, tags, diverse module ecosystem, translatable pages, etc.

Launchpad and Blogger don't offer hosting of dynamic content, but at least Blogger allows embedded any JavaScript.

I wish Drupal ran on Python, which I prefer over PHP. And I wish I had a pony too.

External access

SourceForge restricts 100% of outgoing access, so that all outbound email and all outbound HTTP requests are forbidden by firewall. The implications are significant as the following are disabled:

  • New user registration emails
  • New comment reply notification emails
  • OpenID
  • Online anti-spam services such as Akismet, reCAPTCHA, and Mollom
  • News aggregators (Atom/RSS)
  • Blog pinging (to notify FeedBurner, Technorati, and others of new content)

I wrote a Drupal module called HTTP Mail to overcome the email issue, but it felt like a waste of time for an inefficient solution (because it requires polling).

Google App Engine offers external access by email and HTTP, but it's limited to their API. Existing Python code (such as Python's built in XML RPC client) must be rewritten to use the Google App Engine API.

Ticket tracking

SourceForge has an archaic, clunky bug tracking system. It was recently updated, but I don't like the new system either. BleachBit hosts bug tracking on Launchpad, where the interface is simple, clean, and uses just enough AJAX.

Source control

SourceForge offers SVN, CVS, Bazaar, Git, and Mercurial. Launchpad offers only Bazaar, and every four hours Launchpad automatically imports a copy of SVN from SourceForge. For years I've committed thousands of revisions in CVS (for other projects) and SVN on SourceForge without any trouble.

Translation management

Launchpad's translation system, Rosetta, is very good. Translators manage translations in a web-based system easy enough for anyone to use. Launchpad even offers advanced features such as translation policies for teams, basing a translation off another translation, and automatic synchronization between Bazaar and Rosetta.

SourceForge doesn't offer a translation system.

File hosting

SourceForge hosts an unlimited number of files through its big mirror network. The downsides are it has ugly ads, and I'm not sure SourceForge file hosting support direct URLs nicely. PAD distribution requires direct URLs, and in my brief testing, SourceForge treated the same "direct" URL behaved inconsistently.

LaunchPad only hosts files for Ubuntu through the Personal Package Archives (PPAs), and SourceForge's File Release System doesn't support Linux package repositories (.deb, .rpm, etc.).

Google App Engine hosts files, but charges for extra bandwidth and storage space.

Cost

To host on Launchpad or SourceForge, the only "cost" is open sourcing your code. Google App Engine offers generous quotas for unpaid customers, and additional system resources (bandwidth, CPU time, disk storage, emails) are cheap and billed weekly only for the actual resources used. On busy days, BleachBit was consuming about 1% of Google App Engine's free quotas, so I'd rather pay Google for one-on-one service than for system resources.

Conclusion

Why pick one system when you can pick the best of breed? BleachBit has chosen SourceForge for web hosting, file hosting, and SVN hosting, while Launchpad manages bugs and translations. Google App Engine still exists for polling Drupal on SourceForge and then delivering mail through Google (using HTTP Mail). It's a hodgepodge, but so are the Internet, Linux, and open source software.