I work as a consultant programmer, typically in large businesses. I use a Windows Laptop, and many of my colleagues use a Mac.

My personal preference would be to run Ubuntu if I could have complete control over my development environment. But I will have occasional need for Microsoft specific products, especially IE.

My colleagues that use a Mac often run Windows on a virtual machine for these situations.

My question is: Is Ubuntu a workable solution for the laptop of an enterprise programmer? For example, is it as easy to run Windows on a VM on Ubuntu as it is on a Mac? Has anyone out there tried this? Is there any particular reason why Ubuntu would not serve as well as a Mac for development in this environment?

Note that I am not doing .NET development, so I am typically dealing with Java that is going to be run on an Apache server and used by clients running Windows.

I run WinXP from VirtualBox on Fedora often, seems to work fine for my purposes. However, it does not support 3D acceleration.
–
Mr. ShickadanceApr 22 '11 at 15:55

7

Sounds to me like you are fighting against the grain a little bit, I guess only you can know how much extra hassle this is going to cause you, for whatever the benefits will be. Personally I would go dual boot.
–
user23157Apr 22 '11 at 16:13

@EricWilson - it got a flag. I acted on the flag. The flag was that effectively this question is "can I run a VM on Ubuntu?" Which should be a question for Super User or Ask Ubuntu. But as the question is over a year old I didn't migrate.
–
ChrisF♦May 9 '12 at 13:37

1

@EricWilson - I tell you what - I'll reopen and see if it gets any more attention.
–
ChrisF♦May 9 '12 at 13:55

9 Answers
9

I use Ubuntu on my laptop and have used Linux in some form as my primary operating system for over 10 years. This is in a very strong Windows enterprise environment. For those occasions when I need to run something in Windows I have a couple of different VirtualBox images setup and it works extremely well. I very seldom need to launch those. I have no problems at all doing enterprise development using Linux.

I have never used a Mac so can't speak to a comparison with it. I am very happy and productive with my Linux setup.

Is it "as easy as on Mac"? No, it's way more easy, see the latest update below. OSX is a niche system with very limited support from VirtualBox or VMWare. On the other hand Linux is main target for both of them, because of it's dominance on server market.

Java - runs way faster on Linux, than on Windows. Not the slowness of Java on OSX. Apple hates Java and it shows, OSX always has outdated versions, and it runs way slower than on Windows. It's also insecure and prone to trojans.
For example currently latest available security update for Java 6 on OSX is update 33, while Oracle already released update 35, which has been pushed to Windows via auto-update. Ubuntu uses OpenJDK by default, but if you installed Oracle Java, you've already received update 35 via repository. Update 35 fixes some serious exploits (CVE-2012-4681), OSX users are vulnerable.

Made possible by an internal innovation fund, project Sputnik is a 6
month effort to explore the possibility of creating an open source
laptop targeted directly at developers. It is based on Ubuntu 12.04
and Dell’s XPS13 laptop.

Another update:

Since lot people have doubts about how easy Ubuntu really is. I've Ubuntu 12.04 on MBP 13". Things that work OotB, no additional configuration required:

external displays — in fact it's done better in any other OS I've seen so far. It automagically remembers different setups. In one setup I'm connecting my laptop to 24" side by side, in another I connect it to another 24" with screens one below another. It just knows which setup I'm using. Neither Windows nor OSX provides that.

scanner and printer — works out of the box without installing any additional software or drivers. Also the case with network attached printers and scanners.

