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.

I develop for iOS and Linux. My preferred OS is Ubuntu. Now my software shop (me and a partner) is developing for Windows too. Now the question is, is it more efficient to have multiple workstations, one for each target OS? Efficiency and productivity is a higher priority than saving money.

I have a 3.4Ghz i7 desktop workstation running Ubuntu and virtualized Windows with two displays, and I'm putting together an even more powerful i7 Hackintosh with 16GB RAM (to replace my weak 2.2Ghz i5 Macbook Pro). My specific dilemma is whether I should sell the first computer and triple boot on the second one, or buy two more displays and run both desktop systems simultaneously.

Would appreciate answers from developers who write software for multiple OSes.

Running guest OSes in VirtualBox on one system not ideal, because in my experience performance is seriously degraded under virtualization. So the choice is between dual/triple booting on one system vs having two systems, one for OSX+iOS/Windows (dual boot) and the other for Ubuntu (which I prefer to use as my main OS).

For much of our work, I write a server-side application in Linux and a client for iOS (or for Windows or OS X) simultaneously.

share|improve this question

closed as primarily opinion-based by gnat, Kilian Foth, Bart van Ingen Schenau, Snowman, Dan Pichelman Sep 1 '14 at 1:17

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

Try a better virtualization software then...I have had absolutely no problems with VMWare Player (which is free) –  Jetti Nov 29 '11 at 14:02
Unfortunately, it's much harder to get OS X to run well under virtualization than directly on the right hardware. And I don't want to use OS X as my main OS. –  dan Nov 29 '11 at 14:10
I believe you could do OSX/Windows (with Bootcamp) and then VMPlayer Ubuntu (VMware has amazing support for Ubuntu) on either windows or OSX and just stay in Ubuntu the majority of your time. If you maximize the amount of memory that the image uses, you should have no problems at all. That would be the cheapest and option that is also compliant with the licenses for all 3 OSes –  Jetti Nov 29 '11 at 14:15
Thanks. I'll try that. I didn't know that a Hackintosh was "compliant" with the OS X license ... but if you say so :) –  dan Nov 29 '11 at 14:18
Performance under VirtualBox is not seriously degraded... so long as you have hardware support for it in your chipset and its enabled in the bios. Unfortunately a lot of consumer grade PCs dont support it at all. You need to specifically research a PCs chipset before purchasing to make sure it has hardware support for virtualization. I easily get 90%+ native performance under VB. –  GrandmasterB Nov 29 '11 at 19:20

8 Answers 8

"seriously" degraded? Visual Studio 2010 runs just fine on my virtual windows on my 13" 2011 macbook pro.

I like the virtualization approach because you can switch between systems so easily, and continue to use your favority OS for googling and other tasks, while only running the IDE on the virtual OS. Filesharing and copy/pasting work seamlessly.

Using separate machines will give you a lot of annoyances due to lack of connectivity between them. You will also probably spend a lot of time setting up and tweaking on every different OS.

Another thing to consider is that it is much better to program on 3 monitors than instead of 1, so your set-up of using 3 completely separated PCs, each with a screen of its own, seems less optimal to me.

share|improve this answer
Thanks for that suggestion. "Seriously" degraded is probably an exaggeration, but when you're running Java and Ruby programs that take 10 seconds to start up natively on a 2.2Ghz system, virtualization seems to wipe out any gain you get from having a faster CPU. –  dan Nov 29 '11 at 13:47
I have found virtualization to drag if I switch between virtual and native OSes infrequently or I do anything "significant" (e.g., restart a server) on the host. Then, when I switch back to the client, it drags until everything gets paged back in. I find it kind of annoying when developing clients and servers in parallel, but it's fine if I spend most of my time in the client. This is on a four-core box with 8G of memory, more memory would probably make this less of an issue. –  TMN Nov 29 '11 at 13:57
"annoyances due to lack of connectivity" how so? I'm running one 'master machine' with 3 monitors, 1 for a vnc to a linux box and one with rdp to another windows box. All are on a single router. Especially with rdp there's hardly any difference with sitting behind the pc itself and it doesn't have the annoyances of vnc. –  stijn Nov 29 '11 at 14:11
@stijn So you would opt for multiple machines over virtualization of multiple OSes on one machine? –  dan Nov 29 '11 at 14:19
@dan's first comment: Yes, you will lose some raw power. But a fast PC at 80% performance is still faster than last year's fast PC. I understand your way of thinking, but with the current hardware, the small loss of computing power wont be missed unless you do any 3D rendering work or so. You should research the performance loss of the different virtualization apps. –  Thomas Stock Nov 29 '11 at 14:27

