TurboGears је дизајниран у МВЦ архитектури, скоро као Struts или Ruby on Rails, дизајниран да прави рапидно брз развој веб апликација у Пајтону лакшим и боље одржаваним. Од верзије 2.3 фрејмворку је такође додељен "минималистички мод" коју му омогућава да се понаша као Микрофрејмворк за коришћење у окружењима где цео стек није захтеван нити потребан.
TurboGears компоненте
TurboGears је направљен преко бројних различитих библиотека и мидлвера. Подразумеване алатке су се мењале између верзија 1.x, 2.x и 2.3+ серија, али већина ових компонената могу бити коришћене у било којој од ових верзија због постојања подршке за многе алтернативне конфигурације. Следеће су главне компоненте са којима би програмер управљао.
TurboGears 2.x компоненте
SQLAlchemy (модел) - дефинише структуру табеле корисничке базе података и како да их повеже са Пајтон објектима са којима корисници могу да интерагују.
Ming (модел) - омогућава приступ слојевима података за MongoDB, скоро као што SQLAlchemy дефинише повезивање MongoDB колекција на Пајтонове објекте са којима корисници могу да интерагују.
Genshi (МВЦ) - дефинише шаблоне за HTML или XHTML које ће корисник генерисати. Овде је место где корисник дефинише предњи део са којим ће клијент интераговати.
Repoze - Repoze.who је коришћен за безбедност (идентификација и аутентификација). Корисници могу дефинисати правила ауторизације на предикатима који су повезани на контролорима, фрејмворк већ доприноси неке уграђене предитаке, али оне ручне могу бити написане посебно.
ToscaWidgets - је примарна библиотека додатака за прављење форми и комплексних графичких корисничких интерфејса. Tosca по подразумеваним подешавањима ће генеристаи једноставне HTML форме, али такође може бити коришћен за прављење мидлвера да се повеже на вишенапредне додатке JavaScript-е и алата. Насупрот TurboGears 1.x, више не постоји преферирана/интегрисана JavaScript библиотека.[2]
Gearbox - је алатка коришћена од стране TurboGears-а да управља пројектима, прави нове и служи TurboGears апликацијама, али корисник се може такође повезати на Apache, Nginx, или било који WSGI-компатибилни веб сервер.
Верзије пре 2.3 би такође користиле:
Pylons (МВЦ) - овај мидлвер сноси све бек-енд логике корисника и повезује се на кориснички веб сервер да понуди податке на веб.
Paster је био командна алатка и веб сервер коришћен уместо Gearbox-а.
Repoze.what - коришћен да сноси ауторизацију респективно. Приликом дефинисања елемената корисничких контролора да буду изложени на вебу, repoze.what предикати дефинишу ко им може приступити и под којим условима.
TurboGears 1.x компоненте
SQLObject (модел) - бек-енд податак који може направити базу података или интерфејс са већ постојећим подацима на вишебројим серверима базе података.
SQLAlchemy је спреман да постане подразумеван у TurboGears >= 1.1.
Kid (преглед) - XHTML шаблонирање предњег дела где су сви шаблони валидни XHTML оли XML фајлови који су обично направљени на тај начин да омогућавају отварање ових шаблонао као једноставне XHTML фајлове да се провери дизајн. У исто време могућности су омогућене да укључе делове Пајтона у XML облику.
Genshi је наследник Kid-а и замениће га као подразумеваног шаблонирања у TurboGears >= 1.1. Скоро је 100% синтаксно-компатибилан према Kid-у.
CherryPy (контролор) - мидлвер који дозвољава веб апликацијама да буду програмиране писањем догађаја која враћају вредности у (у TurboGears случају) шаблоне. Исти подаци могу бити примљени у Ajax стилу као JSON стрим података.
MochiKit је преферирана, али опциона JavaScript библиотека за TurboGears 1.x. Дизајнирана је да направи програмирање у JavaScript-и више пајтонски. Највише се користи за имплементирање Ajax могућности и додатака јер омогућава интерфејс којем се добијају JSON стримови података у асинхроном начину.
Додаци шаблонима
Језици шаблонирања поред Genshi могу бити коришћени кроз конфигурациони фајл корисничке апликације. Додаци тренутно подржани у 2.1 су Myghty, Jinja2, Mako, Cheetah, и Kajiki. Kid подршка тренутно није планирана јер је Genshi виртуелно идентичан. Ова листа ће се можда мењати на даље док буду излазиле новије верзије.
Историја пројекта
TurboGears је оригинално направљен током 2005. од стране Кевина Дангора. Када га је избацио као фрејмворк отвореног кода крајем септембра 2005, примио је више од 30,000 screencast преузимања у прва 3 месеца.[тражи се извор]
Јануара 2007. Кевин Дангор се повукао као вођа пројекта и Алберто Валверде је преузео његов рад као наследник,[3] али се затим и он повукао звог приватних обавеза. Алберто је и даље умешан у TurboGears заједници кроз његов ToscaWidgets пројекат. TurboGears пројекат је сада одржаван од стране групе од 6 програмера под вођством Марка Рама (као TurboGears 2 развојног вође) и Флорент Ајд (као Turbogears 1.x менаџер издања).
Током јуна 2007. заједница је почела са експериментисањем да постави TurboGears АПИ на врх компоненти и протокола коришћених у Pylons-у и биле су спекулације да ће се та два фрејмворка коначно спојити.[4] Какогод, званична TurboGears 2 документација каже да то тога вероватно неће доћи, због "различитих, али компатиблних приоритета"[5] оба пројекта. Pylons је хтео да се фокусира на проширујући дизајн, ниског нивоа, док је TurboGears био фокусиран на нуење потпуне, корисничко пријатељске пакете, тако да ова два раде заједно скоро исто као што Debian и Ubuntu раде сада. Нова 2.x грана је имала своје прво стабилно издање у 2009.
Од јесени 2008, TurboGears има велику и здраву заједницу са преко 3000 корисника на TurboGears поштанској листи, књигу од Прентис Хола објављене 6. новембра, и многобројне TurboGears апликације отвореног кода објављене целом свету. Развој се наставља средњом али стабилном брзином и скорије је допуњен успешном партиципацијом пројекта као Google Summer of Code менторством током 2008. и 2009. TurboGears 1.1, је циљао на помагање старијим сајтовима да пређу 2.x, избачен је у октобру 2009. Нова верзија књиге је у раду да буде освежена са новим променама које је TurboGears 2 донео.
Током 2010, пројекат је посрнуо донекле. Главне вође програмера су се повукле због приватних проблема у животима. До краја јануара 2011, ипак, пројекат је почео да буде реорганизован и да се враћа на свој пут. После неколико месеци поправљајући инстраструктуру и проблеме у кодовима, TurboGears је успео да избаци нове верзије (2.0.4 и 2.1.2).
Током 2013. док се одржавала компатибилност са претходним верзијама, пројекат се удаљио од базе кода Pylons-а да подржи Пајтон 3, омогући убрзања и лакши процес инсталације. Ово је довело до избацивања верзије 2.3.0 у августу 2013. Такође је најављено брже избацивање верзија што би обухватало нова издања са исправкама на свака ~3 месеца.
Будућност TurboGears-а
TurboGears развој је сада фокусиран примарно на 2.x грану, са верзијом 2.3 која је сада примарна трака са Пајтон 3 подршком.
Пут преласка са 1.x гране на 2.x грану је омогућен кроз 1.1 и 1.5 издања која су померила подразумеване ОРМ и језике шаблонирања да се уклапају са оном која је коришћена у серији 2.x. TurboGears тим је јасно ставио до знања новим корисницима да је 2.x будућност, и да је 1.x само одржаван због погодности постојећих корисника.
Током 2011. главне вође програмера TurboGears-а су разговарале са пројектом Pylons-а да удруже снаге са њима и са Repoze.BFG програмерима око новог уједињеног пројекта назван Pyramid. Због некомпатибилности са претходним верзијама којим би овај корак изазвао, и гарантованог TurboGears да ће бити поуздана платформа на дуже стазе, тренутни тим је одлучио да сарађује са Pylons пројектом на свему могућем само да TurboGears језгро не буде базирано Pyramid-и.[6]
Будући развој, Пајтон 3 подршка и унапређења брзине су се догодиле у грани 2.3 коју је доживела потпуну преписку TurboGears језгра задржавајући компатибилност претходних верзија са постојећим апликацијама, од тог издања TurboGears је имао своје језгро уместо чињенице да је био базиран на Pylons фрејмворку.[7]
Током 2.3 серије фрејмворк је експериментисао са такозваним "минималистичким модом" који му омогућава да делује као микрофрејмворк де факто смањујући зависности од десетина до само 3 и позиционирање TurboGears-а између Flask-а и Django-а у ружи Пајтон фрејмфоркова за његове циљеве, јер циља да буде способан да скалира од микро-фрејмворка до пуног фрејмворк стека зависећи само од чињенице да је TurboGears2 или tg.devtools пакет коришћен.