 good morning sorry for starting late the last talk was cut quite close yeah my name is Marcus Meisner I'm an open zoos member and I'm a novel employee and standing here in front of you to talk about a bit about the free windows emulator or they're not emulator with wine just some words about me I'm working for Susie since 2002 I'm not working on wine for Susie 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 about like 14 years or so I'm working on a wine and yeah so I'm going to tell you a bit about it and also we'll hopefully show some demos at the end so the first question that people ask or that I asked myself is why would you want the windows emulator on Linux every one of you knows that we have a full set of applications already like the office read is there tools are there games even out there some not much but there are also a lot of tools already on Linux and usually 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 like people like Apple who acknowledge that the Microsoft exists because it has 95% market share and of course there are macOS 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 push 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 programmers have windows at these times and those Linux users are down 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 the address all those or we try to address all those people that don't want to port a windows applications so in that way that you can run their applications on Linux second question is why not you just use a virtualized per se why not just use the mvr or however whatever it's currently called parallels or whatever most obvious pro is that there's 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 it's 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 so fully build a pro point is that it's integrated well into your system while a virtual PC emulation is mostly one 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 ikkens 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 working on this for 16 years now and they're not not really doing small things but doing quite an amount of coding 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 with them and if people build this application they ship it and it doesn't run on XP anymore it use needs vista so of course their customers customers also want a bit of backwards compatibility so at this time the catch-up curve is not so high anymore as it was and then when Microsoft started with two nasi bit windows 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 yeah as I mentioned a completeness part so yeah so good to give some overview nearly 16 year old out of a random ID on a Linux kernel mailing list yes why not just run 16 bit windows programs on Linux 2 so and now we are here yet the first day we released last June never no one expected it 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 we are before that we had over 200 alpha releases 61 beta releases so we had two years of beta phase 5 RC's and on June 17 it was released finally we are not of course not stopped working on it development is proving is going as fast as before even faster okay I think we're working on a one-on-one branch which will in the end go to a one or two stable release I will talk about some criteria for this later on over time there are thousand over a thousand out offers that we could identify it sounds much but in reality what we see is that at any given time they are like 20 to 30 people working sending patches people drop off new people come people just sent one or two patches so but overall there are 1070 come to beauties it's picked up by various companies there's the company called code we this which basic widget 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's Google interestingly enough because well Google does web services and web pages or web things it usually doesn't do any Microsoft programs so and Google's intent in there is to make Linux a better desktop system and for making the best a better desktop system some desktop applications are necessary like Photoshop like iTunes and even their own Picasso application so they do have windows applications and Picasso 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 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 anti-colon and but we usually we don't care about this interface so what and what place does wine integrate so the application and it's 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 with reduce the beautiful but I am especially for MSC but we placed all the low-level system libraries we are not directly interfacing with the Linux corner this time of course but with the regular system libraries like xlipsy and cups libraries the other control libraries and so on yeah so how is there anything special in different 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 larger 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 a processor it's not emulated in any way it's just runs and we basically hook up the function calls into those level libraries and 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 the Linux how we map this to the linux site so how to install it for the user it's easy get the wine rpm install it for open zoos and it's on the usual distribution but of course it gets outdated quite fast so we I have in the open zoos and build service in the emulators wine repository always the updated packages of the current development state and that's it yeah there should be a seat 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 a conflict tool it's called wine cfg and here's the main thing where you can that's a bit small printed but where you can select the 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 dot wine I think this X is my 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 os s 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 in the setup exit program these days so you pop in the cd or download the exit 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 use install shield or a mix between the microsoft install and install shield and the install shield itself is a very complex application it's interesting that the installer is always more complex that the actually stuff it installs but it's just one little funny thing why is it so complex because it's completely scriptable or automatable you can up you can install updates with it and repair and and so on so alone this complex installation tasks make it necessary made it necessary for them to have this large kind of instance install programs I have thought about it and I think we used about two many years of developer time to implement or to get it to a running state MSI this is the standard Microsoft installer stuff is this basically the package management of windows down from the low level points from a low level databases up to really putting up dialogues and asking the 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 directories like 50,000 lines of code was quite an effort the intro 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 by wine CFG or by some by a sibling in some linking them in a specific directory so nothing magic registry we map internally to text files win win 32 has processes of course which we map directly to Linux processes so if you run PS for instance you see the dot exit even the running on your system with a nifty rename trick it's not with wine food point food out extra but just food out exit so you see the exit files running them threads directly matter Linux threads printing we have a generic post script driver written which uses cups and LPR to get PBD the printer description files and then output post script to just the UNIX print system networking fortunately Microsoft had the BSD networking as example and you mostly did it following that their mythology so it was pretty easy to implement train for scanners and cameras we map to the linux libraries saying and G photo in the last year's the XML libraries came more and became more important which we map to XML to and lipx as a team a lot of work is of course done for graphics which we map to the X 11 server so there is no virtual frame buffer or something but we directly map to X permatives especially fonts we use font config free type 2 and X render extension of take server to brandy the fonts correctly we need to be quite low level on this because lots of application can query all the interesting font layouts and font rendering data so we need to be at this low level of running them mostly ourselves we know management maps to also to rational methods like X 11 and window management so what did we implement what didn't really map the synchronization between process and threats that's a different model like 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 gets windows and messages and so on get all in the right order cryptography we hook into crypto libraries but some parts are implemented separately like show that's auto multimedia framework like 3d I will talk about this later with maps to open GL and HTTP FTP and STP SMTP clients what is missing HTML rendering also used in the last year's quite often by games or other tools that 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 free receipts 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 next iTunes Apple iTunes Apple with its company policies of course mostly focused on macros 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 us payload level support which we have not yet done but it's on near range plan the iTunes storm 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 to 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 it's not in a 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 there 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 out CS3 and CS4 which I think might not yet fully run also just for Mac and Linux number of Linux is too small interesting here that the UI is very non-standard so we had to make sure that our implementation of the UI ports is the same as 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 under other problems and lots of external separately viable or purchase downloadable modules with unknown wine compatibility I have just a screenshot these day today so more interesting of course our games because for us that are not using Windows applications on a desktop most games are based on a direct X API direct sound is the sound layer maps directly to alza and OSS died input maps to keyboard and mouse to X11 and joysticks to the here these support on Linux die show multimedia play framework is implemented in wine directly the graphic things map always to open GL die draw as a 2D interface maps to open GL and the died 3D 3D interface also maps to open GL with GL X extensions it's pretty complete so we can claim that most died X 9 applications or using applications work and work pretty well died X 10 support has just been started so died X 10 using games are not yet supported at the yeah copy protection I mentioned especially for games it's very difficult because nearly all games have copy protections test 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 vent and implemented the windows kernel driver support in wine but it's only mentioned currently for those copy protection so it cannot do hardware access or anything but is basically for things like safe disk or game guard unfortunately some corporations 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 yeah we just want to do run the windows application as it comes and not hand out cracking tips yeah so what of warcraft it's a bit dark here but one of the top one or top two game the top one game and it was I think they're sharing the top two places is running under wine we have a very vocal community with those especially if you break something with a new release day just five minutes later they will show up in our channels and complain that it's lower 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 a silk road online which I don't know I 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 my magic free the install actually put the icon there so 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 second name yeah okay the loading bar is progressing so again yeah videos are easy the 3d is mapped to the open GL libraries and this and with gleaks extension that has the only small drawback that for playing games you really need Nvidia or at I cards so on my small thing pet 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 at I card to use wine for games or for these kind of 3d games you heard the sound sound is not that much often 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's still some improvements on speed on either the laptop or wine so okay one one sees the objectives one can look forward look to write so and basically yeah I tried playing it it's but I'm not that much of a computer player so this green 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 alphabet and wine yeah I've not taken it yet so okay I think that's enough for just showing this the colleague of mine actually comes occasionally he's playing games every day and every week and usually tries out every new online game that comes and so usually shows up at my desk and says Marcus 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 like it will be the same yeah wine one one at all I am always said that's now ready for users to test and that we are developing currently even the next for the next day we release what we target is better dot net integration I did not mention it but most or lots of programs these days are mixed of binary and netcode 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 for Microsoft or the mono runtime we will see exactly how this all works out 64 bit support one more six for bit applications are showing up the operating systems are 64 bit capabilities we will likely see more we've started on this I think it can run already simple programs and yeah that extend I hope that we get to something before next the format of this year or some with BD rise integrations and of course that all new applications run more information on our website including mailing list downloads documentation and so on and on the channel wine HQ at free notice our regular support for so and now I'm just take some questions microphone I don't see it I'll just ask okay the question was is there still floppy drive support if you mount the 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 files MC so if you mount the floppy then of course we'll be seen accessing the drive directly on a low level way I'm not sure I'm just trying another question yes okay how is the situation about net 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 very much involved in there so not at this time yeah so our idea is to either load the mono runtime the wind 32 mono runtime and just use it like any other wind 32 program in wine or the C sharp runtime I'm not so knowledgeable about this unfortunately but we are working on it so our 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 as interfaces with a background network and so it should it should work if it's separately downloadable from windows then yeah I think it should work yeah okay next question okay so integrating outlook with an outlook server yeah code readers you mentioned is working on its enough 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 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 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 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 I told you about downloading some stuff and 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 KDLock so if you start wine tricks that will offer some of the downloadable things most interesting I said the MFC library that is occasionally missing there are some other things where it would really replace stuff like the visual basic runtime also that I mentioned and this one also installed Internet 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