473,804 Members | 2,145 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Pros/Cons of Turbogears/Rails?

First, I don't intend this to be a flame war, please. Python
and Ruby are the only two languages I'd willingly work in
(at least amongst common languages), and TurboGears and
Rails seem roughly equivalent.

I'm much more knowledgable about Python, but that's a minor
issue--I've been intending to learn more Ruby anyway.

Here are the pros and cons that I'm aware of and consider
important:

Turbogears:
+ SqlObject allows working with the DB tables without
using SQL itself.
+ Likely to be faster because as far as I'm aware, Python
is significantly faster.
+ Easy access to other libraries (such as the Python
Imaging Library) that Ruby, being a relatively newer
language, doesn't have equivalents to.
+ Built-in default SQLite makes it easier to set up?
(as far as I can tell, Ruby requires MySql by default--don't
know how easy this is to change.)
+ I find the templating system somewhat cleaner; code in
py: xml namespace allows pure .html templates, instead
of equivalent of .rhtml files.

Ruby:
+ More mature system. More stable? More features?
+ Much better documented. This is a biggie.
+ Built-in Rubydoc system would make documenting the
system easier. (IMHO, developers almost always
underestimate the need for good documentation that
is written along withe the system.) Is there a
Python doc system that has received Guido's blessing
yet? D'oxygen would seem an obvious choice.
+ Better coordination with Javascript helper code?

I was initially leaning towards Rails due to maturity,
but the most recent version of TurboGears seem to have
fixed a lot of the "ad hoc" feeling I got from previous
versions. But I'm still very much up in the air.

Thanks,
Ken

P.S. If I wanted to provide an image by streaming the
file data directly over the connection, rather than by
referring to an image file, how would I do that? I'd
like to build code that would allow images to be assembled
into a single-file photo album (zip or bsddb file), and
so can't refer to them as individual image files.
Aug 27 '06
42 3889
On 8/31/06, BJörn Lindqvist <bj*****@gmail. comwrote:
On 8/31/06, Jorge Vargas <jo**********@g mail.comwrote:
On 31 Aug 2006 08:24:29 -0700, Adam Jones <aj*****@gmail. comwrote:

I believe that is the most important part of TG, taking the best of
the best, and letting the framework adapt and morphe.

for example noone plan to move to SA, 0.1 came out a couple of people
took and look and like it, then 0.2 was "mature enough" so people
started thinking about the migration. after that some code was made
and now we have TG with SA, eventually it will be the default.
Same with templates, kid is really weak at generating non-xml, it has
a plain text serializer but the input must be xml so that's overkill.
So a new template frontend (chettah was born).

Someone ones said on the mailing list TG is the Ubuntu of web
frameworks, and I think I'll add and you can strip down the kernel and
it wont break :)

But that is not really true. If you use Cheetah instead of Kid, you
lose out: No widgets,
that is not correct all widgets have a template attribute which yes
it's kid but replacing it is as simple as changing it's value to a
Cheetah template.
no auto-generated code and the (incomplete)
that is not correct, the only part I can think about is not having
default templates, which are just a demostration/sample app. other
then master.kid I don't think any of the others are used, and the
concept of master.kid doesn't exists in cheetah I think,

if you are really concern about this please create pasteScript with
the chettah default templates and I'll make sure it gets into the
trunk as the sqlalchemy autogenerated code did.
documentation won't apply anymore (it assumes Kid templates ofcourse).
actually no, you get a dict of values into your template, now if your
talking about teaching how to use the "other templating engines" then
I suggest you read their docs, because at that point TG changes
nothing (except 2 or 3 variables that are populated by TG into the
templates)
If you use SQLAlchemy instead of SQLObject, no identity framework,
not true it was commited together with the support for SA 0.2
no administrative tools (tg-admin sql, CatWalk etc)
ok first tg-admin sql is just a wrapper around sqlobject-admin so the
lack of that tool is actually a lack in SA.

about Catwalk and model designer they where created to work with SO,
in fact they are so couple that probably a new tool will be written.
and no documentation.
yes we had many troubles with that we have went from one system to
another but we settle with rest and are going to use moinmoin for a
while until docudo is ready. all the docs are being integrated there
and as we have said there wont be 1.0 until we have lots of docs.
If you use prototype instead of MochiKit... I have no idea what
happens
MochiKit is the most decouple part of the project you can include
almost anything as long as the javascript doesn't collide with
eachother (for example there was a problem with prototype and MochiKit
used together a couple of months ago)

and using another webserver than CherryPy isn't possible right
now, I guess?
there have been some initiatives (experiments mostly about it, and
docs about it on trac) and they work although changing CP is the most
challenging part and I don't think anyone involve with the project
wants that, although you are welcome to try, if X becomes a
replacement for CP we'll migrate to it. all that needs to be done is
write the method/paths logic and make X handle dictionaries as return
values.

you may as well make your own smash up of tools if you want to replace
all components
a couple of emails below you said you just wanted to say that there is
no infix replace and I never said it was like that I said if you want
to change it go ahead the framework wont stop you like happens with
RoR or Django.

