2011-09-29
I just switched to being an employee (for the first time ever)
at Mozilla last month, and due to some management switch-ups, I
now also have a manager who has no familiarity with what I do (for the first
time ever). Melinda and plinss and roc were all already involved in my
day-to-day work, so there wasn't much to explain. So I figured
I'd post an explantion here, since most other people don't know
what I do or why, either.
Most of my career is defined by being an Invited Expert on the
CSS Working Group. The decisions I make on what I work on and how
I prioritize it all derive from the goal of making CSS solid, and
enabling the CSSWG to be effective at standardizing it. Sometimes
Mozilla perceives what I do to be in their interest, sometimes
they don't and Microsoft does... I was originally sponsored by
Hewlett-Packard, who gave me a lot of freedom in choosing what
to work on, and once that contract ended I expanded that freedom and
found other sponsors for it. I got to be the wildcard in the CSSWG,
and all that implies.
Now that I'm an employee, I don't own my self-direction, I'm only
granted it conditionally. I belong to the layout team at MoCo, and
their priority is Gecko/Firefox: their CSS investment is informed
by and channeled through Gecko's priorities. But since my CSSWG
induction in 2004, that is not, and has not been, my priority: mine
has been CSS, directly and primarily, and Gecko, also directly, but
separately and secondarily. You could argue that my priorities fit
well under the Mozilla Manifesto, but they don't always fit under
the Firefox corollary. So I feel the need to justify not being on a
leash, since I expect at times my priorities and management's
priorities to diverge due to this difference.
Both Mozilla and I owe our loyalty to the Web platform, but my
team plays it on the browser field through Firefox and on the
standards field through Gecko, while I play directly on the field
of W3C, and I play as myself.
Things I've accomplished include:
- Opening up the CSSWG:
shifting technical discussion from the internal list to
www-style;
starting and running the CSSWG blog;
setting up the CSSWG wiki;
and taking F2F and telecon record-keeping to the next level so our
decisions and their rationale are recorded and available for public
review and comment. CSSWG minutes read like a transcript because I
set the bar there.
- Driving specs to completion:
I took on (co-)editorship of
Selectors Level 3,
CSS Namespaces,
CSS3 Backgrounds and Borders,
CSS Style Attributes,
and (unofficially) CSS2.1
and drove them to CR and beyond, in many cases not because they were
exciting new works, but because they'd stagnated in a
nearly-but-not-quite-finished-not-quite-stable limbo state for years.
I wanted to finish them so we could close the case, put it under us
to stand on, and move on to the next thing.
- CSS Modularization
After the CSSWG resolutions to break apart CSS3 and create the
snapshot model, I tried to articulate CSS's modularization strategy
through the
CSS Snapshots and have been
guiding its implementation ever since.
- CSS Testing:
After Hixie left to focus on HTML, I took ownership of CSS testing at
W3C. As the CSSWG focus shifted to testing CSS2.1, I laid down a
vision statement
for what CSSWG test suites should be, and at this point I'd say we're
maybe halfway there. It's not gotten any of my attention in the past
6 months, though, and deserves a dedicated owner.
- CSSWG-EPUB3 Liaison:
As the CSSWG liaison to the EPUBWG, I helped to communicate CSSWG
positions and operations to EPUB. I also shifted my own spec priorities
to try to keep up with EPUB's demands and prevent EPUB from forking
CSS with its own variations of features we hadn't finished, stabilizing
as much of CSS3 Writing Modes and CSS3 Text (and CSS Speech) as possible
by midsummer 2011. (This burned through most of what I had left after
CSS2.1, so by mid-August I was running on fumes...)
Things I failed:
- CSS3 Paged Media
is halfway between
its current rather imprecise state and where it needs to be for a
real LCWD. Melinda and I worked on it while we were at HP, but got
sidetracked by trying to finish the behemoth that is CSS2.1.
- CSSWG
Website Redesign I consider mostly a failure. The site is still
a mess informationally, and if you compare Divya's original design
to the current one, it still falls short visually (functionally as
well as aethetically) as well. This is one thing I can't fix because
not only do I not have the time, I'm denied the authority.
Things I'm still working on:
- CSS Internationalization:
I own and co-edit CSS spec work for bidi,
vertical text,
and more advanced/internationalized
typesetting.
- Catching up specs to mailing list discussions:
Together with Tab Atkins, I'm working on finishing off Håkon's
CSS3 Values and Units
module, which is nearly done and just needs some final rounds of
clean-up and issue resolution before a push to CR;
and I've just completed a sweep through Selectors specs and comments,
collecting outstanding feature requests into a new
Selectors Level 4 draft.
I also edit the non-gradient portions of
CSS3 Image Values and
Replaced Content, which are a collection of previously
half-finished feature specs and unspecced WG resolutions from across
the years.
- Restyling CSS
specifications: Divya and Tab and I have a side-project to
revamp the CSSWG-specific aspects of the CSS spec style sheets.
You can see some work-in-progress on the CSSWG's
module template.
I'm on the Layout team at Mozilla because one of my oft-neglected
hats is that of a Gecko layout engine developer.
I do write C++ code. (Slowly. Just like I write blog posts. Slowly. :)
I like working on Gecko, and I like cleaning up its code and making
it better. It's gratifying when dbaron says things are more
understandable after I've patched them. And as a side-effect I fix bugs! :D
(Or was it the other way around?)
Notable fixes during my contracting tenure at HP and Mozilla include:
Things I was supposed to fix but didn't get to:
- CSS2.1 page-break controls, which have been on my to-do list since 2007. :/
The hardest thing about working on Gecko is blocking out time for it.
I'm so tangled up in spec work, it's hard to focus on coding.