Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm mostly a Windows user but I do most of my development (essentially web development) using unix tools and software. I've been going back and forth between using a dedicated lubuntu virtual machine on Virtualbox and using some tools directly in windows (msgit, python, django), but none of these approaches is entirely satisfactory.

I'd like to hear of ways other devs use to better integrate a unix workflow into windows. For instance tighter integration between a linux and vm and windows. The vagrant demo showed how a VM could work off of a windows project folder and I found that nice. I'd like to hear of other tools and tips that would help mimic the workflow one can find on OS X (of course I understand that it cannot be as tightly integrated on Windows as it doesn't have the same unix underpinnings).

PS: I have tried cygwin as well

EDIT for clarifications about What I find lacking (thanks to axblount for pointing that out) : unix tools like msys et al do not work as well as their native unic counterparts. Many scripts, installers require further configuration or do not work at all. For instance getting virtualenvwrapper to work is not very straightforward. virtualbox: ideally I would like to use windows software (photoshop, sublime text 2) seamlessly with linux. I mostly use a FTP client atm to move over files edited on the windows side which is a tedious process.

SUMMARY: It seems there are no established solutions. As a temporary solution I will probably try to use the native versions of frameworks and libraries through the windows command line when possible and switch to a tool like vagrant for incompatible programs.

MORE INFO FROM REPLIES AND COMMENTS: The case-sensitivy issue seems to work against windows as pointed out by @GlenPeterson

share|improve this question

closed as not constructive by gnat, Robert Harvey, Ryathal, Walter, Tim Post Nov 3 '12 at 11:42

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Related Stack Overflow post: – Oded Nov 1 '12 at 18:55
You seem to have covered the usual bases. What do you feel is missing from the things you've tried? – axblount Nov 1 '12 at 19:16
@axblount I have edited the question – Shigar Kenze Nov 1 '12 at 19:27
Why not make the plunge and overwrite Windows with Linux? :) – Earlz Nov 2 '12 at 20:22
You still need to be able to test on Windows web browsers, so completely replacing Windows with Linux isn't wise. – Nathan Pilling Nov 2 '12 at 21:14

Most of your development (essentially web development) use unix tools and software.

You have tested different alternatives to use those tools in Windows but as of now, you haven't found one that works as well as the real thing.

Then you should really consider migrating yourself to Linux as your desktop OS, and virtualize Windows for everything else.

Believe me, you will not regret it. Your desktop will be faster, more secure, no-virus and you will have all the tools you need for your development projects.


Accommodating for a great comment from @GlenPeterson:

If you are deploying to Unix/Linux then you should be working on a case-sensitive OS. Windows' case-insentiveness can cause you problems someday.

share|improve this answer
I have been using Linux since 1998 so I can claim I know it well. Overall I like Linux a lot (especially Ubuntu and derivatives). But after going back and forth between both, there is no doubt that Windows serves my needs better (photoshop, gaming, hardware support). Because hardware issues still happen today I'd rather virtualize Linux on Windows than the other way around. At work I do use a dedicated Linux box besides my windows pc. Overall I agree it's a great OS ! – Shigar Kenze Nov 2 '12 at 19:14
Well, I switched to Linux at work 4 years ago. I do not play games at work ;) and the little image manipulation I do, I do it in Gimp. And Ubuntu has gone a long way in hardware support in the last two years. It's practically p&p now. And no virus. – Tulains Córdova Nov 2 '12 at 19:18
If your projects will be deployed on *nix, you need to be working on a case-sensitive operating system - period. I switched to Linux as my primary desktop 3 years ago. Lubuntu lacks some desktop features I really like. Try Xubuntu instead. If your machine has an nVidia graphics card you should be fine hardware wise. I run 3 different versions of Windows in VirtualBox for testing. I have Photoshop in one of them, but often use GIMP. I don't play games, but Steam for Linux (by Valve) should solve that for you in the next 6 months. Become a beta tester and make it happen sooner! – GlenPeterson Nov 2 '12 at 20:12
Just to pile on, my web dev company started life 8 years ago as a Microsoft shop but always deployed to a *nix server. One year later, we were all *nix/BSD and all that's left of Windows today is an old box in the corner for testing IE on. – Rob Nov 2 '12 at 22:04
If you work / deploy to a *nix environment, working directly on one will open up a lot of possibilities you wouldn't be able to do otherwise. Unless you immerse yourself in the environment, you're just scraping the surface. I was in a similar position to you about a year ago and have not regretted moving to Ubuntu for a second. So many tools don't port well, or at all. – Adrian Schneider Nov 2 '12 at 22:52

If you're deploying your software on Linux servers, you should practice deploying your software on a Linux server (even in a VM). Make your deployment process automatic. The most important part is code distribution and deployment. You must consistently build and deploy on your target system type.

Find yourself a good terminal and learn to use it. I use Putty and have found it to be a lot better than cygwin and msys.

Some continuous integration systems allow you to run and test code remotely before it is allowed to be committed to your VCS. Using this functionality on your target system type can prevent a lot of problems.

share|improve this answer
I actually use putty at work. I admit I am less knowledgeable about continuous integration systems. One of these could be used to auto push files to the VM then ? That would work. I assume most of them run on windows ? I'm looking that up atm. – Shigar Kenze Nov 1 '12 at 22:50

If you're running a recent version of Windows, take a look at SUA, the Subsystem for Unix Applications. It has a shell (ksh) and supports over 300 common Unix commands and utilities. Most of the docs talk about Server 2003 R2, but it installs on Windows 7 too.

share|improve this answer
Interesting. I hope they keep updating this. I'll give it a shot anyway. I like that it used cmd.exe (and presumably powershell as well) – Shigar Kenze Nov 2 '12 at 0:12

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