Five CS Undergrads Prove their Programming Mettle with Google Open Source Projects

Google Summer of Code Accepts Five CS Undergrads for Open Source Projects

"When I found out that I was accepted, I told everybody. I was not humble at all. Anybody that came up to me, I just wanted to ask them what they were doing this summer so I could tell them what I was doing," says rising fourth-year Pavel Krajcevski of this summer's Google Summer of Code, a Google-sponsored program that gives students the unique chance to work full-time coding a real-world open-source project and pays them for doing so.

Krajcevski, along with Marcus Westin('08), Karl Norby('10), Nick Edds('10), and Jordan Lewis ('11) beat out stiff competition from around the globe to participate in this year's program, joining 1120 other coders from around the world to work on over 175 projects with influential organizations as diverse as Fedora, Perl, and One Laptop per Child. Under the watchful eye of a professional mentor, these students break into the world of free and open source software programming and benefit from an industry experience.

“Our goal with Google Summer of Code is to increase the world's supply of open source software while providing young programmers inspiring, meaningful summer jobs,” says program manager Leslie Hawthorn of the four-year old program. Rising second-year Jordan Lewis is taking full advantage of the opportunity; this is his first major open-source collaboration. He has just finished his first year at the College but has been programming since the beginning of high school. This summer he is working on one of his favorite programs, the text editor Vim, trying to implement a save and recovery feature for undo-trees.

A self-described die-hard Vim user, Lewis says he is simply enjoying working on a program that he uses on a daily basis. His project takes undo operations and saves them between editing sessions, so that users can open a document and begin undoing the changes that they made in previous editing sessions. The complication is that in Vim, undo operations are saved in a tree-like structure so that any editing change made ever is saved; normally, once a change is edited, that original change cannot be recovered, but this doesn't phase Lewis. He just wishes that more people knew about this feature. "Betcha can't do that, emacs!" is his response. The University of Chicago students were selected out of a pool of 7,100 applicants from over 1,300 universities and colleges; their colleagues come from 98 other countries. This year's program represents the most proposals granted to date–25% more than last summer, which will add to the millions of lines of code written to date.

To apply, the students select one of the 175 participating organizations, each of which has published a list of project ideas for prospective coders. Students submit a project proposal to Google based on one of the organization's suggested projects or they create their own. Each participating organization ranks the applications, and Google determines which students and how many will be admitted to work for each organization, allotting more students to bigger organizations. Additionally, every admitted student receives a mentor from within their hosting organization to guide them through what is for most their first foray into major open-source work.

Rising Third Year Nick Edds found his mentor and project idea at the PyCon conference. Upon hearing an inspiring talk by Python developer Collin Winter, Edds decided to get involved. He approached Winter, who, as luck had it, was interested in becoming a mentor for Google Summer of Code. With the support and advice of an industry insider, Edds' project proposal, improving the 2to3 tool for Python, was accepted. “[Working on the 2to3 tool] seemed like a pretty cool project and I had wanted to do something for Python. I had a bunch of ideas how to make it faster and got a bunch more from my mentor, so I knew I would have plenty of stuff to keep me occupied,” says Edds. "Plus, programming in Python is fun."

Adding to the difficulties of joining a new work environment was the project's start date: three weeks before the formal end of the University of Chicago spring quarter, forcing students to juggle both exams and a new job simultaneously. This, Edds admitted, was no piece of cake. "It was a little crazy the first few weeks," he said.

Krajcevski was even worse off. A participant in the spring quarter mathematics program at the University's Paris Center, he had to fight springtime fever in the City of Light to begin his project on time. It was nothing short of a herculean feat that had him ignoring all that Paris has to offer to instead scour papers and study the conventions of the Crystal Space engine, and in the end, he admits that his best efforts at concentration were not very successful because there was so much to do in Paris that he knew he wouldn't be able to do back in Chicago.

Despite the hectic start, Kracjevski, as with most of the students, reports being on schedule and pleased with his work. "I'm one-hundred percent satisfied with everything that's been going on so far," he says of his project, the real-time rendering of water meshes in 3-d graphics. He's trying to create a framework that allows developers to vary the various properties of the waves.

The project idea was originally conceived at the end of the department's Computer Graphics class, "the best class" Kracjevski has ever taken. He's been dreaming of being a video game designer since the age of eleven, and his graphics project fits in perfectly with his future career plans. Luckily for him, he remembered a classmate in his Graphics project mention Google Summer of Code just in time to submit an application before the program deadline.

But don't be fooled by the enthusiasm. Some of these coding projects might be fun and games, but they are still serious work and require a lot of learning. Kracjevski, already a double major in Mathematics and Computer Science, rates the program as much more difficult than his already demanding College coursework because he has to integrate his work into an already functioning program.

And don't forget the background reading required to prepare for working with coders far more experienced and versed in the local conventions. "I had to do a lot of reading so I could get used to local conventions. A lot of papers; everybody has their own method for calculating water meshes," says Kracjevski.

Lewis agreed that there was a steep learning curve in the beginning. "The most difficult part of my project thus far has been understanding the various relevant parts of Vim's source code well enough to dive in and work," he says. "Vim has a very mature code base with many contributors, so its not always very easy to understand what's going on."

Sometimes not understanding can lead to embarrassment. In an email to his mentor, Kracjevski mispelled 'torus' as 'Taurus'; the reply simply linked him to a Google image search of the zodiac sign. "Embarassing things happen everyday because I ask questions that are apparently easy but I've never done it. It's kind of intimidating working on this project with these guys who've been working on this project for ages and I'm just this new guy coming in. "

Perhaps the most stressful period is the evaluations, which determine whether or not they will be paid. Google doles out a small sum of money upon acceptance, then half of the remaining money during mid-term evaluations in July, and waits until the completion of the project on September 1st before again paying its developers, a schedule that translates into much stress for students.

But worst of all, says Kracjevski: "You have to pass the evaluations and complete the program to get the t-shirt."