Status update: Extension Manager UI

Extension Manager UI Redesign

Status

Loose ends

  • None

Next steps

  • Land it already, gah!
  • Fix the things we broke by landing it
  • Further stabilization and polish
  • Manual update process

Target for next week

  • Landing and damage control
  • High priority bugs – I’ll be re-triaging this week
  • Start on new manual update process

Reflections

  • Continually having to push back landing dates is frustrating
  • We still need to get more familiar with working on project branches
  • The scent of a new project really gets my mind racing

Status update: Extension Manager UI, Tab matches

This is a “I’m still alive” type of update. It’s been a couple of weeks since I last posted a status update. In that time, I’ve had a week off thanks to a 5-day weekend of public holidays (yay!), then being knocked down by a nasty flu bug (boo!). I’m back into hacking now but I’m still recovering, so things are progressing a bit slower than usual right now.

Extension Manager UI Redesign

Status

  • Missed the date we wanted to ideally get this landed on trunk (31st March) – this was disappointing, but there was just too much to get done (including reviews, as always). On the upside, we want it to bake in nightlies for awhile before being pushed out in an alpha.
  • Almost done the first round of reviews – feedback was mostly lots of small stuff, which is positive.
  • Lots of bugs fixed! Mostly a lot of little stuff. The QA guys are helping hugely.
  • Made it look prettier with icons from Boriss and some CSS work (NOTE: THIS IS NOT THE FINAL LOOK!)

Category iconsAddon item

Loose ends

  • None.

Next steps

  • Land on trunk.
  • Fix more bugs, and add planned features (including start of AMO integration).

Target for next week

  • Next round of reviews.
  • Fix remaining P1 bugs blocking landing.
  • Assuming this all goes smoothly and the API is ready to too, we can land it on trunk (!!)

Tab matches in Awesomebar

Status

Next steps

Miscellaneous

Reflections

  • I should know better than to overwork myself and get burnt out.
  • Books are awesome.
  • Hackers around the world are selling their soul for a certain new device that is the start of a computing future they do not want. This saddens me.

Status update: Extension Manager UI Redesign

Extension Manager UI Redesign

Status

  • Install/uninstall/update working really nicely. This took longer than expected, due to:
    • Some issues with the new API – Mossop has added various new functions, properties, and events
    • Some bugs with the API that tests didn’t find – these are being fixed by Mossop, with additional tests added
    • Various things I haven’t considered or anticipated (such as providers installing addons without using an AddonInstall object)
    • I had some preconceptions about the flow of events and state of installs/upgrades which turned out not to be entirely accurate
  • Various CSS and layout tweaks (such as making buttons look pretty) – CSS3 is my friend
  • Various bugs I found along the way
  • Filed a bajilion bugs on the UI and API – things that need fixed, features that need implemented

Loose ends

  • Waiting on some placeholder icons from Boriss

Next steps

  • More bug fixes!
  • Reviews
  • Initial landing on mozilla-central
  • Write a mocking provider, for automated testing (and additional dogfooding of the private API)

Target for next week

  • Add support for addon installs that don’t use an AddonInstall object and its events (bug [bug id=553515])
  • Make enable/disable prompt for restart (bug [bug id=553631])
  • Fix display when no update is found (bug [bug id=553870])
  • Consolidate “Restart Now” buttons to just one entry (bug [bug id=553460])
  • Any other P1 and P2 bugs I can get to
  • Start writing mocking provider
  • Initial reviews

Reflections

  • Planning and testing are necessary but not adequate on their own. Dogfooding will invariably find issues that planning and testing could not.
  • Spare time suffers from Parkinson’s Law (and at times, both of them)

Status update: Firefox team work week

Tonight, on a very special status update, I’ll recount the recent Firefox team work week.

The Firefox team work weeks are pretty special. For one week, every 4-6 months, the whole team gets together at the main Mozilla office in Mountain View. Like the rest of Mozilla, the Firefox team is spread around the globe – around half the team works from various other offices (such as the Toronto office) or from our homes. For some of us (like me), getting to Mountain View can mean a 12 hour international flight – with all the jetlag that accompanies it. Being so geographically dispersed, it’s important we get together every now and then. There are some things that still work best when everyone is face-to-face.

