Contents
- Google Summer of Code 2013
- Wine and the Google Summer of Code
- Beware of Legal Requirements
- Ideas
- Your own idea
- Tools - Implement new control panel applets
- Tools - Winetest Graphical User Interface
- D3DX9 - Implement missing D3DX9 APIs
- Direct3D - Conformance / Performance / Interactive tests
- Direct3DRM - Implement rendering for D3DRM
- Richedit - implement Windowless mode
- Registry - implement merging between HKEY_CLASSES_ROOT and HKEY_CURRENT_USER\Software\Classes
- CMD - implement more robust parser
- Cygwin - Improve Cygwin support under Wine
- Improve dxdiag and/or dxdiagn
- Xinput / Xbox 360 controller compatibility
- Implement OpenMP (vcomp.dll)
- MSXML - implement XPath 1.0 processor from scratch
- Portability - Port WineLib to a new architecture
- Implementing XACT sound dlls
Google Summer of Code 2013
Wine is an accepted organization for GSoC 2013
This page collects some tips for students who want to work on Wine during the Summer of Code, and provides a few ideas for projects.
Wine and the Google Summer of Code
- Do you:
Know C?
Have an idea for Wine that might help fix Wine bug 10000?
If so, please introduce yourself on the wine-devel mailing list or the #winehackers IRC channel at freenode.net, and apply for a Google Summer of Code scholarship!
- Hint/reminders:
Look at PreviousSummersOfCode for previously accepted proposals / their results
- Do not forget: we can only support one proposal per application
We cannot accept ReactOS proposals, so please only make proposals that will benefit Wine.
Copying proposals verbatim will get your proposal deleted without even looking at it twice. You have to make your own proposal. See also PostgreSQL's Summer Of Code Advice
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
People who work or have worked for Microsoft should probably not participate
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.
Tools - Implement new control panel applets
Possible Mentors: We'll provide you with the appropriate mentor
Knowledge prerequisite: C
Difficulty: Easy to medium, depending on the controls you want to work on
- 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.
- Improve the Internet Explorer control panel: Configure proxy and cache settings and more.
Tools - Winetest Graphical User Interface
Possible Mentors: We'll provide you with the appropriate mentor
Knowledge prerequisite: C
Difficulty: Easy
Currently the only way to see test results in a nice synthetic format is to upload the report and view it at test.winehq.org.
It would be nice to have a mode in winetest.exe that would present a nice table of available tests with their results, ideally updated on the fly as tests are run.
- The list could also be interactive and allow you to click on a test to run it again, view its result log, etc.
D3DX9 - Implement missing D3DX9 APIs
Possible Mentors: Stefan Dösinger, Matteo Bruni
Knowledge prerequisite: C, maybe some domain-specific knowledge related to the APIs you want to implement
Difficulty: Easy to medium, depending on the functions you want to work on
D3DX9 dlls contain various utility functions related to common 3D graphics tasks. For instance they contain math functions, functions for loading textures, compiling shaders and much more.
- A good chunk of those APIs has been implemented but a lot is still missing, such as:
- some math functions (what's left is mostly about spherical harmonics and precomputed radiance transfer)
- some mesh functions (D3DXComputeNormals(), D3DXOptimizeVertices(), ...)
- a few texture functions
- quite a few ID3DXConstantTable methods
- various shader-related functions (D3DXGetShaderInputSemantics() and D3DXGetShaderOutputSemantics() to name two)
- effect framework bits and pieces
- fonts framework
- The project would choose a reasonable subset of the missing functions and the work would consist of writing behavioral tests for those functions and actually implementing the functions themselves. We will help you in selecting a reasonably-sized subset of the API, suitable for a GSoC project.
Direct3D - Conformance / Performance / Interactive tests
Possible Mentors: Dan Kegel
Knowledge prerequisite: C
Difficulty: Medium
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 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 conformance 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, and yagmark), or at the very least bug reports
- It'd be nice to also fix some of the problems, too. For instance, figuring out why wine is slow at some app, and then fixing it, would be great.
Direct3DRM - Implement rendering for D3DRM
Possible Mentors: André Hentschel, Christian Costa
Knowledge prerequisite: C, COM
Difficulty: Medium
Direct3D Retained Mode is mostly a stub, it needs to interact with DirectX 8/9 to actually display something
- Even if it's an old library and has been removed in Vista, there are small Games based on it
Richedit - implement Windowless mode
Possible Mentors: Maarten Lankhorst
Knowledge prerequisite: C
Difficulty: Medium
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).
Registry - implement merging between HKEY_CLASSES_ROOT and HKEY_CURRENT_USER\Software\Classes
Possible Mentors: We'll provide you with the appropriate mentor
Knowledge prerequisite: C, Registry
Difficulty: Medium
- HKEY_CURRENT_USER\Software\Classes and maybe more should get merged/mirrored with HKEY_CLASSES_ROOT.
There are already some tests, but more are needed.
AndreHentschel has been working on the tests.
CMD - implement more robust parser
Possible Mentors: Dan Kegel, Jason Edmeades
Knowledge prerequisite: C, CMD commands
Difficulty: Medium
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
Knowledge prerequisite: C
Difficulty: Medium to hard
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.
Improve dxdiag and/or dxdiagn
Possible Mentors: We'll provide you with the appropriate mentor
Knowledge prerequisite: C
Difficulty: Medium
- First thing requested in a forum of a game: Send me the logs of msinfo and dxdiag.
- dxdiag collects system information, and has interactive tests for ddraw, d3d, dsound, and dplay.
- Two ways to go: make native dxdiag gui work better, or implement a builtin dxdiag gui, or both.
UCLA students are implementing builtin dxdiag gui for wine, see http://www.kegel.com/wine/sweng/2011 and http://code.google.com/p/yadxdiag/
- Wine-specific tests, like a tiny subset of winetest, might be handy to identify whether the user's wine suffers from common gaming-related bugs.
Xinput / Xbox 360 controller compatibility
Possible Mentors: We'll provide you with the appropriate mentor
Knowledge prerequisite: C
Difficulty: Medium
Michael Gruber submitted patches from 2009 that appear to actually implement xinput:
There were two follow up threads in relation to this:
http://www.winehq.org/pipermail/wine-devel/2009-July/077190.html
http://www.winehq.org/pipermail/wine-devel/2010-June/084401.html
Implement OpenMP (vcomp.dll)
Possible Mentors: Dan Kegel, André Hentschel
Knowledge prerequisite: C, at least x86 assembler
Difficulty: Medium to hard
- OpenMP is a shared memory multiprocessing API and vcomp.dll contains the Windows implementation for it.
- Only two games are known to be affected at the moment.
- Non-parallel fallback implementations might be useful?
MSXML - implement XPath 1.0 processor from scratch
Possible mentors: Nikolay Sivov
Knowledge prerequisite: C
Difficulty: Medium
The goal here is to stop using libxml2 for XPath, it's necessary to completely switch from libxml2. Important things to keep in mind:
- changes should be incremental, with a fallback to libxml2 until new processor is fully functional.
- processor should not depend on libxml2, including its DOM part. Preferably use existing DOM implementation at msxml level.
- lots of tests need to be written. Cover every aspect of XPath specification is not possible during GSoC but tests should be easily extensible.
- expression parser better be done with bison and a lexer could be written from scratch.
Portability - Port WineLib to a new architecture
Possible mentors: André Hentschel
Knowledge prerequisite: Assembler for the target
Difficulty: Medium, depending on the target
Wine can run WineLib applications on different CPU architectures, but needs at least some assembler code for that.
- You will also need a test system. Qemu is possible, but real hardware is recommended.
Implementing XACT sound dlls
Possible mentors: Andrew Eikum
Knowledge prerequisite: C
Difficulty: Medium
The goal here is to implement a subset of the Microsoft Cross-Platform Audio Creation Tool dlls, also known as xact. There are a few sections (xactengine, xaudio, x3daudio, xapof) involved, so only a portion would be done for the project. You should have (or read up on) experience with Linux sound systems (ALSA/OSS) or other audio experience.
See also bug 26833

MoinMoin
Python