wn20030822_184.xml -brian
<?xml version="1.0" ?> <kc> <title>Wine Traffic</title> <author contact="http://www.theshell.com/~vinn">Brian Vincent</author> <issue num="184" date="08/22/2003" /> <intro> <p>This is the 184th release of the weekly Wine Weekly News publication. Its main goal is to be amazed at the sheer number of virus emails received this week. It also serves to inform you of what's going on around Wine. Wine is an open source implementation of the Windows API on top of X and Unix. Think of it as a Windows compatibility layer. Wine does not require Microsoft Windows, as it is a completely alternative implementation consisting of 100% Microsoft-free code, but it can optionally use native system DLLs if they are available. You can find more info at <a href="http://www.winehq.com">www.winehq.com</a></p> </intro> <stats posts="186" size="662" contrib="58" multiples="33" lastweek="24"> <person posts="16" size="44" who="Eric Pouech" /> <person posts="14" size="34" who="Dmitry Timoshkov" /> <person posts="18" size="94" who="Dimitrie O. Paun" /> <person posts="9" size="23" who="Steven Edwards" /> <person posts="9" size="23" who="Alexandre Julliard" /> <person posts="8" size="26" who="Sylvain Petreolle" /> <person posts="8" size="24" who="Francois Gouget" /> <person posts="7" size="15" who=" <puoti@inwind.it>" /> <person posts="6" size="17" who="Jonathan Wilson" /> <person posts="5" size="19" who="Kelly Leahy" /> <person posts="5" size="15" who="Maxime Bellenge" /> <person posts="4" size="17" who=" (Dominik Strasser)" /> <person posts="4" size="9" who="Gregory M. Turner" /> <person posts="4" size="8" who="Tom" /> <person posts="3" size="32" who="Martin Wilck" /> <person posts="3" size="12" who="Marcelo Duarte" /> <person posts="3" size="9" who="admiral coeyman" /> <person posts="3" size="8" who="Alex Pasadyn" /> <person posts="3" size="8" who="Gerald Pfeifer" /> <person posts="3" size="8" who="Richard Cohen" /> <person posts="3" size="6" who="Jon Griffiths" /> <person posts="3" size="6" who="Steven Edwards" /> <person posts="2" size="82" who="Subhobroto Sinha" /> <person posts="2" size="9" who="root" /> <person posts="2" size="7" who="Shachar Shemesh" /> <person posts="2" size="6" who="Jim White" /> <person posts="2" size="5" who="Christian Costa" /> <person posts="2" size="4" who="Jeremy Newman" /> <person posts="2" size="4" who="Robert North" /> <person posts="2" size="4" who="Martin Fuchs" /> <person posts="2" size="3" who="Jukka Heinonen" /> <person posts="2" size="3" who="Ferenc Wagner" /> <person posts="1" size="3" who="Martin Troester" /> <person posts="1" size="3" who="Jakob Eriksson" /> <person posts="1" size="3" who="Martin Fuchs" /> <person posts="1" size="3" who="Rok Mandeljc" /> <person posts="1" size="3" who="John K. Hohm" /> <person posts="1" size="3" who="Keith Matthews" /> <person posts="1" size="3" who="Ulrich Weigand" /> <person posts="1" size="2" who="Lionel Ulmer" /> <person posts="1" size="2" who="Mike Hearn" /> <person posts="1" size="2" who="Jeff Smith" /> <person posts="1" size="2" who="Felipe Wilhelms Damasio" /> <person posts="2" size="4" who="Marcus Meissner" /> <person posts="1" size="2" who="Boaz Harrosh" /> <person posts="1" size="2" who="David Laight" /> <person posts="1" size="2" who="PETREOLLE Sylvain" /> <person posts="1" size="2" who="Fabian Cenedese" /> <person posts="1" size="2" who="Dustin Navea" /> <person posts="1" size="2" who="Troy Rollo" /> <person posts="1" size="2" who="Dave Miller" /> <person posts="1" size="1" who="E Lea" /> <person posts="1" size="1" who="Rein Klazes" /> <person posts="1" size="1" who="flyker" /> <person posts="1" size="1" who="Jason Edmeades" /> </stats> <section title="News: Interview with Jeremy White, Frontier & Wine" subject="News" archive="http://www.winehq.com" posts="2" startdate="08/16/2003" enddate="08/22/2003" > <topic>News</topic> <p>The <a href="http://www.lpbn.org">Linux Public Broadcasting Network</a> did a <a href="http://www.lpbn.org/modules.php?op=modload&name=News&file=article&sid=416&mode=thread&order=0&thold=0">series</a> of interviews at Linux World about proprietary vs. open source development. <a href="http://stream.lpbn.org:81/files/CodeWeavers.mov">Jeremy White</a> from CodeWeavers took part. I haven't had a chance to see it yet so I don't have much to say about it.</p> <p>I happened to stumble across a screenshot of <a href="http://www.wiredfool.com/discuss/msgReader$1301?mode=topic">Frontier running under Wine</a> on Linux being displayed on a remote MacOS X client. <a href="http://frontier.userland.com">Frontier</a> is a web content management system. There's a few other pages out there that describe the specifics of how to get it to run under Wine: [<a href="http://inessential.com/linux/frontierunderwine.php">page 1</a>] [<a href="http://www.wiredfool.com/discuss/msgReader$1299">page 2</a>] </p><p> I also poked around on the <a href="http://www.freelists.org/archives/cad-linux/">cad-linux</a> mailing list and noticed a bunch of people are trying out all sorts of CAD programs under Wine. </p> </section> <section title="Evolution of Wine's File Management" subject="RFC: evolution of file management" archive="http://www.winehq.com/hypermail/wine-devel/2003/08/0358.html" posts="9" startdate="08/19/2003" enddate="08/21/2003" > <topic>Filesystems</topic> <p>Over the past decade of Wine development there have been massive changes to the underlying filesystems developed by Microsoft. Many new features have been added and API support for those features has grown. Support in Wine has been minimal, partly because what's there works and messing with such an important part of Wine is dangerous. However, Eric Pouech and Alexandre Julliard have been working on a separation of kernel32 and ntdll. That work prompted Eric to give an update on it and ask for comments on the future direction:</p> <quote who="Eric Pouech"><p> In the process of separating ntdll from kernel32, one of the next hurdles is the implementation of NtCreateFile. Since it's rather a core API, some thoughts are needed. Moreover, there are a few shortcomings in current file handling we might want to address. </p><p> The goal of this small RFC is to: <ol> <li> gather all known shortcomings of current file implementation </li> <li> propose some solutions and roadmaps for the implementation </li> </ol></p><p> feel free to add your own remarks to these lists. </p><p> <u>shortcomings</u> <ol> <li>no dynamicity in DOS drive management: user should be able, in his/her session(1), to either change the mapping of a DOS drive letter, or mount a SMB share somewhere...)</li> <li> mounting should be done session wide and not process wide, and of course shared across processes</li> <li> ntdll and kernel32 are not separated regarding file management</li> <li> devices (vxd and DOS) management is still a hack</li> <li> it may be necessary to introduce a notion of filesystem for some operations (open, read, write, seek, close, dir_enum, ioctl) in order to support several FS (unix, smb...)</li> <li> poor management of ejectable devices</li> <li> short/long file name conversion should be consistent (across several processes in the same session, across several sessions)</li> </ol> </p><p>Note: (1) a session is linked to a running instance of the wineserver</p> <p> <u>proposal</u> <ol> <li> "path gates" (target: #1, #2, #3/partly, #4/partly, #6/partly) all file names will be handled using the NT-style: <ul> <li>DOS paths (C:\foo\bar) into \??\C:\foo\bar</li> <li> network paths (\\station\foo\bar) into \??\UNC\station\foo\bar</li> <li> DOS device names (CON) into \??\CON</li> <li> NT device names (\\.\PhysicalDrive0) into \??\PhysicalDrive0</li> <li> a VXD ?? (normally \\.\VFD) into \??\VFD </li></ul> <br /><br /> the device concept will disappear and be replaced by a "path gate": <ul> in NT-Win32 name space, point where to convert from a NT-path to a Unix-path <br /><br /> for example, assuming we have created a path-gate from \\??\c: to /mnt/windows, the NT-path \\??\c:\foo\bar will be transformed into the unix-path /mnt/windows/foo/bar </ul> the path-gate will hold the current options that the device currently does (case sensivity, fixed/removable...) <br /><br /> path-gates will be stored in the server (they are session wide) <br /><br /> management of VxD and devices could benefit from it: they could be path gates pointing to them selves (or nothing ?) </li> <li>FS (target: #4/partly, #5/partly, #6/partly) <br /><br /> I'm still wondering if we really need a FS (even a very simplistic one) in Wine </li> <li>short/long file names (target #7) <br /><br /> since current short file name management seems satisfactory, there's no need IMO to move short/long names conversion in the server</li> </ol></p></quote> <p>Martin Fuchs pointed out some of the lower-level structures used in NT to represent filesystem hierarchies:</p> <quote who="Martin Fuchs"><p> It would be good to implement this "path gates" as near as possible like the way it is implemented in Windows NT/XP. This mapping is done using the NT object namespace. Object namespace is another virtual tree structure similar to a file system or the registry. It is accessed by functions like NtOpenDirectoryObject(), NtOpenSymbolicLinkObject(), NtQueryDirectoryObject(), NtQuerySymbolicLinkObject(), ... There has been a tool in the internet called "winobj.exe", with which you can examine this internal NT object namespace. However it is not compatible to XP, I don't know, if someone has yet updated it. But I do have a own program which can display it also for XP. </p><p> Drive mapping is stored as symbolic links for example at "\GLOBAL??\D:". This links point to the partitions, like e.g. "\Device\HarddiskVolume3". There are also the ArcNames, which you can find in the NT bootloader config file "boot.ini". At "\ArcName\multi(0)disk(0)rdisk(0)" you can find another symbolic link to "\Device\Harddisk0\Partition0". </p><p> This examples are from my XP system. System versions before XP used a bit of another mapping schema. </p><p> By the way: You can also find the whole registry as a subtree in the NT object namespace at paths like "\REGISTRY\HKEY_LOCAL_MACHINE\.... Would not be bad, if we could implement this also. </p></quote> <p>Eric seemed to have taken that into consideration and replied:</p> <quote who="Eric Pouech"><p> I do know how it's implemented in NT. </p><p> anyway, there are a few differences between ROS and Wine: <ul> <li> in common, we do need to have the same interface as Windows do. This only applies to interface living in user land.</li> <li> kernel land is another matter. ROS needs to stick to NT's behavior, Wine needs to convert calls to what Unix does provide.</li> <li> ROS needs to mount physical drives, Wine makes (it's the current implementation, this is open to discussion) part of the Unix file hierarchy visible from the windows part</li></ul></p><p> Regarding file support, the minimal things Wine need to do is: <ul> <li> support the same file naming as NT does (mainly the \??\ part of the NT name space), the rest is not absolutely needed. Currently, Wine does not implement a unique name space for all the objects (as NT does, using sub dir for some differenciation) but rather different name spaces</li> <li> to allow the mapping from a NT path to a unix path, there are two simple ways to do it: <ol> <li> use all NT name space and somehow inject Unix file name space (/ and all the subdirs) in it</li> <li> store the unix information (the path in the unix / hierarchy) as a specific attribute of the NT name space (at least the \??\ subtree)</li> </ol></li></ul></p><p> I chose the second approach (you're more proposing the first one) because I felt it was more suited to wine behavior. </p><p> Concerning NTDLL's directory objects, I'm still wondering if we need (in Wine) to implement them. It's indeed needed in NTDLL's interface (object attribute for instance) and implements part of the "path gate" (especially some attributes like case sensivity in further lookups...). So, this is still part of the open questions I have (I may start without directory objects, and add them later on). </p><p> One of the strength of current NT name space is the orthogonality which is used across all objects in NTDLL (for example, in handle management, or sending requests - thru IRPs - at all the objects). The good side is to be able to convert an operation on a file into an IRP which is send to the FS which handles the file, which can in turn send it or transform it to another part... As wine implements a more monolithic approach, and since we don't have this orthoganility available today, I'm not yet convinced we need to stick more to the NT behavior than what I described above as the minimal requirements. </p></quote> <p>Ferenc Wagner wanted to know about other details, <quote who="Ferenc Wagner"> Do we need attributes like hidden, system, etc?</quote></p> <p>Keith Matthews expanded on that:</p> <quote who="Keith Matthews"><p> More to the point we need attributes to allow support of NT ACLs. I've been looking at the problem and progressing only very slowly, some of the problems are technical, others are nothing to do with Wine at all. </p><p> At the level we are dealing with here the essential problems (for those who have not examined the issues) are :- <ul> <li>Not all supported O/S s offer ACLs.</li> <li>Those that do support POSIX ACLs which do not map exactly to NT ACLs</li> <li>Even in Systems which do support POSIX ACLs there is no guarantee that all disc filesystems at any one host will offer it, Of the Linux filesystem types only XFS supports ACLs out of the box. Work is in progress for ReiserFS and due to start for JFS. There is a patch for ext2/3. One map currently favoured is to use ext2/3/Reiser for the root filesystem and XFS for (some of) the rest).</li> </ul></p><p> All of the systems that do support ACLs use Extended Attributes to store them. I am still looking at limitations on number of EAs, but there is a possibility that an extreme case on NT may not be supported on Linux. </p><p> Since I've not yet got round to looking at TrustedBSD there's potentially another can of worms there. </p><p> My conclusion is that we do (regrettably) need a VFS layer to harmonise handling of all this lot and respond correctly when wine-ver is 9X. </p></quote> <p>Eric disagreed:</p> <quote who="Eric Pouech"><p> I think Wine's goal is to provide this kind of feature of top of what the underlying OS provides (this is also the case for DOS HIDDEN and SYSTEM attributes => there are not available in standard Posix FS, so are managed by wine(*)). So IMO, file (protected by ACL) access should be provided by the underlying OS. </p><p> ACL manipulation (from windows to posix - even if 1003.1e hasn't been voted by POSIX) should be added (I'm not sure we have a 1:1 mapping anyway) however, I don't understand your remark about the winver 9x... IMO, if the Linux user mounts a NT partition with ACL (and has the proper privileges) it should run Wine on this partition rather transparently (except for ACL manipulation function) it's not my goal to support: <ul> <li> real FS mounting in wine => this is the job of the OS, not wine's</li> <li> a real VFS (as Linux does)</li> <li> the (V)FS I'm talking about is more related to adaptation (as you mention), but I'm not sure I got you right</li></ul></p> <p> (*) except files starting with a . which get the HIDDEN attribute</p> </quote> <p>Robert North gave a pointer so some work being done at the kernel filesystem level:</p> <quote who="Robert North"><p> Can't really answer your question, but on the kernel mailing list, There has been some discussion of whether these attributes should be exposed from mounted fat partitions: The fat fs maintainer has a patch, and is wondering what to do with it. (The patch exposes the fat attributes as extended attributes) </p><p> See the thread titled "[RFC] ioctl vs xattr for the filesystem specific attributes". </p></quote> <p>Eric mentioned that it would require opening the file to get the attributes and wondered what effect that would have on performance.</p> <p>No one had any large objections (yet) so perhaps we'll see an implementation in the near future.</p> </section> <section title="Update On Last Weeks' Feature" subject="Update On Last Weeks' Feature" archive="http://www.winehq.com/" posts="1" startdate="08/20/2003" > <topic>Licensing</topic> <p>Gerald Pfeifer pointed out that last week's feature article on <a href="http://www.winehq.com/site?issue=183#Feature:%20Wine%20History">Wine's history</a> had some mistakes concerning specifics of LGPL provisions. Specifically, I wrote the following:</p> <quote who="Brian Vincent"> <p><ul> <li>All changes to the source code must be made available </li> <li>Anyone redistributing Wine must provide access to the source code under the original terms of the LGPL </li> <li>However, anyone who wishes to simply "link" their own Windows program to Wine can do so without having to make their source code available. </li> </ul></p></quote> <p>That's not really correct. You don't have to make changes available in all instances. Here's what I should have written:</p> <quote who="Brian Vincent"> <p><ul> <li>Source code (including all changes from the original Wine sources) must be made available to people who receive a binary of Wine. This also applies if Wine is used as a library, in which case only the source of Wine (including all changes) must be made available.</li> <li>Simply linking with Wine does not mean you need to make the source code available for your program. </li></ul></p></quote> <p>As always, please refer to the <a href="http://www.fsf.org/licenses/licenses.html">Free Software Foundation's website</a> for specifics of their licenses.</p> </section> <section title="Environment Variable Handling in Wine's Config" subject="REGRESSION: environment variables no longer possible" archive="http://www.winehq.com/hypermail/wine-devel/2003/08/0342.html" posts="7" startdate="08/19/2003" > <topic>Configuration</topic> <p>Marcus Meissner wondered why Alexandre committed a patch that changed the way environment varibles were handled:</p> <quote who="Marcus Meissner"><p> Apparently the changes from yesterday removed support of environment variables in registry keys (very useful for the "Path" keys in the "Drive" sections). </p><p> Can it be readded? Or is there a rational behind it? </p></quote> <p>Dmitry Timoshkov pointed out how to make it work:</p> <quote who="Dmitry Timoshkov"><p> Actually it's just the format of the Wine config has changed. Now all environment variables should be surrounded by the percent signes (%HOME%), and are handled by the normal registry code. Alexandre has changed the sample config as well. </p></quote> <p>Alexandre clarified why, <quote who="Alexandre Julliard"> Actually the format of the config has not really changed, most entries have been behaving that way for a long time already. I just made the drives part of the config behave like all the other entries.</quote></p> </section> <section title="FreeBSD, OpenGL, and Pthreads" subject="Build broken due to -lpthread" archive="http://www.winehq.com/hypermail/wine-devel/2003/08/0401.html" posts="4" startdate="08/20/2003" enddate="08/21/2003" > <topic>Ports</topic> <topic>Build Process</topic> <p>Gerald Pfeifer reported a problem compiling Wine under FreeBSD. It seemed to manifest itself when linking with the pthread library. Alexandre then asked, <quote who="Alexandre Julliard"> So what's the right way to link with libpthread on FreeBSD?</quote></p> <p>Gerald messed around and found a solution, <quote who="Gerald Pfeifer"> Wine builds fine if I just omit the -lpthread line above. </quote></p> <p>Specifically, the line he meant was this: <code> /usr/bin/gcc -shared -Wl,-Bsymbolic,-z,defs glu32.spec.o glu.o glu32.dll.dbg.o -o glu32.dll.so -L../../dlls -L../../libs/wine -lwine -L/usr/X11R6/lib -lSM -lICE -lXxf86dga -lXxf86vm -lXv -lXext -lX11 -lGL -lGLU -lpthread -L../../libs/port -lwine_port -lm -lc </code></p> <p>He researched a little more and found a better solution:</p> <quote who="Gerald Pfeifer"><p> If I simply remove -lpthread from <ul> <li>dlls/glu32/Makefile</li> <li> dlls/d3d8/Makefile</li> <li> dlls/d3d9/Makefile</li> <li> dlls/d3dx8/Makefile</li> <li> dlls/opengl32/Makefile </li></ul> </p><p> Wine, builds without problems. </p></quote> <p>Alexandre then made some changes in CVS that did just that.</p> </section> <section title="Top 10 Reasons For Using Fox Under Wine" subject="Re: [Foxgui-users]Re: Wine fixes (1)" archive="http://www.winehq.com/hypermail/wine-devel/2003/08/0377.html" posts="1" startdate="08/20/2003" > <topic>Ports</topic> <p>Apparently there's yet another cross-platform GUI toolkit out there called FOX. From the <a href="http://www.fox-toolkit.org/">FOX Toolkit website</a>: <quote who="Fox"> FOX is a C++ based Toolkit for developing Graphical User Interfaces easily and effectively. It offers a wide, and growing, collection of Controls, and provides state of the art facilities such as drag and drop, selection, as well as OpenGL widgets for 3D graphical manipulation. FOX also implements icons, images, and user-convenience features such as status line help, and tooltips.Tooltips may even be used for 3D objects! </quote></p> <p>Someone posted a patch to that project to add support for Wine. The maintainer wondered why bother since there was a native version, but he added it anyway. (Of course, that seems to beg the question, why have yet another cross-platform GUI toolkit.. but that's besides the point.) Dimi Paun decided to list some reasons why a port to Wine is good:</p> <quote who="Dimitrie Paun"><p> Top 10 reasons you want Fox ported to Wine: <ul> 10. Windows sux<br /> 9. Microsoft is evil<br /> 8. Test windows features without rebooting (as Doug mentioned)<br /> 7. Keep development on Linux<br /> 6. Run valgrind on the Windows port<br /> 5. Make sure the Win32 part is portable to multiple implementations<br /> 4. Help find missing features/problems/etc. in Wine<br /> 3. Some people may prefer the Wine widgets to the GTK+ ones<br /> 2. wxWindows is already ported to Wine, Fox needs that too! ;)<br /> </ul></p><p> and the number one reason is: <ul> 1. It is just cool!!! <br /> </ul></p><p> (what geek can resist this sort of virtualization? :)) </p></quote> </section></kc>