Firefox Planning & Tracking: A New Approach

Firefox, Focus, Goals, Mozilla, Open Source, Work 4 Comments

If you take a look around Mozilla these days, you’ll notice that there are a lot more of us trying to do a lot more things a lot faster.

To manage all of this, we need to be a bit more disciplined about what we do and how we do it. Prioritizing what we want to do (and when) is a big part of what this post is all about — we can’t do everything all at once, so we need to be more deliberate about what we focus on at any given time.

We also have to be more conscientious about what and how we communicate with each other — there simply isn’t enough time for any one of us to dig through our various channels to find out everything we need to know. We need a consistent and centralized place where everyone can go to get the information they need.

How are we doing this?

We’ve developed a system to help us manage this stuff, and it looks something like this:

simplified, but you get the idea

Roadmaps are where we set forth our vision for each product and what we believe our priorities need to be in order to achieve that vision. Roadmaps often include other stuff as well, but for the most part the Roadmaps define where we want to go (vision) and how we’re going to get there (priorities).

Product Managers don’t weave these out of whole cloth, but drive the process of creating the Roadmaps through extensive discussion with people throughout the community. These are also not things to be dusted off once a year when we sit down to write a new roadmap — we will evolve them as we go.

Feature Lists are the things we believe need to be changed or added in our various products over the next year or so. These lists are derived from the Roadmaps and then divided by engineering group. The purpose of Feature Lists is to make it easier for engineers to know what they should work on next.

Like Roadmaps, Feature Lists will be revised constantly as we add, remove, and reprioritize things based on changing circumstances and information, and as we ship features out. Ultimately, each Feature List will be rank ordered by priority — #1, #2, #3, etc. with no ties — but we’re not quite there yet.

Feature Pages are really the heart of this system, as this is where each Feature is defined, specified, staffed, and tracked during development. The goal is that eventually (by Firefox 7) all significant development projects will be defined and tracked via Feature Pages.

When we talk about a feature, we’re talking about a “shippable unit”, a well-scoped and atomic piece of work that improves a part of one of our products. This is a smaller unit than what we normally think of as a feature, but conceptually larger than a typical bug fix.

Something like “Create a Home Tab as a Permanent App Tab” is a feature under this definition, whereas “App Tabs” is too large to be well-scoped. “App tab rendering glitch on OS X” is too small to be worth feature tracking, as it is really just fixing a flaw rather than adding to the product or changing how something behaves.

Feature Pages are really guidelines rather than strict templates to be slavishly filled out. Use them as you see fit. The only requirements are:

  • The status block at the top be filled in and kept up to date.
  • The team list must be fleshed out as completely as possible (and everyone on that list should be aware that they’re on that list).

After that, you’re free to do whatever you need with the Feature Pages. The sections in the template are really just prompts to help you get things clarified and written down, but you can ignore them if it makes sense to do so.

With the vision and priorities defined in the Roadmaps, and the Features defined and tracked through Feature Pages, we’re just missing a place to track the collective progress for each release. This is where the Release Tracking page comes in.

Once a Feature is underway and we know which release it’s going to target, the status block from that Feature Page will be transcluded into the appropriate table on the Release Tracking page.

Throughout development, with Feature Page statuses being updated regularly, the Release Tracking page will make it easy to see at a glance how things are progressing. Should a feature miss a release, it’s easy to move the feature into the next release table and continue tracking progress there.

No Surprises

The primary goal for this system can be summed up as “no surprises”. Everyone across the organization — engineering, QA, marketing, PR, web dev, IT, build & release, etc. — should be able quickly and easily to find out:

  • what is currently planned for each release
  • how things are progressing
  • what they need to do
  • when they need to do it

No surprises. This will never be a failsafe system, but I think we can get a lot closer to there than where we are now. This is a first step, and we will evolve the system as we learn more.

Generic Universal Grocery List

Cooking, Food 4 Comments

grocery store by Andrew Bain
Photo by Andrew Bain

Over the past couple of years I’ve developed what I call my Generic Universal Grocery List. It covers breakfasts, lunch, and dinner for two people for a week (give or take), and allows for enough flexibility to make a whole bunch of different things. Note: we both work from home, so we prepare and eat the vast majority of our meals there.

This list evolved over time, really — I started by doing meticulous menu plans then cobbling together lists based on those, etc. I started to notice patterns developing, so rather than building a from-scratch list every week, I’d pull up the previous list and just edit that. Finally I made the GUGL, and I’ve been using it every week for a few months. It works for us, but it’s still an ongoing work in progress — we still end up throwing away more produce than we should, so I’m still tweaking things.

How to use the list

It’s important to realize that we don’t buy everything on the list every time. We:

    1) Make a fresh copy of the list each week
    2) Go through and delete stuff we don’t want or need this time around
    3) Check and add any needed staples (oils, vinegars, flour, etc)

So, here’s the pre-edited list with some inline notes. Where there are multiple items separated by a slash, we’ll pick one of those and delete the rest. This is also ordered according to where things generally are in our grocery store, if you’re wondering why it seems a bit random at times.

Generic Universal Grocery List

Produce (enough for 6 meals, snacks & sandwiches)
* coleslaw (pre shredded cabbage mix)
* baby spinach/salad greens
* lemons
* limes
* apples
* bananas
* blueberries/raspberries
* avocado
* tomatoes
* zucchini
* scallions
* leeks
* potatoes
* onions
* shallots
* garlic
* ginger
* mushrooms
* peppers
* napa cabbage/bok choy
* squash/yams

Sandwich stuff, Dips, Pasta (mostly lunches)
* sandwich meats & cheese
* fresh tortellini/ravioli
* parmesan cheese
* hummus

* sandwich/toast loaf/panini buns
* english muffins
* pitas/tortillas

Meat (usually 3 meats + eggs)
* salmon/shrimp/scallops
* chicken/turkey
* pork/sausages
* beef/veal
* bacon
* eggs

* butter
* milk
* yogurt (plain)
* yogurt (flavoured)
* cottage cheese
* shredded cheese
* cheddar
* orange juice
* apple juice/cider

Staples & Other
* coleslaw dressing (can’t be bothered making my own)
* olives
* diced tomatoes
* tinned beans
* rice/quinoa
* dried pasta
* chicken stock
* beef stock
* cereal/oatmeal
* coffee cream
* maple syrup
* sugar
* ginger beer

Non-food (mostly reminders to see if we need ‘em)
* tinfoil
* parchment
* coffee filters
* laundry detergent
* dishwasher detergent
* dish detergent
* garbage bags (blue)
* garbage bags (green)
* paper towels
* toilet paper
* handsoap

Icons by N.Design Studio. Designed By Ben Swift. Powered by WordPress and Free WordPress Themes
Entries RSS Comments RSS Log in