Which is better of Laravel, Rails and Django for creating great products quickly?
Which is better for creating open source apps that others might want to contribute to?
I want a mature tool for creating web apps that qualifies for:
- Quick prototyping
- Easy to get to production level for backend
- Maintainable and buildable by one person alone
- Enforces conformity, so others can easily read and contribute to the code, making successfully open sourcing possible
- Works well with React
- Has a mature and fairly stable ecosystem for the basics (auth, storage, db, image handling, backups, change history, etc.
- Has an ecosystem that will still be alive in 10 years, responding to changes.
I would have to learn Ruby, Python or PHP for each, so that factors in too.
I'm proficient in React and Node.js, but I feel the node backend ecosystem is too immature with a million different ways to do everything, and too many decisions to make, too much wiring to get everything to work together, and too many packages that end up not being supported a few months down the line.
Which would you choose for me to learn?
Rails uses too much magic and sugar. Laravel is something from the previous century. I'd say Django can be well balanced choice. I have extensive experience with all three. So, this advice based on practical projects
Comparing them end-to-end, Rails comes the most productive in my opinion. But there are bolder parameters you may consider. i.e. no one switches from Django to Rails to improve productivity and vice versa (probably from Laravel to one of those two).
The language's productivity also matters, which both Ruby and Python are better for that.
There is a philosophical difference between #Django and #Rails :
Django supports the "Explicit over Implicit" idea, making it easier for newcomers to understand what's going on. This idea also has downsides. This allows beginners to start working with Django without even learning Django and best practices and defer learning by using references like Stackoverflow.com, which is not a good idea because you potentially don't know things that you don't know! Also, you may find many different project styles.
On the other hand, Rails support the "Convention over configuration" and Scaffolding idea. It's easier for a Rails developer to be added to a new project or just review a random Rails project. Everything has a default and also it has some downsides as well. e.g. As a beginner, everything feels like magic in Rails, and you don't understand what is going on and how Rails understand while you didn't "explicitly" say what do you want sometimes.
Conclusion: Rails and Django are more productive and you can build projects on your own quickly (many giant startups launched this way!).Node.JS isn't immature, also sometimes shows better performance comparing the mentioned alternatives. But if you suffer from "a million different ways to do everything" and "many decisions to make", Take Ruby on Rails for sure.
P.S: for learning RoR I suggest the book/video from Michael Hartl.