Getting there

I had booked my flight to arrive in California on the Saturday before the work week. I’d learned my lesson previously about taking time to recover and adjust, after spending over 12 hours in a flying sardine can. I don’t sleep well on planes, so I slept at the hotel most of Saturday afternoon. We stayed at the Hotel Avante, which is relatively close to the office (25min walk) and provides Wi-Fi (even if it’s a bit slow). This trip I discovered the Avante has a pool out the back – I didn’t go in, but it was nice to lounge out there (alone!) in the sun with my laptop and catch up on email and some work.

The Avante's poolMe by the pool

Monday

Early Monday morning was a shock to the system, as all mornings are. Working from home in an odd timezone means I usually get to start work at a leisurely hour, and work late. When I’m in Mountain View, my alarm is set for 7am. This seems to amplify jetlag by an order of magnitude.

Those of us staying at the hotel car-pooled to the office, and the day started with strategic planning. And by “strategic planning” I mean we wandered around confused in the newly-opened 2nd floor office space, as none of us staying at the hotel had seen it before. We eventually found our conference room, and scavenged some tables. They were arranged in what I like to call a “square round table”:

Square round tableSquare round table

After some general catching up and setting up, we all got the chance to attend the weekly Mozilla project meeting in person – rather than having to dial in or watch a live stream. After quickly grabbing lunch, we had the usual weekly Firefox team meeting – again, in person! This was mostly planning the week ahead of us; lovingly called “agenda bashing”. Rather than having every hour scheduled for big meetings as in previous work weeks, we had a lot more free time for hacking and, of course, scheduling smaller meetings. Monday and Friday were officially “travel days”. This meant that for those of us around on these days, it was mostly free time for hacking and meeting with specific people. Wednesday was also specifically blocked off for this.

Tuesday

Tuesday started with a round-table discussion with Mike Shaver, Mozilla’s VP of Engineering. Shaver is great at rallying the troops, and talked about productivity, working smarter, and generally getting stuff done (amongst other things). This was followed by a feature roadmap discussion. These discussions were pretty high-level (read: abstract), without much technical detail. It was these types of discussion that are best done face-to-face, and it was really worth it.

After lunch and some hacking time, the QA team joined us (they were having their work week too). We discussed ways of further involving QA in feature development, getting more relevant information to QA during development, and generally how to better help each other. There was also some discussion on project branches, which we’re using more and more. A lot of my work has been with larger projects and project branches, so I was able to answer various questions QA had, as well as explain how that development process differs compared to bug-sized projects.

The Jetpack team then joined us, to present the new Jetpack SDK. They discussed the SDK internals, Jetpack development, how it differs from the original Jetpack experiment, and the eventual integration into Firefox. This was followed by some Jetpack hacking – some working on Jetpacks, some on the SDK’s APIs.

At this point, jetlag hit me like a wrecking ball.

Wednesday

Wednesday was an all-day hacking and free-for-all session, with plenty of discussions with awesome people – some of these were spontaneous, some not. These ranged from UX and API discussions about the new Extension Manager, to showing off my project status dashboard and my ideas for it. Before lunch, I sat down to listen to Gen Kanai talk about Firefox in Asia. Afterward, I had a planned meeting with everyone involved in the Extension Manager rewrite – with people from the Firefox, UX, QA, and AMO teams. This was primarily to discuss the QA plan for that project – test plans, development process, milestones, schedules, etc. Later in the afternoon, I caught up with Aza Raskin – he had a cool demo to show me.

In the evening, there was a rather unusual event planned for us. We traveled to Whole Foods in Cupertino, where 2 chefs and a kitchen were waiting for us. With guidance from the chefs, we were split into 4 groups – each group responsible for cooking one course of a four-course meal for the whole team. It was a really fun time, and the food we cooked up was pretty good!

Cooking classCooking class

Thursday

Thursday involved a lot of free hacking time for me, since I didn’t need to be at various scheduled meetings. During lunch, Jinghua Zhang presented the results of the recent Test Pilot study on Firefox menu usage (sans pretty graphs). This answered a lot of questions we had about Firefox menus, but raised some new questions too. I found it particularly interesting that people have difficulty finding the “Check for updates” and “Add-ons” menu items. Someone brought up the possibility of regularly doing this study, which seemed like a great idea.

