I spent the whole day today at Barcamp Auckland. I had a great time talking to Web developers and users about what they do and about Firefox, Gecko and Web standards. I had a particularly interesting conversation with a guy who builds MythTV boxes, about the situation with media codecs and free software.
As usual, I really enjoyed talking to Nigel Parker from Microsoft. The cone of silence around IE8 puts him in a tough spot at a conference like this, but that's not his fault. I was surprised that his talk hardly mentioned Silverlight, he seemed to be most interested in multitouch screens, which is fine I guess although it's not what keeps me awake at night :-).
I gave two talks, one about "The Future Of Web Standards" and one about "What's New For Developers And Users In Firefox 3". Both were well-attended. I burned up most of Friday putting together my FF3 demos so I only started working on the actual talks about 1am this morning. I was exhausted so I just wrote down just a few headings in the hope I could flesh them out on the fly. I'll have to read the blogs to see how successful I was but from my perspective it went about as well as a normal talk. I'd really like to develop the ability to talk with an absolute minimum of slide support.
"The Future Of Web Standards" basically went like this:
- Standards are hard Creating and implementing standards is harder then just shipping whatever you feel like...
- Standards are necessary But the alternative to standards is single-vendor domination, which would be extremely dangerous in the case of the Internet.
- Clean up existing standards We have to improve the completeness and accuracy of existing standards...
- Add new features But we also have to add new features or the open Web will become obsolete.
- WHATWG/HTML5 Addresses both of these goals.
- Video Video should be a first-class HTML element, but codecs are a problem.
- Politics Organizations are always trying to game the system to further their own interests, often at the expense of the open Web.
- Your needs I solicit feedback about where Web developers are feeling pain and what they desire.
- HTML matters HTML retains a position of strength because it's the only universal container format. HTML can contain anything but Silverlight and Flash are leaf elements.
"What's New In Firefox 3" went like this:
- Who am I?
- What is Mozilla? Not a Web browser company, but a nonprofit supporting the open Web and its users.
- What is the open Web? A Web that allows anyone to participate in implementing and using, that is not dominated by a single player.
- What is Mozilla doing in New Zealand? Gecko development!
- Hiring Strong C++ developers: the open Web needs you
- Demos: Pushing the Web forward Lots of demos.
- Use this stuff if you care about open Web The best thing that Web developers can do for the open Web is to use Web standards, particularly new-feature standards, even (or especially) those not yet supported by IE. This won't always be possible when working for paying clients, but take advantage of any opportunities; graceful degradation helps. Adoption is the only way to pressure Microsoft to implement this stuff.
I demoed some Gecko features:
- Graphics: APNG, SVG "Gearflowers" image (good for zooming in), SVG "bubbles" animation, SVG image pasted from OpenOffice, canvas "Blobsallad" animation
- Layout: Typography, Manu Sridharan's Greasemonkey script to enable multi-column display of New York Times articles, MathML
- Video: Chris' video-in-SVG demo (only works with a video-enabled build, of course). The EATV stream happened to be showing some bikini-clad anime babes at the time --- live streaming demos are risky! Fortunately the stream choked due to low bandwidth before things got out of hand.
- To show off the power of (X)HTML as a universal container format, I created a variant of the SVG photo-table demo, using an IFRAMEd HTML page as the content instead of images or videos. You can interact with the child page. I also created another variant containing the first variant as a child to show that everything's first-class. It's IFRAMEs all the way down...
and some Firefox UI features:
- Full zoom
- Per-page prefs (zoom pref)
- Bookmark starring and tags
- "Awesomebar" autocomplete (hype aside, this really is changing the way I navigate like nothing else has for a long time)
- Malware blocking
- Harsher handling of bad SSL certificates
- The "Larry" SSL UI
The HTML/SVG containers demo actually shows a couple of problems. First, dragging the round window handles doesn't work when the mouse is outside the handles and over the child document, because the child document gets the events and they don't bubble out. I'm not sure what to do about that. Also, putting more than one page in the demo doesn't work quite right because SVG has no z-order control, to the photo-table code moves things to the front by removing them from the DOM and re-adding them at the top, but removing and re-adding an IFRAME reloads it, which sucks in this case. I'm not sure what to do about that either.
During the Firefox talk I attempted to demo Vlad's 3D-canvas extension but screwed up because I was using a debug build and I had built the extension for an optimized build. (Stupid me, I should have used an opt build for the demos, they would have looked smoother.) So right at the very end of the day I snagged a demo slot to show the teapot and GPU-based fractals.
The 3D canvas is sensational; I hadn't tried it before last night. (Vlad's prebuilt extension no longer works on trunk, but if you're making your own trunk builds you can configure with --enable-extensions=default,canvas3d and then install dist/xpi-stage/canvas3d.xpi into Firefox and it should work.) It's really great how his JS support code pulls GLSL programs straight from the HTML page; you get the "edit; save; reload" Web development cycle for GPU programming. I think this could be an excellent way to learn GPU programming; imagine an online tutorial with a bunch of starter examples.
Also, if we can make it secure for untrusted content, it addresses JS performance issues head on (for a certain class of problems): forget fancy JIT compilers and runtimes, just stick shader code in your Web page and we'll run it right on the GPU for maximal performance! Woohoo! The fractal demo is a superb example of this: a regular C program couldn't nearly keep up with that Web page.
Anyway, after a series of late nights and today's work I need a rest! I plan to take the first half of Monday off.