![]() |
|
|---|---|
| Developer(s) | Kevin Dangoor (original creator), Mark Ramm (TG2 lead), et al. |
| Stable release | 2.0.3 / 2009-08-13 |
| Preview release | 2.1.a3 / 2009-11-29 |
| Written in | Python |
| Operating system | Cross-platform |
| Type | Web application framework |
| License | MIT License, LGPL |
| Website | http://www.turbogears.org |
TurboGears is a Python web application framework consisting of several WSGI components such as Pylons, SQLAlchemy, Genshi and Repoze.
TurboGears is designed around the model-view-controller architecture, much like Struts or Ruby on Rails, designed to make rapid web application development in Python easier and more maintainable.
Contents |
TurboGears components
TurboGears is built on top of numerous disparate libraries and middleware. The default tools have changed between the 1.x and 2.x series, but most of these components can be used in either as there is support for many alternate configurations. The following are the primary components a developer would interact with.
TurboGears 2.x components
- SQLAlchemy (Model) - defines the table structures of the user's database and how to link them to Python objects the user's controller can interact with.
- Genshi (View) - defines templates for the HTML or XHTML the user will generate. This is where the user defines the user's front-end the client will interact with.
- Pylons (Controller) - this middleware will handle all the user's back-end logic and connects to the user's webserver to offer up data to the web. By default, the Paster webserver is used, but the user can also connect to Apache, Nginx, or any other WSGI compatible webserver.
- Repoze - Repoze.who & Repoze.what are used to handle security (authentication & authorization respectively). When defining elements of the user's controller to be exposed to the web, repoze predicates define who can access them and under what conditions.
- Tosca Widgets - is the primary widget library for creating forms and complex GUIs. Tosca by default will generate simple HTML forms, but can also be used as a middleware to connect to more advanced JavaScript widgets and toolkits. Unlike TurboGears 1.x, there is no longer a preferred/integrated JavaScript library.
TurboGears 1.x components
- SQLObject (Model) - data backend that can create a database or interface with existing data on many database servers.
- SQLAlchemy is slated to become the default in TurboGears >= 1.1.
- Kid (View) - XHTML frontend templating engine where all templates are valid XHTML or XML files that are usually made in a way that allows opening these templates as simple XHTML files to check the design. At the same time features are provided to embed snippets of Python in a XMLish manner.
- Genshi is the successor to Kid and will replace it as the default templating engine in TurboGears >= 1.1. It is nearly 100% syntax-compatible to Kid.
- CherryPy (Controller) - middleware that allows web applications to be programmed by writing event handlers that return data to (in TurboGears case) templates. The same data can also be received in Ajax fashion as a JSON data stream.
- MochiKit is the preferred, but optional JavaScript library for TurboGears 1.x. It is a designed to make programming in JavaScript more Pythonic. It is mostly used for implementing Ajax features and widgets as it provides an interface to get JSON data streams in asynchronous manner.
Template plugins
Templating languages other than Genshi can be used through the user's app's configuration file. Plugins currently supported in 2.0 are Myghty and Jinja2. Mako and Cheetah are in the works for TG 2.1. Kid support is not currently planned as Genshi is virtually identical. This list may continue to change in future versions.
Project history
TurboGears was originally created in 2005 by Kevin Dangoor as the framework behind the as yet unreleased Zesty News product. When he released it as an open source framework in the end of September 2005, it received more than 30,000 screencast downloads in the first 3 months.[citation needed]
January 2007 Kevin Dangoor retired as project leader and Alberto Valverde managed the project as his successor,[1] but subsequently stepped down due to other personal commitments. Alberto is still involved in the TurboGears community through his ToscaWidgets project. The TurboGears project is now managed jointly by a group of about half a dozen core developers under the leadership of Mark Ramm (as the TurboGears 2 development lead) and Florent Aide (as the Turbogears 1.x release manager).
In June 2007 the community began experiments to put the TurboGears API on top of components and protocols used in Pylons and there was speculation that the two frameworks may finally be merging.[2] However, the official TurboGears 2 documentation states that this is unlikely to happen, due to the "different, but compatible priorities"[3] of both projects. Pylons wanted to stay focused on low level, extensible design while Turbogears was focused on offering a complete, user-friendly package, and so the two work together much in the same way Debian and Ubuntu do now. The new 2.x branch had its first stable release in May of 2009.
As of Fall 2008, TurboGears has a large and healthy community with over 3000 users on the TurboGears mailing list, a book from Prentice Hall published in Nov. '06, and a number of open source and proprietary TurboGears applications deployed to the real world. The development progresses at a moderate but steady pace and was also newly fueled by a successful participation of the project as a Google Summer of Code mentoring organization in 2008 and 2009. TurboGears 1.1 is now underway, with several beta releases in 2008, to help legacy sites make the transition to 2.x. A new revision of the book is in the works to update it in line with the changes TurboGears 2 has brought.
Future of TurboGears
Turbogears development is now focused primarily on the new 2.x branch. Version 2.1 is already well underway, with the first alpha release expected soon. The 1.x branch will continue to receive security and maintenance releases for the next few years. A future 1.1 release will change the default ORM and templating language to match the 2.x series as a means of transition. The planned 1.5 release that would update CherryPy to version 3 has now been canceled to make it is clear to new users that 2.x is the future, and 1.x is merely maintained for the convenience of existing users. For users interested in continuing down the path of 1.x and wanting to use CherryPy3 a friendly fork has emerged in the GearShift[1] project.
Further reading
Ramm, M; Dangoor, K; Sayfan, G (Nov 7, 2006). Rapid Web Applications with TurboGears, Prentice Hall. ISBN 0132433885
References
- ^ "TurboGears has a new leader". Kevin Dangoor. 2007-01-03. http://www.blueskyonmars.com/2007/01/03/turbogears-has-a-new-leader/. Retrieved 2007-04-12.
- ^ "Pylons Merge". http://compoundthinking.com/blog/index.php/2007/06/27/turbogears-11-and-beyond/. Retrieved 2007-06-27.
- ^ "What’s new in TurboGears 2". http://turbogears.org/2.0/docs/main/WhatsNew.html#why-not-just-merge-with-pylons. Retrieved 2008-09-16.
See also
External links
- TurboGears homepage
- TurboGears Blogs
- TurboGears google group
- TurboGears screencasts and related videos at showmedo
- TurboGears from start to finish
|
|||||
|
||||||||||||||||||||||||||||||||||||||
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)





