Ramblings of a Code Monger

The weblog of some guy named Cameron Cox

The Zend Framework sucks, and why I’m moving to Rails.

with 6 comments

Updated December 17th: For those who think this is rails/ruby vs PHP, you’ve missed the point.I said it, the Zend Framework sucks, I really tried to give it another chance, but in the end, I got frustrated, said a few not so nice things about someone’s mother, and I gave up, again. I was hoping things had gotten a slight bit better, but you know what? Screw it, I’m going back to ruby, and rails, and merb, which is the new thing, and looks awesome.So, why you ask did I become frustrated, and say not so nice things about someone’s mother? Well I could probably name reasons until I’m blue in the face, but I’ll give a few that are pretty much ones that’ i’ve noticed people I talk to mention, or at least agree with me on.

(1) Rushing = Bad, unless you’re a football team

Seriously, 1.0 was in my opinion a huge farce. It felt half-done, and extremely rushed. No fault on Bill’s part, he did the best and then some with the resources available. However, I 100% blame Zend, they had a lot riding on the 1.0 Release. After all, It is their name thats gonna have mud on it if they didn’t deliever, after all the hype into how 1.0 would revolutionize creating applications with PHP.Congratulations, You revolutionized something all right, a big ol stinker. I actually hate dealing with PHP now, well, I never exactly liked it, since PHP itself is another huge farce, but I won’t touch that one (I’m already on thin ice with some people now, most likely =D). Features like partials, and layouts: missing and non-existant. Sure, they’re in trunk now, but they’re about 1.0.3 releases late.One other thing, 1.5? You must be joking? There is no excuse to jump from 1.0.3 to 1.5.0, partials and layouts are not that big of a change. Get bent.

(2) Code Quality… not so great

Ok, so I realize not everyone is an expert, and that there is community contributed code in the framework, which is fine. But it’s certainly no excuse for not going back and cleaning said code up. For that matter, it’s also no excuse for having standards written out, then flat out ignoring them. If protected and private variables and methods are to be prepended with an underscore, then fucking prepend them an underscore. Consistancy, it’s a very important thing.Another thing, and this is a gripe of its own about Zend_Cache, which, on its own, is another giant farce. What the hell is with hard-coding which backends and frontends I can use? Security? It must be, which honestly, is the dumbest thing i’ve seen. Guess what, its a caching system, if someone is using it to run bad code, chances are I have a lot bigger issues at hand. Also, The Sqlite backend is crap; actually, all of Zend_Cache, is crap. Rewrite it, seriously.

(3) Ok, you blockhead, pick a standard convention, and enforce

Seriously, convention is king, look at rails, pretty damn successful, and oh hey, they preach one standard, that works. Flexible, somewhat, but the general rule is, you work with the framework, bending it do your will only results in looking like a fool, and a huge idiot in front of the internet (  cdbaby anyone?).Also, claiming it’s not the “PHP” way, is a load of crap. The “PHP” way is fundamentally broken, it’s the reason why people can write something without understanding what the hell they’re doing. Which results in a lot of bad code, and a lot more idiots claiming to be “experts”. Quit giving these idiots an inch.

(4) To the one person who says “Do something about it”

I’d love to, however I have better things to do then propose changes, and patches and pray they don’t get steam-rolled by some committee because it doesn’t fit in with their marketing guidelines, or god forbid, breaks BC.

(5) Do I have a point?

Probably not, I’m just venting, so if you don’t like what I have to say, I think you’ll live.

Written by Cameron

December 15, 2007 at 8:39 pm

Posted in Uncategorized

Tagged with

6 Responses

