5👍
it depends.
php – symfony is a great framework. downsides: php, wordy and directory heavy. propel gets annoying to use. upsides: php is everywhere and labor is cheap. well done framework, and good support. lots of plugins to make your life easier
python – django is also a great framework. downsides: python programmers can be harder to find, django even harder. changing your db schema can be somewhat difficult since there are no official migrations. doesn’t quite do mvc like you’d expect. upsides: does everything you need and has the great python std library and community behind it.
ruby – i’ve never used merb, so I’ll address rails. upsides: there is a plugin, gem, or recipe for almost anything you could want to do. easy to use. downsides: those plugins, gems, and recipes sometimes fail to work in mysterious ways. monkey patching is often evil. the community is.. vocal. opinionated software, and sometimes those opinions are wrong (lack of foreign keys). rails itself seems like a tower of cards waiting to explode and take hours of your life away.
with all of that said, I’m a freelance php/symfony and ruby/rails developer. I’ve worked on several projects in both languages and frameworks. My latest project is in Rails solely because of ActiveMerchant. I’ve been looking for a reason to develop a django app for a while. If there were an ActiveMerchant like library for django, I probably would have used it.
16👍
Django!
Look up the DjangoCon talks on Google/Youtube – Especially “Reusable Apps” (www.youtube.com/watch?v=A-S0tqpPga4)
I’ve been using Django for some time, after starting with Ruby/Rails. I found the Django Community easier to get into (nicer), the language documented with excellent examples, and it’s modularity is awesome, especially if you’re wanting to throw custom components into the mix, and not be forced to use certain things here and there.
I’m sure there are probably ways to be just as flexible with Rails or some such, but I highly encourage you to take a long look at the Django introductions, etc, at http://www.djangoproject.com/
Eugene mentioned it’s now at 1.0 – and therefore will remain a stable and backward-compatible codebase well through January 2009.
Also, the automatic admin interfaces it builds are production ready, and extremely flexible.
- [Django]-Saving to database in Django tests when using ThreadPoolExecutor
- [Django]-Is it possible to redirect the python output to web by using 'sys.stdout' command?
9👍
Sorry, but your question is wrong. People are probably going to vote me down for this one but I want to say it anyway:
I wouldn’t expect to get an objective answer! Why? That’s simple:
- All Ruby advocates will tell to use Ruby.
- All Python advocates will tell to use Python.
- All PHP advocates will tell to use PHP.
- Insert additional languages here.
Got the idea?
I recommend you to try each of the languages you mentioned for yourself. At least a few days each. Afterwards you should have a much better foundation to make your final decision.
That said, I would choose Ruby (because I am a Ruby advocate).
- [Django]-Access denied issue when I try to access a shared drive from Django running in Apache
- [Django]-Django AllAuth gives SSLError
- [Django]-Django – how to restrict DeleteView to object owner
- [Django]-Humanize in django/python, how to translate
- [Django]-Get method classname inside decorator at __init__ in python
7👍
All of them will get the job done.
Use the one that you and your team are most familiar with
This will have a far greater impact on the delivery times and stability of your app than any of the other variables.
- [Django]-Django 1.7 and smart, deep, filtered aggregations
- [Django]-Deploying Django application on Webfaction
4👍
I would go with Django, if you are comfortable with a Python solution. It’s at version 1.0 now, and is maturing nicely, with a large user base and many contributors. Integrating jQuery is no problem, and I’ve done it without any issues.
The only thing is, as far as I can tell, Ruby is much more popular for web development nowadays, so it’s easier to find Ruby developers. I get this impression from browsing recent job advertis*m*nts – there aren’t that many for Python or Django. I don’t know much about Merb, so I can’t give a fair comparison.
I’ve done enough PHP to not recommend starting a new project with it.
- [Django]-Django invite friends from social account
- [Django]-Django: Sum by date and then create extra field showing rolling average
- [Django]-How to download a file uploaded using django-filebrowser?
- [Django]-Django ignoring translated strings from third party module
- [Django]-Django: Using 2 different AdminSite instances with different models registered
2👍
Based in your reasons, I would go with Ruby. I see that you want some administration tools (scp, ftp client) and Ruby has it (net/sftp and net/ftp libraries).
Also, there are great gems like God for monitoring your system, Vlad the Deployer for deploying, etc. And a lot of alternatives in Merb’s field, just use whatever you find it’s better for your needs (Thin, Mongrel, ebb, etc).
- [Django]-Django Administration: Delete record from custom user model
- [Django]-How to add a new instance of Django model with FileField by ModelForm?
- [Django]-Django openid authentication with google
- [Django]-Force reload on client's webpage Django
- [Django]-Doubled POST requests instead of single
2👍
To get a feeling of where the Django ecosystem is at currently, you might want to check out
- djangopeople.net (try djangopeople.net/us/ny for New York state)
- djangogigs.com
- [Django]-How to display multi-word app names properly (i.e. with spaces) in Django admin?
- [Django]-Django group query by day with timezone specification
1👍
I have to preface this with my agreeing with Orion Edwards, choose the one your team is most familiar with.
However, I also have to note the curious lack of ASP.NET languages in your list. Not to provoke the great zealot army, but where’s the beef? .NET is a stable, rapid development platform and the labor pool is growing daily. VB.NET and C# are transportable skill sets, and that can mean a lot when you’re building a team of developers to work on a diverse set of tasks. .NET also allows you to separate your presentation layer from your backend code, like other languages, but also allows you to expose that backend code as web service for things like your iPhone and Facebook applications.
Take every suggestion with a grain of salt, and pick what suits the application best. Do your research, and design for function and not the zealots.
Disclaimer: Once a PHP, ColdFusion and Perl developer. Flex zealot, and Adobe lover. Now writing enterprise .NET applications. 😉
Don’t forget Mono, which will let you run .NET under *nix. Not that I’m saying it will be perfect, just playing devil’s advocate.
- [Django]-Server lagging – Django + mongodb + cronjob
- [Django]-How can you use Django template tags in a Jinja2 template?
1👍
Don’t get stuck in the mindset of server-side page layout. Consider technologies like SproutCore, GWT or ExtJS which put the layouting code fully on the client, making the server responsible only for data marshalling and processing (and easily replaced).
And you really, really need to know which server platform you want. Don’t pick one because it’s the flavor of the month, pick one because you’re comfortable with it. Flavors don’t last, a solidly built codebase will.
- [Django]-OperationalError: (2019, ""Can't initialize character set utf8mb4 (path: C:\\mysql\\\\share\\charsets\\)"")
- [Django]-Django: Sum by date and then create extra field showing rolling average
- [Django]-POSTing foreign keys to Django Rest Framework, using Postman
1👍
Having built apps in Django, I can attest to its utility. If only all frameworks were as elegant (yes Spring, I’m looking at you).
However in terms of betting the farm on Django, one thing you need to factor in is that Python 3 will be released shortly. Python 3 is not backwards compatible and there’s a risk that it will fork the language and end up slowing momentum for all Python projects while they deal with the fallout. To be fair, Ruby 2.0 is due soon too, but I don’t think it will be as disruptive.
0👍
My experience with various new technologies over the last ten years leads me to recommend that you make stability of the platform a serious criterion. It’s all well and good developing with the latest and greatest framework, but when you find it’s moved forward a point version and suddenly the way you have done everything is deprecated, that can turn out to result in extra unnecessary work. This was particularly my experience working with rails a little ahead of version 1. For that reason alone I would avoid any platform that wasn’t at least at 1.0 when you start work on it.
Ruby is great to work with and will keep your developer productivity high, but if Django is the more stable platform I would favour that for sure.
0👍
It pays not to be biased about your server setup. Any modern web framework worth it’s weight in source code has a SQL abstraction layer of some sort. PostgreSQL gets much better performance, and this is coming from a former MySQL partisan.
Apache is a beast, both to configure and on your server’s resources. Why not go with something light-weight, like nginx or lighttpd?
(For the record, I’m a big Django user, but as the accepted answer said, go with whatever your team knows. Quick turn-arounds are not the time to be learning new frameworks. If you’re hiring a team from scratch, go with Django.)
0👍
Update: I ended up using, and loving, Django. I’m totally done with PHP – sorry about that. Future readers trying to create a new web 2.0 site (assuming they have a programming background), should greatly consider this setup:
Amazon ec2 for hosting ($80/month – not cheap but worth it if you can afford it)
Django/Python (Python is the most powerful scripting language on the planet – and Django just makes it work on the web)
Development should be done with SQLlite and the development server that comes with Django. Don’t waste time with Nginx, Apache, MySQL until you’re withing a few weeks of a beta.
Oh, and I now develop on a Mac, which works great for local Django development.
- [Django]-Django signals not fired when saving from admin interface
- [Django]-Django: How to keep track of a linear (yet flexible) project management workflow?
- [Django]-Invalid BACKEND error when I have the seemingly correct settings — why?