Well, I have just finished a three-day introduction course into the Zope 3 environment. Me and my colleagues from the company got very curious about Zope 3 and hired someone to give us a crash course.
First of all, I must write some assumptions because things will go a little bit tendentious while I want to amuse myself while writing this as well as find some answers, proving myself I am deadly wrong.
1) I want to note that I have about some few years of Java experience, MySQL etc. Since this spring I have started to work in Python, more precisely Zope 2 and Django. I could affirm that still I am a beginner in this language, I am not that “pythonic” in thinking and practices. But still I like Python and I wish use it, even that I miss sometimes those explicit data types declarations while passing or returning things in Java.
2) I haven’t got the opportunity to find (positive)/do benchmarks, my affirmations are purely drawn while asking this guy and while google it and my ~6 months experience with Zope 2.
3) I admit that Java still sucks for website development, but more than Zope 3? 🙂
Now, let’s get back to business…and please excuse my sarcasm
I had asked my self a question:
“- How the hell am I going to store 6 millions of records inside ZODB?” And shared with the teacher.
He pointed that I could use an alternative such as PosgreSQL and MySQL.
First observation is that if I would do this then I wouldn’t need Zope 3 anymore, wouldn’t I? Then I would choose Django. To me, storing half of information in ZODB and half in MySQL seems like “duct tape” and that before even starting.
I have also learned that you could still use the 100s caches and more from Zope 2 on Zope 3 too. There’s memcache, varnish cache, squ…Then I said to myself “I haven’t even started yet and I would wrap it up in duct tape? Why the hell these all kind of caches and not simply serve static pages?”. Shared my tought and learned again that in rough moments, like spikes, you I could do that too, you could generate static pages for squid to serve and invalidate them every 5 minutes or you could load partial page and complete it with Ajax…Then I should have screamed “WTF, dude? This is freaking duuuuck tapeeeeee!”
This brings me to the real question … do I really need Zope for that? Short answer, NO. I don’t need it for my fictional yellow pages with 6 millions of objects. Django would fit fine. The presentation layer would need few templates, that’s all.
The irony is that while I work on the Java, people from PHP or Python keep asking persistently why I need that shit thing called EJB. Yuck! Python is so simple and fun, geez! Why write loads of XML, write interfaces, W*H*A*T the hell is that soup? Tried to explain what an real application server is, what is a transaction, isolation, Portlet API, moving to what server you want. Bla bla bla! Java sucks and that’s that!
Well, now while looked over Zope 3’s ZCA there’s a small smile to the corner of my mouth.
Interfaces, Adapters, viewlets, adnotations, Events, Templates, Skins, more Interfaces etc. are making EJB 2 look like a small little naughty kid licking his popsicle. Everything is decoupled, fully dacoupled … from reality. You can do anything there, at what cost? Is there anything “pythonic” in there? I certainly don’t think so. Seem to me Java style (or OO style) all day long, without the statically-typed feature of Java language, they implement interfaces and ‘implements’ notion, btw.
There are two things I am thinking about.
1) Zope 2 was the right answer at the right time to the weak link from Java world JSP. I liked Zope 2 concept since then and I will use it. For small-medium sites (homesites, blogs, university sites etc. is ideal) it’s even more feasible than Django. ZMI is so flexible that lets you fix things while you’re sunbathing. No SSH, phone to root@localhost etc. I love ZMI and clients are satisfied and like you when you carry your toolcase with you on vacation.
2)With Zope 3 I started to love old ZMI even more. Zope 3 is the wanna-be enterprise-grade application server having that old grandpa called ZODB which you have to CPR each morning, pack it and ressurect it. I read somewhere that Zope 2 was abused to do enterprise-like application, I agree. But the problem in Zope 2 is not the framework (fully) but also the really slow transactional ZODB. The most funny one is that you delete something from it and actually the file grows in size having the transaction saved. So it only knows to grow (at a rate of about 160 KB/transaction). How would you feel when the garbage man picks up the garbage from your door but leaves few bags behind the house?
Where does Zope 3 fits? For a blog site would look like investigating a wooden spoon with a tricorder while for enterprise would look like a old Dodge on a German highway. Where !?
Thinking in money, paying the rare breed of Zope 3 consultants or having to learn a framework that makes Alfresco, Django a breeze, sounds frightening. What for? To be able to transmute my sexual fantasies into code via zope.Interface?
I asked about community and according to teacher and Google search (yields for ‘alfresco’ vs ‘zope 3’ vs ‘django’ a rate of 3:1:9), it seem to be somewhere underground working with Zope 3 like assembly line of the T-model of Ford preparing to conquer the world.
Last I had one question, I wanted to see an enterprise-grade portal powered by Zope 3.
I know how Plone is performing, I pray for my colleagues every morning. They try to squeeze every drop of Plone’s blood to make the site work at a reasonable annoyance level.
Of course I haven’t had one presented so I have started my own little investigation right from the devil’s den (http://www.zope.org/Resources/ZopePowered/index_html?b_start:int=0)
Any site bigger than university site or local news? Some are down, some moved to PHP (WTF??)
Anything magic? I let you judge that.
Until then, I’ll pass on this one. Thank you.
While I was writing this I remembered Sean Kelly and his presentation http://oodt.jpl.nasa.gov/better-web-app.mov .I would like to hear his expert oppinion on Zope 3 and faster web application development.
Cheers.
Reference: