6 ms·
Why I switched back to PHP after 2 years on Rails (2007)
- peterhi 17y agoThis article was written in 2007. Since then both PHP and Rails have undergone considerable changes making much of what is being said only of historical interest. This is supposedly a site about news which by implication is not something that happened three years ago, unless you have been living in cave. Old articles can be interesting, for some value of interesting, but this does nothing for me as either a Rails developer or a PHP developer. I can see no reason to post this or perhaps I should hunt down some old articles about the deficiencies of Java 1.0? If a Rails developer has switched from a current version of Rails to the new version of PHP I would be interested but even with that being said the article is comparing a programming language to a web framework. Ruby is not Rails just as PHP is not Drupal. Can we have some 'new' in our news please? [Edited for typo]
- jacquesm 17y agoAnother one like it: http://news.ycombinator.com/item?id=904018 http://news.ycombinator.com/item?id=904018
- niyazpk 17y agoI have updated the title to add the year [2007]. I am not a Rails programmer but as far as I know it is fair to compare PHP to Rails. Please down vote if you think article is not relevant.
- jacquesm 17y agoI think that comparing PHP to rails is not the best way to get an idea of where both stand. Ruby, the language and PHP the language vs rails on one side and CakePHP or codeigniter would be more appropriate. I understand that since most people that use Ruby are also rails users and since most people using PHP hack their own little framework.
- simonw 17y agoPHP is a "framework" in the sense that it provides the core mechanisms for doing webby things - accessing query string and POST variables, sending HTTP headers, reading cookies, mapping URLs to executable code. I actually think comparing stand-alone PHP to frameworks like Rails or Django is reasonable, since they all solve the same problem. Of course, such a comparison should also take the existence of higher level PHP libraries and frameworks in to account - it would be silly to criticise PHP for not shipping with an ORM, for example.
- jacquesm 17y agoThey are things that apache sets up for mod_php, php the language is a standalone thing that you can bind in to apache like that. I know that PHP was pretty much born for the one purpose of making webpages but you have to try to see the one separate from the other. php-cli works fine.
- peterhi 17y agoTo some degree it is relevant (it's not about fixing the transmission of a Ford Cortina) just not very relevant given the changes both languages have undergone in the intervening times. If you are a PHP programmer how would you view an article about someone who started to use Drupal found that they didn't like some aspects of it and switched to programming in Java. You would probably think that giving up on PHP because of a framework when there are plenty of others to choose from was pretty short sighted and was representing PHP unfairly. This is why comparing Rails, which is a framework, to PHP, which is a programming language, feels wrong. Rails is not the only framework, it just feels like it :D
- Zak 17y agoI've worked with PHP in the past, and occasionally still do when the situation demands it. I've also built web apps using Ruby, with Rails and without a framework. All of the following are possible options for building a website: * Bare PHP * Bare Ruby (but you probably should not use mod_ruby) * PHP and a framework * Rails and a framework From a pure language perspective, I'm willing to declare Ruby superior without hesitation. It's cleaner, and it's more powerful. Ruby seems to have had a fairly clear vision from the beginning, while PHP has accumulated features over the years, sometimes without regard to how well those features might work together. If you just need to get something done, you should use what you're familiar and comfortable with. No advantage of any of these options is as important as the programmer's ability to use the tool. Frameworks are opinionated. The purpose of a framework is to take away the work of making certain kinds of decisions. If your opinions clash with those of the framework, the project isn't going to go well. Rails is of the opinion that the database should have a certain sort of schema, and be abstracted away by ORM. If you like SQL, don't use Rails. If you have a complex existing database, and you want to keep it instead of moving the data to a Rails-friendly schema, don't use Rails. The article doesn't really serve as a comparison of PHP and Rails. It's just a story about what happens when a tool is a poor fit for a project.
- jules 17y agoPeople build websites with Ruby+Rails. People build websites with PHP. So it is fair to compare the merits of Ruby+Rails vs PHP for building websites.
- mixmax 17y agoSubmissions have to be either new or interesting. There are a lot of submissions that aren't necessarily new, but still have interest for this community judging by the votes. An example that's on the frontpage right now is this: http://news.ycombinator.com/item?id=1051493 http://news.ycombinator.com/item?id=1051493 which is from 2007. Personally I think the linked article is interesting because of some of the truths hiding between the lines such as this one: "But the main reason that any programmer learning any new language thinks the new language is SO much better than the old one is because he’s a better programmer now! You look back at your old ugly PHP code, compared to your new beautiful Ruby code, and think, “God that PHP is ugly!” But don’t forget you wrote that PHP years ago and are unfairly discriminating against it now."
- 10ren 17y agoHe also learnt new approaches from Ruby - reminds me of esr's "learn lisp to improve your coding, not necessarily to use it". It also seems he became something of a coding god, especially in his domain, able to create frameworks he needed - on demand. It's impressive to be able to create those tools, but even more impressive to realize what you need - and then for the tools to be both actually useful and usable. Generally, it's said to be a bad idea to write your own tools - unless you can (i.e. have the ability), says Alan Kay, because then you can create just the right tool for the job. Though perhaps no one else quite understands them, not being gods, and so they need to rewrite in aspx. I like his non-coding observation. GIRLFRIENDS: THE NEW ONE IS BETTER BECAUSE * YOU * ARE BETTER
- jimbokun 17y agoHe intimately understood exactly what his application needed, and had working code to start from. I think that was what enabled him to build the tools he needed.
- pvg 17y agoThere really isn't anything specific in the article that makes it significantly dated. His reasons would be just as valid if he'd written this yesterday about the latest and greatest PHP and Rails versions. 1 - He felt he could get what he needed to get done in PHP just as well as in Rails 2 - Integration costs of One Grand Switch from existing large PHP codebase to entirely new Rails codebase were high 3 - Felt no need for most of the infrastructure Rails provides, was too complex for him to understand easily 4 - Better performance 5 - Easier integration (due to 1 & 3, presumably) 6 - Didn't want/need an ORM layer and related handholding and/or headaches 7 - Rails/Ruby were better for him to lift ideas from than to actually use directly I can't think of anything so dramatic that's happened to PHP and Rails since Sept 2007 to really make his reasoning of 'historical interest only'. Certainly nothing like the change from Java 1.0 (a small, sluggish language released 14(!!) years ago) and Java today (huge ecosystem of products, languages, frameworks running on one of the faster VMs/JITs around).
- sivers 17y agoThanks pvg. You said it much better than I did. :-)
- Sukotto 17y ago[deleted by author]
- jimbokun 17y ago"His reasons would be just as valid if he'd written this yesterday about the latest and greatest PHP and Rails versions." It would also be just as valid for any two technologies, not just PHP and Rails. The real message is: don't rewrite working code from scratch.
- pvg 17y agoIt's obviously untrue for 'any two technologies'. And I don't know about you but I like to assume that if the author's 'real message' was 'don't rewrite working code from scratch' he'd have simply said that. Are you suggesting he put the effort into summarizing his particular experience while having some secret and entirely different message? What makes you believe that?
- hackermom 17y agohere's my view on this: the worst carpenter on the planet is the one who whines about the tools he/she has at hand to complete the task, cheeky because he/she doesn't have his or her favorite hammer around. the best carpenter is the one who gets the job done with the tools at hand. go php. there are just bad programmers, not bad tools.
- Sapient 17y agoI would have to disagree with you when you say there are no bad tools. Try frame a house using a brick, or perhaps a sledgehammer. Software is the same, for example, C is a bad language to use when creating a website, its possible, but not a good idea.
- bad_user 17y ago> the best carpenter is the one who gets the job done with the tools at hand. go php. there are just bad programmers, not bad tools. It really depends on your subjective view of what "best" means. The best programmer in the world can probably do a better job than you at any given task, using only the GCC compiler. But ... I'd bet he's going to cost you hundreds of dollars per hour, and he probably wouldn't get the job done faster that a decent programmer who is using "the right tool for the job". Good design / Low cost / Fast ... pick 2 Myself ... I could use PHP, since it's mainstream and there are lots of low-cost hosting solutions, but I prefer Python because the tools are more mature and not necessarily related to web-dev (iPython, PyQT, Nltk, numpy, Django) ... and really, I've worked with Symfony, Django, ASP.NET MVC, Ruby on Rails and Perl's Catalyst ... the quality of a framework is heavily dependent on the language, trust me ;)
- idebug 17y agoFairly interesting that they've now jumped ship again to aspx. I guess Sivers gets an itch any time a new web language turns the corner. What's worse is that CD Baby feels considerably slower than when I used it ages ago.
- middus 17y agoAs far as I know Sivers is no longer at CDbaby. He sold it. http://sivers.org/bye-bye-baby http://sivers.org/bye-bye-baby
- sivers 17y agoNo no no. That apsx crap running the existing site is absolutely not mine. I sold the company in 2008 to Disc Makers, a company whose internal systems are all Windows. After leaving the site as it was (FreeBSD + PHP + MySQL + Ruby) for a year, they rewrote it all from scratch in Windows ASP stuff, so they could merge it with their existing systems. I was long-gone and knew nothing about their rewrite until it was launched. Funny thing is: when I sold the company, people kept asking, "How does it feel that it's not yours anymore?" It was always fine and didn't phase me a bit because it was still my software running the site. It still felt like my vision was upheld. But when they trashed all my old software (even the internal intranet that all employees use to run operations!) - THEN it hurt. A single "View Source" on any page of cdbaby.com shows a bloated mess of crap that goes completely against the minimalist aesthetic that drove CD Baby for 10 years. That was really sad. But, like the new owners painting your old house pink, it was the final proof that it's not mine anymore.
- alnayyir 17y agoThat really sucks. I left the .NET world about a year ago, work in Django now. I'm sorry your baby got trashed. :\ The .NET world is plagued with horrible programmers.
- mtarnovan 17y agoSo it's crap only because it's aspx ? You don't know how the code looks on the server side, and it's not fair to judge a webapp by the resulting html alone.
- pageman 17y agoSivers comments here in HN from time to time, maybe we can ask him his 2010 opinion?
- sivers 17y agoOuch. My jaw dropped when I saw my old article on the front page of HN. To me, posting this article in 2007 taught me two lessons: #1: The goal of good writing is not to be understood, but rather to not be misunderstood. Judging by the hundreds of angry comments on that original link, I failed miserably. At the time, nobody read my little blog, so I didn't expect anyone to see this post. I was really just writing it to answer a few of my Rails friends' questions. I didn't brace it for public attack. #2: The public you is not you. I'm a mediocre programmer, trying to improve, and at the time just trying to make my website the way I wanted it. So it kinda hurt at first to read hundreds of fellow programmers saying I'm the biggest idiot to walk the earth. Then I just realized that my post should have been written clearer, and the reason people were so upset is because it sounded like I was attacking this framework/language that they had spent so many hundreds of hours learning. It had nothing to do with me. Only I know my real programming skills, so their comments were not really about me. Ever since then I don't let comments get to me, either way. Neither praise nor criticism should be taken personally. It's just feedback on the post/subject. Useful for learning how not to be misunderstood, but has nothing to do with you.
- po 17y ago> #1: The goal of good writing is not to be understood, but rather to not be misunderstood. While I agree with this idea, I felt that you made it perfectly clear that you loved the Rails framework, loved Ruby, etc… If you were attacked in comments, it's because it's was a supercharged topic, not due to any failing of your writing.
- ohashi 17y agoI agree. I read it for the first time and honestly couldn't care less about languages and found it quite clear that you liked ruby but found php worked for your needs.
- fnargle 17y agoRe #2: You appear to have learned lesson number 1 - Fixed opinion based on incomplete understanding is worthless. Your context was perfectly clear, and those criticising the article because they thought you that were saying that PHP was better than RoR, based on their superior understanding of RoR, were feverishly creating a wondrous shrine to the gods of irony.
- wendroid 17y agotranslation: rewrites hurt, a lot see this from 2000 : Things You Should Never Do, Part I http://www.joelonsoftware.com/articles/fog0000000069.html http://www.joelonsoftware.com/articles/fog0000000069.html They [Netscape] did it by making the single worst strategic mistake that any software company can make: They decided to rewrite the code from scratch.
- coliveira 17y agoThe points raised in the article are still relevant today. Not that you can't do good web sites with Rails, but sometimes it is easier to use the tool you are more familiar with.
- cmelbye 17y agoI think you missed the point of the article. They used Rails for 2 years, I don't think it was an issue of familiarity.
- proemeth 17y agoFunny comment: "PROGRAMMING LANGUAGES ARE LIKE GIRLFRIENDS". Like Ada and Linda: http://c2.com/cgi/wiki?LindaEtymology http://c2.com/cgi/wiki?LindaEtymology. If a langage was a girlfriend, what would be the equivalent of _ ?
- dlevine 17y agoQuote of the day: PROGRAMMING LANGUAGES ARE LIKE GIRLFRIENDS: THE NEW ONE IS BETTER BECAUSE YOU ARE BETTER
- grandalf 17y ago"twisting the deep inner guts of Rails to make it do things it was never intended to do" If you use a framework and then fight against it, you are probably using the wrong framework (or you shouldn't be using a framework)...
- grandalf 17y agoLooks like the site has had yet another rewrite: https://www.cdbaby.com/login.aspx https://www.cdbaby.com/login.aspx
- mattyb 17y agohttp://news.ycombinator.com/item?id=1052508 http://news.ycombinator.com/item?id=1052508
- geebee 17y agoMy favorite line here was "I said fuckit". I guess it's not quite as reflective as that girlfriend thing, but I strongly suspect that everyone who actually succeeds in releasing working software to the world has an "I said fuckit" moment. I care less about the PHP/Rails thing, which is probably what got everyone riled up. To be, this could have been about tech A and tech B. I just like hearing that people who have succeeded in writing software that others use eventually feel this way, cause man do I ever sometimes.