Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

For solo projects, do you keep your build / management tools on your local machine, or on a separate server? If the server is not guaranteed to be safer or more reliable than my own machine I struggle to see the point, but maybe I'm missing some things.

Note that I'm not debating the value of continuous integration or having a staging environment etc.. just the question of whether it exists on separate hardware.

share|improve this question
    
I've always done it on my own computer - didn't know that people would do all that setup on another machine. –  Michael K Dec 14 '10 at 16:47
    
What sort of solo project? I'm not getting an extra computer to be a server for my hobby projects, but I might for something I was getting paid for if there was an advantage. –  David Thornley Dec 14 '10 at 18:05
    
It's a postgrad research project that will last for at least a year. Based on previous experience in industry I know that I want to do this with a bit more process than the average academic project. –  Fritz Meissner Dec 15 '10 at 7:04
add comment

5 Answers

up vote 10 down vote accepted

That depends, I would say.

Pro local machine:

  • Works without net.
  • Easier to maintain.

Pro separate server:

  • Some tools (continuous integration) may cause load that is annoying on your local machine.
  • You can access your tools from different machines.
  • You have a copy of your data on a different machine.
share|improve this answer
2  
Another pro for a separate server: reduced wear and tear on your computer's components (CI tools do a lot of disk access). –  Berin Loritsch Dec 14 '10 at 16:55
2  
Another pro for separate server: When/if in the future another developer needs access to the tools, I would rather they not be accessing my dev machine. –  Jeremy Heiler Dec 14 '10 at 18:09
    
I would add a pro for separate server is you know you have everything under source control. You can't forget to commit something. –  DevSolo Dec 14 '10 at 18:11
    
@DevSolo: That's true also for local machine, with a distinct Repository set up on the same machine. Better indeed is, that you have a backup on a different machine - the repository. @Jeremy: True, but if other developers join the project the separate server can be set up at that time. There is no big problem in moving all the stuff. –  Mnementh Dec 14 '10 at 19:09
    
@Mnementh: It's possible to work on something, compile it up, but forget to make a commit. If your build server only checks out code from the repository, there's no chance of doing a build but forgetting to check that code in. –  Anon. Dec 14 '10 at 21:30
show 1 more comment

For many projects, it makes sense to have VM dedicated solely to development or for use as a staging server, especially if a complicated software configuration is necessary on the machine. Using a VM gives you the ability to switch between putting the development / staging server on a common or server machine, or putting it on your workstation machine (which can be useful if, for instance, you need to develop from a portable machine or without a network connection.

share|improve this answer
add comment

My day job is as a solo C# developer working on a single in-house system for a small company. The system uses Mercurial for version control, with a central repository on the company file server. I have use a build server which is actually a Windows XP VM running on a Hyper-V server. I find that with this setup:

  • The build environment is separate from the development environment, so I can manage dependencies easier
  • Most of the client PCs are Win XP, so I can develop on any OS (usually Win 7) but I can run all my automated and manual tests on XP, with a similar configuration to the users
  • I develop on a 64 bit OS, but build for 32bit, and some unit tests for complicated calculations like Internal Rate of Return can fail due to architecture differences. Not necessarily an issue but it could have been.
  • I used to have a VM running on the development machine, but that meant I couldn't run builds when working from home - now I can just RDP into the build machine
  • Having a clean repository makes it easier to find issues like forgetting to add files to VCS. Of course just having a seperate build chain on your dev machine could achieve that as well, but it is nice to have it all in a physically seperate environment.
  • A full build with all the tests takes about 4 minutes, and then manual tests can take some time as well. With a seperate build server I can keep working while the build looks after itself.
share|improve this answer
add comment

That depends, all my computers are set up with different tools for different languages, projects, etc. For example, on one computer I have Django and Apache, on another I have Python, Pygame, and Tkinter, on another I have Eclipse and PHP, on yet another I have a different version of Eclipse along with the Android SDK and a few emulators. I'm considering setting one up for RoR. I use whichever I'm near, or sometimes I will remote-desktop into whatever computer has what I need.

share|improve this answer
add comment

I'm primarily a C/C++ guy who does telecommute projects on Linux, Mac OS X, and Windows.

All my development machines at home are on a gigabit Ethernet LAN which also includes a Linux server that doubles for source control (Perforce and git) and issue tracking/wiki (Redmine).

Why have a separate server?

  1. The more copies of the source there are, the less likely it is I'll be in pain if there's a hardware failure.
  2. My Internet firewall forwards key ports to the server, so I can travel and get to all my important stuff without compromising my LAN. I've pulled a complete set of sources onto a laptop from a Starbucks.
  3. I can keep all my development machines' sources synchronized.

It really doesn't take much horsepower to set up a Linux server to do this. I'm using a first-gen Intel iMac with a dinky hard drive and anemic CPU. It would be inadequate for most things and would probably gather dust in our crawl space, but it runs great with Ubuntu Maverick for this purpose.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.