OT: Website CMS

CLIFFORD ILKAY clifford_ilkay-biY6FKoJMRdBDgjK7y7TUQ at public.gmane.org
Mon Aug 24 18:39:18 UTC 2009


On 23/08/09 09:36 PM, Rajinder Yadav wrote:
> I am trying to decide on a web framework to use to redesign my
> personal website with so I can use it to build a community site. I
> have heard of Drupal, and lately I heard about Django from Clifford.
> 
> It seem like Django would provide more power and flexibility and look
> like a relatively lightweight framework to work with? I have to admit
> I'm not a fan of Python, this is totally coming from ignorance from my
> part about Python. As a result I am somewhat biased from learning
> about Django.


If you're ignorant about Python, on what basis did you decide that you
don't like it? If you say "enforced whitespace", I'll be sure to bring
tar and feathers to the next TLUG meeting in which you're in attendance. :)


> I also started to look at Ruby on Rails as a framework to consider.
> 
> Right now Django and RoR seem to be the front runner for me. I
> personally like Ruby's clean syntax and get it being a C++ developer,
> so my bias is leading me down that part.


I considered Ruby when I was considering various Python-based frameworks
a few years ago. I opted to stick with Python for a few reasons.

1. Python was/is more mature. It's seen as a fringe language by some so
if Python is on the fringe, Ruby is even more so. I didn't want to be
that far on the fringe.

2. Python had better Unicode support at the time. Ruby had no Unicode
support to speak of.

3. The English Ruby docs weren't as extensive or as good as the Python
docs I found. I suppose if I could read Japanese, that might have helped.

4. I found Ruby's syntax to be a mishmash of Python and Perl, with the
worst parts of both.

Having said all that, had I not started using Python first, I may have
been happy with Ruby.


> I would like to hear from others who might be using Drupal, Django or
> RoR about the benefits and shorting coming they have had to deal with
> for their CMS framework. I want to make a decision after trying to
> collect all the facts before I commit myself to learning a script
> language + framework.


Since you already know how to program, I don't see how this is such a
big commitment. Asking others for their opinions on this is like asking,
"What kind of tea do you like? I'd like to try your favourite kind."
Actually, I have a story on that. A few years ago, I bought some tea
that I loved from Nasr Fine Foods, which has, sadly, been going downhill
for a while. I never saw it there again. A few months ago, I saw the
same tea at Arz Bakery, which is attracting disaffected Nasr shoppers,
but it was the same story when I returned to buy some more. I asked the
manager if he could order more and he told me that he couldn't but
recommended some Lebanese brand, Horse's Head Tea, a name evocative of
the infamous scene in The Godfather. He told me it was a very
high-quality tea and that it was very good. It might have been a
high-quality tea but I thought it tasted awful. Clearly, some things are
an acquired taste.

We have been developing with Zope/Plone, Django, and Drupal for years
and have recently started using Liferay Portal. They all have their
strengths and weaknesses.

Zope/Plone is very good for document management types of applications
but it is big and complex. There is a huge legacy of (ugly) Zope 2 code
that Plone has to support but it's been transitioning to cleaner Zope 3
code. One of the areas that Plone has caused no end of grief to the
uninitiated is that Zope allows for TTW (Through the Web) development.
You can create Python scripts in a web formm that you can save in the
ZODB (Zope Object Database). Newbies get bitten by that one because they
don't realize that TTW development makes for unmaintainable sites.
Zope/Plone is often criticized by its detractors as being the J2EE of
the Python world. No doubt about it, it's big and complex but Zope
developers often say that Zope is the web framework that every web
developer will eventually implement, badly. I don't think there has ever
been a case of a remote Zope exploit.

Django can do just about anything but it doesn't pretend to target end
users. It is a developer's tool. That is not to say that you have to be
a super developer to do anything with it. The clincher for me to take a
closer look at Django was a blog post written by a designer who didn't
know much about Python, much less programming, and how he created his
own blog using Django. It is simple and lightweight and with a
relatively small amount of code, you can create a site quickly. With
Django, we build up from a thin layer and it is quite easy to understand
and control all points in between the time you receive an http request
to the time you return a formatted page. Upgrades can be as easy or as
difficult as you make them. Django would be great even if it weren't
written in Python. Python just makes it even better.

The only downside of Django, and this is more a marketing thing than any
basis in fact, is that there is nothing to show an end user when you
install Django. It doesn't take long to get to the point where you can
show something though. Django's admin interface is not only
well-designed, it's very clever. There is no stock skin for people to
see something so that they can believe it's real. With Drupal, you have
a zillion "themes" from which to choose, most of which people don't end
up using on production sites with a big emphasis on design anyway but
they serve as a useful placeholder and marketing tool. To get from no
default skin in Django to a well-designed front end is often less work
and affords greater flexibility than creating a Drupal theme so that's a
saving grace.

Drupal is also very versatile, though it can also be quite complex. It's
better-suited to social networking types of applications. One of the
things that I think attracts people to Drupal is that it gives the
*illusion* of productivity. When you need to do anything remotely
complex, actually, sometimes even simple things, they can be maddeningly
difficult. With Drupal, quite often, we're trying to figure out how to
remove functionality from an "everything but the kitchen sink" product.
"Module mashup" can be a nightmare when you have the equivalent of DLL
hell in Drupal modules and like PHP itself, there are far too many
modules that do the same thing, albeit with minor twists. This results
in ridiculous situations like installing one module causes a completely
unexpected and bad side-effect elsewhere and you'll have to install yet
another module to correct that side-effect, or resort to some ugly hack.
Oh, upgrades between major releases are also problematic. Drupal also
supports TTW development, which has the same problems on Drupal as it
does on Plone. There is far too much code mixed up in the model and
presentation layer for my liking. Despite all that, we use it for
certain problem sets, or where the client specifically requires it.
Drupal is good despite PHP, not because of it.

Liferay Portal purports to be an "enterprise open source" portal
product. So far, the only thing "enterprise" about it that I've seen is
that there is great dependency on the vendor behind it for support and
updates, the docs are inadequate, it's big and complex, and it's
dependent on the language that bureaucrats love, Java. There is good
money to be made in such products though because they have the word
"enterprise" associated with them.

With any of the above, you can get the first 80% of many problems solved
quickly, though not the same 80%. The last 20% can range from "a bit
more difficult" to "you can't get there from here". Only you know if the
80% a given product covers is the 80% that is really important to you.
For your use case, I'd guess Django, some of the Django-based "CMS"
products and social networking apps, Drupal, Pylons (Python-based),
TurboGears (Python-based), or Ruby on Rails could be appropriate. No one
else can make the decision of which is the right one for you.


> One of the things Clifford brought to my attention was about the
> community support and help in making a consideration to use a given
> framework. IF there is no one to answer your questions on the IRC /
> Forum then it's going to make for a poor experience.


I'd add documentation to that mix. Django has some of the best
documentation I've seen. Drupal's documentation, by contrast, leaves
much to be desired. Plone's and Liferay's docs are spotty. Liferay's
community is iffy, too. Django, Plone, and Drupal all have very active
communities, with the first two having a higher quality of participation
than the third. By the way, forums suck.


> Your thoughts are welcomed.


Try them and use what you like.
-- 
Regards,

Clifford Ilkay
Dinamis
1419-3266 Yonge St.
Toronto, ON
Canada  M4N 3P6

<http://dinamis.com>
+1 416-410-3326

--
The Toronto Linux Users Group.      Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wiki/Mailing_lists





More information about the Legacy mailing list