Tag Archives: SQLObject

Web Frameworks Comparisons at the Java Posse Roundup

Java Posse Roundup Day 0

 I’m here in Crested Butte for an Open Spaces conference, The Java Posse Roundup.  The conference officially starts this morning, but we had an “extra session” last night at Bruce’s house.  Graham Ullrich presented his experiences with TurboGears and Django, both web application frameworks written in Python. 

Graham’s experience with TurboGears was in the summer of last year, with about the 0.9 release.  Since then it has been released as 1.0, and I think that the documentation has been improving steadily.

The major drawbacks of TurboGears include:

  1. Kid templating errors are hard to decipher
  2. SQLObject is limited in functionality

Both of these can be addressed now, as you can drop Genshi in place of kid (and Genshi has awesome error reporting), and SQLAlchemy is more powerful than SQLObject (and arguably than the ORM built into Django).

The major drawbacks of Django include:

  1. Incomplete documentation
  2. Newforms development incomplete 
  3. Not easy to understand what to do with static content

The Django project was poorly advised to put a note in the documentation that new projects should use newforms, since there are major pieces that are not implemented.

Overall, Graham reported that his experience with Django was more “pythonic” than his experience with TurboGears.  It’s hard to tell whether that’s because he was using an earlier version or whether it just feels more natural to him.  In particular, he likes the admin interface and database mapping.

Here are some more comparisons of the 2 toolkits:

http://www.oreillynet.com/onlamp/blog/2006/02/a_brief_djangoturbogears_compa.html

http://www.petersblog.org/node/1083

And, if you missed the presentation and want to read through his slides, he's provided them (see below).

Graham's presentation on Django vs. Turbogears

AACS Meeting Summary

October 4, 2006

Mark Ramm discussed TurboGears at the Ann Arbor Computer Society meeting this week. The crowd was mostly unfamiliar with TurboGears, and most were unaware that it was conjured up and written here in Ann Arbor (well, at least originally … it’s open source, so it’s now getting contributions from all over the world).

Most people know about Ruby on Rails, so he contrasted the frameworks a bit. Basically, Rails is a highly integrated, single piece of software. It uses some naming conventions, and if you follow them, things will just line up and work. But the magic can be a bit disconcerting for some. Features are either provided via Rails, or not available within the framework. That’s the beauty and cost of a single piece of software.

TurboGears doesn’t follow naming conventions. It’s a mega web framework. It combines best of breed tools in Python to support web development. This allows for components to be traded out and replaced with newer, better components, if they become available.

The heart of TurboGears centers around the following components:

SQLObject – an Object Relational Mapper

CherryPy – web server: manages request/response cycle

Kid – templating system, xml-based, guarantees well-formed output

MochiKit (pronounced Mo-chee-kit) – library for Javascript/AJAX, making it easier to write clean javascript

Templates can be made to look really simple by using and extending the master.kid file. Actually, you can have several master.kid files, and use appropriately in different parts of the application.

For deployment, the easiest path is in using CherryPy, proxying with IIS or Apache (using mod_proxy or mod_rewrite). You can also use mod_python, but Mark sees the other options as simpler.

Webfaction has good shared hosting for TurboGears apps. Currently, their control panel only creates 0.8.9 TurboGears apps, but if you ask the webfaction staff will send instructions about installing the newly released 1.0b1 for use with webfaction. They also help to support the TurboGears project.

From a commercial licensing standpoint, there are no hindrances to using TurboGears. It uses the very liberal BSD-style license, which allows you to write applications using TurboGears for commercial use.

Widgets are provided, to reduce work for the developer. Kid produces designer-friendly templates, that can be edited in programs like Dreamweaver without perturbing the python constructs (since Dreamweaver ignores them), but allowing the designer to see placeholders when testing layout without running a web server.

A question from the audience asked Mark to compare with ASP.NET. Basically, he said that you can do anything in ASP.Net that you can do in TurboGears but that you will have to write more code in ASP.NET. Maybe we will see some head-to-head comparisons at CodeMash in January.

Future Directions in TurboGears:

1.SQLAlchemy will replace SQLObject as the default object relational mapper in the future. It does everything that SQLObject does, and more. Needs a bit more work to simplify the definition to match that of SQLObject
2.Genshi will replace Kid as the default templating system. It uses pretty much the same syntax but is about 40% faster.

Documentation options:

1.Mark’s book (Rapid Web Applications with TurboGears) is going to be published in November. Half of the book is now available, on Safari Rough Cuts.
2.The latest issue of Linux Magazine has an article on TurboGears, written by Mark Ramm. It doesn’t appear that it’s available online. Here’s a summary of that article: http://compoundthinking.com/blog/index.php/2006/09/22/turbogears-in-linux-magazine/
3.TurboGears DVD contains screencasts and can be purchased on the TurboGears website.
4.Docs are available on the TurboGears website.

Examples of high traffic sites that run TurboGears:

www.diggdot.us: Combines Digg, slashdot, and de.licio.us into a unified format

www.rpath.com : Linux software appliance company

Next month at AACS: Scott Collins, from the Mozilla project, talking about the design and application of programming languages.