SummerOfCode

Google Summer of Code 2010

Wine has been accepted by GSoC 2010! See the Wine page on the GSoC website.

We have 4 students:


Wine and the Google Summer of Code


Beware of Legal Requirements

You must state that you will follow these minimal legal requirements during the SoC (and have done so in the past):

  • You are not allowed to read or reuse Windows source code (leaked source / Windows Research Kernel* / ...)

  • (* we are following the SFLC's advice)

  • You are not allowed to reverse engineer Windows files by disassembling or decompiling them

  • You are not allowed to analyze Windows files with the trace functions of Wine


Ideas

Your own idea

Possible mentors: We'll provide you with the appropriate mentor

  • If you have an idea, please post it on Wine Developers mailing list so we can help you with your idea and find out if it's realistic or not. Showing initiative and willing to discuss your idea greatly improves your chances of getting accepted. Even more so than taking one of the ideas below.

  • As long as you work hard and interact with the community and your mentor in a positive and constructive way you don't have to worry about not meeting all your goals.


Graphics - implement DOS graphics modes more faithfully

Possible Mentors: DanKegel

  • Many DOS games use video modes that Wine's VGA implementation does not yet support (see e.g. bugs 2408, 15390, 15570, and 15688). It should be relatively easy to improve this situation (and fun, since most of the testing is playing classic games...)

  • Update: Jeremiah Flerchinger and Peter Dons Tychsen have done a bit of work on this.


Compatibility - implement IFileDialog

Possible Mentors: ???

  • Vista and 7 have a new implementation of the file save/open dialog, described here. A simple program to open this dialog would only have to be a few lines.

  • This project also means updating the relevant headers to match the windows 7 sdk


Tools - Merge winecfg and control panel

Possible Mentors: DanKegel

  • Wine has a control panel, but it doesn't come with many pre-installed applets.
  • Wine's winecfg tool is a kind of control panel, but it only handles its own hardcoded applets, not real control panel applets. Why not? Let's unify them.

  • Looks like pure_evil at mail.bg has gotten started on this; he's got a script that splits winecfg apart into control panel applets...
  • Owen Rudge split out the Desktop Integration tab into its own control panel, but it hasn't been merged with WineHQ yet. (See here.)


Tools - Implement new control panel applets

Possible Mentors: We'll provide you with the appropriate mentor

  • Basic 3D and screen resizing (tests X 3D drivers via OpenGL from Wine, or verifies that Wine was compiled with OpenGL support)
  • Current network IP addresses, see IPaddress for inspiration

  • List of fonts, see FontPage for inspiration

  • An Internet Explorer control panel. This could set the default home page, configure proxy settings, allow you to manage certificates, and more.


Theming - Implement Wine theming support

Possible Mentors: ReeceDunn, RoderickColenbrander, AndreHentschel

Windows XP improved theming support in Windows with support for skinning controls with bitmaps, alphablending, shadowing and other forms of eye-candy. Theming support was achieved by shipping new versions of comdlg32/comctl32 with Windows which under the hood use uxtheme.dll for reading theme files (.msstyles file).

Wine has support for loading themes using uxtheme. This theming code is called from the wine common controls code (comctl32). Currently, the drawing procedure of a control is overridden by a themed drawing version by subclassing. This is not the way it is implemented on Windows and this causes drawing issues and other nasty issues. Instead each control needs to be reimplemented in comctl32 when a program requests theming (it does this using a manifest). The goal of this project would be to implement theming support in comctl32 and get an XP theme working this way.

Some info about XP theming can be found here along with a sample theme project.


DirectInput - Implement missing DirectInput8 features

Possible Mentors: MarcusMeissner


Direct3D - Implement missing D3D9_xx DLLs

Possible Mentors: RoderickColenbrander

  • D3D comes with lots of numbered DLLs (e.g. d3dx9_36). These aren't as mysterious as they sound. They contain utility functions to make life easier for developers. For instance they contain math functions, functions for loading bitmaps, compiling shaders and much more. These days matrix math and some other parts have been implemented but most functionality is still missing. The work would consist of adding missing functions (I would choose a few simple demos or games and get those working) and writing behavioral tests to verify that the functions work correctly. It probably wouldn't be too hard to support the ones lots of games use, see D3DX


Direct3D - Implement Pixel shaders on Geforce 4 or ATI 8500 cards

Possible Mentors: StefanDoesinger

  • Currently our minimum requirement for pixel shader support is the GL_ARB_fragment_program extension. This extension is comparable to Shader Model 2.0 pixel shaders, and as such is not available on hardware that has Pixel Shader 1.x support only, like Geforce3/4 cards and ATI Radeon 8500 to 9200 cards. Those cards have vendor specific OpenGL extensions which cover up to pixel shader 1.4. Those are GL_NV_register_combiners and GL_NV_texture_shader on Nvidia cards, and GL_ATI_fragment_shader on ATI cards. This project would involve mapping the Pixel Shader 1.x functionality to those extensions. Implementing this for one brand of cards is big enough for a project already, we can also have two simultaneous projects for the ATI and NVIDIA codepath
  • Note that nvidia's NVParse does something that's pretty similar. The license for NVParse looks compatible with Wine. It certainly can't be used directly, but might be helpful in figuring out how to map shader instructions to the appropriate GL state.


Direct3D - Conformance / Performance / Interactive tests

Possible Mentors: DanKegel

  • Even small demos show interesting problems in Wine (see e.g. http://bugs.winehq.org/buglist.cgi?quicksearch=3drad, http://bugs.winehq.org/show_bug.cgi?id=21817 )

  • There are lots of tools (see http://wiki.winehq.org/GameEngines ) that make developing tiny games easy; they often come with tutorials or examples that might let you isolate problems

  • We would like to capture the problems these expose by writing conformace tests (possibly WINETEST_INTERACTIVE ones, if they can't be automated) or performance test tools (as part of programs/dxdiag, perhaps; see "Make dxdiag usable" below), or at the very least bug reports
  • It'd be nice to also fix some of the problems, too.


DirectShow (Quartz) - Implement Gstreamer plugin

Possible Mentors: MaartenLankhorst, Edward Hervey (GStreamer developer)

At the moment native win32 codecs are required to play mpeg, divx and other files from applications like games and media players. This is incovenient for users as they need win32 codec packs (those might be illegal) and second for commercial programs (e.g. Crossover) shipping of win32 codecs has licensing issues. In this project a gstreamer plugin for wine's directshow would be written, so that we can use codecs which are available on the system in wine (most systems ship with gstreamer). Second there are legal codecs for mpeg and other codecs available as gstreamer plugins from fluendo.org. That would be a legal way to distribute codecs. Further some distributions already strip wine of its mp3 codec because of legal issues. When users add the codecs to gstreamer wine would get support too.

In 2009 Trevor Davenport worked on this project and proved that GStreamer can work for Wine. His work is not complete and not in Wine yet. Edward Hervey has reviewed the work (April, 2010) and has written what he thinks should be done to finish this work, see http://www.winehq.org/pipermail/wine-devel/2010-April/082809.html.


Vista Game Explorer API - Implement the core functionality of this dll

  • Work on Direct3D 10.0 has resumed. It appears that most D3D10 games use the 'Vista Game Explorer API' whose task is to manage game settings, save games and things like that. Without this dll most D3D10 games won't work. Using the Windows version of the dll is illegal in most cases as it is bundled with Vista. The task of this project would be to implement this dll.

  • See Bug 21261


Richedit - implement Windowless mode

Possible Mentors: MaartenLankhorst

  • Richedit is supposed to support Windowless mode, and a number of apps use this. Wine has mostly a stub implementation, so there's lots of room for improvement. Maarten promises to help you with any COM problems you run into :)

  • DylanSmith has been working on this, after the SoC 2008 (See bug 5162).


Test Suite

Possible Mentors: DanKegel, AustinEnglish

  • Wine can only do rapid releases thanks to its test suite, but our test suite could be so much better.
  • UnitTestSuites documents several open source Windows apps that build properly under Wine, and many more than might not.

  • Dan Kegel spent a couple weeks automating the build of Chromium and filing bugs for all the problems that turned up; see BuildAndTestChromium. Doing something similar for another app or two would be great.

  • Appinstall, created by Austin English in GSoC 2009, which allows automated testing of real Windows apps. Expanding this would be great.

  • It would be great if somebody went through the unattended install scripts at http://wpkg.org and converted them into AppInstall tests. (This idea doesn't even require any C programming.) See discussion at http://www.winehq.org/pipermail/wine-devel/2008-March/063785.html for more details.

  • Other possible sources of debugged unattended installation scripts include http://windows-get.sourceforge.net/ and http://www.playonlinux.com/en/scripts.html. (Potentially wine-doors, too, but their web site is so disorganized I can't tell.)

  • Firefox and OpenOffice have their own test suites; we should run those under Wine. Austin English may have a start on this already, ask him.

  • Creating a Buildbot (see http://buildbot.net) to run all the above daily would be useful.


CMD - implement more robust parser

Possible Mentors: DanKegel, Jason Edmeades http://kegel.com/wine/sweng/2010/ is a project to fix a number of small bugs in Wine's cmd.exe and friends, and to write testcases for it. It has helped bring to light certain flaws in cmd.exe's parsing of if/then/else and () blocks. Somebody could quite usefully spend a summer bulking up the test cases for cmd and friends, fixing any remaining reported bugs, and improving the parser.


Cygwin - improve cygwin support under Wine

Possible Mentors: We'll provide you with the appropriate mentor

  • Wine currently doesn't support Cygwin very well, though several F/OSS programs use it for compiling/testing their Windows builds. Several bugs prevent it from being useful for testing and building, e.g., VLC under Wine.


NTDLL - support performance registry keys

Possible Mentors: DanKegel


Improving Wine Internet Explorer GUI

Possible Mentors: JacekCaban


Improving HTML Help viewer

Possible Mentors: JacekCaban


Implement CHM compiler

Possible Mentors: JacekCaban

  • The task would be to implement CHM compiler similar to hhc as a plain UNIX application.
  • See wine-devel post.


Implement IUri APIs

Possible Mentors: JacakCaban

  • IE7 came with new URI handling APIs. There is a new URI parser and IUri interface that represents URIs. We need to follow these changes and the first step is IUri implementation.
  • The task would be to implement IUri APIs. It's mainly CreateUri function and IUri interface.


Make dxdiag usable

Possible Mentors: We'll provide you with the appropriate mentor

  • First thing requested in a forum of a game: Send me the logs of msinfo and dxdiag
  • dxdiag collects system information
  • With dxdiag, we have tests for ddraw, d3d, dsound, dplay
  • For collecting system information, WMI is used in many new games
  • UCLA students implemented dxdiag as part of http://www.kegel.com/wine/sweng/2009/#dxdiag Their code is fully LGPL'd and is sitting at

http://code.google.com/p/yadxdiag/ waiting for someone to clean it up and submit it.


Implement the Explorer

Possible Mentors: We'll provide you with the appropriate mentor


Winelib Aware Scons (or cmake)

Possible Mentors: Someone in Wine, or someone in the appropriate project (scons but not cmake is a GSoC organizations as well)

  • The goal is to be able to take a visual studio project file for a formerly windows-only program, run it through a magic script, and turn it into a winelib-powered linux-compatible build system.
  • See SconsWine


Cleanup Winemenubuilder to support generating Application Bundles on Mac OS X

Possible Mentors: Steven Edwards

  • There is an initial patch that adds support for building App bundles to launch Windows applications however winemenubuilder needs much more cleanup before this should go in.

http://www.winehq.org/pipermail/wine-patches/2009-December/082960.html


SummerOfCode (last edited 2010-07-22 00:37:14 by AlexanderScottJohns)