Subscribe to comments with RSS.

  1. Funny (and sad at the same time) part is that you actually have a point

    Piraatje

    December 18, 2007 at 2:28 pm

  2. Ja, this makes a lot of sense. We were all hoping ZF to be the Rails for PHP, but bad planning and hasty decisions made it into nothing more than a library.

    Why not settle for a good set of conventions? I don’t see how it would stand in the way of using ZF as a library. Only the MVC parts are glued together as it is, and could benefit so much from a few simple guidelines.

    Ninja-tje

    December 18, 2007 at 3:06 pm

  3. Hey Cameron, I’m the new lead for the framework team at Zend. I wasn’t around for the 1.0 release, but I hope you see a lot this stuff addressed in the 1.5 release.
    In any case, I’m really glad I came across your blog. We always need more feedback, especially as a corporate-backed open source project. It would be stupid of us to put ZF out there as an open-source project in name and license only; we can always use more two-way communication with the community. And we especially need to pay attention when the words ‘Zend Framework’ and ’sucks’ are used so often in such proximity. ;-)
    That said, I disagree with you on most of what you’ve said about ZF. :-P I come from a background in Java/JEE and Ruby/RoR. I have to say that there are many things I appreciate about both of them, and I firmly believe that these things are not necessarily mutually exclusive.
    Java obviously has more libraries available, but beyond (or largely due to) that fact, Java is an excellent language for integrating with almost any remote or legacy system. But simplicity is not built in to Java or JEE.
    This is where RoR really comes in to its own. Ruby as a language has a set of features that make most developers drool, and RoR has used it to create a great framework that amazes with its grace. All the same, RoR is not the tool I would pick for enterprise integration.
    (Why do I care about integration so much? Because in my experience most of the value of enterprise applications is tied up in their ability to integrate with other systems, and- yes- we need to pay attention to enterprise customers because they largely pay the bills.)
    So, we’re trying to do something a bit new with Zend Framework. We want to build a system that’s as easy to use as RoR, but can handle all those freaky use cases that come up in the enterprise. Obviously, we’re not fully there yet on either count. But I think we’re still on the right track to deliver on both of these goals; we’ve chosen to build up to the most common use cases instead of building down from them. That means it’s going to take us a bit longer to get there, but in the end we should have a framework that can easily fill the gap between Java/JEE and Ruby/RoR with the best of both worlds.
    I can’t really express an opinion on the 1.0 release- I didn’t make the decision, and I wasn’t part of the community at that point. I can tell you that we’ve spent a lot of time listening to users in deciding what goes in to 1.5. We’ve got a powerful forms implementation with a few nice AJAX perks, we’ve got a CLI tool that should really reset expectations on what can be done at the command line, and all kinds of PDF, Zend_Lucene, Identity 2.0/LDAP auth features, in addition to a whole lot of community-driven improvements and even more web services. I’d personally love to hear your feedback on my own CLI proposal: http://framework.zend.com/wiki/x/wK.
    BTW, I don’t think we ’steamroll’ anything based on marketing (although BC is important to us- we do want to bring the latest features to everyone without their having to rewrite their apps, after all), but if you ever change your mind about contributing to Zend Framework, just send me a mail with a link to your issue or proposal. I’ll make sure we take a good look at it in the next round of reviews. That said, no preferential treatment for any proposals; some are better off ’steamrolled’, as you put it. ;-)

    Thanks, and best of luck with whatever framework you’re using.
    ,Wil

    Wil Sinclair

    December 22, 2007 at 6:32 am

  4. Wil,

    I don’t think he’s wrong about everything.. I don’t want to say “Quality” is bad, but consistency is definitely an issue.

    A quick example at this… look at all of the Zend classes you can extend, such as Filter / Validate, View, Cache (Actually, can’t do anything with cache) by adding in your own name spaced classes. All of these classes use extremly different methods to register namespaces & paths of code it can use. Zend_Cache can’t even USE any custom code. It gets to be a little bit of a pain in the ass to be honest with you.

    In the case of Filter/Validate, it would seem you’d want to make these additions static, to apply to your entire application. But that’s not how it works, you need to register them for every single instance you make (Or you just need to manually initialize the classes you want to use, which doesn’t work as nicely).

    Initially, I thought the 1.5 release sounded like a bogus marketing attempt to make the framework more attractive to “corporate” types… You say it’s not, but when you look back and the hole Filter thing became an issue, it was marketing then that was driving the decisions. How do we know they aren’t now?

    Another big issue I think exists within the framework is open communication. By watching, it appears the Zend team just develops stuff and puts it in, or doesn’t use the proposal system right. Thomas’s proposals appear to be a case of preferential treatment (half complete proposals being accepted), and there was that entire OpenID issue (Zend working on a component behind the scene, and someone from the community doing the same thing, causing overlap because of miscommunication on Zend’s part).

    But anyways, Wil it appears your getting everything together. I’m glad you guys got the Form proposal in, and it’s cool your taking time to work on CLI tools (something I think is very much needed). Cleaning up the wiki was a stellar idea too ;)

    Regards,
    Eric

    http://thebigec.com/eric/

    December 22, 2007 at 6:38 pm

  5. Cameron,

    First of all, people have put a great deal of effort to build the Zend Framework, so at least show some respect.

    Second, if you have criticism, that’s fine. That’s even great: constructive criticism helps building better stuff. But the keyword is CONSTRUCTIVE! It means no “f”-words, but just to speak to the point: don’t like somethig? – propose an ALTERNATIVE – saying something is a total crap doesn’t help much.

    And third: I use Zend Framework, and I enjoy it a lot, as well as many others do. Maybe it’s not perfect (and what is?), but it’s VERY useful: it cuts the development times and helps you to produce a cleaner code. It’s extremely customizible and non-”invasive” at all due to the “Use At Will” approach. I thank the Zend Framework developers a lot for producing such a great framework.

    Stas

    Stas

    December 23, 2007 at 4:44 pm

  6. Wordpess is written in php; just if the language itself allows people to write bad code does not mean it is bad itself. I prefer this over the strictness of some language or framework that forces me to do the things *their* way. And sometimes I don;t realy need mvc or other super trendy patterns, I just let the creativity fly. You should not hate things that much, you’ll just get old sooner.

    moisadoru

    August 1, 2008 at 3:13 am


Leave a Reply

You must be logged in to post a comment.