I'm about to begin a big PHP project with a friend. It's my first time using PHP and I've been wondering wether I should try developing on Linux since it's so popular.
I've had some past experience with Linux and the choice of an editor won't be hard since I know vim (though I've looked at VS.PHP and it's putting me back from the change).
Does using Linux when developing PHP (or any web language) give me an advantage?
closed as too broad by gnat, user40980, Kilian Foth, Bart van Ingen Schenau, GlenH7♦ Sep 9 '14 at 15:39
Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
It depends what you call web development and how you do want to work.
For instance running Photoshop natively is impossible (sure with some VM or "emulation" there are ways to do that or you can simply use GIMP.)
If you're planning to do pure coding - it depends on what you love during development.
- You won't get as good live editor as dreamweaver although Eclipse and NetBeans do the job of IDE. Sure Eclipse would be obvious choice here.
- If you like wamp server on windows, xamp is available on Linux, but it's not as simple. I usually end up with just apache2 and needed modules.
On the other hand:
- Make/bash.sh/fab files feels in home under Linux and it may increase your performance a lot doing repetitive commands. Sure there is .bat files but under Linux its way more easier and way more clearer how script should work what commands it should use and ect.
- Because it's Linux you will learn how to deploy in such servers much faster.
- If you learn VIM (that takes some time) - its fastest editor around. Emacs also fast, but nowhere near VIM speed of editing. Sure don't jump on it too soon - it will scare you!
So thats 3 points for both sides. All in all - Linux is just an OS. Tools makes it good and the person it uses makes it fast/slow. I had problems when i needed older versions of php, but overall I use Linux every day not because its better for development, but because it's way better OS, although it has a steep learning curve. I must say that i don't have huge experience developing in php under Linux so i might be missing some points.
Talking about other web languages:
I don't really know about Ruby, but i heard that its better than on windows due to some(?) services and system tools that downloads gems easily.
Django is way better in Linux - It runs better, it takes half as much to deploy as in Windows (just for developing). Its easy to deploy in Linux servers and pain in the ass to do the same in windows production servers.
Finally I just can recommend to try it, not because it may bring some speed to your development, but because it is Linux and it is awesome.
One advantage it might give you is that it is more likely to match the deployment environment, although with Windows improved support of PHP that's not necessarily the case. I've found it more of an advantage to use Linux when developing in Ruby on Rails more than with PHP as you can run into a lot of little annoyances like database drivers. But Microsoft has done a lot of work to better support PHP, including the Web Platform Installer and the new Webmatrix IDE.
I believe there's a lot of benefits to doing this on Linux.
First, you will be dealing with a far simpler operating system environment, one that's reasonably well documented, and one for which source is available. You can have confidence that when you find a bug, you can figure it out. You won't do that weird, pull-out-your-hair having to decide if Windows is at fault, or your code is at fault, and if the former, how to work around it.
Second, Linux performs better than Windows on the same hardware. Despite all the flack in the trade press, this is indisputable. You can easily get away with older or slower or less up-to-date hardware.
Third, Linux and the X11 windowing system are far more customizable than Windows. Try to do focus-follows-mouse or worse yet, lazy focus follows mouse on Windows. You can set up your windowing experience as you like it, not as Microsoft Deems Best for you.
Fourth, Linux filesystems make a lot more sense than NTFS. "Case preserving" filenames? Saints Preserve Us! Alternate Data Streams? What's wrong with directories? Why make every file into a directory? Magic file names like "CONS", "AUX", "LP"? I hope the inventor of those things got punished. Linux filesystems have a single root, and individual disks aren't even easily visible, so you don't have piles of special cases to deal with "C:" vs "C:\something".
Fifth, trying things out is monetarily cheaper. Indisputable.
Best choice for your dev environment would be the one you can be most productive with. It all comes down to personal preference. That being said, lot of web sites and apps (especially ones written in php) are deployed on linux servers. If you're planning to work on other than .NET-technologies in the future, not knowing your way around is likely to bite you in the ass somewhere along the road. So, at least in some point you should familiarize yourself with basic linux usage. Whether you should do it with this project or sometime later is hard to say. Your productivity might suffer while you learn, but after you get to know the way things work in linux environment, it could yield improvements to your productivity.
Yes, but you will need to spend more time setting things up to get the benefit and there is a much steeper learning curve.