Ask HN: PHP vs Rails

14 points by dawie ↗ HN
I have a project built in PHP (and CodeIgniter) and it's ready to release. It's based on the Facebook API, so it at least makes sense to write some of it in PHP.

PHP doesn't make me happy though the same way Rails makes me happy and motivated to code. I was thinking about this today when I read this about Ruby:

"Yukihiro Matsumoto (a.k.a. Matz), creator of Ruby, said that he wanted to minimize his frustration with programming, minimize his effort in programming and have fun with software development."

I knew this, but forgot about it.

What do I do:

1) Release and just stick with PHP. 2) Release and Re-write it down the road. 3) Re-code it in Ruby and push back the release date?

Doing any re-coding will be a waste of time and take away from adding new features.

10 comments

[ 6.0 ms ] story [ 42.0 ms ] thread
Oh please know that product is important. Tech much less so. Launch launch launch.
PHP is a language and Rails is a framework.

You might be better asking PHP Vs. Ruby or CakePHP, Zend Frameworks Vs. Rails.

Is it Rails that makes you happy? If so i understand CakePHP to be a rails clone in the PHP language.

>> I have a project built in PHP (and CodeIgniter)
If you have it built then launch the thing and see if it has legs. If it doesn't have legs using PHP it won't have legs using rails either, in that case you can just flush it down the toilet and do a new project in rails.

If it does have legs then you can justify the time and effort it will take to port it to your favorite new language du jour.

Delaying launching for pointless rewrites is a great way to never get to the point where you will launch it, it means you're in love with the tech, not trying to get off the ground.

Launch. However, don't kid yourself that you will find time to port to Ruby in the off chance that it is successful. That's is a myth and it is a rare thing for a successful piece of software to be rewritten in another language after it has become a success.
Release. I perfectly understand your qualms, as I've been there, both with PHP and Java (worse). But it seems you've got a product that's pretty much ready, so push it out. This might sound harsh, but what if it fails? Then there's no need to rewrite it. If it miraculously succeeds, you can live off the money while you're rewriting it for version 2, if you still feel the need for it.

If you fall in the middle, then you might have a tough choice to make, but let that time come.

Also, there are still other projects, either after this one is done or as a complimentary service/product to support it. You can use Rails for that.

If you're that close to release, this is a bad stage to rewrite anyway, regardless of language. Second system effect might overpower you, and you waste lots of time to implement features that you don't need (yet).

This is practically the archetype of the "question developers ask in order to procrastinate on releasing". Why don't you want to release? Because, you don't.
It's based on the Facebook API, so it at least makes sense to write some of it in PHP.

I've seen this way too often where people seem to think that you need to write in PHP to use Facebook. This is absolutely incorrect and false!

I've shipped a number of Facebook applications that are all in Rails that use the creaky RFacebook gem. Even though it's creaky and old, due to the magic of method_missing, this gem handles all the new Facebook API calls magically without a code change. PHP developers need to wait for Facebook to update their library to get the same support (or update it themselves)

Having said that, since it's written already, and is ready to launch right now, you absolutely must launch it. Right now. If it takes off, you can decide where to deploy your resources later.

Nothing beats shipping product.

Thanks for everyone's feedback. I appreciate you taking the time to post a answers I will launch and iterate. Even if it is PHP.

I agree that product matters and not technology and I will remember this.

The site is http://tabtrick.com if anyone was interested.

Let's call this a quiet launch (soft launch)

Launchlaunchlaunchlaunchlaunchlaunch. Launch.

If it's successful, hire someone else to look at the PHP for you.