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?"

75 of 287 comments (clear)

  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 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... :)

    4. 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.
    5. 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.

    6. 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
    7. 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.

    8. 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.

    9. 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.

  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 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.

    2. 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.

    3. 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.

    4. 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.

  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 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).

  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: 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
  6. 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 Unoriginal_Nickname · · Score: 3, Funny

      Regular 15 minute breaks.

    2. 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

    3. 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.

  7. 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 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.

    3. 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/
  8. 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 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.

    2. 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.

  9. 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.

  10. 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 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.

    2. 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
    3. 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...
    4. 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
    5. 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.

  11. 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.

  12. 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!

  13. 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 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.

    2. 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?

    3. 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).
    4. 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.
  14. 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.)

  15. 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.

  16. 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
  17. 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).

  18. 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.

  19. 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!

  20. 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.

  21. 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)

  22. 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

  23. 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.

  24. 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!
  25. Re:Cake is second to avoid? by flimflammer · · Score: 2

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

  26. 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

  27. 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).

  28. 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 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
  29. 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.

  30. 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.

  31. 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.

  32. 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.
  33. 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.

  34. 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.

  35. 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.

  36. 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.

  37. 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 ;-)

  38. 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.
  39. 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.

  40. 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.