« Migration Complete | Main | This Post is for Eric »

September 22, 2004

I Hate Zope

I keep thinking, gee wouldn’t it be great if I had some kind of glorious content management system for storytotell.org? I usually go and look at Zope. That’s what I did today. Looking at Zope makes me exhausted. Then I think, it would be less effort to just bang the electrons together one-by-one, and manually pump them out the ethernet device, than to try and figure out what the fuck is going on with Zope.

I blame them, the cornholes, and for many reasons:

  1. You shouldn’t make a web-edited programming language depend on proper tabs.
  2. You shouldn’t make your technology so complex, you can’t explain it in English in a sentence or two.
  3. Do you really need all these different template systems?
  4. If you’re going to have a topic/detail interface, let your detail view actually have details I care about.

1. Tabs

I love Python, it’s one of my favorite programming languages of all time. I think it’s asinine to depend on it for a web-based CMS where I’m expected and encouraged to use your scheisty admin interface for everything. Now, they don’t depend on it so much, because you can still edit the templates and so forth via FTP or WebDAV or whatever, but it’s still annoying.

2. Inexplicability

Let’s take Apache Tompcat as an example of what I mean. What does Tomcat do? This is what the Tomcat page says:

“Tomcat is the servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed by Sun under the Java Community Process.

Tomcat is developed in an open and participatory environment and released under the Apache Software License. Tomcat is intended to be a collaboration of the best-of-breed developers from around the world. We invite you to participate in this open development project. To learn more about getting involved, click here.”

Lots of buzzwords here, like “servlet” and “servlet container” and JavaServer Pages. Pretend I don’t know what they mean. I might think, I know what PHP and ASP are, so I might figure that JSP is like them (and I’d be right). I’m not sure what a servlet is, but it sounds like a little server, so I might think that it is some sort of scheme for making a bunch of Java classes and having them deal with page requests (and I’d be right). Note the rather laid-back description about it being open-source and easy to pitch in. Let’s look at what the Zope front page says:

“Zope is an open source application server for building content management systems, intranets, portals, and custom applications. The Zope community consists of hundreds of companies and thousands of developers all over the world, working on building the platform and Zope applications. Zope is written in Python, a highly-productive, object-oriented scripting language.”

Let’s analyse this. Look at the prominent phrases: application server, content management system, intranet, portal, custom application. The only two phrases there which seem to have any real meaning are “content management system” and “portal.” E.g.: C lets me make custom applications. The UNIX kernel is an application server. Those expressions are simply too vague to give me any fucking clue what they mean, and that makes me suspect they don’t know what it means, or they don’t know what their system does. I know what an intranet is, and it has nothing to do with the web and everything to do with networks that aren’t reachable from it, so that’s just plain wrong usage. If I didn’t know what a Wiki was, I might not be sure what a content management system is, and frankly, every site I’ve seen lately that said it was a portal was one of those evil advertising sites that take over mis-spellings of popular domains. Let’s get more nitpicky: every open source project thinks it’s of critical importance that the source is open, and they all way over-emphasize the contributors and supporting companies angle. I’m sure 500 people have contributed something to Zope, but like every other project there probably aren’t more than 20 people who regularly check-in code and have direct CVS access. I’m sure there are at least 100 companies that have used Zope in some context, but like every other project there are probably only two or three that are really committed to it (whatever “committed” means in a commercial context).

3. Templating

Zope comes with two template systems, and both of them are awkward. DTML is less HTML-like though it uses tags, and their new system called Zope Page Templates is much less powerful, but much more HTML like.

I don’t understand the fascination with templating systems. I read an excellent article about a year ago asserting that PHP didn’t need Smarty, which everyone is all ga-ga over, because PHP is a templating system, and that all that systems like Smarty can do is reduce the power without improving the readability. If I make a PHP file using proper PHP syntax, it’s no trouble to work with, even in Dreamweaver, which comes with a built in concept of PHP:


<? foreach ($list as $i): ?>
<tr><td><?= $i ?></td></tr>
<? endforeach; ?>

I think even a non-programmer can figure out what’s going on here, and it’s certainly easier to understand than, say, magically having tags repeat if you put a weird foo:bar=”repeat: (i)” thing in one of ‘em.

Fact: no web designer is so stupid as to have no concept of PHP or programming. Web programmers have this bizarre and quite wrong impression that programming is really hard, that web designers can’t code at all, and that web designers need to be completely protected from the code. They also seem to think that because programming is hard, design is hard, when both are really not that bad and both can be learned even if you have no inborn talent. The fact is, if you simply collect all the data they want at the top of your script into a pile of variables, any web designer can manipulate it into looking how they want. It’s easier if they’re using PHP than if they’re using your strange template system, because your strange template system isn’t as widely used, is obtuse, and doesn’t make programming-sense. It doesn’t make design-sense either, but it should at least make programming-sense, because programming can be learned, and your random weirdness cannot. Your system almost certainly makes things more difficult, because your system isn’t going to account for every little code issue that will come up in the presentation, such as sorting, counting, summing, and simple text manipulations. Better to just let the designers have the big-boy tools, and because the big-boy tools make sense. The designers can ask you for help or read a tutorial if they get confused. How many PHP tutorials are there online? How many good web design tutorials are there online? I think maybe coders have invented this distinction because they want a gap to exist to protect their own careers, or because design was too hard for them to learn and they wanted to pawn it off on someone else.

