The trip from Melbourne to San Fransisco was uneventful except for one unfortunate detail. While waiting for my plane in Melbourne I plugged my iPod into my laptop to charge it up. Just before leaving the departure lounge I remember placing my iPod in my shirt pocket. However as I was boarding the plane I noticed my iPod was missing. I rushed back through to the departure lounge but to look for it but unfortunately I couldn't find it. Total bummer.
I decided to save some money by taking public transport from SFO to the Hotel Google had arranged for me. I used BART and Caltrain and met an interesting bloke who had just graduated from Stanford who was on his way back for the Standford homecoming (which I gather is some kind of football match). It turns out he was a very recent Physics/CS graduate who had just started his own business doing foreign exchange trading with two other friends from Uni. They had worked out some automated trading scheme that enabled them to be profitable for their first year of operation. Their office is a stereotypical garage in suburban LA. I gather their venture is still getting off the ground otherwise he wouldn't have been riding the Caltrain.
Anyway the encounter confirmed a couple of suspicions I'd had. Firstly, you are much more likely to encounter interesting people if you travel cheaply and secondly there is something in the water at Stanford that enables people to dream up interesting new ways to make money.
Why AbiCollab is like a distributed Source Control system.
Although Google paid for my trip, it was pretty clear they're not into wasting money and had arranged that delegates share rooms in their Hotel. My roommate was Don Stewart from the University of New South Wales in Sydney, Australia. Don is doing a Ph.D. in Computer Science and was a Mentor for the Haskell language project in the GSoC. Don was interested to hear my complaints about the difficulty tracking pointers to allocated classes in C++ (he recommends Haskell which has no such issues via a built-in garbage collector that identifies and deletes unreferenced memory) and about AbiCollab, which allows real time collaboration between AbiWord users. Apparently our technique of transmitting Atomic operations through change records, correction for Internet lag by sending information about change records sent and received from remote users and undo correction is similar to modern distributed source control programs like darcs (as used by the Haskell community).
This was a very interesting insight. Firstly that distributed version control systems need to solve the same problems as AbiCollab. Secondly that I had independently discovered the same algorithms as used by these systems and third that our system is likely to scale to large numbers of users, since darcs is successfully used by a variety of large open source projects.
I also got the message that CVS (as used by AbiWord) is antiquated and we should move to something else. Don's description of darcs is very tempting but I suspect we'll just move to subversion.
At the Hotel I connected to the free GoogleWiFi service which pervades Mountain View. It gave perfectly adequate performance.
Next day we were up early and headed off to Google with a number of other SoC mentors. It was a happy gathering and we blithely took photos of each other and everything else we could find with our digital cameras. It was fun to be surrounded by similarly minded geeks :-) The Googleplex is a collection of two story buildings in a Mountain View industrial park. Apparently Google bought the place from Silicon Graphics. The facility has a variety of closed offices, open communal space and meeting rooms of all sizes. Well appointed kitchens are a feature and they provide any sort of nonalcoholic beverage you desire as well as typical breakfast foods and snacks. There is a very well appointed cafeteria which apparently serves free food to all who show up. However you have to visit a website to book your massage. Apparently you can't just turn up for this:-) The bathrooms have a number of little notices imploring engineers to take five minutes to visit various local websites. Presumably these will provide some quick feedback for new features being developed.
Cooperation with OpenOffice.org
We arrived at around 8:00AM, helped ourselves to the free coffee, soft drinks and pastries and mingled. I bumped into Louis Suarez-Potts and Juergen Schmidt, representing the OpenOffice.org mentors and after receiving a good natured insult to AbiWord, we had a chat about ODF compliance. Apparently the OO.o guys would like to set up an independent agency that would produce a comprehensive test suite of documents and measure the percentage compliance of different Office Suites against this suite. I thought the idea had merit since developers could use the suite to tune their input-output filters and users could determine how well different applications compared. I'd like to see this idea extended to other formats like *.doc, *.rtf, *.wpd, and *.abw although it looks like only Google and us will support this last format. Their big concern was to get IBM on board since IBM have a product based on OO.o version 1.x that ostensibly supports ODF. Personally I think they shouldn't worry about IBM, but just create the test suite and review board. Then go ahead and do the evaluations. We can also win on the joint creation of public domain templates for documents.
I was amused to learn that Louis Suarez-Potts uses vi on plane flights for text creation because OO.o takes too long to load. This was too much for me and I strongly recommended he switch to AbiWord since OO.o is clearly not fulfilling his needs. I consider this definitive proof that OpenOffice sucks :-)
The Summit itself
Then the meeting itself got started with a few words from Chris Dibona and Leslie Hawthorn. There were a large number of different morning and afternoon streams. I attended the mainstream sessions on "Screening Students" in the morning and "handling poisonous people" in the afternoon. Overall 60% of SoC students successfully completed their projects. AbiWord failed 2 of our 5 students at the first hurdle and payment point, which was about one third of the way through the program. I was interested to see how other projects fared and whether we could improve our success rate through a better screening process. Like us, many other projects were overwhelmed with the numbers of applications and reported spending a lot of time reviewing applications. I volunteered to type up a few rules a thumb for screening students that represented the consensus of the group. Interestingly one project thought they did the best job possible of student screening and that their success/failure rate represents the quality of pool available.
After the very good Google lunch, I attended the poisonous people presentation by Brian W. Fitzpatrick and Ben Collins-Sussman who have developed various Open Source projects (most recently Subversion) but now work at Google. I received numerous insights from this talk. Firstly, the most valuable asset of an Open Source project is the attention and focus of the commiters of the project. Projects need this attention and focus to advance. The presentation talked about various ways poisonous people can drain this from a project. They introduced a number of technical terms including "Nuclear Power Plants" and "painting a bike shed". They noted that efforts akin in difficulty to painting a bike shed receive far more attention on a mailing list than massively complex features like a Nuclear Power Plant. We finished off with a discussion of sticky questions to the SoC organisers, Like "how do you decide which project to support" and "how do you decide how many students to supply to a project". The answer to the first is overall visibility combined with a subjective measure of coolness for the project. The answer to second is based on the size of the mentor pool in the project, the number and quality of the proposed SoC projects, if there is a strategic interest for Google in the project and finally a subjective measure of coolness.
Creative application cooperation.
At the end of the day I met with Jon Phillips from Inkscape and Behad from GNOME. Jon and I discussed collaboration between Inkscape, AbiWord, Gnumeric and the GIMP. One obvious thing we can do is make sure we have common glib/gtk Windows and OSX Dll's . Other areas where we can cooperate include printing support and perhaps a joint Windows/OSX package of AbiWord/Gnumeric/Inkscape/GIMP/OpenClipa
Behad and I discussed pango and printing with pango. Tomas Frydrych has done an outstanding job incorporating pango into Abiword but is currently stuck trying to get printing working because of gnome-print issues. Unfortunately Jody no longer answers questions relating to gnome-print so we're in a bit of bind. Behad recommended we move to a Cairo based printing system.
My flight left at 23:00 the next day leaving me most of Sunday to explore. Unfortunately I overslept and didn't get going until after 12:30. I took the Caltrain and BART back to the airport. I deposited my bags in storage and spent the afternoon being a tourist. San Fransisco reminds me a lot of Vancouver, Canada and although the scenery is not quite as spectacular, the architecture and buildings are far more inspired. It is clearly a very interesting city and I would gladly spend much longer exploring the place. One particular regret was I didn't find out about the excellent bike-rental businesses until too late.
In all it was a very interesting two days. I learned a lot and established some great connections.
Finally a huge thanks to Google for both SoC and the mentors summit. Both are genuinely valuable contributions to Open Source development and demonstrates real vision on the the part the company. Google is definately one cool outfit.