Later on, we had the weekly Extension Manager redesign meeting with the AMO team. Considering we’d had such a comprehensive meeting the previous day with QA, we still managed to cover quite a lot. We discussed various AMO integration ideas (such as the “Discover” pane), design direction, helping users learn about add-ons, privacy, security, and the new Rock Your Firefox.

Friday

Friday was a travel day, with most of the out-of-town people flying out early in the day. My flight was much later, meaning I didn’t need to leave the office until mid-afternoon. So I lounged in/on two over-sized beanbags, surrounded by the remainder of the team, who sat at desks. It always feels weird leaving the office at the end of the last day, knowing I won’t see any of my co-workers in person again for a number of months.

Reflections

  • OMG jetlag – WHY?!
  • Walking down the street carrying 10 large pizzas gets people’s attention.
  • MV people tried to convince me to move to MV, while the Toronto people tried to convince me to move to Toronto. This felt awesome, but I’m still not moving in the near future.
  • I work with very smart people.
  • Some problems are best solved face-to-face. Generally, these are not technical problems.
  • Switching from working remotely to suddenly working in a busy office for a week is difficult to adjust to (and stay productive). But doing this periodically is important, as it helps you understand the team better and put things into perspective.

Status update: Extension Manager UI, Tab matches in Awesomebar

Extension Manager UI Redesign

Status

  • Plenty of discussion at the recent Firefox team work week (which was awesome and I blogged about here)
  • The project branch is setup
    • Mossop is landing the new API there, and gathering performance data before and after the new API
    • I’ll be landing the new UI there soonish
  • Aiming to complete the first milestone by the end of March (and have it landed on trunk)
    • Extension Manager needs to be usable for all basic functionality (install/uninstall/enable/disable, displaying basic information)
    • Additional functionality will come in later milestones (such as better AMO integration, potential performance improvements)
  • Resolved remaining localization to-dos and issues
    • Wish DownloadUtils.jsm had better localization support built-in
    • Certain problems make me look forward to l20n
  • Improved enable/disable interactions. Still have tweaks to do, especially with the new mockups from Boriss
  • Some work on hooking up download/install/update.

Loose ends

  • Need to figure out what to display until AMO integration is implemented (does this even matter for nightlies?)

Next steps

  • Bring up to speed with latest mockups from Boriss
  • Finish hooking up download/install/update/uninstall/undo
  • Notifications – restart needed, compatibility check being disabled, etc

Target for next week

  • Install/uninstall/update progress – depending on API completeness
  • General tweaks based on new mockups (eg, disabled addons, search filters)
  • Manual updates

Tab matches in Awesomebar

Status

  • Got super-review
  • Landed on trunk, but had to backout due to:
    • Weird merge issues (re-merging manually fixed this)
    • The browser-chrome test somehow made another (unrelated) test timeout. I really wish Mochitest started with a clean-slate on each test.
  • Did not make it into 3.7a3 as planned

Reflections

  • It is difficult to get a larger project landed without any difficulty.
  • Stress is a productivity killer. I need to not let certain things stress me so much.
  • Software is hard. Kittens are soft.

My status updates – what can I improve?

I’ve been posting weekly status updates for awhile now (since August 9, 2009). I think they’re an important part of communicating exactly what it is I (and the rest of the Firefox team) am working on, and how things a progressing. Not only that, it’s a great way of getting unsolicited feedback, as I often get comments on these posts. So from my point of view, these posts been a great success.

But I want to know if I can improve them. What would you like to see more of? Or less of? Should I have more detail on what I’ve achieved, or what I’m planning? Should I be less whimsical? Should I reflect more on the past week, and on life in general? Should the format be altered? Should I include more pictures of cute kittens with amusing captions?

Status update: Extension Manager UI, Tab matches in Awesomebar

Few days late on this – oops. I’ll be at the Mountain View office next week for a Firefox team work week – any hacking I get a chance to do will probably be on random things, rather than my usual projects. If you’re in the office and want to catch up or talk about anything, come and find me. No idea what area I’ll be in, but just look for the hairiest person you can find.

