How I succeeded with SOC2007
This is a bit wine-specific, but what I say might apply to other projects as well.
I already knew about the summer of code, but in 2005 I couldn't sign up because I was 17 at the time, and in 2006 I was too late due to hearing to late about it and bad luck.
What got me interested in my project was just playing vice city in wine. It would work work, but once every hour it would crash unrecoverably due to a deadlock in the alsa sound driver. The OSS sound driver didn't work for me. This was somewhere in januari. I had a patch which sort of fixed the specific issue, but it caused a .5 second delay in sound. The only way to properly fix that was by an overhaul of the wine directsound code and the winealsa code. I knew this would take a few months at least, so I waited until summer of code was announced, and then wrote an application for it. This is the public part of the application, for the private part I also added the following:
=== My experience with wine: I've worked on various components in wine before, specifically: - video4linux and directshow and qcap: getting webcam support in wine for IM applications, and a lot of bugfixes to quartz - Various small patches to different components to make programs I use work: A lot of them were to make msn messenger 6.2 work properly in wine, which it now does with windows version set to win2k, however it still needs riched20 from a windows installation because implementing createtextservices meant rewriting a great part of riched20, which was supposed to be a part of someone else's SoC a year (or 2?) back - dsound/winealsa: I've worked on this code a little bit past few months, I think I now understand alsa and directsound code, this took some time to learn, but it means that it will be easier for me to complete the project I've described above. Most of the described code shouldn't be too hard to implement, however if I estimate correctly, the hardest parts will be to get software buffers and locking code right, the best tests are winamp and games, winamp because from my experience it is very picky about directsound, and games because they stress test winealsa under a heavy load. That said, I enjoy working on wine, and I have sort of missed doing it after I was done with my webcam in msn messenger project, I like working on directsound as well. I even lost some sleep over it when I was trying to get those initial patches in the wine tree, and I don't regret it. It's nice to combine work (on sound) with play (testing games and winamp). The first alsa patches I made were meant to stop vice city from crashing, and they worked, but I plan to get even more in alsa working properly, so that OSS isn't needed any more. In the meantime I'm working on a simple GUI test program that will run in both windows and linux, that will help me understand the code and help me test it even better. I put a link to it at my wiki userpage.
After that comes the nerve-wrecking waiting, until I got an email confirming my application was accepted! Hooray! I got in contact with the mentor assigned to me.
Because testing in games is quite hard, I needed a simple test application that would perform the same thing games do, but without the overhead of 5+ minutes load time. So I wrote a simple test app I named 'Pointer Eater' . This I did in the time between accepted application and community bonding period. I also did a little bit of work on alsa/dsound to get more familiar with the codebase. I also got a bit of luck: Someone else heard about my application and contacted me privately. He had some patches that would help directsound software mixer to be less complicated. I didn't understand these patches at the time, but I cleaned it up and made it work for my pc. However it was broken, and didn't work as advertised (yet). Fortunately I still had the whole summer to work on it..
After the community bonding period ended I started doing real work on it. I already spent a few hours a week on it, but now I spent a few hours a day on it after school. I kept in regular contact with my mentor. I didn't do it like a few hours every week, but basically I kept documentation at my wiki page. Every time I started working on something, I got stuck or something else I would chat with him on irc. Sometimes this would mean several times a week. Sometimes not for 2 weeks. He hammered that it was important to submit the patches I made to wine. I did that, but I didn't understand it at the time. After a while I began to understand it: Creating code is only half the work, getting it submitted into wine is just as hard and the bigger the patch, the harder it is. Smaller patches are easier to accept then big patches.
I began working on the items I listed in the summer of code proposal page. Some of them were easy, others were hard. I also skipped quite a few items because they were not doable in the set time limit. This is also something important. Not doing things is better then doing things that could never be completed in the set time.
I spent quite a bit of june and most of july and august on my soc2007 project, but I was ok with it. After the 'pencils down' I took a break, so I still had a little vacation.