development tools — most available with zero fuss directly from Ubuntu repositories, in few cases custom repositories (requires single c'n'p to enable, then it's controlled via same Software Center).

mobile phone tethering — works OotB, via USB and BT;

3G/4G sticks — work OotB, zero fuss, drop down lists with predefined settings for vast majority of providers in the World (did find all that I've tried).

multi-touch gestures — although actually the only one I'm ever using is two finger scrolling. Also it's easily configurable (via GUI), so you can for example lock two finger scrolling to do vertical scroll only.

And a lot of similar goodies. Overall comparing with OSX, where everything seems require a third party app or drivers, with Ubuntu 12.04 I hardly ever had to install anything not included by default.

The situation of Java on the OSX is about to change, since Apple has given Oracle all their Java code, I think OSX will have up to date Java starting from the next release, JDK 7.
–
Mahmoud HossamApr 23 '11 at 13:36

8

@Mac fanbois: one can always count on you to down vote any answer critical of OSX ;-)
–
vartecApr 24 '11 at 11:46

I have been using Ubuntu for web development. At times there are cases when I need to check for cross browser compatibility. Yes Ubuntu has very nice support for vmware and works just absolutely fine with no hiccups. I have a couple of instances of windows 7 virtual machines with different apps installed e.g. Ie8, ie9 etc. They start-up pretty fast also.

Apart from that development on Ubuntu is amazing. No annoying pop-ups messages, no notifications, alerts, viruses, malware etc. You can absolutely concentrate on your work. Ubuntu is pretty fast to startup and shut down too.

Working on the apple, I could never get used to the separation of the menu bar and application window. Never comfortable when multiple windows are open.

Me too! With 8GB on my Ubuntu desktop, I can simultaneously run two WinXP VMs with IE 7 and 8, and one with Win7 and IE9. I use the HTMLValidator plugin for Firefox on Windows, but otherwise, all my work is done in Ubuntu, including most of my Chrome/Firefox testing. The Unix command line is a developer's dream come true. Cygwin makes Windows usable, but Linux is even better. The only issue with a laptop is less memory for the VMs, but even with 4GB you can run 1 VM at a time, or maybe even 2.
–
GlenPetersonSep 20 '12 at 22:01

@GlenPeterson - yeah but I have installed the latest Ubuntu release and I really not happy with it. Looking into Mint
–
Imran Omar BukhshSep 22 '12 at 8:57

I should say, I run Unity 2D because the alt-tab between terminals on the regular Unity is not to my liking. In any of the Gnome desktops I always put my favorite programs in the taskbar instead of using the menus. The "Lanucher" is just like that. It took a while to get used to searching for things instead of using menus - I had to remember what things were called instead of where they appeared, but it's no harder. Finally, you still have to use Main Menu to create new custom launchers, but it's not hard.
–
GlenPetersonSep 23 '12 at 11:58

@GlenPeterson - I dont like the launcher on the left, would prefer it at the bottom. Also the window button are on the left when i am used to working with them on the right. And finally the unified menu bar does not work for me at all
–
Imran Omar BukhshSep 24 '12 at 9:16

I tried Unity, kicking and screaming, a dozen times over 2 years because a friend of mine kept saying how much he loved it. It was pretty broken until 12.04. Now I'm hooked. I love how much screen real-estate I have for what I'm doing instead of for window controls - I set the launcher to auto-hide. Having everything in the upper-left corner makes some sense. Only thing I hate is when I have a small window, the menus for that window are torn off at the very top of the screen with other windows in-between. Ubuntu repositories rock. Alto consider Xubuntu vs. Mint.
–
GlenPetersonSep 24 '12 at 13:30

I run Ubuntu Linux for everything except Windows testing. I used to dual-boot Windows XP but don't anymore. I can run Windows XP in a Qemu virtual machine, but the USB doesn't work very well. I would recommend dual-boot.

Run Windows in VirtualBox. USB requires some configuration, but it's done everything I need it to. My only issue is a sound loop when using the computer microphone for teleconferences in Windows in VirtualBox. Well, and holding down the Alt key in Photoshop in Windows in VirtualBox requires the Windows on-screen keyboard.
–
GlenPetersonSep 24 '12 at 13:34

Strongly depends on what you need to do. Visual Studio do not run too well under Ubuntu. Java development works fine. PHP etc works fine too.

I like the Ubuntu desktop and have used it with vmware player to get a Windows instance for a period of six months, and found it perfectly usable for daily usage for a Java programmer. The Windows instance run very well in VMWare Player.

I find VS2010 perfectly usable running on a Win7 guest under VirtualBox on my Ubuntu system. The host is a quad-core Phemon-II with 8G of memory and the guest runs on an emulated 4-core machine with 3G of memory. It's a little cranky for the first ten minutes or so, until paging settles down, but after that it's just like running it native. Deploying apps to IIS on the virtual machine is speedy, but accessing lots of data on Sql Server is not.
–
TMNApr 3 '12 at 15:35

1

@TMN, Visual Studio do not run very well on Ubuntu without virtualization software with a Windows installation, and that is what I meant. Given enough horsepower most things run well anyway.
–
user1249Apr 3 '12 at 16:21

I think the first should be to make a list of all the enterprise apps you need access to and see if you can access them from Ubuntu. Are you using Outlook? Is there an odd-ball expense app that requires windows? Can you enter your timesheet? How easy would it be to install that muck into a windows VM?

Also keep in mind that you might want multiple windows VMs.

One of the consultants we work with has been using Ubuntu on high end laptops and hasn't had any problems. He keeps at least one Windows VM per client. In some case multiple VMs are used to emulate the client environment. He helps us with windows/unix interoperability issues and his ability to reproduce and then solve our problems in hosted VMs is amazing.

A web developer I work with keeps one Windows VM per version of IE. This is on a Mac but the principal should apply to Ubuntu as well. Being able to test with IE6/7/8/9 without multiple-rebooting is pretty handy.

The first suggestion is not practical, as I can't know what apps will be needed at the next client.
–
Eric WilsonApr 23 '11 at 10:28

1

Pretty much everything works well on Windows on VM, unless it requires to access fancy hardware (beyond typical USB / sound / video stuff). Having extra memory for all this helps very much, but decreases battery life a bit.
–
9000Apr 23 '11 at 14:14

"Make a list of all the enterprise apps you need access to and see if you can access them from Ubuntu" - Also see if there is a native alternative to those apps, e.g. How much can you use OpenOffice instead of Microsoft Office? For me, I need both, even specific versions. sometimes one client has Office 2003 and another Office 2010. I have multiple virtual machines: XP/Office2003/IE7 and Win7/Office2010/IE9. This is much better than being stuck with a single Windows version (though at $130/OS and $130/Office, it gets pricey). I Buy OEM Windows CSs from Amazon.
–
GlenPetersonSep 24 '12 at 13:40

I do this a little differently. I use Windows 7, but have VMWare workstation and create a virtual machine for the environment I want to develop under. I have a virtual machine for Ubuntu, Fedora, FreeBSD and Open Solaris. If there is an operating system that I want to use, then I just create another VM. I hope to be able to use OSX this way at some point, but last time I checked you were not allowed to do this by Apple.

I did try to do this the other way around (VM for windows under and Ubuntu desktop), but it was a mess. VMware had many, many issues with this (mostly crashing the whole machine) and was generally slower. Also, the kernel updates for Linux when trying to use VMware was a real pain.

Linux is an excellent environment for an enterprise programmer. You can configure and control your entire system from bits and pieces without any hassles of virus, malware, etc. Unlike windows, It doesn't suffer from an obsession to reboot after installing software and also, applications and environments tend to run better/efficiently on Linux. These days Ubuntu has made it possible that users can configure and use Linux as easily as a Mac or a Windows.

For a programmer it is even more better. C, C++, Python are pre installed. Be it java, groovy/grails, ruby/rails, or smalltalk. All of them run flawlessly on a Linux machine. If it is inevitable that you need to test your windows specific applications, you can always run wine and configure the dlls to get it running.

Within my Ubuntu system, I run Virtual box to manage Tiny core Linux and Bodhi Linux. I never installed Windows on virtual box but I have experienced it on one of my colleague's machine. It runs very smoothly without any hassles.

Ubuntu is a very suitable to run virtual Windows. VirtualBox and VMWare works very well under Ubuntu and ofcourse you can always switch to Kubuntu if you want your Ubuntu to look more like Windows but stay Linux.

It runs faster than Windows, saves battery time and does not limit you like a Mac. It is great to have a Linux and especially Ubuntu laptop if you want to work with multiple environments. Everything you need is free and you have the full control.

But you can install and run Windows on a Mac too. I use my Mac like that. You can also install Ubuntu and Windows side by side with dualbooting, but if you want to do that way, make sure that you install Windows first.