* If you have an idea, please post it on [http://www.winehq.org/pipermail/wine-devel 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.

* If you have an idea, please post it on [http://www.winehq.org/pipermail/wine-devel 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.

* 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.

+

+

----

+

=== Improve accessibility of Wine ===

+

+

Wines accessibility for e.g. blind people is lacking and can use improvements.

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.

Improve accessibility of Wine

Wines accessibility for e.g. blind people is lacking and can use improvements.

winetest improvements

Improve the server and/or client side of the wine test framework. (?)

signtool.exe

A tool to verify signatures on MSI packages / EXEs(?)

(Need to evaluate if effort matches GSOC effort scope.)

Calculator

Implement a calc.exe.

DPI Resolution handling

We have some DPI resolution issues, some work in this area is needed.

DirectPlay

Is there any work needed on DirectPlay... Identify missing things.

Common Item Dialog Box improvements

Ask Vincent Povirk about details / ideas.

Improvements of this dialog box framework.

Improvements of specific Windows applications

Hard to scope the effort for specific applications beforehand to meet the GSOC effort range.

(brainstorm: Perhaps select some "known" apps that might be in the range?)

Improve the AppDB

Our application database written in PHP code is in need of improvements and bugfixes. (fill in)

Cross check with Roseanne on needed projects.

- accessibility

Tools - implement a wine diagnostic tool

Collect data about the current installation that can be used for AppDB or bugreporting. Things like wine version, operating system, native dlls versions, etc.

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 - Microbenchmarks

Debugging performance problems in full games is a challenge. Small test programs that test the performance of single operations can help to locate performance problems and fix them. Once fixed, those test programs can be used as regression tests to detect regressions that are hidden inside the margin of error in games. With an equivalent test case in OpenGL it is possible to separate problems in wined3d from problems in the driver.

Stefan Dösinger has already written test programs for draws, buffer uploads, clears and a few other operations and is testing them on a daily basis. More tests need to be written. The test programs will probably be maintained outside the Wine source tree.

A good application should contain a list of d3d operations to test, a rationale why those operations are good candidates and a short description how each of the tests will be implemented.

Direct3D - Automated game benchmarks

Monitoring performance over time is a tedious task. In many cases it requires manual gameplay, and the results are unreliable if the gameplay is not 100% the same every time. It would be much better if the game could be scripted to produce a reliable result without human intervention.

Many games have a replay mode or even a builtin benchmark mode for this purpose. Stefan Dösinger has written a few scripts for Half Life 2, Unreal Tournament, Trackmania and a few other games to monitor performance. More tests are needed, especially with newer games.

If you know some games that offer a benchmark mode that can be controlled from the command line or via Autohotkey this task may be right for you. The goal is to write scripts that can run the games on Windows (and thus by extension in Wine), configure common settings, run a benchmark and read the result. Stefan's scripts track the results via the Phoronix Test Suite, but other performance monitoring tools can be used as well.

The most notable missing features are geometry and texture handling, state management and actual 3D draws.

Applicants should have understanding of how 3D APIs work, and specific knowledge in old Direct3D / DirectDraw versions will be of an advantage. You will have to work with file formats for 3D geometry and textures, fixed function transformation and the really awful Direct3D 1 interface.

CMD - implement more robust parser

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

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.

Implementing XACT sound dlls

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, xapofx) involved, so only a portion would be done for the project. Some examples would be implementing xaudio effects like reverb and echo, or implementing 3D positional audio.

Winecfg / winemenubuilder - enhance MIME type handling

Wine tries to integrate Windows programs as much as possible into your unix/linux system and provides ways to directly assign MIME types to programs running in Wine. This makes it possible to open Word when you click on a .docx file in your file browser. However, this kind of integration is not always desirable, especially if there are native programs which support the same MIME type. At the moment a user can only decide to disable this kind of integration completely or Wine will automatically forward all MIME type registrations of Windows programs, resulting in questionable ones like .txt -> notepad and .png -> Wine Internet Explorer. If a user wants to remove such MIME type registration again, it is necessary to manually delete the according files.

The idea of this task is to provide a GUI (most probably as part of winecfg) to control the creation of such MIME type assignments and therefore making Wine more user friendly. You can find ideas how such a GUI could look like in the Forum or in the Bug Tracker. This task is also suitable for new Wine developers as no deep knowledge about the Wine source code is required. It might help though to have some knowledge about Win32 Dialogs.

Tools - Winetest Scripting Interface

Wine has an extensive set of regression tests. These tests can be helpful for projects Wine depends on. E.g. the developers of 3D drivers may want to run our d3d tests and our d3d implementation to test their OpenGL implementations.

One obstacle Mesa developers reported is that the default way to run tests (run "make test") only reports success or failure. That's OK when all tests are passing, but it is a problem when there are known test failures and you want to make sure you don't introduce additional failures. In this case users have to manually check the output written to stdout, which is a terrible task.

The Wine testbot has some scripts to ignore known failures. It might help developers of dependency libraries if we made them available outside the testbot environment somehow. On the other hand we do not want to make the existing test code more complicated than it is. Ideally the tests themselves would not be modified.

For your proposal please think about what the API of such a scripting interface would look like and which information it provides to its callers.

DirectWrite: Implement vertical text layout support

DirectWrite is a text layout and rendering library available on recent Windows releases, starting with Vista. It provides several API layers to manage font file, process text, render it, and interact with GDI subsystem. A lot of basic functionality is already supported in Wine, this proposal is however about specific feature to process and render text in vertical mode. This touches every layer mentioned above, brief summary on what needs to be done follows:

AnalyzeVerticalGlyphOrientation - this method analyzes input text and returns orientation for every part of the text;

Uniscribe is the text layout and rendering system for earlier versions of windows and much of the Wine UI. The frameworks is mostly in place as well as a first pass implementation for many languages including the Indic languages. However nobody with more than a passing knowledge of the languages has dug into the details and issues in properly displaying these complicated languages. Including issues around separate Indic matras. Ideally the student working on this will also be fluent enough to at least start doing some translation of the Wine strings into the target language as well, so that Wine's usability in those languages greatly improves.

Implement Unicode string normalization

Possible mentors:

Knowledge prerequisite: C

Difficulty: Medium

Unicode string normalization handles transformations between composed and decomposed character forms. Windows exposes this functionality with NormalizeString and IsNormalizedString functions.

Implementation should be based on publicly available character classification data provided by Unicode.org. Simple external program to check algorithm conformance using Unicode.org test data is also required, as well as some Win32 tests added to wine tests suite.