5

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.

3
  • 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, 2010 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. Dec 14, 2010 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. Dec 15, 2010 at 7:04

5 Answers 5

10

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.
6
  • 2
    Another pro for a separate server: reduced wear and tear on your computer's components (CI tools do a lot of disk access). Dec 14, 2010 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
    Dec 14, 2010 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, 2010 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, 2010 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, 2010 at 21:30
2

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.

1

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.

0

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.
1
  • A build machine can make the build more fragile. Yet I agree with everything you put here ... as a solo developer it is important to have multiple build environments (to prevent fragility) and so an automated might actually help in this regard. See my blog post on this: Don’t Baby Your Builds
    – AgilePro
    Mar 6, 2016 at 17:30
0

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.

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