Shared publicly  - 
Hey, techies! Advice needed. My colleague and I are about to rewrite our legacy PHP system and we're looking for the best framework. We're pretty much open to everything Open Source (language too, so frameworks like DotNetNuke are out). Rails (Ruby) is the early forerunner, with Django (Python) second, but it's early days yet. We ought to at least consider Drupal, since out other site is a Drupal site. What do you recommend/think/feel?
Christopher Bloom's profile photoSean Silvius's profile photoGrant Kruger's profile photoAaron Nelson's profile photo
Symfony2. A) It's beautiful and elegant. B) It's so good that Dries decided pieces of it will be in Drupal 8 core. C) The documentation is really good (version 2 is still new but coming along nicely)
+Christopher Bloom thanks. I believe Symfony was top of our PHP pile when we were considering only PHP, and there ar e great reasons to consider PHP, especially if we want to make our code open source at some point. However, we're both feeling drawn to using a higher-end language this time around. My coworker is a Perl guy, so he kinda hates PHP. I'm agnostic about languages, but would like to really sink my teeth into Ruby or Python. Something better, different, interesting. But Symfony is still in the mix for sure.
I've always wanted to dive into Python and have been drawn to Django for some time. Plus, you know, street cred :P
The two of us have been doing a lot of PHP work and we're a little tired of it. We're both loving our jobs and not too worried about street cred. However, we really would love something that got us excited about coding again. A PHP option might do that. Django and Ruby almost certainly will.
Personally, I'd go Django. Ruby annoys the crap out of me with all of its "magic behind the curtain" and "write minimalist code and let the framework do it all" because I can't see what the code is doing. I'm a control freak - I want to explicitly tell my code what to do. I can't do that with Ruby. Also, if you want to do something different than the default (like use a non-standard database connection or schema), my experience has been it's harder to do in Ruby.

I'm sure my Ruby friends will happily step in and correct me. :-)
I have been wanting to play with codeigniter for a while now, but I have not really had the time. I am lost in the .net world right now :(
+Greg Lund-Chaix you're not the first to say that Ruby is great for rapid application development, but not for the stuff that falls between the cracks. I'm not a control freak. Years ago I worked with a proprietary 4th gen language and loved that I could do complex functionality super-fast and not always have to write reams of code to get anything done, which is the flip side of the more-control thing and seems common to most of the C-like OS languages. Rails is the closest thing I've seen to that and I have to admit that it's a draw for me. But similarly, Python and Django have their own strengths that are super appealing.

+Joseph Ronie when we were considering only PHP frameworks, CodeIgniter made it into our top three, as did CakePHP and Symfony. I believe Symfony was our top choice most recently, though it used to be CodeIgniter. Good luck with .Net... and consider DotNetNuke. It's open source, kinda.
Na, My stuff is pure Right now for work. No open source for me. I have laid off the web development for the past year+.The last thing I wrote was a really Nice Mp3 management System with true Mp3 indexing and playlist management about 6 months before google released its music site. I have helped friends with some php work, but nothing in a long time.

I am very excited to see the new developments in HTML 5 with the client side data store and such. JQuery looks fun to play with as well.
Chad Fowler has a great piece on "The Big Rewrite." Its interesting because in his experience, the big rewrite should be considered.

That said, I think what your going to hear are people generally suggesting what they prefer or prefer using.

jQuery can be used with anything and its great, so thats not a hard choice to make really. jQuery UI is also quite good and if your not apt at what colors to use, has some hints on how they style the UI components that can help you with theming your UI. Themeroller also allows you to switch out the colors with a minimal amount of CSS changes needed if done properly.

I believe that selecting the right tech for the job isn't too hard, but you need to make the choice based on what you care about the most. Ill speak generally about frameworks because I don't have much experience with Jango or whatnot. I am a pretty heavy Rails user, so that is my springboard for how I like to work. I find Rails to be useful and it makes some things easy but in the end you have problems that you need to spend time to solve. A care for engineering helps, but the problems you have youd have in any great framework.

If your application is a service layer API then I might go with something well suited to that. For instance, if your just managing objects and serving them up as JSON, perhaps sinatra and goliath. Rails has a bit of overhead you just really dont need if your building a service layer API.

If its a AJAXy webapp with views, etc, then Rails may be what you want.

If you can't stand database layer abstractions and if learning AREL or if a object relational mapper bother you, you might want to roll with something different than Rails. If having a framework magically do things for you bugs you then you might not want to roll with Rails. Rails is great if used well, but I wouldn't expect it to make any application magically great. It takes care and attention to getting it just right for things to sing. Thats really true for any language or framework. Ive seen amazingly well written PHP apps, again its up to the people writing the code if it will be great or not.

Above whatever framework you choose id recommend a test driven approach over anything else. It will save your ass and its useful to write tests when bugs happen to ensure they dont come back(at least in the way you wrote the test :) ). Id also recommend an agile approach to writing the app too, try to avoid monthy long iterations, ive found it just makes things harder to accomplish.
If you want something bleeding edge and controversial but extremely powerful, node.js is causing quite a commotion. Look into it, I know that +Michael Prasuhn is a huge fan.
+Jon Dodson I looked for that blog entry, but sadly Chad Fowler's site is down. It looks useful... but even the Google cache sucks. I'll keep an eye out. Thanks, and thanks for the other input too.

+Christopher Bloom node.js sure seems pretty damned exciting to me, but still a little too bleeding edge for now. I pinged Mikey via email earlier today, so we'll see what he thinks.
I do this for a living so...

I'd go ruby, but lightweight ruby, like Sinatra. But this would only be for the heavy lifting, I'd build a RESTful web service for all the manipulation of data and business rules.

Then I'd build a twitter bootstrap or zurb foundation frontend on node.js that publishes the pre-compiled partials that the ruby app made.

Doing super lightweight in php or python is hard to do. .net is the anti lightweight...

This gives you the time to focus on the user not the tech
I resent that, Grant. I don't "kinda hate PHP". I loath it to the core of my being. Let's not gild the lily, shall we? :)
+Sean Silvius very interesting. I've been hearing good things about both Sinatra and node.js. Thank you.

+Aaron Nelson I stand corrected. Everyone, meet my coworker, the curmudgeon and genius, Aaron.
Genius? Hardly. Curmudgeon? GIT OFFEN MY LAWN!
Add a comment...