99 Frameworks of Code Out There

» 16 February 2007 » In PHP, Rants »

People, enough with new frameworks already. I know you might be lusting after Rails for some reason and want to have the fame, the glory, and the dancing girls of DHH, but are we not going to be satisifed until Sourceforge is filled with the object-oriented diarrheal remains of our overblown egos and delusions of grandeur? I counted no less than 3 separate announcements about new PHP frameworks today, just by scanning the front pages of phpdeveloper.org and planet-php.net. As well intentioned and technically robust as these efforts might be, do we really need yet another patterns-based abstracted MVC-driven buzzwords-filled concoction? Look at the list of existing PHP frameworks, are they really all that different? Why start another one? Why? How long are we going to be suffering from the NIH syndrome? Oh, the humanity…

If you have an itch that only frameworks can scratch, then my advice, should you choose to take it, is to find an existing mature framework that gets as close as possible to your requirements and work on it. Add features, fix bugs, write documentation, promote, contribute, and improve in general, but resist the urge to spew out a torrent of code into our environment simply because you thought of an oh-so-clever moniker and need to stick it onto something. Please, no more new frameworks.

Trackback URL

  1. andrei
    Chris Hartjes
    16/02/2007 at 6:55 pm Permalink

    Andrei,

    I saw those same announcements and rolled my eyes. Have programmers learned NOTHING?!? Not Invented Here is a dangerous trap that soothes the ego and kills productivity.

    I’m starting to think the whole point of my talk about frameworks is that you should be taking the IDEAS from them and create something with them, not building your own. Stop the insanity! No more new frameworks! Especially ones that copy Rails.

  2. andrei
    Ed Finkler
    16/02/2007 at 7:53 pm Permalink

    Thank you.

    I admire the work of folks like the PRADA devs, who really went in a different direction with their framework.

  3. andrei
    Jeff Dickey
    17/02/2007 at 12:19 am Permalink

    Agreed, but…

    The only effective way to combat this infinity of seemingly idiotic idiosyncrasy is to have Yet Another Volunteer Project Group(TM) which:
    * comes up with evaluation criteria;
    * evaluates the current lot according to those criteria;
    * periodically tests the newbies and the updates;
    * blogs about the results.

    I figure that, to do a reasonable job, it would take 5-7 good people working together. Anybody interested in/qualified for joining such an endeavour, please feel free to email me (jdickey AT seven DASH sigma DOT com).

    What I’d like to see is a bunch of magazine-style reviews, where there’s a blurb talking about overall impressions, fit and finish, etc., and ratings for different criteria (design/code quality, user/developer/internal documentation, suitability for different sizes/types of apps).

    This sort of thing has been bugging me for a while; I’m looking for frameworks (probably plural) to use for a couple of different things; I know there’s already too many frameworks out there and I don’t want to write Yet Another – not even for the (Yet Another) “Safe Cross-platform Web Development with xAMP” book that I’m plinking away at…my philosophy there is more along the lines of “stand on the shoulders of giants to blaze your own trail”.

    Hope to hear from folks…and thanks for the rantspace.

  4. andrei
    Rich Buggy
    17/02/2007 at 1:30 am Permalink

    I’ll stop using my own framework when someone can show me a minimal framework that is quick and believes it leaving stuff to PHP. See my top 6 framework gripes at http://www.buggy.id.au/2007/02/17/top-6-framework-gripes/.

  5. andrei
    Lukas
    17/02/2007 at 1:31 am Permalink

    Amen Brother!

    It just that when you start with someone elses framework. You curse the first 3 months without stopping, whereas if you start your own you feel all gooey inside the first 3 months. Of course when you do your own thing you will realize after 3 months that nobody cares and you need to do all the boring stuff as well.

    Anyways I am not taking my stab at morphing symfony into what I want. Expect a flurry of patches soon. Hopefully they will at least accept the patches, that let me overwrite internal classes via plugins. That way even if they do not like where I am going with things, I can at least maintain those changes cleanly outside.

  6. andrei
    Dennis
    17/02/2007 at 2:35 am Permalink

    Yep! Zend should also stop developing their framework, too 🙂

  7. andrei
    Clay Loveless
    17/02/2007 at 3:55 am Permalink

    @Jeff: Of course, such a committee would have no impact. In order for something like that to have an impact, you’d need to base the effort on the notion that PHP developers who are launching new frameworks today are rational individuals who are really just looking for the best solution.

    The reality is, in my opinion, is that new frameworks today are generally launched by impatient, naive glory-seekers.

    These Limelight Wet-Dreamers have no true understanding what it takes to build a quality framework AND build a community of users around such a framework.

    The same people have difficulty learning to leverage the benefits of existing frameworks, because their learning process is continually interrupted by their raging egos shouting “YEAH, BUT **I** WANT A CULT FOLLOWING.”

    As a result, existing frameworks are difficult for these people to learn. Therefore, the only rational solution (to them) is to launch their own “better” framework that they’ll understand top to bottom (without the sweat of learning someone else’s system) and that will surely quiet the raging inner egomaniac.

    The notion of the kind of ink you’re talking about to educate people about existing solutions would actually result in _more_ wanna-be DHHs launching frameworks. “Look at all the attention these guys are getting! That should be ME and MY work.” etc, etc.

    How do I know this? Been there, done it, but woke up before releasing something silly. 🙂

  8. andrei
    Regin
    17/02/2007 at 5:34 am Permalink

    Eventually the PHP developers will gather around a few frameworks. I think the reason why new frameworks keeps appearing on a weekly basis is that no PHP frameworks so far have shown the strength to gather enough support/Buzz!

    It’s called competition and it’s really not a bad thing…

  9. andrei
    FlorentG
    17/02/2007 at 6:24 am Permalink

    I am developping my own framework too. Not open-source, but it doesn’t matter at this point.

    Why am I making my own ? Why didn’t I take an already fully developped, fully tested one ?

    Answer : because all frameworks I saw were just trying to copy RoR. I tried to look behind the nice “create a mysql-driven CRUD in 10 seconds.”

    Things started to get less clear. What if I don’t want to use Mysql or any database ? What if I want to mix XML + Mysql + static files ? What if I want to create reusable modules that would be hosted along the framework, not along the site ? What if I want a copy of the framework and its module installed once on the server, and not with every websites ? Why should I need to write a lot of config files and stuff just to display a single HTML Hello world ? How is URL-Rewriting handled ? Is the framework fully HTTP-compliant (Restfull) ? Can I generate easily XHTML-WCAG-valid code, or does the framework generate some garbage code ? Is the framework’s code native PHP5 code, or is there some slow-backward-php4-compatible code ? Does it need special php configuration ? If someone not very experienced in PHP needs to code some functionnality, how hard is it ? etc. etc.

    See, I had so many questions, so many requirements that I didnt found, that I went my way…

  10. andrei
    csouza
    17/02/2007 at 6:37 am Permalink

    So true…

  11. andrei
    Clay Loveless
    17/02/2007 at 8:09 am Permalink

    @FlorentG: You obviously haven’t looked at Solar. Good luck with your framework — sounds like you have a lot of work to do.

  12. andrei
    Lukas
    17/02/2007 at 8:12 am Permalink

    Sounds like you did not look very hard.
    But yes I find it quite absurd that so many frameworks are copying the very limited idea of mapping a request to a single action in a single module. Thats one of the things I am hoping to modify in symfony with a plugin. Actually friend of mine has already implemented the basic framework for such a plugin. Anyways .. I am getting offtopic.

  13. andrei
    Stephan Schmidt
    17/02/2007 at 8:44 am Permalink

    @Clay: I’m one of the guys who launched Stubbles. Does this make me a “impatient, naive glory-seeker”? If you think, that it does, then maybe you should take a look at the work I’ve done in other projects. The last I need is some glory, this buys me nothing.

    It would be nice to look at the code or ask people, why they started a framework before writing such comments.

  14. andrei
    Clay Loveless
    17/02/2007 at 8:49 am Permalink

    @Stephan: I’m familiar with your work on other projects, and grateful for it. I’m surprised that a developer as talented as yourself and as experienced at working/playing well with others as you seem to be has chosen to participate in Yet Another Framework instead of contributing your talents to improving existing projects.

    These days, with the number of quality PHP frameworks out there that have real uptake and real communities, NIH syndrome and/or glory-seeking are the only reasons for starting frameworks. No need to ask why when the reasons are so clear.

  15. andrei
    Pádraic Brady
    17/02/2007 at 10:10 am Permalink

    I’m a huge fan of frameworks – I use Zend Framework, and some symphony every day and I love both. The ZF is the core of at least two of my current projects.

    I just find it a bit funny that in handing out so much complaining over another framework startup it’s getting quite a chunk of PHP blogosphere exposure. I also find it surprising that the critical attention isn’t founded on anything better. What folk do in their own free time, is…well..up to them – power to the people. If they manage to contribute a few useful classes, which can be mixed’n’matched with other frameworks than that’s open source at work and kudos. Bemoaning additional and possibly useful code would be best left to a time when concrete conclusions could be made.

    Maybe if we stepped back a while the Zend Framework could have been aborted. It’s a YAF like anything else announced this year. Oddly, I see a lot of people using it and finding it useful. I don’t see why that can’t be replicated by another alternative.

  16. andrei
    Clay Loveless
    17/02/2007 at 11:14 am Permalink

    @Padraic: Why should it be replicated? Surely talented PHP developers have better things to do that reinvent the wheel, despite what hundreds of wheel-reinventions indicate.

  17. andrei
    Mikey
    17/02/2007 at 11:53 am Permalink

    @Clay: I thank you very much for the diagnostics of my reasons for starting Stubbles. And thank you very much for telling me that I have better things to do. Thought it is my decision what to do with my PHP skills… but maybe I should just ask you the next time. You seem to know my personal needs and reasons better then I do.

  18. andrei
    Pádraic Brady
    17/02/2007 at 1:32 pm Permalink

    @Clay: Why wouldn’t it be replicated? The Zend Framework is just about at its 0.8 point preview (if Bill Karwin hasn’t dropped it already) and remains a work in progress. It’s not that far fetched someone could arrive nipping at their heels.

    Maybe some talented PHP developers enjoy creating new frameworks ;). It might sound like a waste of time reinventing a wheel, but who can judge another’s motivations except the individuals themselves? Maybe they have specialised needs, maybe they want a slice of fame and glory, maybe they think everything else sucks, maybe its the sheer fun of creating something appealing on a shoestring budget in their free time. So long as the personal motivation is high, frameworks will continue to increase in numbers. PHP is big enough for quite a few cooks.

    The fact is people are going to do exactly as they please unless its in their better interest not to and that discouragement doesn’t seem to be coming any time soon.

  19. andrei
    Andrei
    17/02/2007 at 1:45 pm Permalink

    @Padraic: Of course people are free to do whatever they want with their free time. They can film YouTube videos, make Escher reproductions out of Legos, invent t-shirt folding machines, rewrite PHP in Logo, or whatever else. I have no problem with that. More power to them. What I do have a problem with is them putting up their work in a public forum and basically saying, “Behold, for this is what I have wrought. There has not been a creation like this in the history of man. Why, I had to invent my own action controller from scratch. Go forth and use this.” I mean, they clearly must feel that their framework is in some way better than most of the other ones out there, right? This is an obvious example of Dunning-Kruger or Lake Wobegon effect.

    And it would be much better if they contributed a few classes that can be used standalone or alongside existing framework. But that’s not the case here.

  20. andrei
    Stephan
    17/02/2007 at 1:58 pm Permalink

    @Andrei: From the stubbles.net homepage:

    “When using Stubbles, it does not force you to use all of its packages, instead you just use the packages you like and combine it with PEAR, the Zend Framework or any other PHP-based framework.”

    So we definitely do not say, that our work is the best. To use our classes, you need to include the class loader and some base classes. We combine it with PEAR classes at work and it works without any problems…

  21. andrei
    Pádraic Brady
    17/02/2007 at 3:49 pm Permalink

    @Andrei: The problem with labelling every new framework in such a generic negative way, and holding such an opinion of their developers is that its nothing less than presumptuous. Maybe if you read the source code a little, and waited for a general opinion of it to emerge, you could some valid ammunition with a little more reality, and fewer badly aimed insults.

    Open source is a melting pot of free roaming ideas and individuals who should be encouraged to get out there and contribute not sliced and diced the moment they are reported on by an independent RSS aggregator by people who can’t be bothered to look deeper. I thought we already had Digg on that front…

  22. andrei
    Andrei
    17/02/2007 at 5:03 pm Permalink

    @Pádraic, Please read my post again, specifically the last paragraph. I did encourage people to “get out there and contribute”. Maybe not in the way you expected, but contribution and community participation is not limited to starting new projects when there are existing good ones that could use help.

    And how do you know I haven’t dug in a little deeper and read the source code? I could throw the “presumptuous” stick at you as well. The frameworks are the template engines of these days: everyone has to make one of their own, no matter that only 10% actually end up being worth a damn. And before you say, “But you made one!”, yes, I did, but Smarty was actually revolutionary in its approach, and it’s still widely used 7 years later, for what it’s worth. So give me some benefit of the doubt here.

    P.S. Apologies for not spelling your name correctly before.

  23. andrei
    Dennis
    18/02/2007 at 2:11 am Permalink

    Hmm… Would hate to insult anybody… But would Smarty be successful if written a year ago? Would Zend Framework be successful if not supported by Zend? This is the marketing issue. Thousands of developers are not _evaluating_ these two as the “big brothers” say to use them.

    You cannot neglect the fact that some guy may invent something revolutionary today. I agree that setting up a home page and saying, “All you knew before is nothing! I finally created the best framework!” is wrong. Instead, if a framework really is offering great features and is really well thought out and can really make things better, should we cry: “STOP! Dont’ do that as nobody needs that!”?

    My point is that everybody is free to do what he wants, even polluting blogosphere with his news. What matters is the quality of his creation. Even if that developer with his YAF created just one site with it and supports it, that YAF is really Yet-Another-Good-Framework (at least for him).

    And last, I can bet that if I were given say $100000 to spend on promoting my YAF, it would become “the best framework ever created”. There are frameworks used by tens of people only but they are good. Just they lack publicity. On the other hand, there are tons that are conceptually bad, but they seemed easy on the first sight that’s why they have 1000s of users.

    My opinions, I might be wrong. But back in 2004 I created one of the first PHP5 frameworks, and I was soon offered a job for just inventing it and my _paid_ job would be… developing it. I dropped developing it in 2005 (was actually offered a better job), but that company uses it extensively till now. There are just 5 maybe 6 developers who also use it 9which I know). So, is it bad? Or good? Maybe it would be good if it was publicized properly? Or is it bad because nobody uses it?

    Of course, I understand, that the labour should be applied where it’s most needed. Like creating an extension around ICU to bring _normal_ i18n support to PHP long before PHP6 will be released 😉

  24. andrei
    cocq
    19/02/2007 at 8:14 am Permalink

    Following opinion of Jeff Dickey, i also think that there are a number of frameworks because there are not a set of criteria to evaluate one framework against others? But the NIH is not the only other reason:
    – you may need a lot of time to do your apprentiship of a framework, and this may lead to the decision to develop your own framework (you are sure it is convenient for your needs, and since you develop it, you do not need to learn links and hierarchy between classes/files)
    – there are not a common architecture of the frameworks (subdirectories to separate template, classes, etc.), which implies that you may not integrate legacy development within the framework

    Nevertheless, I am sure it is better to reuse existing framework, so, with some friends, we build a list of criteria to characterize them. Criteria list includes facilities to install it, respect of standards, facilities to learn it, number of developpers, number of users, support efficiency, and so on. General idea is to build a database with users feedback in order to to give a way to compare framework from these feedbacks (http://www.guidephp.com/). We call the french PHP community to fill the database, but there was a few feedbacks… To improve the way to propose the criteria list, we are updating it by using QSOS which is a “method designed to qualify, select and compare free and open source software in an objective, traceable and argued way” (http://www.qsos.org/?lp_lang_pref=en). And, since it is an international idea, we will translate the list.

    Concerning the use/development of a framework, i think a good way is to a mix two things: develop a high-level framework, taking into account your development usages, legacy development, etc. ; implement functions by reusing existing components. So, (i) you do not need to learn in deep a software architecture and links between classes in an existing fully developped framework, (ii) you do not implement fonctions from scratch and take benefit from existing components/libraries.

    What dio you think about?

    Regards,

  25. andrei
    John
    19/02/2007 at 12:18 pm Permalink

    This is a fascinating debate, thanks for raising the post and provoking the debate, Andrei!

    I’m afraid I am also in the “Not Invented Here/Re-inventing the Wheel” camp on this one, as I am presently writing my own framework in PHP (for my own specific needs, I’m not looking for glory here ;-). When I am (constantly) asked by my friends about why I am going to all of this trouble, I refer them to the following URL:

    http://www.design-ireland.net/alpha/controller/view_article.php?oid=00000000070

    I actually had to write an article justifying my position, and even then I can also see the value of the counter-arguments on offer.

    Ultimately, I think the current large sway of MVC frameworks in the PHP community is very healthy because:

    1. It is making better PHP programmers. According to the Java/.NET programmers, PHP developers can’t crasp complex OO and design patterns. Clearly this is not the case given the vibrant frameworks on offer…
    2. In comparison to Ruby, which basically only has one framework, in PHP we have 50+, therefore a lot more choice. Naturally not all of these will last, as natural selection will ensure that only the strongest survive into the medium term.

    I agree though that there are better things to spend your free PHP development time on these days though, if you are thinking about the greater good of the community, like testing suites, build tools, continuous integration tools etc.

    Just my 2cs.

  26. andrei
    Nate
    19/02/2007 at 5:26 pm Permalink

    “But I don’t care if it’s a pony, I want a *unicorn*!”

    I just love all these ‘there’s-no-framework-out-there-that-meets-my-needs’ comments. It’s easily some of the best entertainment I’ve had in… well, the last 2 hours at least.

    Newflash, people: at this stage of the game, there aren’t too terribly many new ideas when it comes to building frameworks, and not to stomp on your ego or anything, but you probably don’t have any of them.

    Instead of whining about how no framework supports all your precious edge cases, start using one that covers *most* of what you *actually* need *most* of the time.

    You’ll not only save all that time you’d have spent building your ego framework, but you’ll also save all that time you’d have spent whining.

  27. andrei
    Nate
    19/02/2007 at 5:39 pm Permalink

    Btw, I think what’s needed here is education.

    If the people starting new frameworks knew what it was *actually* like to develop a good general PHP project, they certainly wouldn’t be doing because of ego.

    The amount of sh*t that I take on a daily basis outweighs the thanks I get by orders of magnitude.

    Every once in a while I get a ‘thank you’ email out of the blue, but for every one of those, there are ten or more ‘I-want-a-pony-ers’.

  28. andrei
    Dagfinn Reiersøl
    20/02/2007 at 2:58 am Permalink

    Building your own framework may be an excellent idea if you’re just catering to your own needs. You can make something lean; not having all the bells and whistles you don’t need makes it much easier to maintain.

    On the other hand, believing that that kind of framework will be useful for everybody else–or that it’s easy to make it useful for everybody else–is madness.

  29. andrei
    John
    20/02/2007 at 4:00 am Permalink

    I think you make a good point Dagfinn, to me an existing framework is the same as someone else’s legacy code, although they may have built it with generalisation in mind, it was still built for their own needs.

    Lets not forget that Ruby on Rails was built for Basecamp, a single application, but I’m guessing was generalised later on into the development.

    The successful adoption of a framework by other developers is based on the same things that effect the successful adoption of legacy good, namely the quality of the documentation, the extendability of the design, the availability of the original designers to provide support and answer questions etc.

  30. andrei
    Nate
    20/02/2007 at 7:31 am Permalink

    Rails was extracted from Basecamp. Extraction is not equal to making something generalized; it’s a byproduct of well-written code.

  31. andrei
    Rick
    21/02/2007 at 11:59 am Permalink

    @john: Having a lot of choices doesn’t necessarily make for a lot of “better” choices. Of the 50+ PHP frameworks you mentioned, I would guess that less than 10 of them are very stable/useful, and a smaller percentage of those will be maintained for long.

    My problem with the current situation, and I’m guessing Andrei’s as well to some extent, is that our resources are being spread too thin. Instead of improving and consolidating these ideas, we have a bunch of tiny groups racing to implement the same thing over and over.

  32. andrei
    john
    22/02/2007 at 2:29 am Permalink

    @Rick, I agree that the current surplus of frameworks is not maintainable in the long term, as I said natural selection will cull the weaker ones. The situation will stabilize over time.

    I just think that competition is healthy as it drives projects to constantly improve. In the Ruby world, Rails is basically acting as a monopoly with no competing frameworks. Now its a really good framework there is no denying that, but it is the only one for Ruby (that I’m aware of).

    @Nate, just making the point that when DHH sat down to make Basecamp, did he start to write Rails from day one, or did he start writing an application (Basecamp) which he later extracted parts from to form a general framework (Rails)? In other words, I don’t think he planned Rails from the offset, it just evolved naturally over time.

    Is this a good approach to designer frameworks: design an application first, then extract the framework from that? Maybe, worked really well in the case of Rails.

    For most of the current PHP frameworks I think the approach is different, in that they are designed as stand-alone frameworks from day one, with no particular application in mind. Is this approach more effective? I’d be interested to know what other people think.

  33. andrei
    Paul
    02/05/2007 at 7:41 am Permalink

    “Smarty was actually revolutionary in its approach” – Sorry!? What amounts to basically a language embedded in HTML? Well done, you reinvented PHP.

  34. andrei
    freelancer
    02/07/2008 at 4:08 am Permalink

    Paul, Smarty is still widely used, and it indeed allows you to separate templates from php code (the thing my customers like the best). IMO it is ideal for small to middle projects.

  35. andrei
    Burt
    14/10/2014 at 8:12 am Permalink

    Greate post. Keep writing such kind of info on your blog. Im really impressed by your site.

Additional comments powered by BackType