I would think only a good designer would truly need the level of separation that these tools seem to want to provide, but I also think a good designer is a lot more likely to know PHP than a bad one. What kind of web designer could stay away from code forever! So it seems clear that Smarty, like Java, is a tool for the mediocre, because the mediocre need as much complexity as possible to help them waste time and account for their lameness. (No offense to any of my friends who are forced to use Java or C# by economic factors)

4. Make your details matter

Suppose I’m at the Zope page, and I see a cool link like, for example, Zope CMF. I look at CMF and I think, CM probably stands for Content Management, so this might be something I’d like to have. I click on the link, and I get taken to this page. The text says:

“The Content Management Framework (CMF) for Zope from Zope Corporation provides a powerful, tailorable platform for building content management applications.”

Next is some guys email, and then a breakdown of every version of the CMF ever released. But I don’t give a fuck about the release three years ago, I want to know WTF it does, and if I want it. “Powerful, tailorable platform for building content management applications” reuses almost all of the terminology or intent of the vague and useless Zope description itself, how can I tell what this provides that Zope doesn’t out of the box? To get that information, I have to click on the Information link buried on the right underneath the “development status” and poorly distinguished in a UI sense from the things around it. (By the way, “development status” is a load of crap anywhere you see it. Unless they used Zero Defect Programming, it’s bug-ridden crap, and you’re going to use it anyway.) Also, any link entitled “Information” is guaranteed to go to a page that should have been on the page with the stupid Information link. I came here for Information, you twat, not another link. To quote Doc O’Leary: “I think the WWW is currently more hype and fluff than quality content. If you’re not part of the solution, you likely don’t have a link to it either.” Clicking on the aforementioned stupid link, I get this:

“The Zope Content Management Framework provides a set of services and content objects useful for building highly dynamic, content-oriented portal sites. As packaged, the CMF generates a site much like the Zope.org site. The CMF is intended to be easily customizable, in terms of both the types of content used and the policies and services it provides.”

That’s all the text about what the CMF does. Services and content objects that… do what he said it did on the other page. Oh, it makes a pile of drivel and shit that looks like the regular Zope page: busy, full of non-information, and poorly-structured. That’s what I want. And it’s customizable, in terms of type (duh) and the policies and services (duh). I guess that means I can turn on and off the search bar.

The rest of the document is just who to contact, how to install it, and where the examples are. There is basically no online information about what this module does in plain English or why I might want it, but at the same time it has such a generic name I have to conclude it’s wildly powerful and great. Just like Zope. This might be their flagship module for all I know. It must be great, because I can’t tell what the fuck it’s for, and it has a great logo. Sounds like Microsoft reasoning to me.

I’ve had a love/hate relationship with Zope for many years now, but I’m not falling for it anymore. I know what it claims to do and I know that it’s supposed to be rad and the shit and all, and it’s supposed to solve all your problems for you. But I think in the past three years, if it really did anything, they would have dropped some of the buzzwords. I haven’t seen a page that proudly announces it was built on Zope. They also don’t need the asshole mentality of, if you don’t know what it does, have a beginner’s tutorial and be sorry you don’t already know what it does. I own two Zope books, and every page reads like the out-of-touch professor explaining The Way Things In The Real World Are. One of ‘em even had a line in it somewhere about how Zope looks complex because it was made by geniuses to solve every problem. If that were true, it wouldn’t be so hard to figure out what it does, now would it?

Look at the Cocoa library. It can do most everything you would ever need in a desktop app—a far richer problem domain in actuality—yet it is small looking and fairly simple. It also relies on a lot of design patterns, but it’s all fairly orthogonal and can be learned in steps. Cocoa also is partitioned neatly into little categories: you have your Mutable and Immutable objects, you have your App Kit and your Foundation, you have your Views and Documents and Controllers. Cocoa is for the neophyte, but it grows with you because it’s flexible and based on easy concepts. With Zope, everything is for the sophisticated user, but nobody really helps you bridge the gap between simpleton and sophisticated. And to quote roughly some bastard on John Shipman’s website, complex things that evolved from simple things are good, complex things that started out that way are not.

When you think about it, their website says a lot about them. They like having lots of text links that lead nowhere except to more text links. I went there with some idea of what I wanted, clicked three times, and realized I would probably have to install Zope and several modules before really arriving at any idea of whether or not it could do what I want. That’s unnacceptable. Nobody’s going to go through the trouble of installing Zope, setting up Apache to forward to it, setting up a cache so you get decent performance, and learning two or three templating systems and (possibly) a new language, just to run your portal.

Argh, goddamn I hate Zope. Anybody want to buy my Zope books? :D

Posted by FusionGyro at September 22, 2004 11:25 PM

Trackback Pings

TrackBack URL for this entry:
http://www.clanspum.net/~fusion/blog/admin/mt-tb.cgi/15

Comments

http://www.skotolsen.com/cgi-bin/portfolio/portfolio.cgi?direct=2002&img=

Posted by: eparchos at September 23, 2004 10:23 PM

Post a comment




Remember Me?

(you may use HTML tags for style)

Want HTML? Use Textile instead.