6 ms·
Ask HN: Relaunch my website in Ruby/Python or continue with PHP?
Hey All,
My site http://LetsLunch.com is written in PHP - YII framework - we are looking to relaunch it with a new angle/pivot. Any ideas on should we continue to build on existing PHP or switch to more modern languages like ruby/rails, angular etc.. is switching over and rewriting worth it?
- jstewartmobile 9y agoStay the course and tune out the fashionistas. We maintain large codebases in all three, and I can only remember one case where any of the languages got in the way (PHP's poor threading support). And even that case wasn't a show stopper--we just used fork() instead. Great business idea BTW. If I lived in a larger city I would definitely try it out!
- syed123 9y agoThanks for the helpful tips. Its hard to live in SF and not feel like missing out on Ruby/rail, node.js and other new fast and easy programming languages.
- odonnellryan 9y agoI'd say, if the site can be rewritten quickly, use the language you're most productive in. If the site is small and can be ported in < 1 week might be a good rule. But if your most productive language is PHP, why not leave it? No reason to use Rails, Node, or Python for this.
- syed123 9y agoi thought new languages are easier,scalable, more libraries etc since they are new. But it will take more than a week for sure to port the site data to new rails/node. Thats why wanted to make sure its well worth switching.
- odonnellryan 9y agoI wouldn't say Python or Rails is more scalable, but the libraries may make certain things easier. What libraries do you feel you're missing out on?
- itburnslikeice 9y agosince you have most of the work done in PHP you could mirgrate/rewrite using another framework like Laravel/Symfony and use PHP 7. I really don't see an reason to rewrite to another language.
- sparkling 9y agoDo you have some ugly corners in your code base? Lots of legacy stuff that you want to rework anyway, regardless the language? Then it might make sense.
- syed123 9y agowebsite is kind of slow and some bugs..so i am wondering if refactoring or bugs fixing is worth it or switching to a new modern language.
- jstewartmobile 9y agoIf your problem is speed, Ruby & Python probably aren't going to help. Query optimizations typically yield a lot of bang for the buck. Once you've harvested all of the low-hanging fruit there, in-memory caching (memcached, redis) can also bring a lot to the table.
- odonnellryan 9y agoRuby and Python could help -- but depends what you're doing. They aren't going to magically make your DB queries faster... but certain libraries can perform many, many times faster. Though, that's the library, not the language.
- syed123 9y agoit also helps to find more programmers here in the bayarea if i switch to ruby, node etc all the cool programming dudes that i want to hire -are not in php.
- jstewartmobile 9y agoIf you were almost anywhere else, you'd have a much easier time finding .NET developers, but then there's the whole licensing can of worms (and .NET core isn't really a viable alternative at the moment).
- saluki 9y agoCheck out Laravel if you're sticking with PHP but interested in a new framework.
- vldx 9y agoDefinitely try out Laravel. I'm not involved in the PHP community, but had a chance to take off a client project and decided to go with Laravel. It was real pleasure working with in combination with writing modern PHP overall. Jeffrey Way's Laracast was of help for me and is worth checking out.
- gremlinsinc 9y agoAs a laravel dev by day (and sometimes night) --- can say Vue.js and Laravel are VERY modern frameworks and constantly updated--Vue is optional and can be swapped for React / Angular or even jquery -- but laravel is a great backend or api for a service oriented architecture.
- git-pull 9y agoI did PHP before Python. Done CakePHP, Drupal back in the day. Then did some idiorm + paris w/ slim. That said, I'd like to try to sell you on Python. First off, let's begin by saying PHP is a solid web language with mature tools. I haven't looked at the ecosystem in maybe 5 years. Due to this, I can't speak for PHP 7 and the latest and greatest best practices and libraries. But as of 2017, I think python has surpassed PHP in web development. This is due to some fundamental things being baked into the language, and external factors like luck, timing, and momentum. 0. PHP's "lost years": PHP didn't capitalize on standardization, packaging and libraries for a long time. I don't know what the reason was, but it was PHP 5 for a long time and the language didn't "move". This allowed other languages like ruby to gain ground back in 2005-2012. PHP 6 never happened. The community had to pull together and start PHP-FIG and stuff. During those years, a lot happened, other language ecosystems gained significant traction. Sure, there were great strides in individual projects like Drupal and Wordpress. But these CMS and frameworks lacked a package manager during that time. And despite being OOP, developers weren't sharing each other's code the same way Ruby and Python did. 1. Code standardization: Python nails this. PEP8 (code style), PEP257 (code documentation). 1.1 Code aesthetic: While the lack of subcolons and block-style struck me as a gimmick for a while (remember I did PHP before python), I came to find it makes code a hell of a lot easier to read. 2. Package management - People started publishing packages early on. Even if there was distutils/setuptools warts for a couple years, the practice of having a real market for code was great. PHP didn't have that for a long time.. anyone remember PEAR? 3. OOP: Python's OOP makes it very clear to move up the class tree. This sort of winds in with the the code style too, you can easily navigate and traverse large codebases and wrap your brain around chunks of code really fast in python. 4. Imports: Better implemented in python. Much more straight forward and clear. You can pull in a full module from your environment's current packages or relative location (import flask or import . mymodule). You can also import objects like constants, functions and classes scoped in a module, like "from mymodule import myfunction", also import as an alias, "from mymodule import myfunction as a". 5. Community: At this point, Python's community is more active. Though PHP seems to be strong as well. People are building websites in PHP and are still successful at it. That says a lot. 6. Use Domains: Python is being used in big data (pyspark), general data science with pandas, numpy, juypter. The web with django, flask. System utilities like supervisor. People can write mobile games with kivy. There are C speedups like Cython. ORM's like Peewee and SQLAlchemy are mature and superbly documented. 6.1 Web: Python's most popular web framework, Django, is very mature. The ORM is very nice. Migrations. Documentation. Flask, a popular framework for Python, also have excellent documentation and many users. And aside from that, there are many other web libraries like Pyramid, and ones I can't even think off the top of my head. Pyramid is actually one I hear great stuff about haven't even tried yet. 7. Runtime implementations: CPython (default), pypy (python-hosted), Jython for Java and IronPython for .NET 8. Performance: pypy, numpy/pandas has tabular / typed speedups. I'm probably forgetting a few. 9. C/C++ integration: Boost.Python, pybind11 (new and highly cool), CFFI, Cython, Swig, and the CPython's own implementation of C API's, which CPython itself builds upon is at your disposal, and ctypes. 10. Documentation: Python itself, as well as the top libraries in the open source community all use Sphinx to generate documentation. Builds nice static, themed HTML sites with a nifty feature called "intersphinx" to link across project documentation. And it's used at scale in the community. Big thanks to ReadTheDocs.org for providing a place for the community to host. In most cases, the above "nice things" about python have been around in production and used at scale long before I did Python full time. This gives python a significant advantage. Some additional free resources on Python: - https://python-guide.readthedocs.io https://python-guide.readthedocs.io - https://github.com/vinta/awesome-python https://github.com/vinta/awesome-python
- Can_Not 9y agoFirst off, most of those languages/frameworks aren't even modern, let alone "more modern" than PHP. Next most of them are not significantly faster than PHP, if they're not definitely slower than PHP. If you're not using modern PHP, you can upgrade to PHP7.x faster than a full rewrite. I would avoid rewriting anything non-trivial, because you have no guarantee that your new codebase will be completed in a predictable amount of time, let alone be faster. If a specific sub-module needs to be in a faster language, rewrite that small part in something like golang or elixir. You need to be really careful with full rewrites, you're more likely to end up with a whole year of lost productivity than a success story. I'd recommend learning how to profile and optimize performance _after_ migrating to PHP7+.
- syed123 9y agoThis is really helpful. I was being pushed to upgrade by the programmers i am trying to hire who say old website code is kind of spaghetti..and a new clean rewrite in node/ruby will go a long way in hiring good bayarea programmers.
- mabynogy 9y agoRewrite it in Go with Caddy for the backend and plain JS for the front. https://caddyserver.com/ https://caddyserver.com/