We’ve been battling this problem for some time now, and can’t seem to find a perfect solution that would satisfy all the requirements of making life easier for developers.
Right now we have the following setup:
- Linux development server (as everything we produce runs on linux, and it uses some linux-specifix libraries)
- Windows desktops (as the office network is on windows)
- Every developer has a home folder on the dev server with a virtual host set up to run their code. This folder is shared using Samba.
- Zend Studio IDE that is set up to use that location (as a network drive) to work on projects
- Remote debugging to be able to run applications on the dev server and be able to step through the code
So the main problem we are having is that everything is slow…
- Zend is slow to index the project, as it has quite a bit of files (including externals like full framework) that need to be transferred through SMB.
- Remote debugging is slow, as Zend studio needs to fetch the file, then send it back to the server to run it (running “Local if available, else server”; otherwise breakpoints don’t work)
- Tortoise SVN is slow to get file status for the commit (command line remedies the problem, but it’s much less user friendly, especially with more complicated things like conflict resolution while merging)
Branching out to any of the solutions that would have multiple server configurations brings up a problem that there is a chance of having different configurations everywhere, which will introduce additional layer of uncertainty and possibly bugs in production.
Development and debugging under windows is not possible because of linux dependencies in the code (like POSIX functions).
So how do organizations solve these problems? What kinds of set up are you using? What kinds of problems are you facing, and how to you resolve them?
One solution that works in some situations is to :
Advantages :
Drawbacks :
Still, the best (fastest and most powerful) solution is generally to use only one computer — that would run Linux, in your case, and not Windows.