3 ms·
I have worked extensively with PHP, Python, Ruby and Node. I love PHP for deployment of end user apps. It just works. It literally takes minutes and you can be
by throw2016 10y ago
I have worked extensively with PHP, Python, Ruby and Node. I love PHP for deployment of end user apps. It just works. It literally takes minutes and you can be in your app rather than struggling with the language ecosystem.
It takes a lot of work and thinking to get to this state that is easy to overlook but it reflects a respect for users from the developers. And it shows. All the top apps in terms of deployment are PHP. I will ignore the many criticisms against it, they may be valid or they may not. The bottom line is utopianism is a deadend, there are always upsides and tradeoffs. PHP is improving and will continue to improve and is relatively simple to learn and use. Kudos.
Python is really a fantastic asset to the community. It's relatively simple to use and deploy thanks to its wide support on most Linux distibutions. I hate complexity and there are tons of interesting things in Python beyond Django. The server story could be improved but its not a deal breaker.
I think Ruby and to some extent Node but Ruby more so shows a thorough disrespect near hostility for the user. Deploying a Ruby app is always time for trepidation and you can be sure it is going to take time unless you are extremely well versed and upto date on the ecosystem ie a developer with a Ruby focus and perhaps that's why Ruby is best used in SAAS scenarios. I have deep doubts on the user focus of developers who expect users to deploy their Ruby apps.
There are tons of issues that crop up, from getting the base environment up and you do need a dev environment which has its own pitfalls and gotchas as gems may need to be built. Then there is the decision of where the gems should be, using things like RVM, Rbenv or the system ruby, the users who should run it and all the shenanigans that comes with it. Then deploying the apps themselves in terms of using things like Bundler which needs its own knowledge base and servers which could mean compiling Passenger with or without Nginx or using Unicorn. That is a lot of know how and it's a complete mess.
Updating apps can be equally troubling. There is no knowing which Ruby gem dependency could fail, which library may be needed, and that particular library may not be in your running distribution so you may need to compile it and that could start a long time consuming chain. This is millions of user and dev hours wasted for nothing, literally, that could be resolved by the developers and is much worse than anything you can throw at PHP which looks almost angelic in comparision. The deep knowlege required makes Ruby and Node extremely unpleasant. It should not take this amount of know how to simply deploy and use an app.
HN is dev focussed and it makes economic sense for devs to have expertise in the most rewarding languages, but this should not detract from the weakness and strengths of languages and I think it does.
- spdionis 10y agoSo how do you "relatively simply" deploy python on the server? you have to know and work with pip, virtualenv, uwsgi, nginx, supervisor. Much more painful than composer, nginx and php-fpm. Using apache is even easier. Disclaimer: maybe I'm doing something terribly wrong? I don't have much experience deploying python. If so please tell me.
- nhumrich 10y agoThe best way is with docker. But besides that, you usually only have to mess with uwsgi, and nginx once. You don't need virtualenv if you only have one python app on the server. You could however deploy a virtualenv, I have seen some people use the virtualenv as a large distributable, and just dropped that on the box with the code. But ultimately, if your not using docker, you could be using PAAS, AWS Elastic Beanstalk, Heroku, Google App engine, they all do this for you.
- spdionis 10y agoI was thinking about the case of a simple digitalocean/ec2 VPS, not a PAAS. In the end I realized that I don't need virtualenv and that makes things much simpler, except that every single blogpost/tutorial/info for beginners suggested using virtualenv and I was lost.