- Keynote: 5 a Day, and Session: Failing to Succeed
- I know that Robert Lefkowitz has a following, but I had never seem him talk before. He is a dynamic speaker, fun to listen to, and obviously knows his stuff. The keynote was an extended metaphor about how open source is like tomatoes. I cannot possibly give it justice in a blog post, so I won’t. The session on failure was also very interesting (and packed); it is important to note that he’s not giving the trite “failure is ok” mantra that I sometimes hear from some speakers. It was a much more nuanced “failure is ok, as long as you identify and acknowledge the failure quickly, and learn from it”. I’ll try to blog more about this later.
- Session: Python in Mozilla
- Mark Hammond gave a straightforward summary of how Python could be used in Mozilla. There wasn’t really anything I didn’t know: basically the deployment problem is mostly unsolved, but there is at least a plan to have a single, separate Python install for the Mozilla runtime. We’ll have to figure out how to make this work in practice.
- Lunch: Mark Hammond and other Python developers
- Session: Building Internet Applications with Mozilla XULRunner
- My own talk went well; there was a good and varied crowd, and they asked good questions.
- BOF about the Mozilla platform
- Session: Handling Cross-domain XMLHttpRequests
- This session wasn’t what I thought it was going to be. It was about how, in today’s browsers, to retrieve data from “other” websites. A range of techniques were discussed, including cooperative techniques like JSON and server proxying using Apache.
- Session: Embedding a Database in The Browser
- This session discussed techniques to use Java to embed the Apache Derby engine in browsers for client-side database transactions. To actually make this useful, the Derby engine needs to write the database to the local disk, which requires a signed JAR and asking the user for enhanced privileges. For the vast majority of web use this seems unacceptable… it might work in some intranet environments. The speaker, David van Couvering, was unaware of the WhatWG specifications for persistent client storage, and we had a brief conversation after the talk about whether Derby could be used to implement the WhatWG spec in older browsers that don’t have a native implementation. But it still seems that Flash client storage would be as least as useful to provide a compatibility layer.
- Session: The Atom Publishing Protocol as Universal Web Glue
- The Atom publishing protocol is not the same thing as the atom data format. It is a protocol layered on top of HTTP that allows applications to publish data to the web using a standardized format. It looked like a well-designed protocol, but not especially useful for me personally, since I don’t mind typing my blog posts into wordpress. I’m still annoyed that the atom data format hasn’t standardized a way to aggregate posts and responses (or threaded conversations, or references to external feeds to be incorporated as responses to a post)… if somebody posts an interesting entry, I don’t want to have to manually add the comments feed for that entry to my feed reader.
- I meant to attend Extending Ruby with C, but lost track of time while talking to somebody in the hallway. It seems to me, now that Mark Hammond has implemented the work for DOM Scripting Agnosticism, that RubyXPCOM wouldn’t be hard to implement.
- Tutorial: Leveraging Mono for Cross-platform Development
- I only went to half of this tutorial. It was targeted at people who may not know or have used Mono or C# before (I’ve read books and done some security-oriented programming in C#, but no GUI development). It was quickly clear to me that Mono suffers from the same deployment issues that have plague .NET in the GUI realm: it is painfully difficult to deploy a .NET/Mono client application targeted at “ordinary end users”. This is especially true if the app uses the GTK# GUI framework.
- Dinner: Shane Caraveo and David Ascher
- Very interesting conversation about how Komodo uses the Mozilla platform, and how me might be able to work together in the future. ActiveState has an internal testing tool written which records DOM events over a series of actions, which could be very useful for unit-testing. ActiveState is going through some exciting changes and I hope to see some new and exciting innovations from the company in the future.
I’m at OSCON, and going to try to blog regularly about the sessions that I found interesting. Monday afternoon I went to a tutorial led by Kaliya Hamlin about organizing face-to-face meetings in open source communities, especially “open space” conferences.
I must admit I was skeptical when I went to the meeting: it sounded like a very “warm and fuzzy” topic, and I thought I was unlikely to get specific techniques to improve communication. I was quite wrong! The tutorial was very interesting and thought-provoking. I learned a lot more about the techniques of organizing “open space” conferences; previously I had only been exposed to open space as a scheduling technique for Mozilla all-hands meetings. Particularly important is the invitation phase of the meeting, which fundamentally shapes the attendance and scope of discussion.
What was even more interesting, though, were the communication techniques in the second half of the tutorial that the entire group used to talk about communication. (A rather mind-bending arrangement, but it worked!) I was especially impressed by “the fishbowl”, a technique of arranging space for a group meeting where a large group of people is able to discuss a (potentially controversial) issue without constant interruption, and without allowing the people with the loudest voice or most dominating personality to control the discussion:
- Have the participants arrange the chairs in the room in concentric circles. The “inner ring” consists of 6 (or so) chairs; the next ring perhaps 12, and the remaining “cloud” of people around the edges.
- Select 5 people (or ask for volunteers) to begin the discussion; there is one empty chair in the inner ring. Everyone else finds a seat in the outer rings.
- Only people who are in the inner ring are allowed to talk. If somebody on the “outside” feels a strong need to talk, they take the empty seat in the inner ring. One of the other people in the inner ring then stands up to leave (so that there is always an empty chair).
- Occasionally, the moderator of the discussion may choose to invert the relationships; the inner ring goes silent, and the members of the second ring are asked to voice their thoughts/opinions.
There were other techniques, such as creating a human spectrograph of opinion along a line on the floor, that were good too (though less interesting to me). I know that this was Kaliya’s first time doing a tutorial like this, but I’d encourage others to attend a workshop if/when she does one in the future.
Update: need to investigate Appreciative Inquiry as a large-scale community building technique.
I’ll be giving a talk on XULRunner at the upcoming O’Reilly Open Source Convention (OSCON) on Thursday, July 27 from 4:30 to 5:15 p.m. The talk will include a demonstration of XULRunner‘s ability to run web applications and web widgets outside of the traditional browser framework, as well as demonstrate deployment techniques for rich-client applications. The talk is similar to the one I gave at XTech, but I have refined it a bit and XULRunner has continued to become more complete in the meantime, so some of the demonstrations will hopefully be more polished and complete.
If you’re still just thinking about coming to OSCON, Myk Melez will be giving a talk on Microsummaries in Firefox, Mitchell Baker will be on a panel discussing open source projects and money, and Mark Hammond will be presenting on Python in Mozilla. Mozillafolk will be attending; there will be a BOF, a booth, a Firefox Flicks screening, and other events. Come and meet Mozillians and learn more about the project!