Google's Summer of Code
Google's Summer of Code is designed to introduce college students to the world of Open Source Software Development. Students whose proposals are accepted receive a stipend; in exchange, they spend the summer implementing the project described in their proposal.
For more info, see:
SummerOfCode - redesigned page
Applying for the next Summer of Code
Here are a few suggestions for students interested in participating:
Things to consider:
- You should know C already, or at least have a feel for pointers, memory etc.
- You don't need a good knowledge of the Windows API or operating systems to start with, but you will probably need to learn some of it for the project.
- Relative to the whole job market, not many people have the sorts of skills Wine hacking will give you. Doing any serious work on Wine will not only make you a more confident developer, it will look great on your CV/resume.
How to succeed:
- If possible and relevant, begin by adding the appropriate conformance tests to wine.
- Submit patches early and often, so we can track your progress and we'll be able to help you much better if we can see regular progress. Also Alexandre is more likely to accept smaller (more obviously correct) patches.
Requirements
You need submit a review report at the end of the project, in the form of a wiki page. It is best if you use the wiki as you go along, to make sure you capture as much relevant information as possible. The review should contain:
- Short intro on what the project was about
- What got done
- What is left to do
- Future (related) work
- A look back (what was under/over estimated, etc)
- Conclusions
Helpful Links
Currently under construction. Will include links about
- Writing a good application for GSoC
- Writing a review, in more detail than the above
- Setting up a public git repo on repo.or.cz
Project Ideas
Project idea suggestions:
Implement anything cool and useful you are passionate about.
Or pick some real-world app or game that doesn't work well, and improve Wine so it installs and runs the app better. (Some good examples might be Photoshop, Visual Basic, a game etc)
Or pick a Windows feature that is incomplete in Wine, and improve the feature and its conformance tests. (Some good examples might be riched20, DirectPlay, etc)
Or look at wine-devel where various ideas have been posted, for example:
Implementing a WinePluginApi so other programs can use Windows DLLs inside of Linux apps
Improving our HTML/Win32 Help viewers.
Implementing the ASIO audio infrastructure for Cubase.
Implement the MS Wsock dll (dlls/mswsock), an enhanced winsocket implementation.
Complete the Wine Web browser (aka. Internet Explorer) ie. frame controls, toolbar, status bar.
Full URLMoniker implementation. (IE working with builtin urlmon.dll).
Implement transacted mode for OLE32 Storage (STGM_TRANSACTED).
Improve cmd.exe compatibility.
Fix all remaining regedit bugs.
Get Mozilla compiling as a Winelib application (http://www.winehq.org/site/winelib#mozilla)
Run the MDAC conformance test suite against Microsoft's MDAC, and file bugs / write test cases in C / fix anything it finds
DirectInput: Implemented DirectInput8 specific features: ActionMapping and Enumeration by Semantics (added by MarcusMeissner )
Write a case insensitive FUSE filesystem for us to put the entire ~/.wine directory in. See CaseInsensitiveFilenames
Fixing the easier wine 1.0 marked bugs.
- Implement functions of the d3dX dlls that games use.
- Fix the mouse warping bug, by getting relative mouse cursor movement patches into Xorg, and letting wine use them.
- Writing a fixed function shader to replace the fixed function pipeline.
Add console configuration to wine, see ConsoleConfiguration
- Windowless support for rich edit controls
- Tables support in rich edit controls
Implement PrintDlgEx (comdlg32, printui, compstui): The prefered Printing Dialog since w2k allow custom property sheets (added by DetlefRiekenberg)
- Simple user tests executable from winecfg:
Tip: Do not ask us what we want you to do. You should pick a project you want to do.
Tip: Don't feel you have to use one of the above ideas. In fact, a custom project proposal is likely to be more impressive, as it shows you've put time into researching the project and getting familiar with its needs.
Tip: Some things that look trivial may not be, and vice-versa. Investigate well!
(Hint the wine-devel mailing list archive is a good start for that.)
Proposal suggestions:
- Write up your proposal simply, concisely, and in your own words
- Include links to the Wine bugzilla entries that your project will fix
- Include some evidence that you are a good programmer
- If you have already submitted patches to wine-patches implementing part of your project, please link to them from the proposal
Discuss your proposal in advance on the wine-devel mailing list to get feedback from the Wine community
- Tell us why you're the best person for the job
Here are a few pages that might give you some ideas of what needs doing:
Mono-Wine bridge: let Wine use *nix or win32 Mono to provide .Net functionality
Java-Wine bridge: let Wine use *nix or win32 JRE to provide Java functionality
http://www.winehq.org/site/fun_projects: Wine's list of fun projects
Here are a few looks back at SoC 2005 by mentors and orgs:
Experience of One Mentor, by Stanislav Shalunov (with advice for applicants)
Google's Summer of Code and Mono, by Michael de Icaza