at last I dont' agree with you that making the framework support more
things makes it more complex, TG design is genious in that part for
example all template plugins (which are small package define a small
set of variables (actually a class, or abstract class or interface,
whatever you want to call it.)
http://www.turbogears.org/docs/plugins/template.html so after that the
rest of the code doesn't cares about which render is actually going to
be use.

and that's why the same TG app can render with more then one
templating engine at the time. in fact you can have the same method
render with 2 different engines if you may need it.
In fact, if you decide to replace so many modules that TurboGears
depend on, what do you gain in using TurboGears at all? It seems like
the TurboGears developers have a lot of work to do, (and a lot of
documentation to write) if they want to make their framework as easy
to use as others (ie: Django) that takes a more holistic approach.
TurboGears more seem to be like emacs than Ubuntu - infinitely
customizable...

In the future both Rails and TurboGears will probably be great. But
since someone mentioned Rails moving to YARV, and TurboGears moving to
SQLAlchemy and Markup, it seems to me that they are both in a state of
flux and not quite ready yet.

--
mvh Björn
--
http://mail.python.org/mailman/listinfo/python-list
Sep 1 '06 #41
fuzzylollipop wrote:
Paul Boddie wrote:

In various open source circles, the mere usage of 1.0 may indicate some
kind of stability, but not necessarily maturity, or at least the desire
of the developers to persuade users that the code is ready for them to
use.

nope in GENERAL usage, 1.x means that the developer is designating a
version that is feature complete and stable.
Please note the distinction between "stable" and "mature" - these are
not quite the same thing. Django, Rails and Turbogears may be at or
approaching 1.0, meaning that their developers regard them as being
stable (ie. no showstopping bugs), but that's not the same as being
mature. Moreover, the developers of all those frameworks will most
likely not stop at 1.0 but start working towards 2.0, possibly creating
quite a different product.
I never ever mentioned comparing version numbers between differing packages.
No, but there are important psychological factors at work when choosing
and interpreting version numbers: do you go for ABC 0.9, XYZ 1.2 or PQR
7.1? What about the newly announced XYZ 2.0 - is that a safer choice
than its 1.x predecessor?
MY POINT was the developers of Rails JUST RECENTLY decided that it was
ready for general consumption compared to all the PREVIOUS Rails
releases.
That judgement call may be true, but they haven't exactly been reticent
about getting people to download and use it before now.
And NONE of these frameworks has been used to power anything along the
scale of what I work with on a daily basis.
I can believe that. Do you have any success stories to share?
And speaking from experience, autogenerated "Active Object Pattern"
frameworks dont' scale. And Rails is no exception. It didn't work 10
years ago when all the ORM vendors were selling ridiculously price
"point and click" database application builders, what makes people
think it will now?
My feeling was that any object-relational mapper that (supposedly in
this case) dictates how you're supposed to design your database
automatically rules itself out over a vast territory of existing and
new applications. Having seen the EJB army march themselves into a
swamp, my feeling is that most such mappers seem to be an increasingly
complicated excuse not to learn SQL.

Paul

Sep 1 '06 #42

ke************* ***@sbcglobal.n et wrote:
I was initially leaning towards Rails due to maturity,
but the most recent version of TurboGears seem to have
fixed a lot of the "ad hoc" feeling I got from previous
versions. But I'm still very much up in the air.

Thanks,
Ken
I've found that familiarity with Windows in the Ruby/Rails community is
less than in the Python/TG community. Ruby/Rails seems to have been
mainly *nix until fairly recently.

Sometimes the Windows version of a module or tutorial will lag
significantly. (ldap comes to mind.) Sometimes Windows-oriented
questions get pretty short shrift along the lines of: "Perish the
thought!" or "Why would you?" instead of serious treatment.

It's not a deal-breaker and neither community is perfect in this
respect. I now work mostly with Ruby/Rails, but I did Python/CherryPy
for quite a while, and that's my impression.

Ron

Sep 1 '06 #43

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
7644
by: Fred | last post by:
Not much expertise on XSLT and trying to understand it's uses when creating apps in VS.NET? If I wanted flexibility on the UI (View aspect of M.V.C.): - How does it compare with creating business components that can be consumed by WebForms, WinForms, mobile devices, etc? Is it even fair to compare the such technologies? - How about for cases when you need to display dynamic elements on the form/grid (as compared to knowing data elements...
2
2826
by: scott | last post by:
Hi, Just wondering what sort of problems and advantages people have found using stored procedures. I have an app developed in VB6 & VB.NET and our developers are starting to re-write some of the code in stored procedures (im advocating encryption of them). When deploying an application however stored procedure seem to add another level of complexity to installation. In future we also plan to have an basic ASP app with some of the...
1
5963
by: Aspersieman | last post by:
On Wed, 05 Nov 2008 08:35:23 +0200, 3000 billg <billg3000@hos.twgg.org> wrote: Hi Excellent choice :)
0
9595
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10603
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10353
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
10099
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
9176
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7643
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6869
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5675
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
3
3003
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.