Slashdot Mirror


Ask Slashdot: One Framework To Rule Them All?

New submitter ittybad writes "I work with a small web-based company, and, for some new web applications, we are looking to possibly change frameworks if it will be a benefit to our developers and our customers. We have experience with PHP's Symfony 1.4, and are not happy with what we are experiencing with Symfony 2.0. We have some Ruby guys who would love us to implement a Ruby on Rails solution, and our backend is Python powered — so maybe Django is the way to go. So, I ask you, Slashdotters, what web framework do you find to be the best and why? Why would you avoid others?"

287 comments

  1. Duh by masternerdguy · · Score: 5, Funny

    One tool to rule them all: Assembly.

    --
    To offset political mods, replace Flamebait with Insightful.
    1. Re:Duh by Ginger+Unicorn · · Score: 3, Funny

      the sharpened flint of programming tools

      --
      (1.21 gigawatts) / (88 miles per hour) = 30 757 874 newtons
    2. Re:Duh by khr · · Score: 4, Funny

      One tool to rule them all: Assembly.

      An Assembly Server Pages framework, HTML with embedded assembly for processing stuff?

    3. Re:Duh by Anonymous Coward · · Score: 0

      Nothing can be faster or more secure than embedding assembly into web pages.

    4. Re:Duh by BrokenHalo · · Score: 2

      One tool to rule them all: Assembly.

      Well, you could cut him a little slack: FORTRAN will probably be just fine. And yes, of course I'm aware that anything that can't be done in FORTRAN can (and should) be done in Assembly. And, of course, that if it can't be done in Assembly then it isn't worth doing... :)

    5. Re:Duh by KiloByte · · Score: 4, Funny

      That would go against the whole idea -- you're supposed to write to the network card's ports directly. The instructions you want are IN and OUT. You can do better than to use an existing inefficient IP or TCP stack.

      I guess some soldering iron monkeys will try to dismiss me for not going closer to the metal, though.

      --
      The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
    6. Re:Duh by Anonymous Coward · · Score: 0

      A unsharpened flint. A fine tool in the right hands but looking at it the first thing that comes to mind is beating your own brains out.

    7. Re:Duh by Smallpond · · Score: 5, Funny

      The questioner asked for the "best" framework without defining what best meant, so we can pick whatever criteria we want.

      Assembly is best if you want highest speed and smallest memory size but don't care about development time.

      Personally I would write everything in Perl, because my criterion would be highest job security.

    8. Re:Duh by GameboyRMH · · Score: 2

      You joke but Facebook has some in-house tool that converts PHP directly into x86 code, and then this is what actually runs when a page loads. I don't know what mechanism they use to pass the URIs to the executables but it would be most efficient for the http server process to do it directly, eliminating the PHP server entirely on the production site.

      --
      "When information is power, privacy is freedom" - Jah-Wren Ryel
    9. Re:Duh by larry+bagina · · Score: 4, Informative

      HipHop for PHP converts PHP into c++.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    10. Re:Duh by John+Courtland · · Score: 1

      Nah. At the level of abstraction you're operating at w/ asm you're not going to do too much damage if you cock up. With something like Lisp or Haskell, where you're composing compositions of abstractions of lazy sequences of whatever else... it gets easy to fuck a lot of stuff up really quickly.

      --
      Slashdot is proof that Sturgeon's Law applies to mankind.
    11. Re:Duh by GameboyRMH · · Score: 1

      Ah thanks, I hadn't heard of it in a while, didn't know Facebook open-sourced it.

      --
      "When information is power, privacy is freedom" - Jah-Wren Ryel
    12. Re:Duh by Anonymous Coward · · Score: 3, Insightful

      Assembly is best if you want highest speed and smallest memory size

      Until you realize that you're not better than a C compiler.

    13. Re:Duh by Anonymous Coward · · Score: 0

      Yeah, that makes a lot of sense, lets go back to writing cgi code in c.

    14. Re:Duh by Anonymous Coward · · Score: 2, Insightful

      Assembly is best if you want highest speed and smallest memory size

      Until you realize that you're not better than a C compiler.

      Until you realize that you're not better than a PHP interpreter.

    15. Re:Duh by GameboyRMH · · Score: 1

      It doesn't make sense for the use in this article but for Facebook and other hosts of popular services it makes a lot of sense.

      --
      "When information is power, privacy is freedom" - Jah-Wren Ryel
    16. Re:Duh by Anonymous Coward · · Score: 0, Informative

      Assembly is a very powerful and useful tool but it has many limitations. First Assembly is (in most cases) very limited as to what you can do with macros. And in the cases where the macros are sufficiently developed the language turns into more of a C language. The language also suffers from Namespace pollution, I have yet to see an assembler that handles namespace pollution in an elegant manner. This means that without a seriously well thought naming convention you could end up with unmanageable code fairly easily.

      Second Assembly is not portable. This means that you cant just write the code once compile and use it everywhere like in java. Nor can you just recompile for each architecture. So if your management decides to upgrade your servers without consulting you (Since many management teams know so much more than their programmers) you will have to recode everything, and if you have hundreds of thousands of lines of code good luck. This problem can also arise if the hardware your currently using is discontinued.

      The problem with PHP is that it doesn't differentiate between the webpage and the GCI code. Depending on what your trying to do it may still be your best option. But you need to look at your options. Java is best for portability, it can be transferred from system to system without recompiling. if your looking at needing that behavior java is the way to go. Next is C a very powerful language, does everything you will ever need it to do. It's also very fast and has a low memory foot print, making it ideal for imbedded systems where you don't have a lot of memory. (I can also almost guarantee you that C is supported on almost any architecture you will ever use, it's usually the first language implemented after assembly) If your using low end servers or plug servers this may just be your best option. Next is C++ this supports OO, and aside from a few minor differences it's basically the same as java with the exception of needing to recompile for every architecture. C++ uses more memory but is comparable to the speed of C on more modern systems. C++ often relies on having few cache misses to make up for it's code that would normally be slower than C. C and C++ are identical for most practical purposes if you don't use OO. As for Python, Ruby, and Perl. I don't really see a need for them unless your plan on using a more mathematical language such as Lisp, it's probably better to stick with the more mainstream languages as they may increase the stability of your systems and allow you more flexibility. (and often don't require as much retraining of new hires as they were probably taught these in school.)

    17. Re:Duh by Anonymous Coward · · Score: 1

      Until you realize that you're not better than a C compiler.

      Then you must be a really poor programmer indeed.

    18. Re:Duh by billcopc · · Score: 1

      I wouldn't mind compiling all my production PHP code, if it means it will run an order of magnitude faster.

      --
      -Billco, Fnarg.com
    19. Re:Duh by Anonymous Coward · · Score: 1

      Laugh. I'll one up you. You want job security...

      write the front end in COBOL and the back end in APL. You could train a replacement develop the skillset by the time they find a recruiter that knows what they both are. And unlike Perl, APL is write-once-read-never no matter what style you use...

    20. Re:Duh by larry+bagina · · Score: 1
      When DEC transitioned from VAX to Alpha, they converted the VAX Macro assembler to the VAX Macro compiler which translated the VAX instruction set to Alpha.

      Of course, you could also write assembly for llvm, jvm, pcode, or .net cil.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    21. Re:Duh by Anonymous Coward · · Score: 0

      I guess some soldering iron monkeys will try to dismiss me for not going closer to the metal, though.

      You definitely could implement a web server in silicon, which would have the advantage of being blazing fast, consume 1/100 -/1000th the power of a software based server doing the same thing. (This being the reason Jobs wanted to stick a fork in flash, since 50% of flash is serving as a container for various software codecs which suck battery life. vs hardware codecs which are a lot more efficient 1/100 advantage)

    22. Re:Duh by ptx0 · · Score: 0

      or he could have adapted his operating system to provide hooks for the hardware-assisted decoding of these codecs.. oh wait, no, because that would be intelligent.

    23. Re:Duh by Anonymous Coward · · Score: 0

      You should give it a try!

      They yanked out some special PHP instructions that would have made a 1:1 translation gnarly, but the metrics they were quoting were pretty impressive. And if Facebook can write in-house PHP while avoiding those instructions, I daresay it's probably "practical."

    24. Re:Duh by Tyger-ZA · · Score: 1

      I'm writing CGI code in C right now

    25. Re:Duh by BrokenHalo · · Score: 1

      Nah. At the level of abstraction you're operating at w/ asm you're not going to do too much damage if you cock up.

      ???

      Errr, you *DO* know what assembly is, don't you? Hint: go have a look at Wikipedia or something. Another hint: Assembly simply gives you more memorable mnemonics for machine-code instructions. No abstraction at all, just bare-wire programming made a little easier.

    26. Re:Duh by John+Courtland · · Score: 1

      You don't say. I have written either assembly or machine code for at least 6 different architectures. It takes a LOT of work to really fuck something up in asm. Of course it takes a lot of work to do much of anything in asm, period. What I'm talking about is expressive power. In one line of Lisp, you could be dealing with so many abstractions, macros, etc. that it's easy to accidentally create intractable computations and not even realize it.

      --
      Slashdot is proof that Sturgeon's Law applies to mankind.
    27. Re:Duh by kayubi · · Score: 1

      I prefer just 0 and 1's You just need to train monkeys to flip switches on and off. It scales incredibly well.

  2. Sounds Like Cake is the way to go by Ash+Vince · · Score: 5, Informative

    If you have an existing base of PHP and Ruby developers then Cake sounds like the way to go to meet them both in the middle so everyone can pick it up fairly quickly. Cake is based on many of the same concepts as Ruby on Rails so everyone should be fairly at home. It is still PHP though so it won't force all your dev team to write better code as much as RoR will. The flexibility of a PHP base can be a plus though unless it is put in the wrong hands.

    http://cakephp.org/

    Personally I am struggling through my first Zend Framework Project at the moment but I am not sure I would recommend it as it has caused me a few too many frustrations. I do worry that this will just knock all the other PHP Frameworks into the long grass though as it is by the same people as PHP. I am starting to see quite a few job offers coming my way now I have added Zend Framework to my CV so it does seem to be very popular for some reason.

    I just noticed you also mention having a Python powered backend, this may change my advice above but it does bring about another question: Do you really need so many different technologies? Surely this must drive up your costs considerably as you need developers with a much wider skill set or more of them.

    --
    I dont read /. to RTFA, I read /. to offend people in ignorance.
    1. Re:Sounds Like Cake is the way to go by Anonymous Coward · · Score: 0

      Note that Li3 is the next version of Cake, so of you choose Cake, consider going directly to Li3 instead.

    2. Re:Sounds Like Cake is the way to go by telekon · · Score: 3, Insightful

      It is still PHP though so it won't force all your dev team to write better code as much as RoR will.

      I sincerely hope this isn't being listed as a plus for using Cake. If "language/framework/methodology n forces me to write better code!" is ever heard as a complaint, the source of said complaint is in the wrong field.

      That being said, Ruby and/or Rails doesn't force anyone to write better code. I have seen some crawling horrors perpetrated in Ruby that have kept me up nights. They do facilitate the writing of better code quite nicely. Whereas PHP doesn't do anybody any favors. Ever. PHP WTFs are generally of the "never sleep again" variety. The Cthulhu of WTFs.

      --

      To understand recursion, you must first understand recursion.

    3. Re:Sounds Like Cake is the way to go by truthsearch · · Score: 2

      I have to disagree with the Cake recommendation. I've tried many frameworks and watched presentations from some of their creators. Using Cake you'll often end up writing just as much code as if you didn't use a framework at all, which defeats one of the reasons for using a framework in the first place.

      At my company we use a custom PHP framework. But if your backend is Python anyway, I recommend Django. It's especially good if your front-end is just a CMS. Even if it's much more than that, Django leaves you open to do as much custom code on top of it as necessary without getting in your way.

    4. Re:Sounds Like Cake is the way to go by InsightIn140Bytes · · Score: 1

      I have to disagree with CakePHP too. It's a horrible mess. I looked into the subject earlier, and there are many better PHP frameworks. I went for CodeIgniter because it was fast to pick up and I would never use anything else for PHP again. I used my own framework for years, but it's much better this way.

    5. Re:Sounds Like Cake is the way to go by Xest · · Score: 4, Informative

      Hmm, I don't mean to sound horrible, but if you're finding Zend difficult then I'm not sure you're at a skill level high enough to give a useful answer to this question.

      In the world of PHP, Zend is about as good as it gets as an MVC framework, the rest have too much cruft that either require you to work to their own obscure bastardised definition of MVC, or hack around their forced methods of doing things in an ugly way.

      As for my personal opinion, well, it's hard to give a single option, there isn't enough information in the original post. Frankly if they're using Microsoft hosting platforms only then C# and ASP.NET MVC are the best choice, if they're using a combination of hosting OS' and want something that's rock solid and will scale well then Java with something like Spring is the best bet, if they're more of a just get something working attitude and are not too fussed about the kind of code consistency and testability then stick to PHP and Zend, although even that's getting quite good in terms of testability now too.

      If Zend knocks all the other frameworks into the long grass it's not because of any association with the PHP developers, it's because the other frameworks can't even get the simplest things right, like implementing MVC properly and because they're developed in the same inconsistent haphazard manner as PHP itself historically has been. If however you really really do need something higher level where much more is done for you, then Drupal is about the cleanest, most modular, and most well written that I have found.

    6. Re:Sounds Like Cake is the way to go by Literaphile · · Score: 2

      NO - Li3 is NOT the next version of Cake. It is a COMPLETELY different projection written by COMPLETELY different people. It forked away from Cake a long time ago. Please stop spreading misinformation.

    7. Re:Sounds Like Cake is the way to go by burisch_research · · Score: 1

      To understand recursion, you must first understand recursion.

      I'll see your .sig, and raise you mine.

      --
      char*f="char*f=%c%s%c;main(){printf(f,34,f,34);}";main(){printf(f,34,f,34);}
    8. Re:Sounds Like Cake is the way to go by sapgau · · Score: 1

      +1 Please mod up... not all web development is done in PHP!

    9. Re:Sounds Like Cake is the way to go by Anonymous Coward · · Score: 0

      Personally I am struggling through my first Zend Framework Project at the moment but I am not sure I would recommend it as it has caused me a few too many frustrations. I do worry that this will just knock all the other PHP Frameworks into the long grass though as it is by the same people as PHP. I am starting to see quite a few job offers coming my way now I have added Zend Framework to my CV so it does seem to be very popular for some reason.

      Zend Framework 2.0 in now in beta http://devzone.zend.com/1935/zend-framework-200beta1-released/. It hope it is an improvement in terms of ease of use and learning.

    10. Re:Sounds Like Cake is the way to go by Bill_the_Engineer · · Score: 1

      I'll see your .sig, and raise you mine.
      --
      char*f="char*f=%c%s%c;main(){printf(f,34,f,34);}";main(){printf(f,34,f,34);}

      Nice obfuscation. Not exactly recursive but it is redundant!
      Your code depends on a quirk found in the older gcc compilers. Therefore if you want it to work on the newer versions you'll need to add an include in your .sig:

      #include <stdio.h>
      char*f="char*f=%c%s%c;main(){printf(f,34,f,34);}";main(){printf(f,34,f,34);}

      This message is sponsored by Mr. Buzzkillingworth as seen on TV.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    11. Re:Sounds Like Cake is the way to go by Anonymous Coward · · Score: 0

      Zend has the worst documentation I have ever seen. They give you code snippets then don't even talk about a relevant file for them. Debugging a Zend site is painful. Anything you try is evaluated by the framework and will complain that you don't have a Zend reference somewhere breaking the framework itself. I inherited some Zend Framework sites and they drive me insane. When I get requests to edit them I know it will be a tedious and slow day. A 5 page website requires over 3k files. Bloat, bloat, bloat = frameworks.
      Yeah, good luck learning it from their docs.

    12. Re:Sounds Like Cake is the way to go by Anonymous Coward · · Score: 0

      If Zend is as good as it gets then frameworks are in a pitiful state. Zend has the worst documentation of anything I have ever seen. Even on their documentation pages users are begging for explanations that make sense. MVC there is not enforced either - many times I find things in the model that should be view because the programmer was being lazy. MVC done wrong (and zend allows it) leads to trying to find something in 3 places or just randomly placed wherever. One of the things I dislike about Zend is that you can't even create a page without adding an ACL reference or the framework complains. Who are YOU program to tell me that I can't make a popup window without tying it into extra crap like loading the huge controller for no reason. Frameworks leave a bad taste in my mouth.

    13. Re:Sounds Like Cake is the way to go by onembk · · Score: 1

      I do worry that this will just knock all the other PHP Frameworks into the long grass though as it is by the same people as PHP.

      Sigh. Zend is just another 3rd party, they do not maintain the PHP language and are not it's rulers.

    14. Re:Sounds Like Cake is the way to go by Anonymous Coward · · Score: 0

      I used Zend a lot a couple years ago. The initial setup was frustrating, but once we got that working I found it very easy to work with.

      Dunno about more recent releases, but on the one we used Zend had completely punted on the M part of MVC. We ended up having to write our own ActiveRecord-ish abstract class and inherit everything from that.

    15. Re:Sounds Like Cake is the way to go by rev0lt · · Score: 1

      The two big problems with Zend Framework is that performance is not that stellar when using the default MVC approach (in part because of the complexity of the front dispatch controller and the view structure - it's being reworked on 2.0 AFAIK), and more often than not, the documentation is absolute crap. Oh, and there is the issue of Zend_Db not supporting multiple database connections - you know, when you have to load-balance you app to a backend or having a faster read-only db node just for reading.
      That given, you can easily override the base components so they do what you want - once again, the only downside is documentation. I've been working with Zend Framework since v1.2, and it has grown to a full-fledged, feature-rich library, and even if you don't like some design options, you are able to easily re-implement them yourself (plugin support and Zend_View comes to mind). The only thing I find missing is an event dispatcher, but the newer version (currently in beta) already has an implementation.

    16. Re:Sounds Like Cake is the way to go by justforgetme · · Score: 1

      they do have a cli on their website though lithify.me
      that must count for something!

      --
      -- no sig today
    17. Re:Sounds Like Cake is the way to go by Xest · · Score: 1

      But I'd argue again that those issues stem from PHP development in general, the whole language, much like the HTML5 spec cater to being able to do things in an incredibly awful way whilst still letting you get away with it. These sorts of technologies cater to the lowest common denominator of developer, the most incompetent kind and still let them build something that just about works.

      Despite this the point is with Zend that whilst you can develop bad code with it, you don't have to, whilst just about all other PHP frameworks force you to write bad code from the outset, because as I say, they've outright designed themselves against all known definitions of MVC and the like.

      When I said Zend is as good as it gets I was referring to PHP only. Things like ASP.NET MVC, and Spring are far far better, aided heavily by their related languages also following a paradigm of higher quality software development, rather than catering to the lowest common denominator like PHP.

    18. Re:Sounds Like Cake is the way to go by Xest · · Score: 1

      "The two big problems with Zend Framework is that performance is not that stellar when using the default MVC approach (in part because of the complexity of the front dispatch controller and the view structure - it's being reworked on 2.0 AFAIK)"

      That's more a PHP problem than anything, such levels of complexity can be dealt with fine in JIT'd platforms like C# and Java.

      "Oh, and there is the issue of Zend_Db not supporting multiple database connections - you know, when you have to load-balance you app to a backend or having a faster read-only db node just for reading."

      I can't remember the details as it was over a year ago now, but doing exactly this was extremely easy in I think it was 1.8 I was using at the time.

      Besides that though, if you want to build a highly scalable application then PHP is not the right technology anyway. Facebook had to completely replace the PHP interpreter for precisely this reason.

    19. Re:Sounds Like Cake is the way to go by rev0lt · · Score: 1

      Theoretically, you can build your own http server in PHP and have most of the advantages of the persistent resources and stateful behaviour. In fact, you can even run PHP in a JVM (Quercus) and reap some of those benefits without re-inventing the existing technology.

      AFAIK you can't have one Zend_Db adapter connecting to two different hosts. You can, however, use two Zend_Db adapters, but you'd lose the "magic" parsing of read operations - it won't be transparent to the application, unless you also create the glue code.

      What is a highly scalable application? An application that can scale horizontally? An application that can handle more requests/s than the other? Saying PHP isn't the "right technology" is a bit generalist, given that you actually have plenty of examples in the contrary. And even the metric is flawed - in many applications you'll have database problems long before your CGI-based "wrong tecnology" is actually a problem, and that applies to PHP, Perl (mod_perl or as CGI), Python (mod_python or as CGI), etc.
      I'm not saying you should use any of those languages instead of Java or C# - in fact, often are plenty of reasons to use Java or C# instead of those languages - but scalability isn't one of them. Your application either is designed to scale or isn't.
      I don't know enough about facebook architecture to say you're right. I do know they created a PHP "compiler" to decrease the load on the servers, and not because PHP couldn't scale. It's about doing more with less. I don't think their application suddenly stops working at 10 000 servers or something like that. Maybe they have legacy design issues that compromise the scaling of their applications to the current size. I don't see them running away from php or mysql.

    20. Re:Sounds Like Cake is the way to go by Ash+Vince · · Score: 1

      Hmm, I don't mean to sound horrible, but if you're finding Zend difficult then I'm not sure you're at a skill level high enough to give a useful answer to this question.

      I was stuggling yesterday with the nested arrays that you need to build to use the default form decorators. Also, note someone elses comments below about the documentation, it sucks pretty badly.

      If you are some sort of Zend expert can you recommend a decent book or two? I am a sucker for reading programming theory books on my way too and from work so an online option is not suitable for me as I live in london and travel on the tube (ie - underground railway with no phone signal) most days.

      --
      I dont read /. to RTFA, I read /. to offend people in ignorance.
    21. Re:Sounds Like Cake is the way to go by Xest · · Score: 1

      I'm not really an expert, but I didn't find it difficult to use and of all the PHP frameworks I've used I felt it was by far the cleanest. I read a Packt book when I first had to use it, I can't remember the exact name, it should be on their site, Zend Framework 1.8 or something at the time, not sure if there's a newer version. I didn't read it cover to cover either, so can't say how great it is throughout, but what I did read didn't really leave me any gaps.

      I did have a technical test for it recently for a job I went for that involved integration with Dojo too and though I've never used Dojo before I didn't find it difficult finding the docs I needed. I know they're not brilliant but I think part the reason I probably find it fairly easy is that I've used various other frameworks like ASP.NET MVC and Spring quite extensively too, so being comfortable with the MVC pattern and web technologies from a general perspective probably helped me a lot with jumping into Zend too.

  3. Drupal by stoolpigeon · · Score: 3, Interesting
    --
    It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
    1. Re:Drupal by bluec · · Score: 5, Funny

      Sure. And a chisel can be used as a screwdriver.

    2. Re:Drupal by stoolpigeon · · Score: 0

      Usually it is the other way around, but I think the comparison is unfair here. Drupal is more of a platform than a CMS. It's all a matter of how far you want to be on the continuum between coding it yourself and having something to build on.

      It wont work for everybody, nothing does, but I think it would work for a lot more people if they looked at it.

      It's funny, it's practically impossible to break a screw driver by using it properly. When you see a broken screw driver, usually somebody tried to use it rather than the proper tool. (That has nothing to do with the current discussion, your comment just brought it to mind.)

      --
      It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
    3. Re:Drupal by SurgeryByNumbers · · Score: 1

      Drupal is my favorite PHP framework. It is has a very developer-oriented community and supports many great and powerful features right out of the box. It also doesn't force you to reinvent the wheel (form validation, success and error messages, http response code handling, logging, and so on). It is "opinionated" and I like it that way.

      I dislike Zend for many reasons, but most importantly it's very difficult to discern what the "right" way to do anything is, and choosing poorly will typically bite you in the ass later. For example, not using the Zend menu system will cause trouble when you want to make a breadcrumb or do translation. Random internet blogs may get you to *some* solution, but usually not the correct one. The Zend form system is extremely convoluted compared to Drupal.

      A caveat: there is definitely a learning curve to Drupal. Less so than Zend in my opinion, but you will definitely have many new things to learn before you will be efficient. Unlike with Zend, the correct way to do most tasks is well-documented in Drupal and has examples.

    4. Re:Drupal by Anonymous Coward · · Score: 0

      Yeah sure then you could spend even more time fighting Drupal and trying to figure ways round it to do what you want than Zend or Symfony

    5. Re:Drupal by KoolyM · · Score: 1

      It can, but if you're building web apps instead of web sites with a little custom functionality it will make your life needlessly difficult.http://ask.slashdot.org/story/11/12/04/2227209/ask-slashdot-one-framework-to-rule-them-all#

    6. Re:Drupal by mouf · · Score: 5, Interesting
      Actually, when looking for a framework, having a look at Drupal is not that stupid. I must admit I have a love-hate relationship with Drupal. It comes with a set of restrictions, but you have a website out-of-the-box to start quickly: a nice templating engine, an easy way to add static pages, a way to manage users... and it has several thousands available module to easily add functionalities, which is unprecedented

      Now, in my opinion, the real problem with Drupal is that it does not rely on the MVC pattern, and most developers are used to that. Also, it is not object-oriented!

      At my place, we have developed an MVC framework that we can plug to Drupal. This way, we get the benefit of Drupal and all its modules, and when it comes to pure PHP development, we have a nice MVC framework instead of those bloody Drupal hooks. If you want to have a look:

      It is released as open-source, it is functional, but documentation is not complete yet so I would not recommend using it until we finish the documentation (probably in January).

    7. Re:Drupal by tixxit · · Score: 1

      A good screwdriver should hold up to abuse. I bought a cheap set of screwdrivers when I was in college. I was using one to hammer out a pin and after 2 hits the handle broke in half. All of the tools I've bought since then can handle some misuse from time-to-time.

    8. Re:Drupal by stoolpigeon · · Score: 1

      I agree - but my point is, if you are holding it in your hand, using it to turn screws, the odds of your breaking it are rather small. Which is probably rather obvious to most, but I remember the day I figured it out and how it struck me as really funny. The mention of it being possible to interchange screw drivers and chisels just caused a bunch of neurons to fire off in my brain and I couldn't help sharing.

      --
      It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
    9. Re:Drupal by Anonymous Coward · · Score: 0

      I curious. It what way do you think that Drupal as a framework resembles a chisel as a screwdriver?
      Have you worked on large projects with Drupal?
      Have you worked with many different kind of projects with Drupal?

      If no, then why bother?
      If no, but yes if we substitude Drupal with some other framework, what framework and why is it much better than Drupal?

      Our largest site today, using Drupal as framework, scales very well using mysql master and slave-servers, varnish at the front, several apache clients with memcache and solr as it's search engine. It has million of page requests per day, with average user spending 20+ minutes logged in.
      Our smallest site today, uses Drupal with apache and mysql on a shared hosting and took a week from beginning to launch...
      Both use Pressflow (a tuned versjon av Drupal but which supports every module Drupal does) and both can use the same modules we have written.

      I've been exposed to PHP and different kinds of frameworks for the last 12 years. From my experience, Drupal is so good, it's hard to believe it's based on PHP... =/

      The only unexpected and kind of interesting problem with Drupal, is that most PHP programmers, haven't got a clue about how to program/work with Drupal. I think only 1 out of 5/1 out of 6 PHP programmers we have hired, has really understood the concept and been able to work with Drupal. It simply isn't something an ordinary "script kiddie" can work with. "echo 'is here!';" really won't help you much when programming Drupal.

    10. Re:Drupal by justforgetme · · Score: 1

      Haven't really completed a project on drupal but from some literature I skipped through and some tinkering I got the impression that it is very close to module hell. Also I don't think that having a site up quick (that quick) is that important when you build a site that needs to be implemented in a framework. I mean if you want to produce sites in a couple of days for a couple of Benjamins just learn joomla and wordpress and off you go. Frameworks are for doing more custom tailored stuff, stuff that if worth developing will have a longer development deadline.

      --
      -- no sig today
    11. Re:Drupal by mouf · · Score: 1

      Indeed, using Drupal can turn into module hell. However, we are not only using Drupal for the sole benefit of being able to quick-start a website.

      Take a look at this site: Butterflive: live chat and real-time tracking

      The front-office part is done with Drupal and the backoffice in Drupal + Mouf. Why did we do it this way?

      Well the front-office is very efficient because we have a bunch of static pages to edit. I am a developer, but my colleagues are not. They are pretty happy to use Drupal to edit the static pages of the site. When it comes the back-office part (when you subscribe on the website), everything is coded using Mouf, in a nice object-oriented MCV way. I could have used a framework like Symfony for the back-office, however, I would have had to make a template for Drupal AND Symfony, I would have had to configure Google Analytics for Drupal AND Symfony, and so on...

      So in my opinion, Drupal is a valid choice as a platform if you need to develop an application that comes with a lot of static content. Of course, if your application has no "front-office" part, you are better using a "pure" framework.

  4. Go where your expertise is by buchner.johannes · · Score: 4, Insightful

    If people in your group already love RoR, it's best to go with their expertise. Technically, there isn't enough difference to make it matter.
    Backends are virtually always in a different language than frontends (not that that's a good thing, but it shouldn't worry you too much).

    --
    NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
    1. Re:Go where your expertise is by Bill_the_Engineer · · Score: 1

      Agree. One of my systems uses Perl as a backend and RoR for the web interface. The Perl glues some C code and Fortran together.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    2. Re:Go where your expertise is by Anonymous Coward · · Score: 0, Funny

      Have you considered assisted suicide? It seems like one only way left for you to die with dignity.

    3. Re:Go where your expertise is by Bill_the_Engineer · · Score: 3, Funny

      Have you considered assisted suicide? It seems like one only way left for you to die with dignity.

      Why? My bank accepts my pay checks.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
  5. one (more) framework to rule them all by Anonymous Coward · · Score: 4, Funny
    1. Re:one (more) framework to rule them all by Anonymous Coward · · Score: 0

      It is so sad that I didn't even need to click that to know what I would find.

  6. I like by lucian1900 · · Score: 1

    Flask (Python), Pyramid also looks ok. Django I've come to dislike. Noir (Clojure) is also nice.

    1. Re:I like by Anonymous Coward · · Score: 0

      I liked Noir before you even knew it existed!

  7. Wt by paugq · · Score: 4, Interesting

    Wt is the best one I have tried. I use the C++ version, although there is also a Java version (JWt).

    What makes Wt unique is its approach: widgets. You develop web applications like you were developing desktop applications. Also, the API is Qt-like (but using Boost).

    I gave up on Rails after I used Wt.

    Want a virtualization console? Take Wt, libvirt and an HTML5 VNC client and you are done.

    Need Active Directory authentication? Wt, Samba (or Windows APIs if you are on Windows), done.

    Streaming? Wt, ffmpeg libraries, done.

    Forgetting about bindings and being able to use the millions of C/C++ libraries out there was a huge relief.

    1. Re:Wt by icebraining · · Score: 1

      But if their backend is already in Python, why would they gain by being able to use C/C++ libraries?

    2. Re:Wt by Unoriginal_Nickname · · Score: 3, Funny

      Regular 15 minute breaks.

    3. Re:Wt by Anonymous Coward · · Score: 1

      Several orders of magnitude performance gain?

    4. Re:Wt by chrb · · Score: 1

      Echo is similar, but written in Java. It uses widgets and everything runs on the server side. The client side is just a Javascript program that draws the web app components. Very fast to develop in. I'm hoping that we will see some nice work coming out of Broadway - the HTML5 backend for GTK. Native apps, written in whatever language you want, straight to the web. There's a lot of advantage to keeping all the logic server-side in one persistent (I'm tempted to say "proper") application, and relegating HTML+Javascript to function only as a client-side display layer.

    5. Re:Wt by deniable · · Score: 0

      What makes Wt unique is its approach: widgets. You develop web applications like you were developing desktop applications.

      Just like ASP.NET. It was designed to be web dev for VB programmers.

    6. Re:Wt by Anonymous Coward · · Score: 0

      ASP.NET is a bad implementation of a good idea of which Wt is a good implementation.
      Up to you now to discuss based on actual facts.

    7. Re:Wt by paugq · · Score: 1

      Sorry but no. With ASP.NET you still have the concept of page, session, etc very very present. With Wt, you don't. It makes a huge difference.

    8. Re:Wt by icebraining · · Score: 2

      That depends on the impact that the frontend has on the whole system; if it's small, 9 hours optimizing the Python code might be more valuable than 90 learning C++ and a new framework.

      Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered.

      -- Knuth

    9. Re:Wt by paugq · · Score: 1

      That depends on the impact that the frontend has on the whole system; if it's small, 9 hours optimizing the Python code might be more valuable than 90 learning C++ and a new framework.

      The opposite is also true: being a C++ developer, I'd rather go with Wt than (re-) learn Rails, PHP or Django.

      Also, size: Rails, Django (and even PHP) just do not fit in an embedded environment. Wt does.

    10. Re:Wt by Xest · · Score: 3, Insightful

      "What makes Wt unique is its approach: widgets. You develop web applications like you were developing desktop applications."

      You mean apart from ASP.NET WebForms?

      If the 90s taught us anything it's that native code on the web is a security nightmare. If WebForms taught us anything, it's that no matter how hard you try you can't sensibly mangle the web into supporting a desktop widgets style development paradigm without countless side effects (like grossly excessive postbacks).

      Now I don't like to prejudge something without trying it, but this thing sounds like all my worst development nightmares come true.

    11. Re:Wt by Anonymous Coward · · Score: 0

      Prejudgment day is imminent !

    12. Re:Wt by Anonymous Coward · · Score: 0

      Two things that Wt and JWt do well is security and minimal network load.

      Minimal network load: one user event generates one server request. All UI updates are sent in one response. In JWt there's never a series of queries to a set of REST services or RPC servers.

      Security: JWt protects by default against the errors that are so easy made in framework (XSS, CSRF, session id stealing, ...).

      ASP.NET WebForms is not comparable to JWt.

    13. Re:Wt by sgt+scrub · · Score: 1

      And one can use hiphop to translate some existing web applications to the new framework. Very good post btw.

      --
      Having to work for a living is the root of all evil.
    14. Re:Wt by icebraining · · Score: 1

      Sure, that's why I asked what would they gain. I don't doubt Wt is a good solution for you.

    15. Re:Wt by Anonymous Coward · · Score: 0

      Exactly my sentiment when I read "like you were developing desktop applications."

      I absolutely loathe WebForms.

    16. Re:Wt by Xest · · Score: 1

      "Minimal network load: one user event generates one server request."

      That's not minimal and highlights the problem, per event is the issue and is what generates the high number of requests. It's precisely why the event based model isn't suited to the web, events on a web page only selectively require postbacks, so sending one for every event is wasteful.

      "Security: JWt protects by default against the errors that are so easy made in framework (XSS, CSRF, session id stealing, ...)."

      That's great, but that's JWt, I was talking about Wt, which, if it's just native code opens up the door for the more serious class of exploits we've pretty much all but eliminated with managed languages, such as buffer/stack overflows that allow you to gain root access.

  8. answer is always "It Depends" by alen · · Score: 0, Redundant

    look at the workload
    find the tool to best do the job

    if you want the same tool all around then find the one that will give you the least headaches all around or change the way you do things

  9. Avoid Django by Anonymous Coward · · Score: 2, Interesting

    If you can, avoid Django - it's a powerful framework, and fairly flexible, but when trying to set yourself up with it, the documentation is very poorly written and organized. We tried using Django for a quick project for an academic assignment - it was nothing short of downright painful. The configuration was very touchy, and the code rather long compared to the equivalent Ruby code.

    This is just my opinion based on when I was trying to get myself into Django - and I didn't like it.

    1. Re:Avoid Django by troon · · Score: 2

      As a counter-point, I built my web app on Django after messing with PHP for too long, and love it. It's clean, easy to understand and the documentation is pretty good - although I agree it could be better, but then it's free and I can contribute... My app has been Django-powered for four years now and is fairly complex from a data point of view.

      --
      Ydco co ,df C erb-y go. a Ekrpat t.fxrapev
    2. Re:Avoid Django by Anonymous Coward · · Score: 0

      you've never used a poorly documented web framework, try to figure out Lift

    3. Re:Avoid Django by Binary+Boy · · Score: 4, Informative

      Could not disagree more. I've worked with a variety of Web platforms/frameworks; on my current job, there is a bit of Drupal fandom, despite almost no one having any experience (except me) with Drupal - it's just become a popular buzzword here (another story).

      So one of my first projects after arriving, management had already had it in their heads that it would be Drupal-based. After digging in to the requirements for a week, working on a prototype/proof-of-concept, I quickly hit some walls and realized I'd be spending as much time patching bugs in existing Drupal modules as writing original code - the data model is complex and Drupal's database abstraction layer is about as ugly as they get.

      Annoyed and frustrated, after a few beers with an old friend the night before, I read the first few pages of the Django getting started docs on the way home one night - by the time I got home I felt like I had a strong sense for how the framework was structured, the conventions it followed, etc - the docs were clear, concise, and the framework sounded elegant and straightforward, with a clean design (unlike Drupal, which seems to suffer from no particular design).

      I hit the ground running with Django and haven't turned back - since that first night with it, I've not run into any big surprises - everything just works as expected. The code is solid, the design obvious, and I'm really in love with Python (having only written simple scripts with it in the past).

      I don't think I've ever found the docs to be wanting, and not sure what you mean by the config being touchy - it practically holds your hand, the integrated debug mode gets you straightened out quickly. It does help to understand what Pythonic code looks like - Django is pretty damn close to a perfect expression of what it means to be Pythonic, so it's advisable to get comfortable with Python itself of course.

      The one thing I thought I'd hate with Python - the use of whitespace as structure - I got used to very quickly, with the help of a decent text editor. Otherwise it's been a joy.

      FWIW.

    4. Re:Avoid Django by hoover · · Score: 2

      +1 for Django from my end, too. It can be a bit complex at times if you still know what CGI is and are used to code your web pages accordingly, but once you've got going with it it can be amazingly flexible and powerful.

      Also, the built in "admin" will save you a ton of work down the road.

      I'm not a full-time developer mind you, but the people I've heard good things about Django from are right up there with the best of them as far as development skills go in our company.

      --
      Ever wondered whats wrong with the world? http://www.ishmael.org/
  10. No silver bullet by Anonymous Coward · · Score: 0

    I got the pun in the title but there is no framework that's good for everybody in every circumstance. But you're trying to start a flame war, right? ;-)

    My 2 cents: forget PHP because it's too messy, use Java if you can spend a lot of time and money, use Rails if you want to deliver earlier, but in your case you might really want to stick with Python as on your backend. Actually I'd recommend to rewrite your backend with something different because Python's semantic indentation makes me sick, but that's really means going into flame wars.

  11. This depends on your needs! by Anonymous Coward · · Score: 0

    To be clear most frameworks are relatively easy to work with the problem comes in what your end purpose is. Is your site very high traffic? That can rule out a lot of frameworks.

    - How fast is your company growing?
    - How easy is it to switch away from this framework if you need to? etc.
    - How active is the framework community?
    - Does the framework self document?

    The best thing to do is develop a road map of your goals for the site in the next five years. That should help eliminate about half of the offerings. It sounds like you have a solid set of developers do have a Python powered backend and the organization enough to even have a framework already in place. I don't code in PHP but frameworks like Model Glue (coldfusion) self document... meaning you can run scripts and see every function, etc so you don't have to spend tons of time writing up boring tech docs.

  12. CI by Tom · · Score: 3, Insightful

    My personal framework of choice is CodeIgniter, though if you have Ruby people on the team then you should definitely check CakePHP.

    I like CI because it works, and it isn't as arcane as most of the other frameworks out there, meaning that if I want to write my own library, it is fairly easy to do so and I don't need to spend weeks digging through all the other crap first.

    Also, it is fairly well documented, and that's very important.

    --
    Assorted stuff I do sometimes: Lemuria.org
    1. Re:CI by telekon · · Score: 1

      If you have Ruby people on your team, use Rails (or Sinatra/Padrino if you need less magic). I say this only because the Rubyists are going to spend more time flogging any other language into behaving more like Ruby than on actual domain problems.

      On the other hand, if you choose a PHP or Python-based framework, one of them might come up with a really handy gem that lets you generate PHP or Python code from Ruby, and you could blog about it.

      Not even trying to start a flame war, I'm a Rubyist, I work with Rubyists, and this post is intended as Ha Ha Only Serious based on my experience.

      --

      To understand recursion, you must first understand recursion.

    2. Re:CI by Anonymous Coward · · Score: 0

      Another bump for CodeIgniter. I tried a bunch of MVC frameworks a few years ago and settled on CI. I've been using it ever since and have probably written 150k lines of it. The documentation is the best, it's the fastest, and IMO it provides the easiest transition into MVC PHP development. Everything is laid out logically and to me it just makes sense. The one knock on it in the past has been the lack of PDO support, but they just added it with the latest release. Avoid ORM in any framework to increase performance, though, and CI has no problem letting you write native SQL queries.

    3. Re:CI by codepunk · · Score: 1

      Yes by all means, code igniter rocks for most applications, just enough framework, fast and stays out of my way.

      --


      Got Code?
    4. Re:CI by Anonymous Coward · · Score: 0

      I would advise checking out FuelPHP if you get a chance. Codeigniter was brilliant, as you said, a year or two ago. It's since been really sluggish on features and the turn-around time on new apps is actually quite slow compared to Fuel. Fuel also offers HMVC requests, Modules (write an app once and move it from project to project), a markdown parser, redis/mongo support, and so many other great things right out of the box.

    5. Re:CI by znrt · · Score: 1

      Avoid ORM in any framework to increase performance

      oh my!

      why not avoid frameworks alltogether to increase performance? (assumed learning to properly code and properly use the tools at you disposal the way they were meant to be used is not an option)

      this thread has brought Wt to my attention which seems pretty interesting stuff. thanks for the info.

      on the other hand, just glimpsed at CodeIgniter and was greeted by this on the website:
      "Codeigniter is a web framework thta helps you write INCREDIBLE php programs!"
      "Build a weblog in under 20 minutes!"

      /me yawns and walks away.

      to the OP: it would depend on your team being serious developers doing serious software or you just wanting to crap out cheap dumb fancy websites asap. in the first case you wouldn't ask this question. in the latter ... well, it doesn't matter.

    6. Re:CI by pmontra · · Score: 2

      The code you end up writing in Cakephp is ugly as hell. It's obscured by tons if array() and $this-> Write it in Ruby and you'll do it in half the time. It will be 10 times easier to read and maintain. In a normal sized project you'll save time even if you have to learn Ruby.

    7. Re:CI by Anonymous Coward · · Score: 0

      it would depend on your team being serious developers doing serious software or you just wanting to crap out cheap dumb fancy websites asap. in the first case you wouldn't ask this question. in the latter ... well, it doesn't matter.

      I used to be a "serious" developer, until I realized that people will pay out the nose for a blog written in 20 minutes as long as it looks fancy and its done ASAP. Sure, the work isn't nearly as intellectually stimulating, but the the clients are impressed by the smallest units of 'fanciness' and they don't mind paying for it. Now I make a comparable salary and work fewer, more relaxed hours.

      There certainly is a legitimate purpose for tools like CodeIgniter. Don't knock it till you've tried it.

    8. Re:CI by Tom · · Score: 1

      Avoid ORM in any framework to increase performance, though, and CI has no problem letting you write native SQL queries.

      I disagree on that. I'm using Doctrine2 with CI2 and it works like charm. Are my native SQL queries faster? For simple cases, probably yes. For a complex application, I am confident that the caching Doctrine does for me will be a benefit, and the reduction in bugs and gains in ease-of-coding are more than worth the performance impact.

      --
      Assorted stuff I do sometimes: Lemuria.org
    9. Re:CI by MattBD · · Score: 2

      I'm a relatively new web developer (three months into my first full-time web developmment job). We're a PHP shop and are using CodeIgniter to build our new ecommerce store, and despite the fact that I'm still quite new to PHP and this is the first time I've ever used CodeIgniter, I haven't had any particular problems with it. Seems like a pretty decent framework and the documentation is OK. We were talking about using Doctrine with it as well, but in the end we decided not to bother, since we'd have to learn Doctrine and CodeIgniter at the same time, which was a bit more of a hassle, and we couldn't really spare the time. That said, I prefer Python, and I'd like to have used Django.

    10. Re:CI by znrt · · Score: 1

      I used to be a "serious" developer, until I realized that people will pay out the nose for a blog written in 20 minutes

      That's just fine. But then your choice of a framework over another is largely a matter of personal preference. You could do just that with any of the zillions that are available, couldn't you? And I'm not disregarding (by any means) that market segment (but I wonder how long it takes until it is completely taken over by do-it-yourself sites and/or services ... maybe you should keep stimulating your intellect now and then, just in case :D).

      And then ... that's just you calmly making a living. The OP is talking about a dedicated team of (apparently skilled) developers and a long term product strategy. In such a context his question really makes no sense at all. Just my opinion.

    11. Re:CI by Tom · · Score: 1

      Do invest the time, seriously. Or, depending on where you are located, talk to me and I can show you why.

      Yes, learning Doctrine is an additional step, and it isn't very easy. Took me a lot longer than CI, and I'm still adding more details as I go.

      But Doctrine is more than worth it. I don't want to do another project without it.

      --
      Assorted stuff I do sometimes: Lemuria.org
    12. Re:CI by rax313 · · Score: 0

      This would be my choice as well. It doesn't have any "fancy" requirements that require you to run another script just for structure. It gets out of your way and let's your write code. =)

    13. Re:CI by MattBD · · Score: 1

      Oh, I was more than willing to spend the time picking up Doctrine, but it wasn't my decision - the senior developer made that call. I personally find the shift from writing PHP to writing SQL queries can be quite jarring when you do so regularly, and in general I'm a fan of ORM.

    14. Re:CI by emilper · · Score: 1

      if it must be PHP, then CodeIgniter or Kohana

      Limonade ( http://www.limonade-php.net/ ) is worth a look, too

      if Perl is an option, check the thousand pounds gorilla called Catalyst, or the saner but weirdly named Mojolicious.

      I'm using Plack on Perl, Plack middleware and custom micro-frameworks whenever the choice is up to me, though.

  13. Avoid frameworks by Anonymous Coward · · Score: 1

    For large projects: Frameworks tend to bloat, reduce performance, and generally just get in the way with their many bugs.
    I would use a framework for a small project only, or something special-case.

    If you need to use a framework, maybe you should rethink how long something would take just coding it from scratch. You might be surprised it may take less time.

    1. Re:Avoid frameworks by icebraining · · Score: 1

      That depends on the framework. There are multiple modular frameworks, where you only pay the penalty for the components you actually use. Pyramid, for example, follows that approach.

    2. Re:Avoid frameworks by james_van · · Score: 5, Informative

      Agreed. Frameworks are nice, but I'm finding them to be very very very overused. Take a minute and really look at your project. Does it actually need a framework? Does the use of a framework save enough time in development to justify the additional overhead? If so, is that because you (or the people working on it) have been taught frameworks as opposed to learning actual programming (laugh if you want, I've met far to many people who know a bunch of frameworks, but couldn't write the most basic raw code if their lives depended on it), or because it actually streamlines the development process? The majority of the projects I've worked on haven't actually benefited in any way from the use of a framework when they've been properly evaluated. Not saying yours is the same, but make sure you take a good, long, objective look at it before you decide on something. My $.02, take it or leave it.

    3. Re:Avoid frameworks by Raenex · · Score: 3, Insightful

      I take the opposite view. I've seen developers who avoid frameworks because they were Not Invented Here, and then spend a lot of their time re-inventing their own framework.

      That's not to say that some frameworks aren't bloated and hideous and not worth the cost (the original Java Enterprise Edition comes to mind).

    4. Re:Avoid frameworks by b4dc0d3r · · Score: 3, Interesting

      I don't get it. A framework has piles of domain-specific code that has been tested and is pretty much guaranteed to work. Sure you can hunt around for some open source implementation of every little thing you might use, but having it built in helps.

      Chances are, if you're not using some sort of framework, you're using your own libraries or code which basically take the place of a framework. Unless you're doing no output, having something take care of the remaining browser quirks really helps, and especially handling the new mobile platforms.

      What quirks you say? Write to the standards? Of course. And then you get a router whose configuration is javascript-based, and does not work at all in Chrome, but works in FireFox and IE. Sure blame Linksys for being crap, or not testing enough, or whatever.

      The point is, frameworks do things for you so you don't have to. I can't think of any project that wouldn't be helped from a framework. Unless you're doing something with processing on the server and display on the client. Then it's pretty obvious you don't need a framework, and aren't the audience for the question.

    5. Re:Avoid frameworks by Anonymous Coward · · Score: 1

      The reason to use a well implemented web application framework should be so that the developers can focus on the application logic, instead of spending time worrying about infrastructure code. It is true that a framework will tend to reduce the barrier of entry for less skilled developers. But finding skilled developers should be the goal of the interview process, not the tools, or lack there of, that are being used for the development project.

    6. Re:Avoid frameworks by Anonymous Coward · · Score: 0

      I come across this so often that I now refer to it as the "BUT MY WHEEL IS ROUNDER" syndrome: developers will try to reinvent the wheel under the theory that they understand the problem better and their wheel will naturally be better and rounder.

  14. Just stay by cjpa · · Score: 5, Insightful

    Why not stay with Symfony 1.4? It's a mature and well-supported framework. We have been playing with Symfony2 ourselves at my current job, but decided to keep using 1.4 until the formgenerators of Symfony2 are a bit more mature.
    Of all the php-frameworks i've worked with, Symfony 1.4 still makes me most productive.

    1. Re:Just stay by Anonymous Coward · · Score: 0

      I would also second this notion of staying on a framework you already know. I think if you give Symfony 2 time you will see it will mature and have better documentation which will make it easier for you to make the conversion of starting new projects with Symfony 2. I would also recommend to use learn Symfony 2 on an internal project that you can spend more spare time on. I like the decoupled nature of Symfony 2.

      I think it's worth noting the different projects such as Drupal 8 that will be using some of the Symfony 2 Components.

      Are you running into any problems with Symfony 1.4? Or you just wanting to make the leap to Symfony 2 and have found it to be vastly different (which it is). Another way to slowly get used to some new Symfony 2 style of things is to learn Silex. A micro-framework based on Symfony 2.

      I would also recommend you read some good reading here. Some is why you should choose Symfony, but another section also talks about what to look for in choosing the right framework. Symfony in 5 Minutes. Keep in mind Symfony 2 is component based, and there's nothing that requires you to use the Framework all together. This gives you the flexibility and freedom to use only those parts that you need for a particular application.

      Good luck on your search,
      JS

  15. the cake is a lie by ircmaxell · · Score: 5, Informative

    I couldn't disagree more. Cake is loaded with deeply awkward black magic and bad practices. Not to mention the fallacy that the model layer is the orm (hint: in the rest of the world it is not). Cake is second on my list of frameworks to avoid (and most senior developers that I know agree). I would suggest you do the same. .

    --
    If a man isn't willing to take some risk for his opinions, either his opinions are no good or he's no good
    1. Re:the cake is a lie by Anonymous Coward · · Score: 1

      Cake, Django, Ruby, Rails, Python, Symfony, Li3...WTF?

      They all should be called Yet Another Language.

    2. Re:the cake is a lie by Anonymous Coward · · Score: 0

      You aren't disagreeing though, that's exactly what he said. Cake is just like RoR, full of horrible "black magic" to try to make trivial things automatic, while making complex things impossible. Of course Cake will further push the horrible backwards "your controllers should do all the work and your models are just a thin table wrapper" idiocy, it is a rails clone. Rails started that whole fucked up mess and people copying them is why 90% of web MVC frameworks are garbage.

    3. Re:the cake is a lie by Literaphile · · Score: 2

      Funny, I suggest the OP do the opposite. I, along with a lot of other "senior developers" that I know, use Cake for many projects. I'd love to see all of this "awkward black magic and bad practice" stuff, though.

    4. Re:the cake is a lie by snotclot · · Score: 1

      A newb, but I have toyed a tiny bit with Django and it seems that the Django model layer is also the ORM (if you want it to be). You could of course add in the ORM layer-wrapper-class yourself, but newb-basic Django seems to have the model layer BE the ORM (as opposed to Zend, which recommends you to make a ORM and then a seperate model class).

    5. Re:the cake is a lie by billcopc · · Score: 2

      Y'know, back in the day, we didn't call them "frameworks", we called them libraries, and rather than replacing one bad scripting language with another, which is effectively an interpreted language running inside another interpreted language, well we just had these library functions to tackle common problems.

      I think that instead of slowing down the scripts even more with pattern glut and reinterpretation, these people should just invent a brand new language that incorporates all these practices as first-level citizens. I don't want Symfony: the pile of slow PHP indirections running on top of PHP itself... I want mod_symfony.so. Ultimately that's what they end up doing.

      Or better yet: write a damn visual designer that spits out XML or binary blobs that tell the module what to do. After all, these frameworks are so damned restrictive they might as well dumb the whole process down to a glorified form designer. Oh wait, that's VB.Net...

      --
      -Billco, Fnarg.com
    6. Re:the cake is a lie by Bill_the_Engineer · · Score: 2

      Y'know, back in the day, we didn't call them "frameworks", we called them libraries, and rather than replacing one bad scripting language with another, which is effectively an interpreted language running inside another interpreted language, well we just had these library functions to tackle common problems.

      The reason people call these frameworks is that these environments pretty much dictate how your code will be written. You build your custom code onto the framework provided by these products which is usually auto-generated by some script ran at the CLI.

      Libraries usually don't dictate how you should write your code. Like you I prefer libraries over frameworks for most custom applications; However when it comes to writing the standard website with some custom dynamic pages nothing beats a framework. Unless you like reinventing the wheel every time you need to put a site up.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    7. Re:the cake is a lie by Anonymous Coward · · Score: 0

      Cake, Django, Ruby, Rails, Python, Symfony, Li3...WTF?
      They all should be called Yet Another Language.

      Uh, five of those aren't languages at all. They're large collections of libraries meant to be used together... known as frameworks. In this case, web frameworks.

    8. Re:the cake is a lie by Literaphile · · Score: 1

      Of course Cake will further push the horrible backwards "your controllers should do all the work and your models are just a thin table wrapper" idiocy

      Actually, Cake advocates the opposite - "skinny" controllers and "fat" models. But hey, don't let the facts get in your way.

    9. Re:the cake is a lie by Anonymous Coward · · Score: 0

      How many different ways should there be to populate a drop down list or load data from a database?

    10. Re:the cake is a lie by ircmaxell · · Score: 1

      To be clear, I'm not opposed to using the ORM in the model, or for some applications having the ORM dominate the model. I'm just against the concept that it is the model (since there's a lot more by most people's ideas)...

      --
      If a man isn't willing to take some risk for his opinions, either his opinions are no good or he's no good
    11. Re:the cake is a lie by ircmaxell · · Score: 3, Informative

      To me, there is a significant difference between a framework and libraries. Libraries are collections of code to do one or more tasks. Frameworks are libraries that enforce architectural constraints in exchange for reducing boilerplate code and making things easier (and faster in theory) to develop. The tradeoff comes back when those architectural constraints are not inline with the application. This either leads to tons of pain when building the application (I've heard the phrase "just do it the rails way" a few times), or when maintaining due to changes in the app requirements or bugs that are deep rooted in the architecture of the application.

      That's why I'm a fan of the Architecture First method to development. Do a formal architecture for the application, then pick the framework that fits that architecture (if any). If none do, fit the closest one and remove anything from it that doesn't fit.

      --
      If a man isn't willing to take some risk for his opinions, either his opinions are no good or he's no good
    12. Re:the cake is a lie by Atzanteol · · Score: 1

      Isn't it past your bedtime?

      --
      "Ignorance more frequently begets confidence than does knowledge"

      - Charles Darwin
    13. Re:the cake is a lie by greg1104 · · Score: 2

      Cake is loaded with deeply awkward black magic and bad practices

      Wow, I didn't realize they'd copied Rails so accurately.

    14. Re:the cake is a lie by phy_si_kal · · Score: 1

      This new language exists: It's Opa!

    15. Re:the cake is a lie by jawahar · · Score: 1

      Another difference.
      Application calls the Libraries.
      Framework calls the Application.

    16. Re:the cake is a lie by justforgetme · · Score: 1

      All the ones you can conceive of plus at lest one!

      --
      -- no sig today
    17. Re:the cake is a lie by angel'o'sphere · · Score: 1

      The difference between a library and a framework is pretty simple: in a framework the control of your application is handled by the framework, and the framework/the app is calling your code.
      In a library your code is the application and has the controll. Your application is calling the library functions/methods.
      Most our day so called frameworks are however in fact no frameworks at all.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  16. Django/On Rails by Anonymous Coward · · Score: 0

    I'd say Django, but since you have some Ruby on Rails lovers, go for it.

  17. Catalyst with perl by Anonymous Coward · · Score: 0

    Catalyst http://www.catalystframework.org/ with perl - everything else are toys.

    It is hard to explain the power to people still playing around with other tools. If Catalyst scares you, Dancer http://perldancer.org/ is an easy beginner step.

    Catalyst doesn't force you into anything.
    YOU decide how to do things.
    YOU make your "best practices."
    No limits.

    These choices can be bad for people who like to be told what and how to code. If you'd listened, then you're probably using .NET something anyway.

  18. Rapid protoyping isn't just an empty name by vlm · · Score: 1

    Rapid prototyping isn't just an empty name. I've noticed a strange hesitation to use rapid prototype frameworks to rapidly prototype something and see what happens.

    Its not Java; you'll have something up and working in a day or less. Try them all for a short period of time, see where you're "stuck"/"working" for each platform, then decide which to pursue. Last time I tried this, the optimum framework where I am, for the in house internal app I was working on, was RoR. Your mileage will vary.

    The only thing worse than "wasting" a couple days doing research, is having to scrap weeks/months of development merely to switch to something else. Don't get hemmed in too early.

    --
    "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    1. Re:Rapid protoyping isn't just an empty name by Millennium · · Score: 2

      The fear of "waste" by rapid prototyping doesn't just show up in a reluctance to use it. Such prototypes have a nasty habit of evolving into the production code that they were never actually meant to become, and that causes headaches for everyone.

      It's an incorrect use of rapid prototyping, but it happens, and that needs to be accounted for.

    2. Re:Rapid protoyping isn't just an empty name by sapgau · · Score: 2

      Rapid prototyping should be done on paper. That way customers understand we are on the design phase and nothing has been coded yet.
      The minute they see something they can run and play with they will keep asking why is it taking so long since you had most of it already built.
      It takes a lot of discipline to avoid taking the prototype and force it into a production ready product.

  19. Don't use Cake. Try Yii instead by Anonymous Coward · · Score: 5, Interesting

    Don't use Cake. There's limited support for actually getting back true objects with their ORM, which means you can't really deal with an intelligent data object. I did a lot of heavy research on the subject last year for my web company and found that Yii Framework (http://www.yiiframework.com) really fit my sweet spot well.

    My legacy code is/was all in PHP (up to 8 years of code), but I wanted the flexibility and advantages of a good object based, MVC system that I could fit over top of my legacy code and upgrade as I had time (without having to do an entire rewrite of the code from scratch).

    If you mainly do small one-offs that don't require much ongoing work / maintenance, then either RoR or Django would work fine. But if you already have a sizable code base, the benefits of using a framework in the same language is noticeable. I keep finding new things I can do with Yii after a year that make me faster and faster. Haven't run into any needs that haven't already been planned for in the framework (compared to CFWheels, a Coldfusion Ruby-on-Rails clone I've been switching a client to, that while quite thorough, does have limitations I'm already hitting after a week). And the Yii forum is quite active and seems to have steady readership and input from the main committers. So wrinkles with the framework get resolved on a timely basis. It's been a joy coding in.

    Good luck!

    1. Re:Don't use Cake. Try Yii instead by Anonymous Coward · · Score: 0

      +1

      Yii is fantastic and well documented. Cake is not so great.

    2. Re:Don't use Cake. Try Yii instead by PylonHead · · Score: 1

      Another vote for Yii.

      We've used it to develop a mission critical B-to-B site for a client, and it's been a pleasure. It's very well architected, and there are extensions out there for handling almost any need you might have (anything we've come up with, in any case).

      I anticipate any future PHP work we do will use it.

      --
      # (/.);;
      - : float -> float -> float =
    3. Re:Don't use Cake. Try Yii instead by Anonymous Coward · · Score: 0

      There's limited support for actually getting back true objects with their ORM

      Could someone explain what he means by this? What is fake about Cake's objects?

  20. Flint is extremely sharp by Anonymous Coward · · Score: 4, Informative

    Correctly flaked, flint is MUCH sharper than any straight razor you can find. We don't use flint in for example atomic force microscopes as tips (instead of say steel) for nothing, you know.

    You may think stone age people had just stones for tools, but their flint blades were sharper than any steel (or even soft iron) blade you can get.

    I find that comparing assembly to flint is extremely apt. Especially so when you consider the fact that our circuits use a silicon substrate. You do know what flint is, right?

    1. Re:Flint is extremely sharp by angel'o'sphere · · Score: 0

      Correctly flaked, flint is MUCH sharper than any straight razor you can find.

      That is incorrect. Flint is *jsut as* sharp as any steel scapel. The reason that flint is used in scalpels etc. is that the wounds heal better due to the different kind of the sharp edge.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:Flint is extremely sharp by Anonymous Coward · · Score: 0

      I believe you mean obsidian?

    3. Re:Flint is extremely sharp by LF11 · · Score: 4, Informative

      That would be obsidion that they use in surgery. An properly flaked obsidion edge is much sharper than the sharpest steel. How do you define sharper? Obsidion will flake to a single-molecule edge. Steel must be sharpened, and even when extremely sharp, will rip more than slice.

      As I recall, the reason obsidion cuts heal better is because the sharper edge slices between the cells of the body, rather than ripping through them like steel.

    4. Re:Flint is extremely sharp by Anonymous Coward · · Score: 3, Informative

      No. View any high quality steel scalpel edge at high magnification, and you'll immediately notice it's immensely irregular (and thicker) compared to blades composed of flint or obsidian. In particular, obsidian edges average 3 nm in thickness. Steel blades simply cannot achieve that. Where are you getting your information?

    5. Re:Flint is extremely sharp by ByOhTek · · Score: 3, Funny

      And, if you consider the flint is considerably more brittle/delicate if the wrong type of force is applied, as compared to steel/iron, the analogy gets even more apt.

      Wow, what an amazing analogy, and it doesn't even involve cars!

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    6. Re:Flint is extremely sharp by davester666 · · Score: 1

      Slashdot postings of course.

      --
      Sleep your way to a whiter smile...date a dentist!
    7. Re:Flint is extremely sharp by master5o1 · · Score: 1

      This is the stone age, cars weren't invented yet. Except for the foot-push roller from The Flintstones.

      --
      signature is pants
    8. Re:Flint is extremely sharp by godel_56 · · Score: 1

      No. View any high quality steel scalpel edge at high magnification, and you'll immediately notice it's immensely irregular (and thicker) compared to blades composed of flint or obsidian. In particular, obsidian edges average 3 nm in thickness. Steel blades simply cannot achieve that. Where are you getting your information?

      Yes, years ago I read of hospitals using synthetic diamond scalpel blades for the same reason. At the micro level, flint or diamond blades cut neatly while steel blades (in comparison) plow their way way through the tissues.

      They kept the diamond blades in a safe between uses.

    9. Re:Flint is extremely sharp by amirulbahr · · Score: 0

      Compared to other varieties who are more than happy to tear away at flesh, that would explain why Obsidion pugs are so small. Cute little buggers though, and so helpful in surgery.

      I hear there's a volcanic glass that also sharpens very well... maybe they should take a look at using those. Wouldn't make a mess in the operating theatre either.

    10. Re:Flint is extremely sharp by angel'o'sphere · · Score: 2

      As I recall, the reason obsidion cuts heal better is because the sharper edge slices between the cells of the body, rather than ripping through them like steel.

      Nope, in fact the little bit less sharp tool leads to better healing because it is not cutting that good but disrupts the tissue.

      Regarding sharpness Flint and Obsidian are on par. Also steel can be sharpened to have an edge that ends in one molecule. You forget that steel can be really sharp, just as sharp as anything. Modern razor blades or scalpels are very very sharp. Without special tools/technique you can not make a flint stone or obsidian as sharp as steel.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    11. Re:Flint is extremely sharp by davolfman · · Score: 1

      Could you provide links and details? Mostly to satisfy my curiosity. Steel is NOT a singular substance. If you vary the formula you get different hardnesses and different grain sizes and structures. And last I saw some flint it looked pretty grainy. I could easily believe that obsidian could take a sharper edge than surgical steels for at least a single cut (especially since it looks like they may be formulated for hardness and corrosion resistance resulting in large grains). I bet you though that a good high-vanadium alloy or similar like the stuff in some high-end pocket knives probably attains a sharper edge than surgical steel with a good sharpening technique. And after a few cuts it probably has a better edge than the obsidian. Absolute sharpness is probably NOT the overriding market consideration for surgical steels. It might be worth noting that Wikipedia's pages for steels seem to be much worse than they used to be.

    12. Re:Flint is extremely sharp by LF11 · · Score: 1

      Can you back that up with a reference, regarding "without special tools/technique you can not make a flint stone or obsidian as sharp as steel"? Knapping is a pretty standard technique, granted you need to develop it as a skill, but the equipment is simple and the technique is well-known.

      As I understand it, obsidian is amorphous, and therefore can shear in any plane. The edge of the shear line in good quality obsidian should come out to a single molecule in width. No further sharpening techniques can be applied to the edge. It will dull quickly because glass is relatively soft on Moh's scale.

      Steel is crystalline, and the final width of the edge is limited by the size of the carbide crystals. Even in the best steels, these are much larger than a single molecule in width. These crystals are what produce the ripping cut (at a molecular level) rather than slicing. The sharpness of the blade comes from a sharpening process, rather than shearing. Abrasive sharpening will tend to remove the carbide crystals instead of sharpening them, leaving a jagged edge.

      Both are extremely sharp, but glass shards are used over steel when making thin slices of specimens for electron microscopy, because glass is sharper. Of course, plasma-polished diamond blades are used over glass, if you have them!

      Obsidian cuts will heal more quickly and with less inflammatory response. Final scar formation may not be appreciably different, but the actual healing occurs more quickly with obsidian. http://www.ncbi.nlm.nih.gov/pubmed/8415970

      cej102937

    13. Re:Flint is extremely sharp by emilper · · Score: 1

      Not all flint is good for cutting tools, most is pretty poor.

      During the Neolithic high quality flint was traded over hundreds of miles, though color and shape of intrusions were probably praised more than the quality of the edge.

      Flint is brittle and will lose the age after a few meters of cut, but until then it makes very clean cuts.

    14. Re:Flint is extremely sharp by angel'o'sphere · · Score: 0

      Obsidian cuts will heal more quickly and with less inflammatory response. Final scar formation may not be appreciably different, but the actual healing occurs more quickly with obsidian. http://www.ncbi.nlm.nih.gov/pubmed/8415970

      Thats what I said, or not?

      Obsidian and Flint wounds heal better because steel blades "cut to good" and Obsidian blades "cut less good" (that is simplified) (Hard to explain in english: obsidian but more precisely flint edges have kind of little grooves, which are more "healthy" for the tissue when you cut).

      How crystaline steel is, depends on the kind of steel. But your point that those crystals are bigger than one molecule is ofc true. However such crastals end by definition in a molecule, or an atom even, or not?

      Regarding the single molecule myth: an obsidian or flint blade can be made to end in single molecules. Note the emphasizis. That means it is usually not that sharp. After a few usages on hard material the edge is no longer consisting of single molecule anyway.

      Regarding the crystals: Obsidian or other vulcanic glasses are in amorph form after they formed. Usually over a few million years they reform into a crystal form. I don't really know which form was/is used to make blades.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    15. Re:Flint is extremely sharp by LF11 · · Score: 1

      Oh, sorry, now I understand what you were trying to say. The jagged edge of steel will make for easier cutting because it works more like a saw? I've never personally used a stone or glass edge for cutting flesh, so I don't know how it compares to a scalpel in ease-of-cutting.

      The single-molecule edge indeed wears away quickly. Compared to steel, it wears away extremely quickly, even when cutting soft tissues, because glass is a relatively soft material. Also, it cannot be sharpened.

      Amorphous is easier to flake, because you can direct the fracture lines by changing the angle and intensity of the applied force. Crystalline structures tend to bounce, reflect, and disrupt those fracture lines, which makes the force blow out of your piece in weird places.

      cej102937

    16. Re:Flint is extremely sharp by angel'o'sphere · · Score: 1

      The jagged edge of steel will make for easier cutting because it works more like a saw?

      Not really, as a scalpel e.g. gets polished, so it is less "jagged" / grooved like a Flint blade, I don't know how ever how exactly a Obsidian blade looks: does it have "long edges" or small jagged like ones ;D
      Seems I need to make one and look on it in a microscope ... the first I can but the later I don't have.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  21. Cake is second to avoid? by Millennium · · Score: 1

    If Cake is second on your list of frameworks to avoid, what's the first?

    1. Re:Cake is second to avoid? by ircmaxell · · Score: 2

      The first on the list is one that isn't public yet. I know the lead dev on it and got an early preview. So out of the popular frameworks, it is number one to avoid....

      --
      If a man isn't willing to take some risk for his opinions, either his opinions are no good or he's no good
    2. Re:Cake is second to avoid? by Anonymous Coward · · Score: 0

      Does the lead dev know that you are out to avoid it ?

    3. Re:Cake is second to avoid? by flimflammer · · Score: 2

      If it's not even public yet, how is it listed among popular frameworks?

    4. Re:Cake is second to avoid? by ircmaxell · · Score: 1

      Yes, we have talked about it at length...

      --
      If a man isn't willing to take some risk for his opinions, either his opinions are no good or he's no good
    5. Re:Cake is second to avoid? by krelian · · Score: 1

      I am wondering if you can add even more sense of self-importance when you reply to this comment.

  22. no love... by Canazza · · Score: 1

    what? No love for ASP.net?

    Kidding aside, why would you avoid any framework if it gets the job done? Limiting yourself to one solution only limits what you can get done. Why drop Symfony 1.4 at all when it works for you? (honestly I don't know, I've never used it, or 2.0)

    If it's RAD your after, personally, I can't think of anything better for it than MVC in ASP.Net. Sure it might be slow and bloated, but when your balance that against the fact you can build a working system in an afternoon it's nothing to be sniffed at.

    However, that would require learning C# or VB, and since you don't have that in your skillset, it's probably not going to happen. As a few people have said above, Drupal is more like a framework than the CMS it started out as, and I've used it before (although, I admit, not for a few years) and was reasonably happy with it back then. You already have the skills required to develop for it and it's got a decent community to help you over any stumbling blocks.

    --
    It pays to be obvious, especially if you have a reputation for being subtle.
    1. Re:no love... by shadowrat · · Score: 3

      I second the bid for MVC. I've always found the IIS/sql server/.net pyramid to be powerful, stable, and easy to use. Plus it's easy to integrate with all sorts of newfangled toys like mongodb.

    2. Re:no love... by InsertCleverUsername · · Score: 2

      Oh... You've done it now. Mentioning anything Microsoft in a non-disparaging fashion is first-degree flamebait, on par with advocating pedophilia. On /. we take our religious hatred of Redmond very seriously.

      --
      Ask me about my sig!
    3. Re:no love... by NewWorldDan · · Score: 1

      It's a good framework, particularly for the kinds of things I do. In addition to the website, I've got an assortment of server processes for processing incomming information and there are several library collections we've developed that get used across the board. .NET, I think, is particularly useful if you need more than a web app.

    4. Re:no love... by drpimp · · Score: 1

      MVC is a pattern NOT specific to ASP.NET, so are you saying you are in favor of Microsoft's implementation and their framework for web, or a framework that supports MVC? No to mention I believe there are other (non-built in) MVC frameworks for .NET. I am not arguing your point to it's power, just to your specifics.

      --
      -- Brought to you by Carl's JR
    5. Re:no love... by shadowrat · · Score: 1
      Yeah. it's also the name of the platform that microsoft rolled out on top of ASP.NET. I thought it was apparent from the context. The guy i replied to mentioned it. I'm not sure why i was modded up and not him.

      Now, I do admit that if i was making a list of cons for the platform, it would include:
      • uncharacteristically poor documentation for a microsoft platform
      • naming the platform after a pattern found in almost all apis and platforms. might as well name it "Microsoft Programming (for web applications)"

      The first issue is a serious ding. As for the second, i'm not sure the name of the platform is ever highly considered in choosing a platform. Still, i would like it more if it was better named. maybe something like: Scimitar!

    6. Re:no love... by b4dc0d3r · · Score: 1

      Microsoft has always chosen the most generic names. Windows, Office, Internet Explorer. How about "Microsoft Network" for their online adventure?

      And their framework isn't really MVC as I understand it. They have moved responsibility of core parts into other parts. Now it's more like Doc/View from their MFC days, and less like actual MVC.

  23. The most PRO TIP of all: NO FRAMEWORKS! by Anonymous Coward · · Score: 0, Funny

    Seriously. If you start out thinking about frameworks, you're already on the wrong path.
    A framework is basically a set of libraries that have formed a cabal. Because they are only working with each other, and you always have to deal with all of them.
    It goes so strongly against the basic concepts of modularity and re-usability, that I call them an anti-pattern.

    Don't limit yourself. Instead find yourself a nice set of libraries. with as few layers as possible between you and the hardware (without losing in elegant abstraction), that can be used however you please. There is no one-size-fits-all. If it turns out to be best to build it in modules consisting of a PHP web interface, a Haskell server, a C++ rendering engine with a bit of Assembler, a Java phone client, a JavaScript web client, and a million Chinese workers, then so be it!

    1. Re:The most PRO TIP of all: NO FRAMEWORKS! by g4b · · Score: 1

      I disagree partly.

      i would not call every framework nowadays just clutter, since frameworks with bad APIs already lost a lot of influence in the last 10 years.

      libraries are not written only by single individuals, they have communities behind them.

      however, what the typical cluttered "framework" of yesterday was, becomes more and more the "CMS" of any sort. Thats an example, why you should not use php "frameworks" - because they are not frameworks.

      django however is well made, you can use it as libraries and set it up as thin framework in nearly every python app, taking your ORM with you anywhere you go. Since I DID do database stuff by myself, I would say: dont think in frameworks, if the project ist PERSONAL. Since in personal projects, your aim is to be creative and learn. frameworks should not be learned, they should be fastly usable.

      And thats where I draw the last conclusion: frameworks have improved, because many of them offer a fast "first glimpse" into their apis and coding styles, and do not try to invent a new code style alltogether. e.g. many say prototype is better in its core API than jquery. but jquery is hell of easier to learn, since it does not modify javascript too much.

      Use frameworks and libraries as much as you can in your daily work - dont let pride stay in your way, but do not use it for your creative work - dont waste your time learning how to modify something big, if you just want to create something new.

  24. Kohana Just Works. by Anonymous Coward · · Score: 0

    I've been a longtime fan of Kohana (PHP) for two reasons:
    It's PHP 5.3+ Required.
    It does only as much as I need it to out of the box, and then easily extends however I best can.

    In addition to that - it employs good coding standards which can easily be mimicked by reading through the code to - erm - encourage - your team to write nice, clean PHP. :)

    1. Re:Kohana Just Works. by Sentry360 · · Score: 2

      I have to second this. If you guys are already in the business of working on a PHP (Symphony) site, switching languages as well as frameworks seems like a bit of a leap. From my personal experience with Kohana, it's been a great way to add some structure to a messy project. You don't have to ditch all your spaghetti, but you can begin to work it into a nice clean structure. Migrating from Symphony should be fairly straightforward I imagine. Though at the end of the day it just depends on the developers you have working with you, what their skill-sets are, and how much code you expect to reuse. If you are restarting from scratch, any framework or none at all will do, it just depends on the project and the people who will work on it.

  25. may just as well ask... by Mike_K · · Score: 1, Offtopic

    emacs or vi? Flamewar at 6!

    1. Re:may just as well ask... by sdw · · Score: 1

      Emacs is far better as a web application framework than VI. QED
      And you could test the web browsing within Emacs. And debug most languages right in the editor. ;-)

      --
      Stephen D. Williams
  26. Use Grails - Ignore your RoR zealots by Anonymous Coward · · Score: 2, Informative

    As someone that's done web application development in PHP, Java, and Grails (and looked at Ruby on Rails and Scala/Lift), here's what you should be using:

    1) Grails
    2) Grails
    3) Grails
    4) Java + Spring / Spring WebMVC

    Symfony and Cake try to be full-fledged frameworks but fall short (see other comments.) CodeIgniter is the assembly language of frameworks. You can make any of them work, but I'd still switch to Grails.

    I suspect there's nothing wrong with Python/Django, but I've never dealt with them as enterprise-class software companies generally don't seriously consider them.

    Frameworks not worth using:

    1) Ruby on Rails. The first 30 pages of the Ruby on Rails book I read were pretty damning, if you need anything resembling scalability.
    2) Scala/Lift: Yeah, Odersky can make it work, but there's waaaaay too much syntax in Scala and Lift to make anything maintainable after about 3 months. (IMO most of this is due to implicit conversions: requiring four days to figure out how one line of Lift code works means it's unproductive at best and says a lot about the language and library writers.)

    1. Re:Use Grails - Ignore your RoR zealots by Per+Wigren · · Score: 1

      Instead of Lift, checkout Play (make sure you watch the screencast)! Scala support is currently a plugin but will be the first choice language in Play 2.0 (currently in beta), and it has commercial support available.

      Basically, it's Ruby on Rails for Scala and Java.

      --
      My other account has a 3-digit UID.
    2. Re:Use Grails - Ignore your RoR zealots by Anonymous Coward · · Score: 0

      If you're going to use Scala just use Scalatra. It's very easy to use.

    3. Re:Use Grails - Ignore your RoR zealots by drpentode · · Score: 1

      Every time I hear that Rails isn't scalable, I laugh. I work on an RoR site that handles millions of page views a day. The scalability solutions for RoR are the same as any framework: caching, database clustering, app server clustering, and load balancing. With a team of smart developers and sys admins, you can make any site based on a solid framework scalable. Since the poster's shop has extensive PHP experience, picking a solid PHP framework is probably best for him, although he shouldn't discount the productivity gains he may experience with Rails or another Ruby framework (Sinatra, etc.).

  27. Pick from the toolbox by Sez+Zero · · Score: 1

    You should pick from the toolbox; the best framework or tool for the job is the most appropriate for the job, not the most buzz-word compliant or necessarily the last tool you used.

    That and "Don't Reinvent the Wheel."

    1. Re:Pick from the toolbox by Anonymous Coward · · Score: 0

      But the only "tools" in a Rubyist's toolbox are their skinny jeans, emo glasses, and their overpriced Apple hardware.

    2. Re:Pick from the toolbox by Anonymous Coward · · Score: 0

      +1 for this.
      Having had to deploy some recent Rails "Apps" for the in-house dev team, you begin to appreciate that they genuinely believe that they are precious developer snowflakes, and that their time and happiness is more important, than you know, efficient code, good tools, or even reliable applications.

      Look at Rails - Ruby doesn't have lib management, let's build Gems, Gems no work so good, let's use Bundler, what's that? Strange error messages? Better Google it. Sturdy, reliable library versioning and deployment to warm the heart of any sysadmin. Oh wait, us sysadmins care about things like this, and ask awkward questions, so now the developers want to "devops" - tards at development and tards at sysadmin too! Double the tard, all the time!

      Rails app performance? Hah. We have had to home one app per server, so four apps, four servers. Middle-to-high spec servers too. Considering these "new" apps are basically rewrites of the previous perl versions. That ran as CGI. Not even FastCGI. And yet the new whizzy Rails versions take up more resource, run more slowly, have more error messages, require more sysadmin time and attention, and stay up less that a whore's drawers, is not great.

      But, the Rails developers must at least then be knowledgable right? Know all about web security? Nah. The framework will protect them. What a Rack release breaks the directory traversal protections one day? Don't know. What if they forget to properly escape the output on all views, partials and everything that is rendered to the client (including basic crap shoved into the render command in a controller method)? Don't know.

    3. Re:Pick from the toolbox by Anonymous Coward · · Score: 0

      It isn't just Twatter who are abandoning Ruby and Rails in the web space, lots of us are realising the hard way that the promises it made simply did not exist.

      Sure, you can scaffold a web page to a single table quickly, maybe even pretend it is a blog, and create a webcast about it, but for kicks, try to start it up, and then count the minutes before it even serves the first page. Joy!

      The best bit is the monkey-patching Rails and supporting libs does, making subtle landmines for the unwary. Basically, if you expect to use any core libs, expect breakage the more you play.

      And now all the Java programmers with their config hell and pattern hell are onboarding on the Rails Fails train, things can only get better! (have a look at the quality of the questions on sites like StackOverflowed for Rails programmers).

    4. Re:Pick from the toolbox by Anonymous Coward · · Score: 0

      Rails - heh, we were asked to evaluate that frame-doesn't-work - we loved the fact that despite all the stuff about test driven design, and all the baked in testing goodness these hipsters shout about, that they release versions with no testing at all!

      They released 3.1.2 on November 18th (without any testing) - of course people found serious problems with it, so they then released 3.1.3 on November 20th to address the showstopper issues for 3.1.2. Probably just fixed it without testing. Rails developers don't do testing, they are too precious and expensive. Let the devops guy fix it.

  28. If you do Java by volkram · · Score: 1

    I know that this particular article references php in the server. But if you are more accustomed to java then I have truly enjoyed GWT with SmartGWT. The SmartGWT guys offer a paid version, but I just mashed together Google's RPC with SmartGWT's widgits. Check the showcase , if you are interested.

  29. Chuck Norris... by kimptoc · · Score: 1

    *tongue in cheek*

    It has got to be the Chuck Norris Framework (get it while you can, it wont be around for long, once his lawyers get wind of it)

    https://github.com/chucknorris :)

  30. Django or Rails by g4b · · Score: 2

    I have this discussion frequently with customers.

    If you have people dedicated - use your people to let them use what they think it's best. If they like the adventure, you can also invite them to explore something else. You have to know, do they like the tech because they are geeky about it, or do they fancy the tech, because they are fanbois with big egos? First group I would let convince me of Ruby for the project and give it at least a try, for the second, I would wait until those programmers mature, and consider a choice more on sheer technical reasons - without any personal ones.

    Otherwise, if I have to take a toolkit, I will blindly prefer django over RoR for amountless masses of reasons; but I know a lot of projects who stalled because programmers thought django is easy to master - and projects where django was too light weight to get it running in the direction they wanted to go.

    I am a freak for django nowadays, but I learned about it quite early, and needed the db stuff personally for some small project you do if you should actually do other stuff, I would have never thought anybody else than some individuals will ever use it. With rails it was always more about being in a peer group, than liking the language objectively, so I say, do not ignore taste, for it shows insight, but also dont rely on blind fanatism in this decision, it's still a technical one (meaning: depending on your project setup).

    1. Re:Django or Rails by g4b · · Score: 1

      pardon, didnt mean language, i meant framework.

      ruby vs. python is another flamewar.

  31. AngularJS - server agnostic! by Anonymous Coward · · Score: 1

    I recommend AngularJS, great for client side programming of AJAX web-applications. It is all HTML/CSS/Javascript and is server agnostic, so you can use whatever fits your needs server side.

    Best of all, the testing toolkits coming with Angular are great! You can finally do testdriven development of the client!

  32. The best things about frameworks... by smcdow · · Score: 1

    ...is that there's so many to choose from!

    --
    In the course of every project, it will become necessary to shoot the scientists and begin production.
    1. Re:The best things about frameworks... by shutdown+-p+now · · Score: 1

      See, that's exactly the problem. Not to worry, though, I'm working on a solution to that, in form of a new framework that's so totally better than everything else out there today that, once it's out, everyone will just migrate to it, and we'll all be happy.

      Oh, and it's written in Common Lisp. ~

  33. No easy answer by 1s44c · · Score: 5, Insightful

    There isn't an easy answer. All frameworks are great at getting you 80% done then make the last 20% nearly impossible.

    What you know best is properly the right thing to use as long as it's capable of getting the job done and you can still find new staff who have some knowledge of it.

    1. Re:No easy answer by Anonymous Coward · · Score: 0

      This is exactly right. They solve only problems that are common and seen all the time. The problems you are actually being paid to solve they don't help with. I've seen plenty of "Wordshop" companies that use WS as their "framework" so you can get your brochure/blogging site up and running quickly, but don't expect to add any real functionality.

    2. Re:No easy answer by Anonymous Coward · · Score: 0

      Thats been my experience (so far) as well. Frameworks are great at cranking out 80% of the work, but the last 20% involving burying your head in documentation, studying things you'll never need to know about because they only apply to that particular framework takes so much time, you could have just done the initial 80% by hand in less time.

      You don't even benefit from the knowledge either, next month a new framework will come out, rendering everything you'd learned useless.

      I have my own simple frameworks in different languages & tasks, they don't do ORM, they don't even do database connection pooling (2 of them don't even KNOW about databases, not EVERYTHING has to have a database..)

      What they DO do is allow an incredible amount of flexibility, the view system on one of them parses "asp-like" templates at blazingly high speed. They work with JSON with no fuss at all (indeed, JSON is easier than HTML), Once, I even had it create pie charts as a "view". Above all else, they're SIMPLE to debug, you actually know whats going on.

      That said, I (obviously) can't just plug in 3rd party applications, people laugh at me for having my own MVC framework(s) and I can't put it on a resume because it doesn't sound very impressive.

      I've been studying django lately, but I've mucked about with apache struts and I've seen other MVC frameworks as well... there really is nothing all that wrong with designing your own MVC unless you need to use 3rd party components or have a need to impress managers (which is more important than it seems!)

      If you've got to use a 3rd party framework, you shouldn't be messing with PHP, simply because 90% of the stuff out there looks pretty but the internals resemble the spaghetti I just had for supper. (the fact that the libraries & configs are typically stored under your DOCUMENT_ROOT should tell you something about PHP scripts right there)

  34. web2py by plzdontspamme · · Score: 1

    I've been using web2py lately and like it a lot. It is a Python-based framework with a Rails-like MVC structure with JQuery and Ajax functions built in. I find it much easier to learn and use than Django. It has functions like SQLForm.smartgrid() that create a table-based interface to a database table with built-in search, sort, pagination, CRUD, and buttons to linked tables--all with a single line of code. Functions like this and more make it trivially easy to create easy-to-use front- and back-end user interfaces.

    1. Re:web2py by Anonymous Coward · · Score: 0

      Web2py indeed ;-)

  35. Why bother with a framework by Anonymous Coward · · Score: 0

    Why bother with a framework of other peoples bad code and mistakes, i thought that's what programmers were for, to write code!

    Heres an idea why not write it all as a word document and export as HTML, you have just ad much fun and bugs.

  36. Best of both worlds? by Anonymous Coward · · Score: 0

    Why don't you use the best of both worlds? Or even the three worlds...
    What I mean: first decide the framework, RoR or Django?

    Then you don't need to decide the language. AFAIK you can run RoR with IronRuby, or Django with IronPython.
    This way you would be able to mix and match (use IronPython for module X, IronRuby for module Y, Phalanger-PHP for module Z, etc.).

    Multi-language development environments FTW!

  37. C for serious by Anonymous Coward · · Score: 3, Interesting

    There's no framework for serious development, but you'll do fine with any of the bunch as long as you stay a small timer.

    So, save yourself an effort if you plan getting big and go with C directly -- Not only will you earn a magnitude of performance over your competition, your development time will be less as well. That's because competent C programmers will not dick around with completely useless cargo cult programming, like picking frameworks. Nor will they spend 90% of their time building useless OOP frameworks (with 10% of actual functionality) on top of what ever framework they started with.

    Keep it simple, STUPID!

    1. Re:C for serious by phy_si_kal · · Score: 1

      You should look at Opa. Opa has C-bindings when you need them, and make writing and running applications much easier.

    2. Re:C for serious by Anonymous Coward · · Score: 0

      I agree... but I am an embedded developer.

      That said even I would not seriously suggest using C for a web based project.

  38. Avoid frameworks like the plague... by Ami+Ganguli · · Score: 4, Interesting

    ... unless you're in the business of throwing together form-based database apps quickly.

    That's really all they do well, and there area lot of form-based database applications in the real world, so that's not a small niche.

    But for anything that's a little different, you end up spending a lot of time learning the framework, and then even more time working around its limitations. The better approach is to look at your problem and find a set of libraries that are well suited to the task at hand, well documented, well supported, and modular.

    Also, take the time to learn your tools properly and exploit them to the fullest. Learning a framework takes time. So does learning about Apache modules and SQL stored procedures. The difference is that the time invested in the framework isn't generally applicable to other problem domains, while Apache and SQL are everywhere, and are worth learning well.

    --
    It is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. - Abraham Maslow
    1. Re:Avoid frameworks like the plague... by rev0lt · · Score: 4, Insightful

      There are several advantages in using frameworks - you usually end up using tried-and-true methods to solving common problems, you may be "forced" to use some methodology that may turn you into a better programmer, and you are using code tested and debugged by thousands of other people.
      Using a framework doesn't mean you need to drink the cool-aid or use ORM - in fact, if you choose a hybrid framework, you can pick the components you need, and still use your legacy/custom code for the rest.

    2. Re:Avoid frameworks like the plague... by Ami+Ganguli · · Score: 1

      As long as your application domain is very close to what the framework was built for, yes. That's why I made the exception for slapping together quick, form-based, database apps.

      For other cases, you're trying to make a design that works well for one case fit another. Better to invest the time learning to apply more general tools that you can adapt to your problem.

      --
      It is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. - Abraham Maslow
    3. Re:Avoid frameworks like the plague... by cstdenis · · Score: 1

      I used to think this way too until I gave the Yii framework a try. It really is a well designed framework that doesn't get in the way and force you to do stupid things.

      http://www.yiiframework.com/

      --
      1984 was not supposed to be an instruction manual.
    4. Re:Avoid frameworks like the plague... by rev0lt · · Score: 1

      Given that the story was about web frameworks, most of the hybrid frameworks that I've seen are useful, even when cooking simple or specific applications.
      There are designs that work well for well-known problems - they're called "patterns". Not that I'm a big pattern fan, but it stands to reason that most of what you're trying to do, many people have done it before, and may have a clear and concise solution.
      Learning "a tool" is not as smart as it sounds - Apache is completely different from Nginx, for example. From a web developer point of view, there's little difference. SQL is a must, but only until you start to use stored procedures or triggers. Most dialects aren't portable, and even with plain ol' SQL, a specific query can have completely different performance results in different SGBDs - It is not a "generic" knowledge, it is a specific one. In many cases, the use of stored procedures for web applications is a very bad idea - while they offer the advantage of pre-parsed logic, they're not easily versionable, debuggable or cacheable.
      You can have your specific app and still use Zend_Mail for sending email without re-implementing the whole thing. Or Zend_Validate, even if you don't use the touted MVC approach. Or Zend_Locale, and benefit from the thread-aware gettext implementation. The thing is, hybrid frameworks are not really frameworks, in the sense they work like libraries.
      Why don't you program everything in C and compile it as a php module so you can tweak/postprocess the output? Its much more efficient (performance-wise and application domain-wise) than using plain ol'PHP directly.

    5. Re:Avoid frameworks like the plague... by Ami+Ganguli · · Score: 1

      The patterns are really the crux of the problem. Design patterns are an excellent tool, but applying the same design pattern to every problem doesn't make sense. They need to be selected to match the problem. That's where the frameworks go wrong. At least the ones I've seen attempt to wedge everything an MVC pattern on the server side, which really leads to a lot of confusion (and enough misunderstanding of what MVC means that the term no longer means anything).

      If you can really use the Zend libraries without pulling in all the other cruft than that's great. Choose them if they suit the task. Then you're really just doing what I suggested to begin with - selecting the best libraries for the job. (My impression was that this wasn't possible, but I didn't dig very deeply into Zend - by the time I looked at it I'd already developed a deep hatred of frameworks.)

      Apache is generic knowledge in that you can apply it to a wider range of problems, and since every installation needs a web server, it's not something "extra". You have the tool already - learn to use it. Same with Nginx or one of the SQL servers. Every component you add has a cost in maintenance and complexity, so don't add more components until you've fully exploited the existing ones.

      My main complaint with frameworks isn't efficiency. But you have touched on another problem. I know one poor sucker whose life is now devoted to trying to optimize an all-php solution, when a few weeks of investment in a Jave or C component would speed up his application 100-fold. Alas, try convincing a project manager that you need to invest a few weeks optimizing without producing any new features. He'll be stuck tuning that app and trying to squeeze performance out of Memcache until he burns out.

      --
      It is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. - Abraham Maslow
    6. Re:Avoid frameworks like the plague... by rev0lt · · Score: 1

      Patterns are about applying the same design pattern to the same problem, not every problem. I agree that the pattern frenzy is not good, and specially in PHP often leads to over-engineered bloated code, but not always.
      Regarding Zend Framework, most modules aren't intimally tied with the mvc implementation. That means you can use the authentication library, the form library and the validation library without needing to use the recommended folder tree or any mvc features at all. I often find Zend_Mail, for example, in many 3rd party apps that do not use any other module. They work a bit like the PEAR libraries, but with a better quality control and a well defined implementation specification.

      Regarding optimization, in my experience, it is not that hard to increase the performance of an application not designed with performance in mind. I've made old joomla installations (v1.1) scale to several thousand simultaneous users on a very old machine, in less than a day. In fact, Zend even has a module that may be a big help - Zend_Cache. In other cases, it's not obvious that a C/Java/whatever will be faster, because usually the problem lies with database operations, poor I/O or plain old bad design decisions - that also happen in other languages.

    7. Re:Avoid frameworks like the plague... by Ami+Ganguli · · Score: 1

      This has gone off-topic, but... the various caching solutions don't always work. Since PHP discards all of its data with each request, complex data-structures that are slow to assemble but fast to access aren't possible. In this case I've suggested C or Java (or even Python) because the data can be loaded into RAM and pumped out at a high rate by traversing some carefully constructed data structures. Something like memcache can help a bit, but traversing the a large linked data structure still ends up being slow. Memcache helps when you can look up your result using a single key - it doesn't do much to speed up complex multi-index queries.

      This is obviously an edge case - SQL stored procedures or one of the caching solutions will do the trick for most applications - but really this job would be far easier with a different choice of tools. This complaint is only tangentially related to frameworks, though. The frameworks aren't the problem here, but more the one-size-fits-all attitude that seems to come with them.

      --
      It is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. - Abraham Maslow
    8. Re:Avoid frameworks like the plague... by rev0lt · · Score: 1

      I obviously don't know the specifics of the application you talked about earlier, and it may happen that PHP isn't the best language for the job (and probably isn't). I understand your "frustration" with frameworks, and the motives you mentioned are the same that kept me away from them for years. But, truth be told, frameworks like Zend Framework (that doesn't impose themselves on the programmer) allows me to spend more time in solving the aplicational problem, and less worrying about structural issues such as database connections, authentication or character encoding.

    9. Re:Avoid frameworks like the plague... by Ami+Ganguli · · Score: 1

      It sounds like you're just getting the benefit of having a set of libraries that you like and know well. There's certainly nothing wrong with that. I might look at the Zend stuff again if I end up doing any more large PHP projects.

      Maybe the problem here is the definition of "framework". In my mind the whole point of a framework is to impose itself on the programmer. Typically along the lines of:

      • there shall be three tiers to your application;
      • we'll call them model, view, and controller even if your app just provides an API and doesn't require a "view";
      • we'll make using stored procedures really difficult;
      • we'll wrap SQL with an ORM that's less powerful, slower, takes just as long to learn, and isn't used anywhere else in the industry;
      • we'll replace mod_rewrite with our own request router that's less powerful, slower, takes just as long to learn, and isn't used anywhere else in the industry;

      I feel the frustration level rising just remembering all this. But it sounds like you get my point quite well and, like I said, I'll take a second look at Zend based on your comments - thanks.

      --
      It is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. - Abraham Maslow
  39. Take a look at the Yii Framework by Zpin · · Score: 2

    I have evaluated a few frameworks for the Multicraft control panel (multicraft.org) and in the end decided to stick with Yii. It's an elegant and easy to set up framework that lets you get something functional done in a very short time. Also, I haven't had a single Yii related issue with the multitude of webservers and operating systems the Multicraft panel is already running on. I enjoy working with Yii and will start using it for other projects as well: http://www.yiiframework.com/ (I'm not affiliated with them in any way)

  40. Perl Dancer by Anonymous Coward · · Score: 0

    Everyone loves Perl Dancer! it's extremly easy to learn!

  41. No framework like no framework... by Anonymous Coward · · Score: 0

    PHP is a templating language with bindings to several libraries targeted at web development. Why do you need a framework exactly? The frameworks I've been forced to use have hardly been masterpieces of software engineering -- greasy regex based "routers" and markup used in places other than templates / views.

    I would never use a 3rd party "framework" on a new project where a classloader, static utility classes and separate view / template directory would suffice. Spare yourself the series of convoluted workarounds to problems that professional developers with control over deployment simply do not have.

  42. Agavi! by Anonymous Coward · · Score: 1

    If you are a PHP shop, Agavi would be my best bet. It's correctly implemented MVC, unlike Symphony and other RAD Rails clones; it's high performance; it's extremely extensible and scalable. Ze germans that wrote it are very clued people. I do mean it. Very. Clued. People.

  43. PL/I by Fujisawa+Sensei · · Score: 1

    PL/I FTW

    --
    If someone is passing you on the right, you are an asshole for driving in the wrong lane.
    1. Re:PL/I by Anonymous Coward · · Score: 0

      Most people will never know the joy of writing PL/1. It is my favorite language although I haven't used it in 20 years.

  44. My experience is with frameworks... by cjjjer · · Score: 2

    Most of the time you don't end up using the framework it ends up using you. Over time the quirks of a framework ends up biting you in the ass (usually in a huge way). This is why there are always new frameworks being worked on and there is no one framework that stands alone over all the rest. Lately I have been putting more stock in libraries than frameworks.

    My .02

  45. My Experience With Frameworks by Greyfox · · Score: 1
    Is that you have to be at least as experienced with their code base as the guys who wrote them in order to use them. And with database-accessing frameworks in particular I've never seen one perform as well as hand-coded SQL. I always find them to be extremely inefficient unless you spend twice as much effort defining all your database relationships to the framework.

    The usual solution to this appears to be to pile on more and more frameworks until you have nothing but a twisty maze of frameworks, and then give up, throw everything out and start over.

    If your application absolutely has to be web-based, maybe just write up a restful interface in jsp or Staff and throw together some javascript to glue it all together. Or maybe just write an iphone version in native objc. I suspect mobile development is how native development is going to creep back into vogue...

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  46. Another idiot by Stumbles · · Score: 1

    After 40+ years that software has been around you should know by now one side does not fit all; it does not matter if your talking web, kernel or whatever.

    --
    My karma is not a Chameleon.
  47. Simpler is Better by pscottdv · · Score: 3, Interesting

    My experience with python-based frameworks is that they tend to help at the beginning and get in the way when you want to do something that is outside what they do easily. Here's what I have learned:

    1. If your developers have access to the file system, then stay away from anything that tries to be a content
            management system (I'm looking at you, Zope).
    2. Think hard about how user permissions will be handled, because if you screw it up it will make debugging and
            security a nightmare.
    3. Debugging is harder with web-based development than with desktop development. Make sure your framework
            has great debugging tools which (for python development) means:
            a. The stack traceback is readily available and
            b. The framework doesn't try to catch and handle everything. If it does you will find that your error
                    messages are raised no where near where the actual problem lies and you will have a terrible time finding them.
    4. Maybe skip the framework altogether and instead use individual tools. I use:
            - webpy for the dispatcher
            - Tryton (with Proteus) for handling the database (This allows me to quickly assemble the "administration"
                portion of the application in Tryton instead of building a web front-end)
            - genshi for templating
            - formencode for validation/user error messages
            - pyjamas plus YappyCat for AJAX.

    Is it sad that everything I have learned about using frameworks can be boiled down to a
    short slashdot post?

    --

    this signature has been removed due to a DMCA takedown notice

  48. Joomla Platform by Anonymous Coward · · Score: 0

    Full discloser: I'm a Joomlaphile and it's how I make my money.

    Joomla, like other web applications, has it's strengths and weaknesses. One of the strengths is its code base, all object oriented and designed around MVC with strong multilingual capabilities baked in.

    The CMS has set on top of the framework since 1.5 (4 years ago), but the project is currently decoupling them and making the framework truly stand on its own, to be compared with Zend, Symphony, Cake, etc. (whereas with 1.5, it resembled what you would expect of a framework, but the CMS was more tightly integrated into the application).

    http://docs.joomla.org/Platform/11.1

    Because of this, Joomla would be a good candidate for you to check out if your company often *did* need to build common CMS capabilities. In those events you would have the option of borrowing what you need from the CMS codebase to build out content editing, menus, an extension system, etc, without being forced into the CMS paradigm from the get-go.

    1. Re:Joomla Platform by CrashNBrn · · Score: 1
      Really? Joomla? Of all the CMS's Joomla is probably the worst to try and do anything with.

      Joomla has an absolutely obtuse file-structure.
      Joomla's templating system is awkward at best, requiring mixing ?PHP echo's and logic all over the place. As opposed to a clean PHP implementation that might just use a variable e.g. [div class="body"][?PHP echo $contentBody;?][/div]

      WIth Joomla's obtuse file-structure, even simple components are scattered among multiple root folders and subfolders - as necessitated by Joomla requirements.
      Adding and updating content in Joomla, takes much longer than most other CMS's.

      Trying to find Joomla content in the backend is a nightmare, with "Articles" and Modules scattered all over the place.
      Joomla refuses to load a "page" unless it is linked to a menu item. To work around this failure you have to generate a non-published menu, just to create links to articles, so that you can use those links within your existing content.

      Joomla has no clean view of your content, e.g. Tree layout (see Concrete5 or ProcessWire). Your content is scattered.
      Joomla has Plugins, Modules, Components that are collectively known as Extensions... Except many uses of a module is solely so you can place content where you need it to go. "Custom HTML" --- so it is effectively a custom article. Yet it cannot be listed alongside your articles.

      Joomla is a really bad joke, that somehow has become one of the most popular CMS's.
      I can't wait until we stop using it, and needing to support it.

  49. One to rule them all, really? by galego · · Score: 0

    We see how that worked out for Sauron, right!?!?!

    --

    Que Deus te de em dobro o que me desejas

    [May God give you double that which you wish for me]

  50. Join your local user groups by Anonymous Coward · · Score: 0

    I live in Austin, Texas and we have a really awesome Ruby on Rails as well as Ruby group. I've also heard there's a really good Javascript group as well. I highly recommend that you attend any local user groups as those people are best equipped to extol the virtues of their particular language and framework. This will also help you gauge the majority talent pool since it will be ultimately important that you can actually hire people who can support those frameworks.

  51. Zotonic by Lazy+Jones · · Score: 1

    Zotonic, purely for technical reasons.

    --
    "I love my job, but I hate talking to people like you" (Freddie Mercury)
  52. Don't underestimate the "no framework" option! by fzammett · · Score: 4, Insightful

    We've gone through a number of options where I work, from a homegrown framework to Struts to various other trials. Eventually, when I managed to pull us into the RIA world, I make a suggestion that got crooked looks initially but which now, a few years on, is seen as ideal: NO FRAMEWORK AT ALL!

    We're primarily a Java shop, but this can apply in any shop since there are similar options available for .Net, PHP, whatever else, but I'll describe our model because its very simple: our apps are nothing but POJOs (Plain Old Java Objects for those not in the Java realm) that we talk to via DWR.

    That's it.

    No Struts, no JSF, no Spring MVC, not even straight servlets! Nothing but pure, simple Java classes with no real tie to any HTTP-related objects (well, usually... some exceptions here and there are required).

    The benefits are many: the code is simple and clean... the classes are so easy to unit test that we actually manage to get our developers to do it (sometimes)... configuration doesn't get in the way (no, it's not as simple as some frameworks because there IS configuration, but its so minimal no one minds)... performance is top-notch since there's no extra work being done by a framework first (granted modern frameworks are very efficient and this difference is probably minimal, but still)... and new developers can be brought up to speed in less than a day and no one is ever confused by the code, that's fore sure! There's also been an implied side-benefit: our apps are written in a very stateless fashion since using state becomes unnatural in this architecture (there IS some usage of state used in some places where it's truly necessary, and that's the exceptions I mentioned earlier to not using HTTP-related objects). Yes, this was one of my goals in pushing this approach in the first place, but it's nice that I didn't have to hand down any edicts or anything because it came naturally out of the architecture anyway.

    What you wind up with really is a service-oriented design since you're doing more work client-side and the server-side code is a lot thinner... things like navigation and such, transitions between states, are no longer handled by a server-side framework (there's way you still COULD do it server-side, but it becomes pointless). This definitely takes some getting used to and we had our share of paradigm shift-induced ugliness. But we got through it and we're all the better for it.

    But, if this isn't the type of application you're looking to develop, if you want the more "classical" web app model, this probably isn't the way to go (although it still can be valuable to mix a technology like DWR in to your, say, Struts-based application... that can be a good first step in fact). You definitely do have to rely on client-side code more (no, NOT at the cost of security, you can be just as robust in that area as you could ever be if you do things smartly). Pair something like DWR with a top-notch front-end library (ExtJS is our choice) and you have yourself a very powerful architecture that you could even call a framework if you want.

    My point is simply that you shouldn't get into the mindset that you HAVE to have some big, do-it-all-for-you framework to be productive, and in fact if you go to the opposite extreme and use no framework at all, if you do it wisely, you can find you are more effective then you'd be even with the best framework backing you up. "None of the above" can in fact be a viable and even possibly utopian answer to the original question :)

    --
    If a pion (n-) collides with a proton in the woods & noone is there to hear it, does lamdba decay into the source pa
    1. Re:Don't underestimate the "no framework" option! by Reigo+Reinmets · · Score: 1

      This solution what the parent is suggesting is a rather good one actually and can be used in the PHP world also, although you still need some good library to help you handle the json objects but that is trivial. It does involve a rather big paradigm shift as you end up with coding a lot of your business logic in javascript on the client-side and using a lot of short ajax requests. But it does allow you do be more dynamic on the front-end in any way the customer sees fit. The down-side is actually that you are writing big parts of your code in javascript which can be a problem if you want to keep your code hidden from the prying eyes. Security as mentioned can be an issue if not properly handled by the backend. To sum up the parent commenters post: The best framework might just be a HTML5 and a powerful javascript library combo. ExtJS, JQuery and Dojo are all rather good.

    2. Re:Don't underestimate the "no framework" option! by sapgau · · Score: 1

      Very interesting, I really want to know more about this.
      How do you handle user sessions? Are they handled by the client?
      You have your own custom code to manage java sockets for port 80? You said no servlets.

      So far I like DWR even if I stick with spring, struts, et. al.

      Regards.

    3. Re:Don't underestimate the "no framework" option! by phy_si_kal · · Score: 1

      Indeed, that's what we followed with the Opa language.
      No framework, simple code: It's really the best way to write web apps.

    4. Re:Don't underestimate the "no framework" option! by Anonymous Coward · · Score: 0

      I'm also interested in hearing more about this route. Especially:

      What you wind up with really is a service-oriented design since you're doing more work client-side

      What are you pushing to client side?

      I'm new to Java and have been extremely turned off by the mess of frameworks that only seem to make life FAR harder than in my previous web experiences, as well as making development slow (container servers that take 5 minutes to start and deploy? no thanks!).

    5. Re:Don't underestimate the "no framework" option! by fzammett · · Score: 2

      At the risk of sounding like a shill for myself, I've actually written about this approach in my books and articles, and have given presentations on it as well (probably not as directly as we're discussing here, but more of a philosophy discussion). Feel free to check it all out at zammetti.com. You can also contact me directly if you want with any questions you might have.

      Let me try and answer a few things here though that I've seen in replies...

      1. Re: session... it's handled not much differently actually. For the things you would normally put in session you still can (DWR makes it very easy to get at session). You can also store stuff on the client, which frankly is where a lot of things make more sense. And it doesn't automatically mean HTML5-ish answers (of course it can though)... sometimes, in keeping with the simplicity idea, JavaScript variables in memory is a good answer (very much depends on the data, its sensitive, etc., but you get the idea).

      2. Re: sockets... no, DWR is in fact implemented as a servlet, and you're still talking HTTP to it as usual... it's just that those details fall away because you're code looks very much like calling methods:

          MyServerObject.myMethod("abc", {
              errorHandler : function() { alert("Bad!"); },
              callback : function(response) { alert(response); }
          });

          See? Doesn't look much different that calling a regular JavaScript method, or even a Java method, but that's actually JavaScript calling the myMethod() method of an instance of MyServerObject on the server!

      3. Re: What you push to the client... basically, DWR creates JavaScript files that mimic the interface to the Java classes you want to execute methods on. You import the JS files, like any other except you're path is the DWR servlet, then you just call methods on those JS proxy objects. That's it!

      Like I said, feel free to ping me if you want to know more, I'm always happy to talk about something I think is cool :)

      ----
      Frank W. Zammetti
      Author of "Practical Palm Pre webOS Projects"
      and "Practical Ext JS Projects with Gears"
      and "Practical Dojo Projects"
      and "Practical DWR 2 Projects"
      and "Practical JavaScript, DOM Scripting and Ajax Projects"
      and "Practical Ajax Projects with Java Technology"
      (For info: apress.com/book/search?searchterm=zammetti&act=search)
      All you could possibly want is here: zammetti.com

      --
      If a pion (n-) collides with a proton in the woods & noone is there to hear it, does lamdba decay into the source pa
    6. Re:Don't underestimate the "no framework" option! by Anonymous Coward · · Score: 0

      Absolutely. I have developed in frameworks for Java, .NET, developed frameworks for COM/DCOM (waaaaayyyy back) and I spend a long time trying to figure out how to use them properly. I find it's easier to use a good set of libraries with my own simple Java objects (or .NET). For my latest project I wrote all the code myself using a messaging infrastructure (HornetQ, which I like very much) with some libraries for JSON manipulation and am very happy with the result. I thought about using an ORM but my experience has been that there's a lot of overhead and complication. I wrote a simple abstraction layer for data access and use direct SQL with prepared statements. It's simple, I can understand it 6 months later and I can make changes without worrying about using the framework incorrectly.

      This is all back-end work so for front-end (web page or fat-client) a framework can dramatically simplify the required code. For what I design and code most often I find the roll-your-own approach with the high-quality libraries and infrastructure components to be the way to go.

  53. No silver bullet by aintnostranger · · Score: 2

    I'm a ruby dev and let me say it clearly: there is no silver bullet. Even in the ruby world Rails is not fit/best for everything (try Sinatra, fall in love). And there are things no ruby framework is fit for (See Twitter, and their sad (originally) misiguided history w/ruby).

    There are a lot of non general projects/requirements out there. Watch out. For general stuff I would say yes, go with RoR and Sinatra. One nice thing about the RoR community is that it's very strong on clean code, unit testing (TDD, BDD, etc..), and web standards. So in that social way, Ruby devs have a strong incentive to become better developers.

  54. Coming Soon from the developers of Cake! by Anonymous Coward · · Score: 1

    The first on the list of frameworks to avoid...

  55. Imho by webmech · · Score: 1

    I find CodeIgniter to be the best platform with just enough tools to help you get the job done. Heavy community support and tons of plugins too. Combine this with jquery or javascriptmvc and you can build some awesome / scalable / maintainable web apps. It's worth taking a look at. Hope this helps.

  56. Rules by ameen.ross · · Score: 1

    Drupal + Rules will do just that :)

    --
    $(echo cm0gLXJmIC8= | base64 --decode)
  57. Django by kikito · · Score: 1

    I'm a ruby on rails developer, but since you already have a backend in python, Django looks more appropiate for your particular case than Ruby on Rails. Django is different than RoR, but your RoR enthusiast will also find things to like there.

    I would avoid PHP as much as I could - but that's just my personal opinion.

    1. Re:Django by Anonymous Coward · · Score: 2, Informative

      Strongly agree about django.

      The frameworks i've used, or thoroughly reviewed are:
      Symfony
      Grails
      Zend
      RoR
      Django
      CakePHP
      Turbogears
      Wicket
      GWT
      Drupal (bordeline framework) ...along with a bunch more i looked at more briefly

      Django is the best by far. The design just makes a lot of sense, and more significantly, everything you do is just so damn quick. Besides, using python on the server is really nice. It's library-base is big enough to pretty much do anything you want, which is good if you find yourself lacking a feature or two in the framework.

  58. Use Django or ROR by Anonymous Coward · · Score: 0

    I used php for a while (profesionally and personally), and tried a few frameworks without much success. I had essentially written my own framework but wanted to use something more powerful to speed up development. All of the PHP frameworks gave me fits - ugly, confusing, annoying. I'm sure there are good ones out there, but I never found one I liked. Plus, the PHP language/libraries themselves are not my favorite. Useful, easy, but also awkwardly designed in a lot of ways.

    I used django for a while and *loved* it. The python language is a breath of fresh air after coming from PHP (and other languages). Django is just so nicely designed, it really makes web-app development better. I now write all my personal system-utility/maintenance type things in python. Django is amazing.

    From what I've seen Ruby is as nice as Python and ROR is as nice as Django. If you have Ruby devs there already, then ROR is probably your best bet.

    The way I figure it - if you have the chance now to switch to a new technology, why *wouldn't* you jump off PHP and get into a newer/nicer language? You may have a lot of PHP experience, but if you have decent programmers they'll be able to pick up a new language the same way they'd be able to pick up a new framework. And probably easier.

    The one caveat is performance - AFAIK, PHP itself is a more lightweight language than Python, and therefore it may be faster. However, I've never yet run into a circumstance (professionally) where web-app performance outweighs development time (for new features and for lack-of-bugs). A lost day and a half of debugging can equal the cost of a new server. A few hours here and there for the entire team over the period of a month could equal a few servers. Not to say that performance is not important - just that the performance difference of PHP vs. Python (and subsequently PHP framework vs. Django) may likely be a non-issue.

    I'd recommend having the ruby devs mockup a few pages similar to your current app. Make it look nearly the same. Then look at how nice the code is vs. the PHP. Then have them demo adding one new feature (say, an additional login box or a "remember me" cookie, etc) to show the others how easy it is to dev. That's probably the easiest way to gain converts, as long as you don't have devs that are very resistant to change.

  59. Go rather than C by vAltyR · · Score: 2

    I think Go would be a better choice. C's great and all, but rather than spending development time "building useless OOP frameworks," they'll be spending their time managing memory; considering they're PHP/Python/Ruby programmers, it's possible most of them don't have a lot of C experience. Go would be a much better choice in this case. You'll still get a significant speed increase, though not as much as C, but it's garbage collected, so you don't have to learn how to manage memory all at once. Many people on the mailing list have come from a dynamic language like Python or Ruby, and say Go is a great improvement because of the type safety and performance. I haven't done much web programming myself, but ask around on the mailing list, there's plenty of people doing that sort of thing.

    1. Re:Go rather than C by Anonymous Coward · · Score: 0

      Garbage collection? What a waste of cpu cycles.

      A CGI app lives for a fraction of a second. It needs to render the page/do its work as quickly a possible, then exit. The system can reclaim the memory 200ms later when the app exits.

    2. Re:Go rather than C by Anonymous Coward · · Score: 0

      Memory management is a cargo programming too, for server/service work at least, there is seldom a pragmatic reason to do it. Why? Because you want the maximum load on your resources to be deterministic and known. You want to know what your service can do and what it can not do. So, you should prepare the resources you expect to use on the heap at initialization. You'll get better performance doing this and less or no code to handle memory management, instead you'll knowingly have to queue requests to scarce resources (instead of pretending they're infinite as all frameworks do). It's simple and saves you a lot of trouble...

  60. Solar framework for PHP by radio4fan · · Score: 2

    I'm really enjoying working with the Solar framework. It's well engineered and cleanly constructed.

    Certainly worth a look if you're sticking to (or stuck with) PHP.

  61. Mojolicious by Anonymous Coward · · Score: 0

    Mojolicious (http://mojolicio.us/) gets my vote for best web application framework in any language.

    You can use Mojolicious as-is, or as a starting point for your own custom framework. Mix and match modules from CPAN as needed for a powerful solution.

    Perl is a great choice for web development these days. It's fast, reliable, powerful, and new releases don't break existing code. CPAN is already great and continues to get better every day (100,000+ modules).

  62. Django by claytongulick · · Score: 4, Interesting

    I've read the comments in this post, and I agree with most of them, especially the guys who argue in favor of avoiding frameworks all together. I get where they're coming from, I really do. In fact, not so long ago, I would have made the same argument. The problem is, to do web development, you really need some sort of "framework" or "library". It doesn't make sense to recreate the wheel for URL parsing, environment param passing (ala CGI), etc...

    At the end of the day, you'll need to pick some set of utilities in order to be successful at a web project. It's debatable what constitutes a "framework" vs "utility library", because there's a lot of grey area there.

    Of all the ones I've used, ASP.Net, ASP.Net MVC, Sprint, Struts, Cake, Symfony, Django and homegrown, I'm landed pretty solidly on Django.

    The reason for this is how it really gets out of your way, and just lets you code. It has all sorts of fancy features if you want them, but you aren't compelled to use them.

    It's lightweight (I run several Django + postgres instances on a VM with 500mb of RAM with sub 200ms response times), the different parts are pluggable, you can swap out the ORM, templating engine or admin parts for anything you like, and it embraces the pythony way of doing things.

    There isn't a bunch of black magic, it's really very straight forward. The framework code is very readable, and minimal. The core "framework" is really just a set of python modules that give you very handy utilities - URL routing, ORM, Templates, etc...

    Don't like sessions? No problem, just don't include that module. Don't like the ORM? No problem, roll your own, or use something else.

    Want a full blown framework with automatic admin interface, and all the bells and whistles? Great, it's there for you if you want it.

    In general, I've been one to avoid frameworks because I agree with the sentiment of many other posters on here - frameworks do the "easy 80%" quite nicely, but the final 20% ends up being weeks and weeks fighting with the framework.

    Django is the only one I've encountered that doesn't have this problem. I've never had to fight with Django at all. My only problems were a lack of solid python skills, but one I picked that up, Django was beautiful and made a lot of sense.

    It's the most intelligently designed, practical, useful framework I've ever found, and has done what no other framework I've used has done: actually saved me enormous amounts of time.

    --
    Drinking habits can be dangerous. You can choke on the cloth and the nuns will wonder where their clothes are.
  63. May I suggest: by toxonix · · Score: 2

    Oracle Portals! You want bindings? Check. You want unnecessary abstraction? Check. You want portlets? Check. You want to empty your pockets for Larry Ellison? Check. Any 20-something neckbeard can write a Rails app. Most teenagers and hackers kluge up a PHP app without much trouble. You can't spit without hitting another 'extremely mature' PHP framework. But it takes real balls and lots of money to create an Oracle Portals app that sucks anyway and makes you all want to commit suicide. Why do you think you need a web framework? What exactly does this small web based business do besides process a few forms? It doesn't matter really. Talking about it and asking /. a bunch of vague questions won't get any work done. In my experience, frameworks are the source of most evils. The pyramid of sand has no internal scaffolding.

  64. codeigniter by Anonymous Coward · · Score: 0

    I have had much success with codeigniter. I have written helpers, hooks, and libraries that help it tie into python, ssh, and others. it also has a 'unit testing' type of library.

    I have been using it since 1.6 and I really like it.

    I do not design everything in it. but when it comes to a project that I will be in full control over and I know it we will be working on it constantly, I go with codeigniter.

  65. Cherrypy by Anonymous Coward · · Score: 0

    You said you are using python already why not take a look at cherrypy we have been using it at work and are pleased with it. It is a very basic framework without bloat.

    http://cherrypy.org/

  66. Joppani framework. by Issarlk · · Score: 1

    It's little know, but I'd really suggest you look into the Joppani PHP framework.
    It tries to approach Rails, but without massive libraries to include for each page that slow down you site to a crawl like some others do.

  67. Node.js? by curunir · · Score: 1

    If you're bound and determined to use a scripting language (which, from what you listed, you appear to be), why not use the same language on the server side as you do on the client? It will allow you to share code on both sides and there's plenty of reasonable MVC frameworks that will work on Node. And Node should out-perform PHP and Ruby and likely Python as well.

    I tend to lean towards the Java/Spring approach, but I've been pleasantly surprised with Node.

    --
    "Don't blame me, I voted for Kodos!"
  68. Opinionated vs. unopinionated software by supton · · Score: 2

    Assuming Python is important since you have a backend in Python (unclear): choose Django if you want an opinionated framework that makes lots of decisions for you about how *you write code*, or choose Pyramid if you have a desire for an un-opinionated framework. Both are good -- but very different -- choices for the right situations and coder preferences.

    RoR and Django are opinionated. I'm guessing there exist opinionated and un-opinionated frameworks in practically any language/runtime. The same is true about the amount of inversion-of-control assumed by the framework in relation to how you extend it.

    1. Re:Opinionated vs. unopinionated software by Anonymous Coward · · Score: 0

      +1 vote for Pyramid.
      We have about seven projects of various complexity in Pyramid, and we haven't felt we have been "fighting the framework" with the larger ones.
      I've been converting some mod_python projects (DIY framework) to Pyramid for the convenience.

      Things I like about Pyramid:
      1) Non-opinionated . Do you think ORMs are the "Vietnam of Computer Science?" Don't use them. Don't like the templating language that the kids think is cool this week? Use something else.
      2) Your code is the application, the framework is included as needed. (Not the other way around.)
      3) Documentation/testing culture.

  69. the cake is not a lie by CymorC · · Score: 1

    It's a great framework that is middle of the road between having everything done for you, and something that barely gives you anything. It can autobuild stuff for you if you tell it to, or you can just implement things on your own.

  70. Grails by Anonymous Coward · · Score: 0

    Let me be a voice of sanity and suggest Grails. It has proven technology behind it such a Spring and Hibernate but is 'code by convention'. You can lossely type objects and variable and it is Java based so you can easily integrate all Java Libraries.

    I went from the LAMP stack to PHP in 2 weeks quite easily and was building CRUD apps in no time. Far easier than Ruby and far more scalable too. Plus with the Java architecture, far greater flexibility and greater pool of developers.

  71. One Parentheses to rule them all. by Ostracus · · Score: 1

    So, I ask you, Slashdotters, what web framework do you find to be the best and why? Why would you avoid others?

    Seaside or Weblocks

    --
    Shai Schticks:"You don't make peace with friends, you make peace with enemies"
  72. Give Yii a shot by ianare · · Score: 2

    If you want to keep your existing PHP code, the Yii framework is very nice. I'm using it for a fairly complex web application after having evaluated the other popular PHP frameworks, and having spent a lot time using (and hating) Zend. Yii is simple and light, providing the core MVC but most everything else is up to you. This makes it easy to integrate existing code into it, though inexperienced coders could get a little lost. There is very little hand holding.

    It's faster than any other PHP framework I've worked with, though you really do need to use it with mem cache, APC, or similar. In fact speed was my primary reason for using it. We do all our dev work on a VM and even with all the debugging and code analysing, it doesn't slow down much. On our servers it absolutely screams, the weakest link is always the DB. There is a Yii extension for Mongo DB which we are investigating to hopefully cure some of these issues (mostly massive logging/tracking inserts).

    There are quite a few extensions written for Yii, and it's easy to create your own : I've created a few and the process is extremely simple.

    There are some web based auto generation tools that produce sane code skeletons, for example to create a model directly from the DB. Again this is just the basic structure, it doesn't get in the way, and you're not required to use these tools.

    One of our requirements was internationalization, and Yii has a few methods that make it easy to translate and to display prices, numbers and dates in the correct format, etc ...

    All in all we were very impressed with this framework, so much so that there is now talk of migrating other applications to it, which are currently using a purpose built framework. In some cases Yii is actually faster, and a hell of a lot easier to code / debug ;-)

  73. Django for the 80% solution by Coz · · Score: 2

    We've been building a suite of tools using Django that combine near-real-time event processing and offline analytics. It's been very useful and flexible; the data model abstraction is clean, and we can target different databases with a couple of lines of config file change. We're integrating some Javascript and other visualization tools in our UIs, and finding it pretty easy to support in the Django framework. Performance scales with resources fairly linearly, the overhead has been very manageable, and it integrates into almost any security framework. I've seen nothing to convince me we need to look at a different framework.

    --
    I love vegetarians - some of my favorite foods are vegetarians.
  74. If you have your choice, then Mojolicious rocks by Anonymous Coward · · Score: 0

    Of course this assumes you are writing in Perl. Catalyst is pretty good as well, though the dependency radius is harder.

    Generally speaking, which ever language you need, choose the framework that will cause you the least grief, support what you need, and get out of your way when its not contributing to your effort.

    That is, you don't want a framework akin to the Soup Nazi. You want something easy, which "just works", and is fast, easy to support, adapt, and debug. This is why we use Mojolicious and Perl.

    Yeah, the haters are going to make their "line noise" or "write only" arguments. Ignore them. Use the best tools for the job. In this case Mojolicious and Perl are highly recommended for this sort of development.

  75. Wicket by null+etc. · · Score: 1

    I'm surprised to see no love for Wicket here.

    1. Re:Wicket by sapgau · · Score: 1

      I've heard wonderful things before its release.
      I wonder how it performed in the last couple of years...

  76. Re:Looks like score slider JS doesn't work in IE9 by Anonymous Coward · · Score: 0

    Do you want a quarter to call someone that cares? /ducks

  77. *** some experience talking by Anonymous Coward · · Score: 0

    I noticed that the following commenter seems to have valuable experience:

    http://ask.slashdot.org/comments.pl?sid=2557930&cid=38265514

    Also, the three comments below it seem to also relate to the experience.

  78. PHP-Radicore by Anonymous Coward · · Score: 0

    Radicore
    www.radicore.org

  79. Maybe you havent heard... by Anonymous Coward · · Score: 0

    XRX with XQuery on eXist-db is the best framework ;-)

  80. FAIL by Skal+Tura · · Score: 1

    Deisgn goal of FW to rule them all == Design goal of EPIC FAIL. It will end up just something else which will be replaced eventually and cursed about.

  81. Hands down by Anonymous Coward · · Score: 0

    Codeigniter 2. I would already have said this yesterday but last night I discovered the sparks aspect and now I am ready to punch out anyone who dares try to say it is not the coolest framework for php.

    Set your shit on fire already!

  82. Boil it down, man. by Anonymous Coward · · Score: 0

    I second the gist of the post: Consider forgetting about frameworks.

    Read about it years ago in a windows (that I normally Do Not Touch, but I digress) context: Use whatever works for rapid prototyping, but the final app will talk native win32. This makes eminent sense because in the end you lay your own layers for talking to this and talking to that anyway, so you might as well fill in the body of those layers (classes, functions, whatever the conceptual layers look like for you) with things that poke the system directly. On a C64 that'd be poke and peek, yes, but on windows it'd be win32 and on linux it'd be POSIX (and stay out of the asm/* and linux/* includes, dammit). If you do it right the replacement for a different system is but a compile away.

    No reason why it shouldn't work the same for other environments.

    And reasons why not to use frameworks? Big, lots of code, plenty that will be there because the outline demands it but much of it will have seen little exercise or even testing. Sometimes they even force decisions on end-users that have more to do with the developers' preferences than with making sense at the use end (qt and the forced use of cups and all that implies, for one; my printer does postscript so I don't need more than plain old lpd). The code maintenance alone ought to be enough reason to think twice about adding to your project as a dependency yet another framework and all the things it depends upon.

    The problem with frameworks is the mindset, to the point of diminishing the utility of the code within.

  83. "lightweight" by Anonymous Coward · · Score: 0

    I have no quarrel with you other than the abuse of the term "lightweight". Back in '97 people claimed java was "lightweight" because it could run in 4MB (if you stripped it down to the bare minimum, including removing all graphics support). That just seemed... disingenious, or at least completely disconnected from reality back then. I thought they were smoking crack to claim that then, to be honest. Half a gig isn't much these days, but it's not exactly "lightweight". Try again in those 4MB, then I'll (reluctantly, now) agree. If this makes me an old fogey (not halfway to pension, thanks), so be it. But maybe we need better terms for this. After all, LDAP has "lightweight" right in the name, and it is compared to where it came from. But that doesn't mean the rest of the world is inclined to agree.

    I was actually just toying with postgresql and its code is amazingly compact for all it can do. Then I realised that with tiny core linux I could actually have a pgsql instance in a vm in maybe 20MB storage. And with the right design most of the data-related logic can be moved into the database, reducing the front-end to simpler displaying. Now for a reasonably small httpd and some sort of interfacing glue, and the result could be quite interestingly small, if not what I would call "lightweight" exactly. As to that glue, php, perl, java, ruby (hello leaky vm), and python all seem a bit on the bloated side, some more than others. No idea what then. Maybe forth or something.

  84. It comes down to need and budget by AlanBDee · · Score: 1

    Zend is best for Enterprise applications. The needs for an enterprise application are very different from that of rapid development and often times more complex. For rapid development I would use Yii or Cake. Ruby on Rails is great but Ruby developers cost more then PHP. Albeit, they are worth it, IMO. But at that level of developers you also enter the arena with Java and C#, both of which are better suited for Enterprise.

    It is common to see a high-level developer be 4-10 times more efficient while only costing 40-80% more in salary. (I think I got that from Code Complete 2 by Steve McConnell... but I've not the time to double check that fact.) Unfortunately, many companies don't know or understand this.

    In the end, it comes down to budget and need.

    • Low budget, non-enterprise = PHP (Yii or Cake).
    • Low-budget, enterprise = PHP (Zend Framework)
    • High-budget non-enterprise = RoR
    • High-budget enterprise = Java or C#
  85. Flow3 and TYPO3 by Zillion01 · · Score: 1

    I would use the Flow3 framework and if you need a CMS or backend, together with TYPO3. PHP and MVC. Used by big corporations and universities. You can't go wrong on this.

  86. Prioritize your Platform Selection Criteria first by bwanagary · · Score: 1

    There are many considerations when making such a decision. I've worked at Amazon.com, Fiserv, RedHat and other companies using everything from Assembly to Ruby and have the benefit of hands on experience in most of the languages if not all the frameworks. Cost (license/implement/train/maintain), Company Culture, Development Effort (time to market), Limitations vs. Features/Extensibility, Skilled practitioner pool size, Longevity, Scalability, Open Source vs. Closed, Operating Platform etc. are all considerations. Having worked in many different environments I would tell you that Ruby on Rails is phenomenal for maintainable code with a very quick time to market, but it doesn't scale worth squat. Not even with mod-phusion etc. It has architectural limitations. Python is pretty good but it's not specifically web-centric and you have to write more code that's a little less maintainable, but performance is better. Java seems to be the 800 pound gorilla *but* you have write a lot of code making time to market a little less attractive from that standpoint. Then there's .NET and the Microsoft stack - good for time to market and even performance if you're looking to do all "standard" stuff - If you try to do anything special/esoteric you're going to be in for a long haul.
    Make a list of all your platform selection criteria, then prioritize them. Then evaluate the platforms based on that list and you'll have your answer.

  87. Drupal Content Management Framework by decibel.places · · Score: 1

    I am building more and more web applications with Drupal. Its ease of integration with web services, and the project's progressive strategy to fully support HTML5 and mobile-first, make Drupal a versatile tool to build applications managing content, community, social media, and with the maturation of the Ubercart/Drupal Commerce project, ecommerce.

    Drupal is definitely not a "lean" framework, and it has a steep learning curve; fortunately I identified Drupal as a good horse 6 years ago when the ground-breaking Drupal 4.7 was about to be released.

    A look at who is using Drupal - Publishing, Media, Entertainment, Government, Education, Ecommerce, Arts - confirms that it is a framework chosen for complex Enterprise web applications: http://buytaert.net/tag/drupal-sites

  88. FYI by Riskable · · Score: 1

    "One tool to rule them all" was the governance policy of Mordor. Silos can be a lot like towers.

    --
    -Riskable
    "Those who choose proprietary software will pay for their decision!"