Extension Manager UI Redesign

Status

  • Solidified some interactions and how views are implemented & interact
  • Helped Mossop figure out some API bugs (turns out, extensions.ini is important!)
  • Some progress on updating addons

Loose ends

  • Still waiting on the project branch (bug [bug id=542910])

Next steps

  • Install/uninstall/update/enable/disable
  • AMO Search
  • Help with API development

Target for next week

  • None (getting the most out of the work week takes priority)

Tab matches in Awesomebar

Status

  • Code review complete
  • Waiting on superreview for API changes

Status update: Extension Manager UI, Tab Matches in Awesomebar

Extension Manager UI Redesign

Status

  • Download progress widget done. Should be possible to do a fancy button -> progress transition.
  • Local search done – including sorting based on relevance to search string
  • AMO search not done – need API support and UX details
  • Lot’s of UX questions for Boriss
  • Weekly meeting notes here

Loose ends

  • Waiting on project branch to be setup (bug [bug id=542910])

Next steps

  • Install/uninstall/update/enable/disable
  • AMO Search
  • Help with API development

Target for next week

  • Install/uninstall/update/enable/disable (assuming API support is ready)
  • Otherwise, integration issues

Tab matches in Awesomebar

Status

  • Another round of reviews. Getting there!

Loose ends

  • None

Next steps

  • Followups: [bug id=530209], [bug id=546253], [bug id=546254], [bug id=546255], [bug id=539357]

Target for next week

  • Landed? Plz?

Miscellaneous

Reflections

  • Learn like you know nothing

Status update: Extension Manager UI, Tab matches in Awesomebar

Extension Manager UI Redesign

Status

  • Planned for eventual mozilla-central landing – want to get initial parts landed before betas
  • Major AMO integration will probably be done as followups
  • Have been bringing UI up to speed with changes in mockups
  • Started looking at install/updates before realizing it’s not in the API yet

Loose ends

  • Boriss was away for the latest meeting, need to catch up
  • Waiting on project branch to be setup (bug [bug id=542910])

Next steps

  • UX discussions! UX discussions! UX discussions!
  • Implement helper widgets
  • Install/uninstall/update/enable/disable
  • Search
  • Help with API development

Target for next week

  • Catch up with Boriss
  • Implement various widgets – download progress, ratings, etc
  • Start implementing search (only local, until the API supports AMO searching)

Tab matches in Awesomebar

Status

  • Refactored UI for better toolkit/browser separation
  • Renamed “open tab” concept to the more generic “open page”
  • Must remember that adding a constant doesn’t mean the interface needs a change of UUID
  • Waiting on next review, then SR

Loose ends

  • None

Next steps

  • Land
  • Tackle followup bugs

Target for next week

  • Landed on mozilla-central

Reflections

  • I need to get better at estimating time required for larger projects
  • I’m having far too much fun for this to be considered “work”

On open video and exclusion

Important note: This post is my own opinion. Nothing more, nothing less.

No doubt you’ve heard of Youtube and Vimeo launching their beta HTML5 <video> players. There’s been a lot of talk around the codec that these use: H.264. While Firefox has great support for HTML5 <video>, it doesn’t support the (patented) H.264 codec, so you can’t use those players in Firefox. This is because Mozilla believes (and I concur) that H.264 is not good for the open web.

If you haven’t already, I recommend you read…

Yea, I know that’s a lot of reading. But they’re worth it.

Anyway, some people have suggested the following solutions:

  • Use the codec that comes with the OS (if any)
  • License H.264 and only ship it with binary versions of Firefox (leaving other distributors, embeddors, and other less well-funded browser vendors in the cold)
  • Only ship H.264 in Firefox to people living in countries where software patents are not enforceable (live in the US? Too bad!)

These solutions are, frankly, selfish. What these solutions propose is that it’s okay for only the privileged to have access to the web. This is not okay. It is not okay to exclude people from the web. Not because of the hardware they have, the OS they run, the client software they use, where they live, or how much money they have. Not for any reason. The web is meant to be participatory – let’s keep it that way.