here are a couple of things I've used. This was mainly for developping windows/linux/arm, from time to time OsX.

  • 1 master machine, multiple monitors, with all other os virtualized. Pros = 1 machine, 1 set of keyboard/mouse. Cons = you need an extremely fast machine or you'll get annoyed quickly, and the main problem is virtualized hardware is not real hardware* so for me this was a no-go. Also not everything can be virtualized (eg most real-time OS).

  • all seperate machines, all seperate monitors. Pros = well, they're all real machines. Cons = multiple keyboards/mice equals hell, and you almost never use all monitors at the same time but they still take desk space.

  • all seperate machines, all seperate monitors, and Synergy. Pros = see above, plus only one set of keyboard/mouse. Cons = Synergy sometimes messes up, still too much monitors.

  • like the two options above, but monitors with multiple inputs and switching between inputs when needed. Pros = same as above. Cons = gets confusing sometimes, Synergy setup can be a pain.

  • 1 master machine, all slave machines headless. Pros = all of the above, no waste of desk space. Cons = VNC has a lot of annoyances

What I currently use (windows+linux+real-time OS development) is some hybrid and it's perfect for what I do:

  • a fast master with windows / realtime OS side-by-side, dual video cards, 3 large monitors
  • master also has XP in a virtual machine, hardly used but handy
  • a slave with windows, also connected to one of the monitor's second input. Controlled via synergy
  • another windows slave accessed via rdp
  • a slave with linux accessed via vnc

*depends on what you do. I'm mainly into low-latency audio and video processing and one simply needs real hardware for it

share|improve this answer
It actually took reading your answer for me to realize that my monitors actually have multiple inputs and the ability to switch inputs. Thank you for that. –  dan Nov 29 '11 at 14:50
@dan ha yeah I know, the day I realized what you could do with it was a huge eureka moment for me as well :] –  stijn Nov 29 '11 at 14:54
Eureka is right! I think maybe I'll try one keyboard + 2 machines + Synergy + three monitors with input switching. –  dan Nov 29 '11 at 15:05

Efficiency and productivity is a higher priority than saving money.

IMHO, you answered your own question. Even though it costs more money, it is simpler and more efficient to have multiple systems.

share|improve this answer

If you find it easier to have two base units, then keep them both. Compared to developer time, hardware is usually relatively inexpensive.

At the same time, I wouldn't necessarily invest in more monitors. Instead I'd use the cash to make sure I had a single set of excellent monitors and use a KVM to switch between the two base units. You might also consider the benefits of VNC in this regard.

share|improve this answer
Good suggestion. Any recommendations for a good KVM? –  dan Nov 29 '11 at 13:47
@dan : there are 2 kinds of KVMs in this world -- ones that work and ones that don't. Pick something with the right inputs and you should be good to go. –  Wyatt Barnett Nov 29 '11 at 19:33

Unless you have a need to use two environments simultaneously, or need to switch among them frequently, I'd just build one fast box and triple-boot it. Even though money's not an impediment, why spend it if you don't have to? This way you can have the best components, and when it's time to upgrade you can build another "god box" and not have to compromise.

share|improve this answer
Nice perspective. I also like the greater simplicity of dealing with less hardware and cables. I love the term "god box"! –  dan Nov 29 '11 at 13:48

Put a bunch of memory in your computer and run VM(s) (If you have < 4 "cores", but a new computer). Most likely you won't be actively using multiple "systems" at the same time. If you want to get fancy, but a second monitor and run your VM full screen on that monitor.

share|improve this answer

You can use qemu-kvm to run vm. If you install virtio driver for the operation system of the vm and use spice to display the vm, performance will not be a problem!

If you have multiple monitors you can pull a vm onto the different monitors and use multiple operation systems at the same time.

You can also let a vm use multiple monitors.You just need set multiple virtual graphics device for a vm.

I installed ubuntu-12.04 on my computer and I use some vms that include windows xp,windows 7,CentOS installed to develop on those OS environments.

share|improve this answer

Have you considered keeping your boxes and using remote access software like vnc or radmin to work on those boxes? This is how I work all the time and works really nice and fast without the drawbacks of slower Virtual Machines or Rebooting.

share|improve this answer

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