Forgot your password?
Virtualization Education Operating Systems Windows IT Linux

Ask Slashdot: Which Virtual Machine Software For a Beginner? 361

Posted by Soulskill
from the not-the-holodeck dept.
An anonymous reader writes "I am getting ready to start learning the use of virtual machines. What VM software would you recommend? This is for personal use. It would be good to run both Windows VMs and Linux VMs. Early use would be maintaining multiple Windows installs using only one desktop computer with plenty of cores and memory. I would be starting with a Windows host, but probably later switching to a Linux host after I learn more about it. Free is good, but reliability and ease of use are better. What is your preferred choice for a VM beginner? VMware? Xen? VirtualBox? Something else?" It may also be helpful if you can recommend particular VM software for particular uses, or provide some insight on different hosting options.
This discussion has been archived. No new comments can be posted.

Ask Slashdot: Which Virtual Machine Software For a Beginner?

Comments Filter:
  • VMware is very easy (Score:5, Informative)

    by blandcramration (2636571) on Friday November 09, 2012 @07:29PM (#41937253)
    I honestly just used VMware for the first time today but it was very easy to use and booted up in seconds. You can add virtual drives with a click and if you are anywhere familiar with the operating system you are attempting to emulate, I'd say it's a safe bet. Maybe the community can offer a few free options for you to try out as well.
    • Re: (Score:2, Informative)

      by Anonymous Coward
      I second vmware if it is anything windows/linux related. Oracle's stuff is too unstable and MS just integrates well with windows. For everything else, kvm is more than enough and the best value.
      • by Clsid (564627) on Saturday November 10, 2012 @03:15AM (#41940427)

        I disagree. VirtualBox is not unstable. In fact, I think it is perfect for a beginner. It is free and if you grab Gentoo Linux, you would be learning a lot of just about everything. After you are done with VirtualBox you should really get into kernel hypervisors. That's about it. No vmware needed, or paying for software in the learning process.

      • by tigersha (151319)

        Ditto on the "unstable" part. We have a Rails webserver that usually runs on a server. Once in a while we need to demo this offsite or use it somewhere at a venue where the internet is flaky or expensive. Easy. Use a Linux VM, host on Windows. Youo click on the VM, it starts and it runs and browser goes to the VM instead of online.

        With Oracle Virtual Box it was a disaster. Spontaneous reboots, slow, not responsive network. VMWare solved the problem instantly.

        That said, I heard that Virtual Box runs better w

    • I've got so much bare metal laying around, these days I've been installing onto a box and accessing it remotely - native performance is much nicer.
      • by symbolset (646467) *

        Hypervisor overhead has not really been a problem for five years or so. Baseline host tin these days is 24 threads/12 cores, 192 GB RAM, Dual port 10Gbe and dual 8Gbps FC or dual 10Gbps FCOE, and some SSD backed storage. It's the cost of that storage bandwidth that is holding things up now, and less so the network bandwidth - not CPU and RAM.

        The surplus gear I use for test/dev is a few old boxes with dual X5550's and 96GB and quad gigabit. It sounds like you're trying to make do with some ancient P4 De

        • Oh yeah... That's my baseline tin.... Yeah, that's the ticket...
        • by timeOday (582209)
          Obviously depends on what you want to do. 3d Graphics on VMWare Fusion (for the Mac) does not work well - mainly problems with bugs, not (just) speed. Google Earth plugin for example is not usable because the controls do not render at all.
    • by Darinbob (1142669)

      Isn't it also very expensive?

      I really know little aobut this area, and was only reading the thread hoping to learn something. Instead if seems to have been hacked since it is full of much more abuse than is typical for slashdot.

    • by DaveAtFraud (460127) on Friday November 09, 2012 @08:23PM (#41937863) Homepage Journal

      VMware tends to be fussy about the hardware. I had a non-descript Athlon dual core that ran VMware just fine but lacked horsepower and wa maxed out on RAM at 4GB. I decided to buy a 6 core Athlon, new motherboard and 16 GB of RAM. VMware installed just fine but the clock drifted all over the place (several seconds per minute). Finally gave up on VMware and went Xen. Xen worked just fine but lacked all of the nice management tools and virtual networking stuff that VMware had. SIGH.

      Also, it will only install if you have a supported network card in your target box. Check the hardware requirements.

      If you want to try VMware, there is a free version: []

      Oh yeah, one other downside of VMware is the management console only runs on Windoze (at least when I was using it about a year or so ago). You will still need a separate, standalone Windows box


      • by danomac (1032160) on Friday November 09, 2012 @09:53PM (#41938733)

        vSphere/ESXi is not the type of hypervisor he is seeking. It takes complete control over the hardware and it is picky on hardware, for an example it will not work with Realtek network cards. There is a HCL that you can refer to to get best results. I have built a whitebox ESXi hypervisor by replacing the network card on a desktop machine, and using a standard sata controller.

        For what he's looking for, vmware-server or vmware-workstation is recommended as both run on top of an existing OS. I remember vmware-server being free, I'm not sure about vmware-workstation.

    • by Gerzel (240421) <(moc.liamg) (ta) (terrefyllorb)> on Friday November 09, 2012 @08:58PM (#41938261) Journal

      VMware is great. Though I've mostly used Virtualbox. For most personal uses VBox does things fairly well and is free. There are several other offerings out there. Try the free ones find one you like is what I'd recommend.

      • by LordLimecat (1103839) on Saturday November 10, 2012 @02:31AM (#41940261)

        Virtualbox is a nice entry hypervisor, and certainly if youre brand new start there.... but I wouldnt do anything production on it. I have had upgrades render VMs unusable, though with a downgrade and substantial effort I was able to restore them. Virtualbox has the basics, but it has its bugs. Using it for a few years before moving to Workstation will help you to appreciate when a hypervisor works correctly :)

        Its also worth mentioning that if you go to Windows 8, you have Hyper-V, which I understand has started to suck a lot less in version 3.

  • Yes (Score:5, Insightful)

    by Anonymous Coward on Friday November 09, 2012 @07:30PM (#41937275)

    Try them all. Dedicate a day or so to each one with the goal of having a fully working linux vm and a fully working windows vm at the end of the day. Then you'll be able to write a slashvertisement about what you've learned and we'll all be better off. Take lots of pictures.

  • VirtualBox (Score:5, Insightful)

    by Nexion (1064) on Friday November 09, 2012 @07:33PM (#41937301)

    I prefer VirtualBox myself, but also use VMware at work. I also recommend that you try them all. It's not a question of what is best for us, but rather what is best for you.

  • VirtualBox (Score:5, Informative)

    by Anonymous Coward on Friday November 09, 2012 @07:33PM (#41937305)

    VirtualBox is the best for a beginner. User-friendly GUI, sane defaults, it Just Works.

    • by andrew3 (2250992)

      Agreed. I tried helping someone that was using VMWare, and the options were more confusing.

      The VMWare EULA is rather dodgy and it's very long. There's also a clause where they can set a third-party (like the BSA) on you.

      VirtualBox is free software, no EULAs, works fine.

    • Re: (Score:3, Interesting)

      by Anonymous Coward

      The dichotomy is interesting -- the "don't ask questions, read multiple 500 page manuals, then make a half-baked decision and call yourself a genius for having done all that hard work" vs the parent. The original question was asked very humbly -- and was seeking real world advice -- what would you use if you were a newbie to virtualization? It wasn't "I'm an idiot, do it for me" as some previous posters asserted. It was a "hey you've been down this road, you know where the stupidities are, I'd like to

    • Re: (Score:3, Informative)

      VirtualBox runs OS/2 as guest!!! that's a must for VM engine :)
    • Re: (Score:3, Informative)

      by DrHappyAngry (1373205)
      Virtualbox is a great starting point since he's looking for something to run on windows. I have found it's performance to be lacking, but it's a good way to cut your teeth. Once you cut your teeth on the concepts of virtualization and get a bit of Linux experience, move on to something that can run on a headless machine and save resources. Virtualbox can do that, but it's actually a bigger headache to setup in headless mode than kvm or xen. KVM is super easy to set up on most distros, and there's some g
    • I like that virtualbox is available on multiple platforms.. Makes it much more likely to "play" with things when I can do it anywhere. it is also very, very easy to export with other common formats.

  • VirtualBox Certainly (Score:5, Informative)

    by mqhiller (688190) on Friday November 09, 2012 @07:33PM (#41937307)
    Easy to set up (I walked my brother through it over the phone) easy to use (ditto) and fairly full featured.
  • Virtualbox (Score:5, Informative)

    by BuypolarBear (2713397) on Friday November 09, 2012 @07:33PM (#41937315)

    Virtualbox is pretty reliable and includes acceleration on 64 bit systems along with an extremely simple to use GUI and easy to install guest additions that allow your display to easily scale. It's the one thing from Oracle that I actually use and recommend to others. For your requirements, it's licensed under the GPL v2 and works on Windows, Linux, and Mac.

    • Re:Virtualbox (Score:4, Interesting)

      by epine (68316) on Friday November 09, 2012 @08:56PM (#41938243)

      I recently configured my first virtual host under VirtualBox to run LMDE, as my desktop Mint was behind the times on some packages I needed for a online course on big data. I didn't want to convert my main desktop to LMDE without some miles under my belt. There are many package management problems I can fix quickly enough, and just as many that leave me dead in the water. This was my "straw poll" installation.

      I made a huge blunder allocating only 8GB for the system disk. I hit the disk full condition installing some small packages right after obtaining the latest Update Pack. There were package errors. Gnome keyring now constantly tells me about some missing directory. Related? Who knows. Once you've hit disk full, you're guessing until the end of eternity. The storage problem was due to 1.2GB of retained deb files in /var/cache/apt/archives. I ran a command line tool to increase the size of the disk image, but this didn't show up as extra disk space inside the OS.

      Some package management command at the command line to gather a list of installed packages decided to spawn a GUI view window (I didn't expect this) which immediately punted my window manager, leaving my console windows tiny and immobile. Related? Who knows.

      Overall it's been 98% pain free. The other nee Sun product I recommend is ZFS. I could really get into this snapshot business in a big way.

      • Re:Virtualbox (Score:4, Informative)

        by Fred Ferrigno (122319) on Friday November 09, 2012 @09:58PM (#41938777)

        I ran a command line tool to increase the size of the disk image, but this didn't show up as extra disk space inside the OS.

        Likely this only increased the size of the virtual disk, but not the partition that the OS lives on. Partition resizing is file-system-dependent as it requires understanding the FS layout. gparted can do the job if you boot from a live CD, but it'd be simpler to just start over since the OS is screwed up anyway.

        BTW, VirtualBox defaults to dynamically sized disks that only take up as much physical space as is actually used by the guest OS. The allocation size is more of a maximum size, so you can safely set it higher than you think you'll need and not waste space.

    • by wvmarle (1070040)

      One gotcha with VirtualBox is that the open source version (as included with Ubuntu, for example) doesn't have USB support. You have to get the closed-source version directly from Oracle for that.

      That had me seriously, as the one and only reason I'm using VirtualBox is because I need Windows for my e-banking, which uses a USB encryption device which only has Windows drivers... For the rest, indeed it just works. And that's exactly what I need.

  • Beginner? (Score:4, Informative)

    by jythie (914043) on Friday November 09, 2012 @07:34PM (#41937319)
    VMWare is probably the best beginner VM package due to its documentation, support, and polish. But as others have said, they are all pretty good.
  • by bsharitt (580506) <> on Friday November 09, 2012 @07:34PM (#41937329) Homepage Journal

    Since you may be going cross platform at the host, either VMware or VirtualBox are good options. I've personally been using VirtualBox for a while and find it quite easy to use and being free is a nice perk too. Though I understand VMware Player(the free version of VMware) has grown in a a decent general purpose VM solution for simple desktop virtualization like it sounds like you'll be doing.

  • by certain death (947081) on Friday November 09, 2012 @07:35PM (#41937331)
    I use OpenVZ because it can do containers as well as KVM. It keeps you from having to have different hypervisors for each. It also is fairly easy to setup and has a nice web interface for managing your virtual machines.
    • He's using a Windows host machine. Also plans to use multiple Windows Guest VM's... OpenVZ doesn't work for either situation.

      KVM is as bare metal you can get, but setup isn't always easy and requires a Linux Host. KVM is my personal preference but VirtualBox is probably best for his use case. VMware Workstation is great too but not free (last I checked - may have changed).

    • OpenVZ is just a glorified chroot. It doesn't have a hypervisor.

      We had one of these at my old work, running webservers for developers.

      I discovered one day that some Debian scripts use killall to terminate their processes, can't recall if it was during uninstall or '/etc/init.d/script shutdown' but anyhow, what I found was that the process id's for all the processes running on the 'guests' are accessible on the host. I had to restart this process on all of the guests.

      You can kill running processes in guests

  • Virtualbox (Score:2, Informative)

    by Anonymous Coward

    To start, virtualbox.
    Its free, supports linux and windows and freebsd. (And Solaris!! Oh boy!!!) It's also easy to use and works well. For desktop use I'd choose it over whatever desktop product vmware is selling, even if I got it for free.

    Microsoft has a free desktop visualization product too but it's documentation is sparse, and it has wierd limitations. It also pretty much only runs windows.

    Vmware ESX is a damn nice piece of software, but it required dedicated hardware (hypervisor only! Local console is

  • by PraiseBob (1923958) on Friday November 09, 2012 @07:41PM (#41937397)
    VirtualBox is the easiest free option to get started.
    It can run inside a host OS, so you don't need a bare metal install, and don't need a web interface to use it.
    It has easy to install and operate clients in Windows and Linux (can't speak for Mac).
    It can build VM's easily. (VMWare free options cannot create VM's)

    If you are willing to spend a little money, the VMWare Workstation is more powerful and offers similar features to those above, but better resource management in general.
  • Hyper-v in Windows 8 (Score:5, Informative)

    by sofakingon (610999) * on Friday November 09, 2012 @07:43PM (#41937427)
    I've been working with VMware since ESX 3.5. It's still my virtualization platform of choice, but on my desktop, I now run Hyper-v. It's included as a role in Windows 8, and is painless to install and configure.
  • by X3J11 (791922) on Friday November 09, 2012 @07:50PM (#41937493) Journal

    I too recommend VirtualBox. I use it on my desktop Win 7 machine as well as my four year old notebook running Linux Mint. The fact that it's more-or-less free, and essentially identical on both platforms is a definite advantage. Thus far I've used it to play with various LInux distributions and FreeDOS/MS-DOS. I've even been messing with Windows 98 SE and OS/2 Warp lately, although they required a bit of head scratching to get running.

  • by Dan East (318230) on Friday November 09, 2012 @07:55PM (#41937531) Homepage Journal

    This negative comment was necessary to counterbalance the huge number of positive comments that are recommending VirtualBox. It's a yin-yang thing.

    • by jittles (1613415)
      Seriously. Where are all the Microsoft Virtual PC fans? There has to be at least one out there.
      • by vlueboy (1799360)

        I used to be one in '98 back when it was a way to let your Mac emulate Windows world under MacOS 8.

        Its maker, Connectix never implemented USB support. MS didn't much care either after buying and rebranding it, several versions later.

        Once we realized that VM's are the easy way to test multiple distros in a short time*, thanks to the KDE / Ubuntu GUI crazy-fest, VirtualBox provided the desired USB support.

        I tried installing VPC2007 (or 2008?) recently and had trouble on my Windows 7 setup, and google searches

    • The D3D support in Virtualbox asplode every time I use it. It usually works in vmware.

      Given a total lack of criteria, I will assume that they may want windows support, and so I'll suggest vmware every time.

      If you only want to run Linux, virtualbox is probably fine.

      If you choose vmware player, you should also install qemu so you can get access to its virtual disk management command. vmware player is missing such a tool (it is present in server) and qemu's is superior in any case.

  • Virtualbox was my first hands-on experience with virtual machines. Easy to use and free. VMWare Workstation is really nice but pricey for home use. VMWare Player has worked in spots where Virtualbox has not. It was just one issue but it cost me a lot of wasted time. Once you are comfortable with products like virtualbox or VMware workstation/player the next step would be something like Xen or ESX.
  • Virtual machines are just a "computer within a computer", there's nothing about virtual machines per se that you won't really know from using modern computers. You will need to know specifics on software packages and tools for those packages, but those are very specific to the brand of virtualizing that you're doing.

    Learning "virtual machines" is kind of meaningless in and of itself, and unless you have a pressing need to become an expert in a specific package, don't tie yourself to anything specific. If
  • by bemymonkey (1244086) on Friday November 09, 2012 @08:06PM (#41937633)

    ... self-explanatory really. Just try 'em out. I'd recommend VMWare for Windows clients because the integration feels a bit more polished, but you can't really go wrong with either one.

  • Then decide.

  • by sootman (158191) on Friday November 09, 2012 @08:14PM (#41937719) Homepage Journal

    ... if the option is even halfway decent. In this case, start with Virtual Box. It runs, and runs inside, all major platforms. If you have a Linux ISO or Windows CD you can go from zero to a working VM in about 30 minutes. There's nearly no learning curve to get your first VM up and running, and IF it doesn't fit your needs, you can start looking to see if it has options that you aren't aware of, followed by looking at alternatives.

    That said, VirtualBox has fit my needs (mainly testing) just fine for years. VM software is like word processors: they're all pretty comparable and 90% of people's needs can be met by any one of them.

  • For software test scenarios, I find VMware Workstation has just about everything you'd ever want. Its snapshotting feature is especially impressive, if you're diligent about it. Example: You install Windows, clean from the disc, that's a snapshot. Then you run Windows Update a zillion times to get everything up to date, that's a snapshot. Then say it asks you if you want to upgrade from Internet Explorer 7 to Internet Explorer 8. You do; that's a snapshot. Now you can flip back and forth between the two sta

  • It used to be hard (Score:4, Informative)

    by dbIII (701233) on Friday November 09, 2012 @08:28PM (#41937923)
    Now it isn't.
    All of the above work well and stuff like virtualbox is a free download away.
    In some cases I've migrated live systems to virtual with nothing more than clonezilla and virtualbox on what must have been close to the default settings.
  • by caseih (160668) on Friday November 09, 2012 @08:41PM (#41938075)

    If you want to do virtualization of servers (most likely headless), then KVM is going to work great. The VMs on these machines you'll likely work with remotely. There are desktop clients for KVM or Xen, such as virt-manager or gnome-boxes, but I find video drivers, particularly in Windows are slow and lack OpenGL or DirectX support. virt-manager is nice for managing a cluster of KVM or Xen machines. You can use one instance of virt-manager to connect to any number of hosts and manage them or view their consoles.

    I have a local server for the house that runs KVM virtual machines. I've got several Linux vms for trying out things, and I have a Windows XP instance that I access using rdesktop over the network. I also have two xen-based virtual machines hosted by Linode in data centers.

    Gnome Boxes is an attempt to make creating local KVM virtual machines as easy as VirtualBox or VMWare, if you do want to us KVM for desktop virtualization.

    For local desktop virtualization, VirtualBox or VMware are still your main options (Parallels being a non-free option). You'll probably want to just start there. Desktop virtualization can do things like integrate a windows desktop in a VM with your linux desktop so you can go between windows and linux windows (never as slick as you think it's going to be, but it works).

  • by Burning1 (204959) on Friday November 09, 2012 @09:35PM (#41938575) Homepage

    Virtualization is pretty easy in practice. Understanding the theory behind virtualization is what tends to separate the men from the boys. Management of larger virtualization infrastructures, storage, etc... Also tend to be pain points.

    I've personally worked with KVM, Xen, and various VMWare products. My usually recommendation is to start with the free version of ESXi available for download from VMWare's website. Although ESXi alone lacks a few core features (you need Vsphere for live migrations, right-click cloning, DRS and a bunch of other things) it does introduce a lot of the core concepts in ways that are fairly easy to wrap your head around.

    Understanding how to do the following things are a good start:
    - Use over-commitment to make better use of available resources.
    - Set reservations, resource pools, and shares to keep critical systems humming along when someone in the engineering department decides to write a fork bomb on a dev machine.
    - Live re-size disks.
    - Manage virtual switches & virtual networking.
    - Optimize virtual guests to run under a hypervisor
    - Learn about ballooning, swapping, page sharing, etc.
    - Learn how to monitor VMs, and debug disk/network/cpu/memory issues using command-line utilities, such as esxtop.

    In general, ESXi is a great way to setup a virtual lab. I usually create a pair of virtual switches; one attached to my ethernet interface, one strictly external, and I route between them using a dual homed firewall distro, such as ZeroShell. This is a great environment for playing with DHCP, and other stuff that could break your home network.

    For what it's worth, being a good Virtualization admin usually also means being a good storage admin. If you can get your hands on the netapp simulator, it's absolutely worth playing with.

    Finally, knowing how to mess with ESXi does not make you a good Virtualization Admin. Read some books. Mastering Vsphere 5 by Scott Lowe is a good start. It covers everything you need to know about VMWare, and hits on storage and networking as well.

    Finally, while ESXi is a great tool for corporate use and to learn virtualization theory, I strongly recommend gaining some experience with KVM. If you know what you're doing, KVM is much more powerful than the stand alone ESXi product. It's great for small businesses, or business that are banking on open source infrastructure, since it isn't artifically neutered the way standalone ESXi is, and doesn't have major licensing costs (unless you insist on RedHat Enterprise Virtualization.) If you need something with enterprise management capabilities and don't mind deploying bleeding edge code, the upstream project for RHEV is available on Fedora. Checkout the oVirt project - they are doing some very cool stuff.

  • by mattack2 (1165421) on Friday November 09, 2012 @10:42PM (#41939141) [] []

    OH, you didn't mean THOSE kinds of virtual machines..

  • by Thumper_SVX (239525) on Saturday November 10, 2012 @01:58PM (#41943597) Homepage
    I've used a fair smattering of virtual hosts and hypervisors both at work and personally. So here's what I think of them all (the free ones, anyway);

    VMware: Probably one of the easiest to get set up and master. Dead simple point-and-click interface. Learning this is good if you want a career in virtualization because it is the yardstick by which all others are judged. There are a lot of features though that are disabled in the free version that are used in corporate environments... but you'll have the basics down.

    Hyper-V: Also very simple to use and manage... but unlike VMware means you can run it as a side-piece on your existing Windows box rather than having a dedicated piece of hardware just for virtualization. Already built into most modern Windows variants, and used somewhat regularly in corporate environments. Again, paid adds features and support.

    Citrix XenServer: Takes the basics of the open source Xen and adds a pretty damned nice GUI. Paid version adds support, but most of the major features are available and functional in the freebie. Trial versions of everything are available. Memory management out of the box is a bit of a pain (no overcommitment by default) but easy enough to modify. Use in corporate environments tends to follow people who have significant Citrix/XenDesktop infrastructure.

    Xen (Open Source): By far the best to learn EVERYTHING about how virtualization actually works, but probably the worst for actually getting running VM's. There are GUI tools to simplify it, but since Xen is currently moving to a new toolset that is incompatible with most GUI interfaces, and the GUIs tend to be a smidge buggy on occasion it's usually easier just to learn the command line. Of course, then there are config files, XML files, bridged network interfaces. If you want to learn about the internals this is the way to go... but if you're only going to dedicate a day to trying each one then you might want to skip it... this one will take a couple of days at least even with the several well-written HOWTO's. Having said that, once everything is working it's really nice and you can turn around and say that you know how virtualization works, instead of just saying you know how a single product works!

    VirtualBox: Like VMware is good for the beginner to learn the basics because it does have a nice GUI that guides you through everything. Update notifications are a constant irritant though; it seems that every week they're releasing an update for this bug or another... I turn that off and upgrade when I feel like it! However, use in corporate environments is almost non-existent. Good support for most OS's, and decent support for 3D graphics and the like but still pretty kludgy. I use it on my Mac for running my BootCamp partition while under OSX... mostly so I can access stuff on that installation and run updates and the like without having to reboot OSX.

    I broke out the two main versions of Xen because they are significantly different. They are similar at the core (based on the same code) but Citrix has it own front-end tools that are incompatible with the tools you'll use under open source. However, the commands are the same and so learning open source Xen will have some bearing on using Citrix Xen.

    Of course, there are plenty of other hypervisors out there. My personal recommendation if you just want to play would probably be Hyper-V or VirtualBox. VirtualBox has the advantage of being cross-platform; I don't know if you run Linux or Windows (or OSX) at home, and obviously Hyper-V is Windows only. If you really want to learn virtualization and how it works, then open source Xen is the way to go... I run it on my Ubuntu 12.04LTS box and love it... but it's not for the faint of heart! Setting up the networking alone can be "fun" and you should definitely familiarize yourself intimately with how to undo what you have done so you don't break anything! VMware like I said is used extensively in corporate environments... so if you want to pursue it as a career I'd recommend dedicating a box to an ESXi server and just play with it. It's free and easy... but really doesn't teach much in my opinion.

There are worse things in life than death. Have you ever spent an evening with an insurance salesman? -- Woody Allen