Status Update: AppTabs, Extension Manager UI

App Tabs and Home Tab

Status

  • Met with Limi to discuss design details, including:
    • BarTab-like functionality
    • Single-instance vs traditional tab-like behavior (preferring this)
    • Adding/removing AppTabs – dragging & context menu
    • Opening normal tabs when attempting a navigation action in an AppTab
    • Displaying less chrome when in an AppTab (and how awkward this will look for tabs-on-bottom)
  • Patch close to ready for foundation work
    • Had some fun with using yield for async tests
    • Learnt more about nsSessionStore than I wanted
    • Some debate over whether this implementation is the right approach (see bug [bug id=563730])

Loose ends

  • Need to resolve whether to keep current implementation approach or start over

Next steps

  • Finish and land foundation work in bug [bug id=563730]
  • Delve into adding some meat
    • Context menu
    • UI for adding AppTabs
    • Remembering added AppTabs
    • BarTab-like functionality
    • etc

Target for next week

  • Resolve implementation debate
  • Fix review comments, or start alternate implementation

Extension Manager UI Redesign

Status

  • Some reviews done
  • Mocking provider planning and implementation (not there yet)

Loose ends

  • None

Next steps

  • Mocking provider + tests
  • Fix top priority bugs

Target for next week

  • More work on mocking provider
  • P1 and P2 bugs as time permits, eg:
    • Bug [bug id=567127] – Add Install button for installing from local file
    • Bug [bug id=565682] – Support Drag & drop of XPI file
    • Bug [bug id=562890] – Add preferences button in list view

Miscellaneous

  • I’ll be in the Mountain View office during the week of 28th June

Reflections

  • I still get too stressed by certain things that are unavoidable when being a software developer

Status update: Extension Manager UI, App Tabs

Extension Manager UI Redesign

Status

  • Landed! Woo!
  • Backed out! Boo! Thanks to a Ts regression on OS X 10.5.8, which turned out to be bug [bug id=519893] again.
    • A little background: A specific OS function in OS X sometimes takes significantly longer if there is no monitor attached. So IT adds resistors to the monitor port of the Mac Minis that run Talos, to trick OS X into believing there is a monitor plugged in. Yes, this really is as ridiculous as it sounds.
  • Successful test day on April 30th (Henrik did an awesome job, over a 16-hour day)
    • Plenty of bugs found, but no show-stoppers. Some were known, others not. (And yes, finding bugs is a good thing.)
    • Also got a lot of feedback on the UI design
    • Test days mean a LOT of bugmail

Loose ends

  • Mossop will be re-landing soon

Next steps

  • Fix some annoying low-hanging fruit like bug [bug id=554237]
  • Implement manual updates pane (bug [bug id=562622])

Target for next week

  • This is temporarily low-priority for me, while I get stuck in on starting App Tabs (see below). So I’m not expecting to get a lot done here, sans any reviews that may come up from people submitting patches (hint hint).

App Tabs and Home Tab

Status

  • Picked up this project, together with Marco
    • Marco will be working on the Home Tab (a locally hosted home page that sits in a special App Tab)
    • I’ll be working on App Tabs (small persistent tabs that show a often-used specific site/page, and don’t get lost in all your other tabs)
  • Looked to see if any addon has this implemented in a way that could be uplifted, but didn’t find anything suitable
  • Started working on a proof-of-concept
    • Hit various roadblocks and discovered its going to be more work than originally anticipated
    • Tabbrowser makes certain assumptions everywhere that I need to burn with fire correct
    • Hoping that once the foundation is set, everything else can be separate bugs. eg: syncing between windows, make the documents single-instance, etc

Loose ends

  • None

Next steps

  • Finish foundation work in tabbrowser

Target for next week

  • Want to at least get the basic stuff working properly. Not sure whether that will include review-ready code or not (sadly, probably not)

Reflections

  • Regardless of how exciting an existing project is, starting a new project always seems somehow more exciting

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.

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”