SummerOfCode

Wine and the Google Summer of Code

Current Projects

  • Improving Wine MSXML implementation
    • by Piotr Caban, mentored by James Hawkins
  • Print Dialog
    • by Gal Topper, mentored by Detlef Riekenberg
  • Implementing proper Control Panel support for Wine
    • by Owen Rudge, mentored by Juan Lang
  • DirectPlay implementation

    • by Ismael Barros Barros, mentored by Kai Blin
  • Wine - Richedit with Tables
    • by Dylan Andrew Harper Smith, mentored by Huw D M Davies
  • Improve Gdi+ Implementation by Adam Joel Petaccia, mentored by Lei Zhang

Congratulations to each of the students.


  • Know C?


Beware of Legal Requirements

You must state, that you follow minimal legal requirements during SoC and in the Past:

  • It's not allowed to read / reuse Windows source code (leaked source / ... )
  • It's not allowed to reverse engineer the Windows files by disassembling / decompiling


Your own idea

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

  • You will have the biggest chance of being accepted by coming up with your own idea. We'll help you with mistakes you make in time indication. And 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 - Merge winecfg and control panel

Possible Mentors: DanKegel

  • Wine provides no graphical way to see a list of installed control panel applets. Wine's "winecfg.exe" tool is kind of like that, 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...


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


DirectInput - Implement missing DirectInput8 features

Possible Mentors: MarcusMeissner

  • Implement DirectInput8 specific features, e.g. ActionMapping and Enumeration by Semantics. This allows application specific mappings of specific actions to specific keys/buttons/whatever. A sample game that requires this is Rally Trophy by JoWood games, which includes a demo.


Direct3D - Implement missing D3D9_xx DLLs

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

  • D3D comes with lots of numbered DLLs (e.g. d3dx9_36). These aren't as mysterious as they sound. It probably wouldn't be too hard to support the ones lots of games use, see D3DX

  • [details, please]


Direct3D - Implement fixed function shader

Possible Mentors: StefanDoesinger

  • OpenGL and Direct3D have a fixed function pipeline for vertex and fragment processing, which can be configured quite flexibly, but supports only a fixed set of functionality. With DirectX 8, a programmable pipeline appeared via Pixel and Vertex shaders. Currently Wine implements the fixed function D3D pipeline by using the fixed function OpenGL pipeline. This has a few limitations, like the lack of vertex blending, which we could overcome by using an OpenGL shader instead if available. This project would involve writing code to generate GL shaders for D3D fixed function settings either via the GL_ARB_vertex_program and GL_ARB_fragment_program extensions, or with the newer OpenGL shading language. Infrastructure is available already.


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


Direct3D 10 - Write tests

For implementing Direct3D10 test cases will be very helpful. Writing a comprehensive d3d10 testsuit might be a good project.


DirectPlay - Implement the core protocol

Possible Mentors: KaiBlin

  • Now that Microsoft released (almost) complete specs on the DirectPlay4 protocol, it's time for Wine to get it's own set of DirectPlay DLLs that work.

  • See the list of DirectPlayGames for an impression on how many gamers will love you if this will work out of the box.


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

  • After Wine 1.0 work on Direct3D 10.0 will resume. Tt 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 games D3D10 games won't work second 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.


GDI+ - implement missing functions

Possible Mentors: LeiZhang

  • GDI+ has enough functions to stun an ox! But most of them are pretty simple. A group of students at UCLA made good headway on adding a bunch of them; see the class project page for some ideas.


Richedit - implement Windowless mode

Possible Mentors: MaartenLankhorst

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


Richedit - Tables

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

  • Wine's richedit implementation doesn't support tables yet, and you just KNOW somebody's going to want to load an .rtf file that has a table in it. This should be fun to fix.


Print Dialog

Possible Mentors: DetlefRiekenberg

  • Believe it or not, Wine doesn't have a good Print dialog box yet! The task would be to implement PrintDlgEx; you'd end up touching the comdlg32, printui, and compstui DLLs. The preferred Printing Dialog since w2k allow custom property sheets.


Test Suite

Possible Mentors: DanKegel, AndrewRiedi

  • Wine can only do rapid releases thanks to its test suite, but our test suite could be so much better.
    • For instance, we don't really have an easy to use set of automated tests for real apps.
    • It would be great if somebody went through the unattended install scripts at http://wpkg.org and picked out the install scripts for freely downloadable apps that work on Wine, and then wrote a simple script to run them all.

    • That would be an awesome regression test which we could run before every release.
  • 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.)


FUSE - Some features for Wine

Possible Mentors: KaiBlin

  • Wine could use some FUSE file systems to make life easier. These include
    • A case-insensitive file system for .wine/drive_c
    • Better ISO FUSE file system integration
      • - I don't know if the FUSE api supports enumeration of mounts in the VFS but it would be cool if explorer could detect if a FUSE iso mounted filesystem is mounted somewhere in the VFS and auto-magically create a fake cdrom device associated with this mount. It would solve some of the complexity we have in cxtest where you have to mount iso images for regression testing, plus it would just save a bunch of time for stupid installers that assume they are always running from a real cdrom.
    • A FUSE wrapper for remote named pipes using libsmbclient
    • a .cda / audio track information file system for music cdroms - bug 11320 has more information


NTDLL - support performance registry keys

Possible Mentors: DanKegel


Improving Wine Internet Explorer GUI

Possible Mentors: JacekCaban

* See wine-devel post.


Improving HTML Help viewer

Possible Mentors: JacekCaban

* Most functionality is not implemented (just run hh.exe and look...) and API is almost totally not implemented. Also current implementation can't handle many chm files.


Get Mozilla compiling as a Winelib application

Possible Mentors: StevenEdwards

* See wine-devel post.


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 collect system Informations
  • With dxdiag, we have tests for ddraw, d3d, dsound, dplay
  • For collecting System-Informations, WMI is used in many new games


Your own idea

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

Once Again: Use your own Ideas


CategoryToDo

SummerOfCode (last edited 2008-05-11 23:43:52 by nathan.n)