We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Wine - the free Windows Emulator

00:00

Formal Metadata

Title
Wine - the free Windows Emulator
Alternative Title
openSUSE Wine
Title of Series
Number of Parts
70
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
FOSDEM (Free and Open Source Development European Meeting) is a European event centered around Free and Open Source software development. It is aimed at developers and all interested in the Free and Open Source news in the world. Its goals are to enable developers to meet and to promote the awareness and use of free and open source software.
17
Thumbnail
56:35
18
Thumbnail
15:55
35
Thumbnail
15:35
60
69
EmulatorSoftwareKernel (computing)Core dumpInterprozesskommunikationGoodness of fitClosed setWindowCartesian coordinate systemFreewareLibrary (computing)Shared memoryMultiplication signWeb pageChromosomal crossoverParallel portGraph coloringInstance (computer science)CodePhysical systemProduct (business)2 (number)MereologySoftware developerLevel (video gaming)Web 2.0Point (geometry)Kernel (computing)Human migrationBit rateComputer programInformation securityDigital rights managementBitCurveComplete metric spaceEmulatorStability theoryMicrosoft foundation classesKeyboard shortcutComputer iconLatent heatEmailAbstractionMenu (computing)VirtualizationINTEGRALSoftware testingSoftwareCore dumpGame theoryAlpha (investment)Set (mathematics)Interface (computing)SharewareQuicksortGame controllerRegular graphBeta functionStrategy gameOffice suiteWeb serviceBranch (computer science)Bounded variationService (economics)Electronic mailing listState of matterPublic key certificateFile formatTheory of relativityDemosceneAddress spaceSemantics (computer science)Bus (computing)Slide ruleThermal conductivityOperating systemRandomizationArithmetic meanSpline (mathematics)Right angleSocial classPlanningView (database)Endliche ModelltheoriePurchasingCellular automatonComputerComputer animationLecture/Conference
SoftwareKeilförmige AnordnungHaar measureUltraviolet photoelectron spectroscopyMean free pathFrame problemThread (computing)WindowMultimediaMixed realityComputer fileDigital rights managementSoftwareInstallation artSynchronizationCryptographyHookingLevel (video gaming)Semiconductor memoryOpen sourceMappingDescriptive statisticsSharewareComputerBelegleserCartesian coordinate systemSoftware frameworkBounded variationMereologyCoroutineComplex (psychology)Computer fontState of matterImplementationSurfaceDifferent (Kate Ryan album)Wave packetEndliche ModelltheorieComputer programLine (geometry)Task (computing)Software developerLibrary (computing)Game theoryArtistic renderingInterface (computing)Asynchronous Transfer ModeDigital photographyClient (computing)Visualization (computer graphics)CodeMultiplication signForm (programming)Primitive (album)Revision controlExtension (kinesiology)Sign (mathematics)Component-based software engineeringPoint (geometry)Directory serviceWordConfiguration spaceProcess (computing)Theory of relativityINTEGRALRun time (program lifecycle phase)Letterpress printingEmulatorStandard deviationPressureOverhead (computing)CuboidWindows RegistryVideo gameInstance (computer science)Functional (mathematics)System callHypermediaDatabaseSelectivity (electronic)VortexSet (mathematics)MetastabilitätDistribution (mathematics)Physical systemWindowOrder (biology)Expert systemPixelGeneric programmingMessage passingDevice driverRight angleOcean currentBinary codeService (economics)Repository (publishing)Server (computing)VideoconferencingZoom lensVirtualizationCoprocessorParameter (computer programming)BitThread (computing)FreewareBuildingFile Transfer ProtocolControl flow graphFunction (mathematics)Lecture/Conference
InterprozesskommunikationCartesian coordinate systemPlanningCryptographyData storage devicePoint (geometry)Multiplication signRevision controlComputer programOcean currentSpacetimeWindowLevel (video gaming)Range (statistics)Near-ringLecture/Conference
Menu (computing)Hidden Markov modelSoftwareInformation technology consultingMetropolitan area networkQuicksortNumberLecture/Conference
SoftwareGraphical user interfaceSolid geometryCartesian coordinate systemForm (programming)DebuggerImplementationModule (mathematics)Digital photographyOcean currentNumberSoftware bugMereologyWindowLecture/Conference
WindowCartesian coordinate systemDirection (geometry)Game theoryMappingVapor barrierStaff (military)Instance (computer science)Forcing (mathematics)GeometryFreezingDivisorSelf-organizationComputerPredictabilityLine (geometry)MultimediaForm (programming)Game controllerEvent horizonGodJoystickExtension (kinesiology)SpacetimeExergieObject (grammar)Graph coloringMultiplication signoutputRevision controlInterface (computing)Software testingExterior algebraDevice driverComputer hardwareDebuggerLevel (video gaming)Software frameworkPhysical systemBitMiniDiscLecture/Conference
Game theorySlide ruleRule of inferenceLecture/Conference
Moment (mathematics)Group actionSharewareInstallation artMultiplication signMight and MagicComputer iconFreewareLecture/Conference
VideoconferencingGame theoryLibrary (computing)Extension (kinesiology)Computer animationLecture/Conference
SummierbarkeitSpeech synthesisGame theoryCellular automatonLibrary (computing)Graphics processing unitSoftwarePlastikkarteService (economics)BitDisk read-and-write headInterface (computing)Subject indexingServer (computing)Video gameLevel (video gaming)Interactive televisionPulse (signal processing)Computer animationLecture/Conference
TouchscreenGame theoryObject (grammar)Sound effectComputerComputer animationLecture/Conference
DistanceOnline gameDatabaseWebsiteElectronic mailing listCartesian coordinate systemGame theoryLecture/Conference
User interfaceEndliche ModelltheorieDatabaseBinary codeMultiplication signComputer programINTEGRALRun time (program lifecycle phase)FreewareWeightEmailExtension (kinesiology)File formatBitMixed realityComputer configurationPrice indexElectronic mailing listCartesian coordinate systemPhysical systemLine (geometry)WebsiteOperating systemCodeWindowInformationInternet forumRegular graphLecture/Conference
Cartesian coordinate systemMultiplication signInstallation artScripting languageDatabaseRun time (program lifecycle phase)Library (computing)CodeConnected spaceFile viewerPoint (geometry)Gastropod shellComputer programFloppy diskFile systemWebcamLattice (order)WeightMiniDiscDirectory serviceLevel (video gaming)Online helpWindowServer (computing).NET FrameworkRight angleInterface (computing)Function (mathematics)Type theorySoftware developerArithmetic progressionStructural loadDirection (geometry)HypermediaTraffic reportingSpeech synthesisVacuumMassVideo gameShared memoryQuicksortInformation securityAlgebraDistanceMetropolitan area networkWordAddress spaceBitGoodness of fitLecture/Conference
Transcript: English(auto-generated)
Good morning. Sorry for starting late, the last talk was cut quite close. My name is Markus Meissner, I'm an OpenSUSE member and I'm a Novell employee and standing here
in front of you to talk about a bit about the free Windows emulator or the not emulator Wine. Just some words about me. I'm working for SUSE since 2002. I'm not working on wine for SUSE, I'm working on the topic of security, but security in itself is boring and you can't
show pretty pictures. So I'm showing what I do in my spare time. So in my spare time for now above like 14 years or so, I'm working on a wine and I'm going to tell you a bit
about it and also hopefully show some demos at the end. So the first question that people ask or that I ask myself is why would you want a Windows emulator on Linux? Every one of you knows that we have a full set of applications already like the Office Suite
is there, tools are there, games even are there, some not much, but there are a lot of tools already on Linux and you usually don't need Windows programs. So there is however some software not really ported because the companies don't have the strategy to port
them. That's foremost true for Microsoft themselves, that's true for people like Apple who acknowledge that Microsoft exists because it has 95% market share and of course the Mac OS stuff and Linux, yeah we've heard about it but there are no users that we are interested
in. Second part is budget. That's mostly true for the game companies who want to pitch out games, games, games, games and if they work on Windows they don't really have time to spend on doing a Linux port or so because all the pro gamers have Windows at these times and those Linux users they are not really important or they just don't
care or Linux too small, come back if it's 50% market share or so. And we address all those, or we try to address all those people that don't want to port their Windows
applications so in that way that you can run their applications on Linux. Second question is why not just use a virtualized PC? Why not just use VMware or whatever is currently called Parallels or whatever? Most obvious pro is that there is no Windows
license necessary for using Wine. Of course at the same time a contra point is that the completeness of Wine since it's developed continuously and we don't have access to any Microsoft internal documentation. It's of course not complete yet so not much might
run and not fully built. A pro point is that it's integrated well into your system while a virtual PC emulation is mostly in a fixed window and you can't move easily data
out and copy and paste or so. It's possible with Wine. Desktop integration like icons like shortcuts or menu entries and so on for specific Windows applications. Fun of course. Of course you know I will show that we have been working on this for 16 years
now and we're not really doing small things but doing quite an amount of coding and it's huge. Of course replicating the Windows operating system or the ability to run Windows applications is a huge effort. Microsoft continues to add features to improve on their APIs and so
we are of course always continuing to catch up. We might never catch up but the interesting thing here is that Microsoft also has the compatibility problem. If an application runs on XP then of course this application has to run also on Vista and if people build
this application they ship it and it doesn't run on XP anymore. It needs Vista so of course the customers also want a bit of backwards compatibility. At this time the catch up curve
is not so high anymore as it was when Microsoft started with 32-bit Windows. Now with 64-bit Windows we are seeing a slower migration rate of the programs and customers so there isn't so much steep curve for this. Of course we have not everything implemented yet as I mentioned
the completeness part. So to give some overview, nearly 16 years old, out of a random idea on a Linux kernel mailing list, why not just run 16-bit Windows programs on Linux
too and now we are here. We had the first stable release last June, no one expected that we finally would do it but well we just took a certain set of criteria and said yeah now it's ready for the users to test and to run. In the meantime before that we had
over 200 alpha releases, 61 beta releases, so we had 2 years of beta phase, 5 RCs and on June 17 it was released finally. We have not of course not stopped working on it. Development is proving, is going as fast as before, even faster. I think we are
working on a 1.1 branch which will in the end go to a 1.2 stable release. We will talk about some criteria for this later on. Over time there were over a thousand
offers that we could identify. It sounds much but in reality what we see is that at any given time there are like 20 to 30 people working, sending patches, people drop off, new people come, people just send one or two patches but overall there are a thousand and seventy contributors. It's picked up by various companies, there is the company
called CodeWeavers whose business is really improving wine, selling wine via their crossovers products and they actually employ a large part of the wine developers
including our chief developer. There is Google interestingly enough because well Google does web services and web pages or web things. It usually doesn't do any Microsoft programs. So in Google's intent in there is to make Linux a better desktop
system and for making it a better desktop system some desktop applications are necessary like Photoshop, like iTunes and even their own Picasa applications. So they do have Windows applications and Picasa for instance was ported using wine. So now for the
color pictures. How does it work? How does it look like in an overview design view? On the left we have the Windows basic application layout. We have the application itself that ships with DLLs. We have the user level system which has low level libraries
that do file access, graphics, window management and dialogues and some abstraction libraries already like Microsoft foundation glasses and application interfaces with those DLLs. I omitted hundreds of them but that's sort of basic concept. Below those low level libraries
is the Windows kernel. These days it's an NT kernel and but we usually we don't care about this interface. So what and what place does wine integrate? So the application and its DLLs they're the same.
Some of the core Windows libraries like the Microsoft foundation classes we did not replicate because of their closeness and undocumentedness but they are usually freely redistributable especially for MFC but we placed all the low level system libraries.
We are not directly interfacing with the Linux kernel at this time of course but with the regular system libraries like X, Lipsy, CUPS libraries, the other control libraries and so on.
So how is there anything special in interfacing between those? So these directly call into these libraries and the question is of course if we
need to specially convert something here like which would explain large overheads but no. Due to special calling conventions implemented in GCC again if the application DLL or application is loaded it can directly call into the wine libraries. Also as I said it's not an emulator
the application and the binary code itself runs of course directly on the processor. It's not emulated in any way it just runs and we basically hook up the function calls into those level libraries and direct them to our wine implementation of it.
This gives for computing at least it's as fast as in Windows and for the other implementations of the libraries it very much depends on how we map this to the Linux side.
So how to install it? For the user it's easy, get the wine RPM, install it. For open source it's only usually distribution but of course it gets outdated quite fast so we I have in the open source build service in the emulator's wine repository always the updated
packages of the current development state and that's it. There should be a C. What about configuration? Usually configuration we try to avoid so we try to find very good basic
settings so that you usually don't need to even start this our config tool but we have the config tool it's called winecfg and here's the main thing where you can it's a bit small
drive letters to which Unix path they point. Of course we cannot remove the drive letter concept from the Windows application so we have to map them and we have some standard mappings we have a virtual C drive which is in the home directory under .wine. I think this exists
my own entry but we have the home directory and a drive also pointing to the slash directory of the system. There's an audio tab where you can switch between ASA and OSS. There's a
desktop integration where you can select virtual desktops or something but it's not necessary to to run standard Windows applications. Yeah installing Windows software is as easy as for the user as running the setup Excel program
These days so you pop in the cd or download the excel file from the internet and run it. So what goes on behind the doors? So the installation itself was really the largest part that we had to do. Most importantly most applications these today either you used in-store
shield or a mix between the Microsoft installer and install shield and the install shield itself is a very complex application. It's interesting that the installer is always more complex than the actually stuff it installs but it's just one little funny thing. Why is it so complex?
Because it's completely scriptable, automatable, you can install updates with it and and so on. So alone these complex installation tasks made it necessary for them to have this large kind of install programs. I had thought
about it and I think we used about too many years of developer time to implement or to get it to a running state. MSI, this is the standard Microsoft installer stuff. This is basically the package management of Windows down from the low level points from
the low level databases up to really putting up dialogues and asking user questions including a fully scriptable interfaces and including also hooking into other programs like install shield.
Again, around too many years spent on this and I checked the DLA directory it's like 50,000 lines of code. Was quite an effort. The good thing is that now we are at this state that it's running the improvements that Microsoft does we can easily follow. So some words about integration
drives as I said point to Linux paths, either configurable by wine CFG or by by zoom linking them in a specific directory, so nothing magic. Registry, VMAP
internally to text files. Win32 has processes of course which VMAP directly to Linux processes. So if you run PS for instance you see the .exe even running on your system with a nifty rename trick it's not with wine foo.exe but just foo.exe.
So you see the .exe files running there. Threads directly to Linux threads. Printing, we have a generic postscript driver written which uses CUPS and LPR to get
PPD the printer description files and then output a postscript to just the Unix print system. Networking, fortunately Microsoft had the BSD networking as example and you mostly did it following that their methodology so it was pretty easy to implement.
Train for scanners and cameras VMAP to the Linux library sane and gphoto. In the last years the XML libraries became more important which we mapped to XML2 and libxslt. A lot of work is of course done for graphics which we mapped to the x11 server
so there's no visual frame buffer or something but we directly mapped to x parameters especially fonts. We use font-config 3.2 and x render extension of the x server to render
the fonts correctly. We need to be quite low level on this because lots of applications can query all the interesting font layouts and font rendering data. So we need to be at this low level of rendering them mostly ourselves.
Window management maps to also the rational methods like x11 and window management. So what did we implement? What didn't really map the synchronization between process and threads that's a different model like in Unix so there was quite some effort doing this
and that's the only part where we need an external program helping us the so-called wine server. Window management there's a lot of things that windows get windows and messages and so on get all in the right order. Cryptography we hook into crypto libraries but some parts are implemented
separately. Direct show that's automotive media framework. Direct3d I will talk about this later with maps to OpenGL and HTTP, FTP and SMTP clients.
What is missing? HTML rendering also used in the last years quite often by games or other tools. There we embed the Mozilla engine and not Linux Mozilla engine but Windows Mozilla port engine and we are for other components we use free downloads,
redistributable downloads like for the MFC, for two library, visual basic runtimes, video codecs, the fonts, diet x runtime. One word for the diet x runtime is
the diet x is a huge library set. I will explain a bit later but there are some helper libraries which we have not cloned yet so this is for this and if you have a windows license you can download and use windows media player 9 and 10. So applications
some interesting applications I will just go through some examples and mention the problems that they have. Next. iTunes. Apple iTunes. Apple with its company policies of course mostly focused on macOS and since the windows desktop space is so large of course also on windows
but no Linux port because we are too small and yeah so it's except that it's a windows application. What are our problems? The iPod access which needs to be low level support
which we have not yet done but it's on near range plan. The iTunes store which is of course cryptographically signed and ensure that everything is working fine and that no one can cheat it or something so there was quite an amount of cryptography to be implemented to get
the iTunes store run but it works at this time. And of course the interesting thing is that most applications have the ability to do online updates of themselves so you have it running at one point in time and then the application says I need to install this new version so more features and it's required to the store to continue to work and yeah suddenly you have a new
program and it might not just run with wine. Currently iTunes however runs with wine. So and this is where I just show that we do run iTunes. I hope that I find the entry in the menu.
Hmm. It's not in there. Somehow not in the menu.
Okay occasionally it does not put itself into the menu but oh I have not installed it. I might not have installed it previously. Yeah that was an Apple software update but I think not not iTunes. Yeah okay I try to find it at the end. There's Photoshop.
The one I tested is CS2 meanwhile there's CS3 and CS4 which I think might not yet fully run. Also just for Mac and Linux number of Linux users too small. Interesting here that the UI is very non-standard so we had to make sure that our implementation of the UI parts is the same as
what Windows does. Copy protection also a large topic. This also requires very bug for bug compatibility to make sure that the application thinks it's not running on a debugger or other problems. And lots of external separately buyable or purchasable
downloadable modules with unknown wine compatibility. I have just a screenshot these days today. So more interesting of course are games because for us that are not using Windows applications on
desktop. Most games are based on the DirectX API. Direct sound is the sound layer, maps directly to ALSA and OSS. Direct input maps to keyboard and mouse to x11 and joysticks to the HID support on Linux. Direct show multimedia play framework is implemented in wine directly. The graphic things
map always to OpenGL. Direct draw is a 2D interface maps to OpenGL and the direct 3D interface also maps to OpenGL with GL extensions. It's pretty complete so we can claim that most
DirectX 9 applications or using applications work and work pretty well. Direct extend support has just been started so direct extend using games are not yet supported. Copy protection I
mentioned especially for games it's very difficult because nearly all games have copy protections. Tests for debugger it's easy to do but then they use Windows kernel drivers which we fortunately can run because most of these Windows kernel drivers don't do hardware stuff
but do stuff that we can also run in user space and so we actually went and implemented the Windows kernel driver support in wine but it's only mentioned currently for those copy protections so it cannot do hardware access or anything but it's basically for things like
safe disk or a game guard. Unfortunately some copy protections are even when more system level than others and so for instance Starforce is not at this time running. Of course alternatives are cracked versions but we try to avoid cracked recommending cracked
versions because we just want to run the Windows application as it comes and not hand out cracking tips. Yeah so World of Warcraft it's a bit dark here but
one of the top one or top two game the top one game and Guild Wars I think they're sharing the top two places. Isra are running Underwine we have a very vocal community with those especially if we break something with a new release day just five minutes later they will show up in
our channels and complain that it's slower or broken or not working but as I don't see those complaints anymore that often I think we keep it pretty stable for them so it's nice.
There's also Silk Road online which I don't know we have a screenshot but yeah so and now I try a demo and I hope this time it works better. So this is Heroes of Might and Magic 3.
The installer actually put the icon there so yeah okay movies playing is always easy.
Yeah again this is just a movie so I try to start up the game and show some 3D running so it worked as a single second name. Yeah okay the loading bar is progressing so again yeah videos
are easy the 3D is mapped to the OpenGL libraries and this and with GLX extension that
has the only small drawback that for playing games you really need Nvidia or ATI cards. So on my small ThinkPad with Intel graphics card I have no chance to play those games because they will complain about missing features and not work. You need an Nvidia card
and or an ATI card to use wine for games or for this kind of 3D games. You heard the sound, sound is not that much of a problem but we interface with the low level
sound libraries. There have been requests to use pulse audio which is a sound server with also can do network stuff. It's always a bit difficult to use sound servers and interact with sound servers because they at yeah because those sound servers yeah it shows that there are
okay one one sees two objectives one can look forward look to right so and basically
yeah I tried playing it it's but I'm not that much of a computer player so so the screen effect I'm not sure if it's if it's correct or if it's if it's not if it's an artifact of of a buck and wine
yeah I've not taken it yet so okay I think that's enough for just showing this there the colleague of mine actually comes
occasionally he's playing games every day and every week and he usually tries out every new online game that comes and so usually shows up at my desk and says Marcos this game isn't running
please check well yeah I'm not always able to help him so if you want to check what actually
runs we have an application database on our website the list is from December I did not update it but I think the first the first entries likely will be the same yeah one one one at all I am already set that's now ready for users to test and that we are developing currently
even the next for the next stable release what we target is better.net integration I did not mention it but most or lots of programs these days are a mix of binary and
.net code in Windows and we are not yet able to run those mixed binaries very well there's the option of either loading the C sharp runtime from Microsoft or the mono runtime we will see exactly how this all works out 64-bit support more and more 64-bit applications are
showing up the operating systems are 64-bit capable so that we will likely see more we have started on this I think it can run all these simple programs and yeah but X10 I hope that we get to something before next the format of this year or so
with b-device integrations and of course that all new applications run more information on our website including mailing lists downloads documentation and so on and on the channel wine HQ at free notice our regular support forum so now I'll just take some questions
a microphone I don't see it
I'll just ask okay the question was is this the floppy drive support if you mount a floppy to a directory locally on a disk and point the drive to it then you can just run stuff on the floppy so basically wine takes whatever the Unix file system sees so
if you mount the floppy then of course we'll be seeing accessing the floppy drive directly on a low level way I'm not sure I'm just trying another question yes
applications okay how is the situation about dotnet support especially with pure applications right okay yeah for the pure applications I gladly refer to the mono folks they have
done quite a massive amount and we are not we are not very much involved in them so not at this time yeah so our idea is to either load the mono runtime the win32
mono runtime and just use it like any other win32 program in wine or the C sharp runtime I'm not so knowledgeable about this unfortunately but we are working on it so yeah other questions I think behind Tom okay about applications like live meeting or net meeting
I don't know right now but I see no reason that they are not running so it's it's an application
it's interfaces with a web camera the network and so it should should work if it's separately downloadable from windows then yeah I think it should work here okay next question application is uh outlook last week I tried to install output with wine okay but I could start
it up but I could not connect to the server um is there going to be improvement in wine for this or do you say now this is something you have to go to code view and solve it for you
okay so integrating outlook with an outlook server um yeah code weavers you mentioned is working on it and I've I've heard that they are done quite some progress in that direction and code viewers itself always publishes the finished stuff back to wine so they are
working very closely with the wine development so if they do improvements for outlook outlook connection issues then it will also show up in a regular wine at some point in time I've I actually thought they had it already done but I'm not not sure if it's all ready for use at this time yes
I usually find a lot of help in the application database you just mentioned because there is you can just type the application you want to test and sometimes there are good reports like well you need that extra command line option to wine to tweak some things and then it will work a lot better so this application database is really useful so yes the application database
is the one start point if the application just doesn't run for you so you just look there see some tips and yeah so yes of course we have I told you about downloading some stuff
and our our wine package and others include a very small shell script called wine tricks which you just start I can briefly show it so let's hope I have KDA log so if you start
wine tricks it will offer some of the downloadable things most interesting I said the library that is occasionally missing there are some other things where it would will replace stuff like the visual basic runtime also that I mentioned and this one also
installed in an explorer 6 or it's an easy installer for firefox or windows media player so it's a very small shell script to install common libraries or applications
so with this I thank you thank you for coming and if you have more questions I'll be available either outside or on the booth just right afterwards thank you