Development
GSoC: Student Tackles Wine Direct3D 10 Support
This is the fourth in LWN's series of Google Summer of Code (GSoC) 2007 articles. The first three articles covered the program launch, Ubuntu's projects, and the OpenMRS organization.
András Kovács is spending his summer bringing the Direct3D 10 graphics framework (D3D 10) to the Windows compatibility layer Wine. Already done with his mid-term evaluation on July 16th, he's well underway with his project, but don't expect to be playing the latest Valve games on Ubuntu this September. Building on top of years of Wine D3D development, Kovács will only lay the foundation for version 10 support. Read on to learn about the past, present, and future of Wine D3D development.
Henri Verbeet, a Wine D3D developer active since September 2005, explains the importance of the framework:
The tale gets a bit contentious here. According to Verbeet, Transgaming forked Wine in 2000 to create what is now known as Cedega with a promise to return their improvements to the Wine project. Verbeet continues:
Regarding challenges involved with development, Verbeet lists non-descript application crash dialogs, debugging logs running into the gigabytes, ambiguous rendering bugs attributable to nearly any aspect of Direct3D or OpenGL, and finicky applications that refuse trivial implementation differences between Wine and the native platform.
When Wine began implementing the D3D 8 protocol in 2002, they were about two years behind Microsoft. Before 2002 was out, Microsoft had released D3D 9. In 2003, Wine began catching up with D3D 9 and performing a substantial reorganization of their codebase that persists today. The wined3d library was introduced, consolidating all the code for supporting D3D 8, D3D 9, and the 2D graphics framework DirectDraw.
Of the current state of Wine, Verbeet says:
Kovács began working with the Wine team long before this summer. He explains, "I got interested when I wanted some games fixed and I was encouraged to learn about the code and fix them myself." He entered the #winehackers channel on Freenode and settled himself in amongst the development team. Kovács recalls, "[Stefan Dösinger] was the person, when I first came to IRC, that transited me into the Wine developer community." He has since submitted small patches for Wine's D3D implementation and Dösinger is now his GSoC project mentor.
Dösinger shares a typical background among Wine developers, "I've been working on Wine's Direct3D support for approximately 2 years now. I started hacking on Wine to get Empire Earth running. While many, many things improved since then, Empire Earth still doesn't run." Dösinger emphasizes the position of frustrated gamers, "We've had a few developers like that, and we could use many more, since we (the main developers) can't look at every single game out there. Unfortunately it is not a weekend's job to understand how our 3D code is working, isolate a bug in a game and fix it."
In early March, four days before Wine had even been accepted into the GSoC, Dösinger proposed what would become the Direct3D 10 project to the Wine development mailing list. He writes, "The idea was that starting D3D 10 is exciting work, partly due to to the hype Microsoft built up, and it allows the student to grow into Wine's Direct3D implementation without being overwhelmed by the whole code at once."
Dösinger's proposal was met with some criticism. Ivan Gyurdiev wrote on the development mailing list, "I think the SoC project needs to push the participant to be creative and solve a significant obstacle in wine development, which others find challenging. Yes, I am sure wine will benefit greatly from a d3d10 stub, mapping 1-to-1 to wined3d where possible, but is it really a project that requires a lot of creativity and the whole summer to do?" Gyurdiev is himself a Wine D3D developer since 2006, whom Verbeet notes was very valuable in the development of shader support.
Others indicated that they felt effort would be better expended to improve the Direct3D 9 implementation, as very little software currently requires version 10. Dösinger reiterated on the development mailing list, "One problem is nowadays that wined3d is pretty advanced already, and the learning curve is rather hard already. D3D10 is in my eyes an opportunity of an exciting project which allows a new developer to grow into wined3d."
Kovács recalls the proposal, "It seemed interesting to me and Stefan encouraged me to write an application." Although Kovács had Dösinger's support and some Wine experience, he was not automatically given the reins of the project. Dösinger explains, "We had three applications for this project. One was cancelled because the student also applied for a different Wine-Based project (DIB engine), and Andras was elected because he has already worked on D3D 9 a bit and knows the culture, and he has shown that he is talented in learning new things."
Like all GSoC students, Kovács was accepted on April 11th and given until May 28th to become familiar with his mentoring organization. He admits, "Unfortunately, I was only able to start my work one or two weeks ago [mid-June] because I had very serious exams." Kovács is pursuing a Informatics of Economics degree at Széchenyi István University in Gyõr, Hungary. This absence was likely not detrimental in light of his previous experience and familiarity with the Wine organization.
Kovács describes his project, "First, I define all D3D 10 interfaces. The second step is to stub them out (make an empty function for each interface method). At the same time I write some tests to verify things like reference counting. Then things already supported in wined3d can be forwarded, and other features added to wined3d where needed." Asked what the average user would get out of a version of Wine compiled directly after he finished his project, Kovács replies wryly, "Instead of complaining that D3D 10 can't be found, or automatically using D3D 9, a game may find D3D 10 and attempt to use it, causing a lot of "stub!" complaints from Wine."
Another task outlined in Dösinger's original mailing list proposal, which Kovács has already completed, is to add Windows Vista as a supported Wine "winver." This addition will appease applications which are exclusive to Vista. Kovács identifies his current goals, "I am defining the D3D 10 interface in Wine's headers and getting involved with the development of bigger additions in Wine."
Dösinger elaborates, "The project is mainly about writing the infrastructure, so the main aspects are the headers and basic tests about non-rendering issues, like reference counting. Microsoft often violates their own rules, which has made us a lot of headache in the past. But my main hope is that András keeps working on D3D 10 after this project." Verbeet concurs, "I certainly hope András will continue working on Direct3D after SoC is finished." When asked if he would continue working with the Wine organization after the GSoC, Kovács responded, "Yes, because I like to do that."
The student and mentor seem to have a good working relationship. Kovács writes, "Stefan is the most helpful person that I have seen so far. If I need help, he is available and ready for help all the time... We are in contact all the time on IRC." Dösinger comments, "While András isn't the most experienced developer, he has shown often that he is talented in learning new things, and this is in my eyes one of the main aims of SoC - to give new developers an incentive to get into an open source project, and then continue working on it."
This good relationship bodes well for Kovács' mid-term evaluation. Dösinger explains, "The mentoring organizations mainly have to report how the student worked with the mentoring group (in our case the Wine Project) and whether the student should be invited back in the next GSoC." Kovács defined goals for the July 16th deadline, "I'm trying to get in the first set of patches, that will include full declaration of interfaces and methods, and start implementation of D3D10."
Many GSoC students cannot expect their code to see the light of day for several releases of their mentoring organization's project, perhaps months in the future. Dösinger says of Kovács, "András is working directly on the wine tree, so his work will be integrated immediately. Currently, though, he is struggling with getting his patches accepted by our maintainer, which is the main hurdle for new developers."
As for the prospect of Kovács' code sifting into the releases of Wine competitors, Verbeet writes, "I doubt we'll see much from this project in Cedega, since that would require TransGaming to either open up their own implementation or to use Wine's implementation instead of their own, both of which seem rather unlikely. For CrossOver it's pretty much guaranteed it'll end up in there, since their tree is based on WineHQ's."
Comparing his project to Cedega, which he admits to not having personally used, Verbeet writes, "While our Direct3D support isn't quite perfect yet, I like to think we've come a long way in the past couple of years, and quite a number of games are pretty playable these days. The general opinion seems to be that Wine's Direct3D is quickly catching up to Cedega and at some points already surpassing it. For example, Wine had support for shader model 2 & 3 about half a year before Cedega did. A lot of people seem to have the idea that 'Wine doesn't focus on Direct3D, while Cedega does', but while that might have been true a number of years ago, these days that's simply not true anymore."
System Applications
Audio Projects
Rivendell 0.9.81 announced
Version 0.9.81 of Rivendell, a radio station automation system, is out with numerous new capabilities and some bug fixes. "Rivendell is a full-featured radio automation system targeted for use in professional broadcast environments."
Clusters and Grids
openMosix project shutting down
The openMosix single-system image clustering system claims tens of thousands of installations. Even so, the project has announced that it will be shutting down as of March 1, 2008. "The increasing power and availability of low cost multi-core processors is rapidly making single-system image (SSI) Clustering less of a factor in computing. The direction of computing is clear and key developers are moving into newer virtualization approaches and other projects."
Database Software
MySQL Community Server 5.0.45 released
Version 5.0.45 of MySQL Community Server is available with bug and security fixes.PostgreSQL Weekly News
The July 15, 2007 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.phpPgAdmin 4.1.3 released
Version 4.1.3 of phpPgAdmin has been announced. "This version further tightens up security and fixes some issues introduced in the 4.1.2 release. All users are strongly encouraged to upgrade."
Filesystem Utilities
Linbox Directory Server 2.0.0 available
Version 2.0.0 of Linbox Directory Server, "an enterprise directory platform based on LDAP designed to manage identities, access control informations, policies, application settings and user profiles", is out. This version adds new DNS/DHCP management capabilities and a Norwegian translation.
Printing
New CUPS releases
Three new releases have been made by the Common Unix Printing System project (CUPS). These include CUPS 1.2.12: "CUPS 1.2.12 fixes several file typing issues, a bad error message in the scheduler, a web interface setting problem, and a bug in the PHP language binding. It also includes an updated Italian translation.", CUPS 1.3b1: "
CUPS 1.3 adds Kerberos and mDNS (Bonjour) support along with over 30 new features." and CUPS Driver Development Kit 1.2.0: "
The new release fixes several localization issues and adds support for many more languages."
PosteRazor 1.4 released
Version 1.4 of PosteRazor has been announced. "After having enthused Windows users and OSX users all around the world, this popular poster printing tool is now coming to your Linux desktop. It speaks three additional languages: Italian, Dutch and Spanish. The prebuilt Linux x86 binary is statically linked against Fltk and FreeImage."
Security
Sussen 0.90 released
Version 0.90 of Sussen, a security and vulnerability scanner, is out. "We are getting closer to v1.0. The remaining items to do are to fix the remaining bugs in bugzilla, clean up the look/feel of the web console. The editor has been disabled for now, it won't be ready in time for 1.0, but we'll keep working on it for the 1.1/1.2 branch. We are also working on setting up an OVAL repository so we can provide updated definitions in a more timely manner."
Web Site Development
curl-loader launched
The curl-loader project has been launched. "curl-loader (also known as "omes-nik" and "davilka") is an open-source tool written in C-language, simulating application load and application behavior of thousands and tens of thousand HTTP/HTTPS and FTP/FTPS clients, each with its own source IP-address. In contrast to other tools curl-loader is using real C-written client protocol stacks, namely, HTTP and FTP stacks of libcurl and TLS/SSL of openssl, and simulates user behavior with support for login and authentication flavors. The goal of the project is to deliver a powerful and flexible open-source testing solution as a real alternative to Spirent Avalanche and IXIA IxLoad." (Thanks to Robert Iakobashvili).
DataparkSearch 4.47 released
Stable version 4.47 of DataparkSearch has been announced. "DataparkSearch is an Internet and Intranet search engine tool."
Announcing Plone 3.0-rc1
Version 3.0-rc1 of the Plone web development platform has been released. "This is the first and hopefully last release candidate release beta before we release Plone 3.0-final. Since the beta3 release we have been improving migrations from previous Plone versions and we feel confident that migration is now working properly. As always third party products can affect upgrades, so make sure all your products support Plone 3 and follow their upgrade instructions when upgrading your site to Plone 3. The user interface has also been cleaned up further, making Plone even easier to use."
Desktop Applications
Audio Applications
New AlsaPlayer releases
New versions of AlsaPlayer - a PCM audio player, FftScope - a visualization plugin for AlsaPlayer and python-alsaplayer - the Python bindings for the AlsaPlayer library have been released.QjackCtl 0.3.0 (unstable-qt4) has been released
Version 0.3.0 of QjackCtl, a GUI control panel for the JACK Audio Connection Kit, is out. "Although the ChageLog doesn't go into many details, there were many subtle bugs fixed but plenty as more were blindly introduced, as always."
Wavebreaker 0.8.1 released
Stable version 0.8.1 of Wavebreaker is available. "This application's purpose in life is to take a wave file and break it up into multiple wave files. It makes a clean break at the correct position to burn the files to an audio cd without any dead air between the tracks. It will only read wave files, so use an appropriate tool to convert ogg, mp3, etc. files and then break them up."
Desktop Environments
GNOME Software Announcements
The following new GNOME software has been announced this week:- cairomm 1.4.0 (new features and bug fixes)
- cairomm 1.4.2 (bug fixes)
- Conduit 0.3.2 (new features and bug fixes)
- GLib 2.12.13 (bug fixes)
- GLib 2.13.7 (new features, bug fixes and translation work)
- gnubiff 2.2.7 (new features and bug fixes)
- kiwi 1.9.16 (new features, bug fixes and translation work)
- libbtctl and gnome-bluetooth 0.9 (new features and bug fixes)
- Sabayon 2.19.1 (new features, bug fixes and translation work)
- Swfdec 0.5.0 (new features and bug fixes)
- Tomboy 0.7.2 (new features and bug fixes)
- Vala 0.1.1 (new features and bug fixes)
KDE Commit-Digest (KDE.News)
The July 15, 2007 edition of the KDE Commit-Digest has been announced. The content summary says: "Much work in Amarok, with the implementation of a CoverFlow-esque OpenGL album art visualisation, codenamed "CoverBling", and Service Framework and Plasmification efforts. Sample OpenGL-based applets added to Plasma,, with Plasmoids to watch for changes to files, for browsing files, and to monitor network interfaces. General progress in the 2d projection and KML in Marble, OpenPrinting, and KOrganizer Theming Summer of Code projects..."
KDE Software Announcements
The following new KDE software has been announced this week:- 3dphoto 0.1 (initial release)
- Actualiza 0.8.0 (unspecified)
- Autosave Playlist 07-07-14 (unspecified)
- eSvn 0.6.12 (unspecified)
- FALF Player 1.0rc4/rc5dev (new features and bug fixes)
- gajim-status 0.9 (unspecified)
- Kgraphviewer 1.0.4 and 1.99.0 (bug fixes and translation work)
- Kraft 0.20 (new features and bug fixes)
- KShowmail 3.2.1 (unspecified)
- Now Playin, lite 1.0 (initial release)
- QGameX 1.1.0 (new features and bug fixes)
- Qsynth 0.3.1 (bug fixes)
- QjackCtl 0.3.0 (new feature, Qt4 migration)
- QtiPlot 0.9rc3 (new features and bug fixes)
- Qwiimote 0.0.1 (initial release)
- sqliteman 1.0 (stable release)
- Sysinfo for Pardus 1.4.2 (new features)
- TuxUsers 0.6.0 (unspecified)
Xorg Software Announcements
The following new Xorg software has been announced this week:- xhost 1.0.2 (documentation work)
Electronics
gEDA/gaf development snapshot 1.1.0-20070705 released
Development snapshot 1.1.1-20070708 released of gEDA/gaf, a collection of electronic CAD tools, has been announced. "The primary focus of this snapshot was to pick up some important bug fixes."
Financial Applications
GnuCash 2.2.0 released (GnomeDesktop)
The GnuCash development team has announced GnuCash 2.2.0, the new stable release of the GnuCash Open Source Accounting Software. This version runs on Microsoft Windows for the first time, and it also runs on GNU/Linux, *BSD, Solaris and Mac OSX. Download source code or Windows binary from this SourceForge page or get the source code from GnuCash.org.
Games
Cyphesis 0.5.13 released
Version 0.5.13 of Cyphesis, a server for WorldForge games, has been announced. "Major changes in this version: The way rules data is handled is now much simpler to make it easier for game designers to create what they want. Lots of hard coded functionality has been removed from the compiled core program. Core functionality is now associated with properties and so can be applied to any entity. Most of Mason has been reimplemented as task scripts which are cleaner and more flexible. Add more helpful messages when inconsistencies are detected in rule data. Cyphesis now works more reliably as an autopackage."
Interoperability
Wine 0.9.41 released
Version 0.9.41 of Wine has been announced. Changes include: A number of gdiplus functions, More complete pdh.dll implementation, Support for MSI remote calls, Messaging support in crypt32.dll and Lots of bug fixes.
Mail Clients
Mozilla Thunderbird 2.0.0.4 Released (MozillaZine)
MozillaZine notes the release of Mozilla Thunderbird 2.0.0.4. "This update to the Mozilla Corporation's mail client includes bug fixes but no new features. For the first time, this release of Thunderbird is available in Korean. The Thunderbird 2.0.0.4 section of the Mozilla Foundation Security Advisories page includes details about the security flaws fixed in this release while The Rumbling Edge has a complete Thunderbird 2.0.0.4 changelog."
Music Applications
LoopCenter project announced
A new audio application called LoopCenter has been launched. "It is a live-looping tool with a functionality very similar to the Boss LoopStation pedal. I use it mainly as a improvisation practice tool, but it could certainly be used for more compositionally-oriented stuff. Basically, you can set a tempo, and easily record and overdub small, measurized segments of audio, and then loop them."
Qsynth 0.3.1 (unstable-qt4) released
Version 0.3.1 of Qsynth has been announced. "So after the great Qt4 migration, which was almost couple of weeks ago already, here comes the so-called shallowed bug-fix release of this "cutie" FluidSynth GUI".
Speech Software
eSpeak 1.28 released
Version 1.28 of the eSpeak text to speech synthesizer is out with bug fixes and improvements to Hungarian and Romanian language support.
Web Browsers
Firefox 2.0.0.5 released
Firefox 2.0.0.5 has been released. The changes are primarily fixes for a new set of security problems, especially a code execution vulnerability resulting from the interaction of Firefox and Internet Explorer on Windows systems.
Miscellaneous
GraphMonkey 1.7 released
Stable version 1.7 of GraphMonkey is available. "GraphMonkey is a GTK#-based graphing calculator. It uses a simple interface to draw curves. This software is written in C# with GTK#. The goal is to obtain a very simple and fast graphing calculator for mono. It's cross-platform: it works on GNU/Linux and Windows."
Languages and Tools
Caml
Caml Weekly News
The July 17, 2007 edition of the Caml Weekly News is out with new Caml language articles.
Java
IcedTea 1.1 released
Version 1.1 of IcedTea is out with the stabilization of Crypto and SSL support. "The IcedTea project provides a harness to build the source code from OpenJDK using Free Software build tools and provides replacements libraries for the binary plugs with code from the GNU Classpath project."
JSP
Writing Advanced JavaScript (O'ReillyNet)
Howard Feldman works with JavaScript on O'Reilly. "With JavaScript toolkits like YUI and Dojo becoming the de facto method of adding interactivity to web pages, it's still worth knowing how to implement this kind of functionality yourself, if for no other reason than to have a better understanding of what the toolkits do. Howard Feldman shows how to do a few commonly requested features using nothing but bare JavaScript."
PHP
PHP 4 end of life announcement
The PHP site has announced the end of life for PHP 4. "Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stable & production-ready and as PHP 6 is on the way, PHP 4 will be discontinued. The PHP development team hereby announces that support for PHP 4 will continue until the end of this year only. After 2007-12-31 there will be no more releases of PHP 4.4. We will continue to make critical security fixes available on a case-by-case basis until 2008-08-08. Please use the rest of this year to make your application suitable to run on PHP 5."
Python
Python-URL! - weekly Python news and links
The July 16, 2007 edition of the Python-URL! is online with a new collection of Python article links.
Tcl/Tk
Tcl-URL! - weekly Tcl news and links
The July 17, 2007 edition of the Tcl-URL! is online with new Tcl/Tk articles and resources.
Editors
Multi Stream Editor 2.02 released
Stable version 2.02 of Multi Stream Editor has been announced. "The multi stream editor (mse) can perform basic text transformations on an input stream. It in some ways is similar to another stream editors (sed, awk) but it can process binary data as well as text. Its creation was inspired by SIL (Summer Institute of Linguistics) CC (Consistent Changes) program."
Profilers
OProfile 0.9.3 released
Alpha version 0.9.3 of OProfile is out. "This release has support for a number of new processor implementations, as well as several new features and bug fixes." See the release notes for more information.
Page editor: Forrest Cook
Next page:
Linux in the news>>
