tag:blogger.com,1999:blog-82951942024-03-21T20:19:56.766-07:00Ian Gilman - BlogIan Gilmanhttp://www.blogger.com/profile/07923261215410652507noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-8295194.post-67862713900993763512012-03-13T10:01:00.000-07:002012-03-13T10:01:00.143-07:00Off Planet MozillaI've been syndicating my blog to <a href="http://planet.mozilla.org/">Planet Mozilla</a> for about a year now, and it's been great, as it's a community that shares a lot of my passions. I've been finding lately, however, that I've been subconsciously censoring myself, wanting to make sure my posts are at least somewhat relevant for that audience. Considering my extremely low blog output, anything that slows me down further probably isn't a good idea, so I've decided to switch to a tagged feed; only posts I specifically tag for Mozilla will show up on the Planet.<br />
<br />
If you've been reading me through Planet and would like to continue following my (hopefully more frequent, but no promises) off-topic posts, you can do so with the <a href="http://blog.iangilman.com/rss.xml">RSS feed</a> for <a href="http://blog.iangilman.com/">my blog</a>, or even (for more off-topic bits plus blog post notifications) my <a href="https://twitter.com/#%21/iangilman">Twitter stream</a>.<br />
<br />
I haven't been actively working on Firefox for a while now, but I still consider Mozilla to be one of the best families I've been welcomed into. Cheers to all of you!Ian Gilmanhttp://www.blogger.com/profile/07923261215410652507noreply@blogger.com0tag:blogger.com,1999:blog-8295194.post-14838294817747362502012-01-11T10:00:00.000-08:002012-01-11T10:00:05.169-08:00Issue Tracking for the Real WorldBug trackers are an essential part of software development; I'm not sure how we'd get anything done without them! Yet it seems much of the rest of the world hasn't tuned into their value. It's certainly not that there aren't things to fix in the real world! Perhaps it seems overly complicated. Yet people seem to be able to figure out how to use, say, Foursquare.<br />
<br />
Working at Mozilla I was particularly taken by Bugzilla, and what a difference it makes. Not the software specifically, and certainly not the UI, which is in fact extremely complicated. The thing I was struck with is how anyone could come in and contribute, whether it be a bug report, a better set of reproduction steps, suggested strategies for fixing, actual patches, etc.<br />
<br />
I want this for the whole world. I want to be able to file a bug report for a pothole, or a piece of bad legislature. I want to be able to file a feature request for a new park, or a light rail stop.<br />
<br />
Once the report is filed, it needs to be easy to connect problems with people who have solutions, and it needs to be possible to take ownership of an issue. The bug report then becomes a record of the progress, the discussion, setbacks, etc. If you wonder why things are the way they are, you can read the paper trail.<br />
<br />
In this way we create a marketplace of problems and solutions, and we make it easier to shed light on what's needed to fix things. By opening it up to the world, we can encourage people to get involved and take action.<br />
<br />
This seems like something that could be cobbled together with various tools that exist (you know, <a href="http://ushahidi.com/">Ushahidi</a> meets <a href="http://getsatisfaction.com/">Get Satisfaction</a> meets the <a href="http://www.portlandonline.com/iphone">Portland Reporter</a> meets <a href="https://bugzilla.mozilla.org/">Bugzilla</a>), but ultimately I don't think that would be good enough. For people to actually use it, it needs to be clear, clean, and easy, focused on this specific problem space. For that reason, I think it has to be built.<br />
<br />
So, I'm going to get started on it… anyone want to help?Ian Gilmanhttp://www.blogger.com/profile/07923261215410652507noreply@blogger.com6tag:blogger.com,1999:blog-8295194.post-21873765926072949122011-06-15T10:00:00.000-07:002018-06-06T17:33:36.935-07:00Apprenticeship CultureA number of years ago I put my tech career on hold and spent some time in Hollywood. I dove in without any formal training and worked my way up from Production Assistant to Grip to First Assistant Director in about a year. I learned an awful lot in that time!<br />
<br />
You can do this with filmmaking because of its built-in apprenticeship culture. Making a movie is a real-time collaborative process, so if you don't know what you're doing, there's always someone nearby who can show you the way — all you have to do is pay attention. There are constantly new people coming into the industry, so before you know it you're the one passing on sage advice to the next generation.<br />
<br />
This last year, I did a similar thing at Mozilla. When I started working on Panorama, I knew nothing about the Mozilla technology stack, the culture, or what it takes to be part of an open-source project of that size. A year later, I had learned a ton and was already leading others.<br />
<br />
It took me a while to identify the feeling I kept encountering during those early days at Mozilla, but I finally recognized it: it was like being back on a movie set again. Mozilla is distributed geographically, but the hive is always buzzing on IRC and the countless websites that serve as the virtual headquarters for the team. It seems chaotic at first, and it may seem like everyone has something better to do than help you out (just like on a movie set), but if you pay attention and show that you're dedicated to learning the ropes, you'll find there are plenty of folks ready to mentor you.<br />
<br />
I've worked in the tech industry a long time, on small teams and large, but I've never seen an apprenticeship culture as strong as Mozilla's. Seems like usually the company you're working for figures that if you're smart enough to get hired, you're smart enough to just shut up and do your work. They give lip service to "career growth" and send you off to special training programs, but it doesn't really have any sort of impact, because it doesn't hit you where you live and breathe. If you want your team to be constantly improving, then learning and teaching needs to be part of everyday work, not reserved for some quarterly seminar.Ian Gilmanhttp://www.blogger.com/profile/07923261215410652507noreply@blogger.com1tag:blogger.com,1999:blog-8295194.post-86510586855313847382011-04-27T10:11:00.000-07:002011-04-27T10:58:33.655-07:00Firefox Panorama: What Did We Learn?<p>Upon shipping Firefox 4, the Panorama team and "friends of Panorama" got together on IRC for a <a href="https://wiki.mozilla.org/Firefox/Projects/Tabcandy/Panorama_1_Debrief_Chat">retrospective chat</a>. We discussed what we'd learned in the process of building Panorama version 1, what we had done well, what we could have done better. The following summary (also available <a href="https://wiki.mozilla.org/Firefox/Projects/Tabcandy/Panorama_1_Debrief">on the Mozilla wiki</a>) is the result of that discussion. Hopefully it can be of use to the next team that tackles a large, innovative feature in Firefox (or even elsewhere).</p><p><b>Notes</b></p><ul><li> There was a coherent team that was focused solely on getting this feature in and making it shine. </li>
<li> While the vision and initial push came from inside (<a href="http://www.azarask.in/">Aza</a>), the development team was largely new to Mozilla. Even Aza was originally from Labs, not mainstream Firefox. </li>
<li> The feature went from prototype to shipping without a re-write; we just iterated and refactored as needed. </li>
<li> The UI is largely HTML rather than XUL. We also wrote and used a Firefox-specific lite version of jQuery, called <a href="http://hg.mozilla.org/mozilla-central/file/tip/browser/base/content/tabview/iq.js">iQ</a>. </li>
<li> Integrating the feature with all of the many aspects of the browser (including new major features that were landing at the same time, such as app tabs) took the majority of the time (over creating and evolving the feature itself). </li>
</ul><p><b>Good</b></p><ul><li> As a dedicated team, we were focused enough to surmount the obstacles we encountered. </li>
<li> As outsiders, we brought fresh perspective. </li>
<li> Building a working prototype first made a huge difference in terms of convincing people the feature was worthwhile. </li>
<li> Starting it as an add-on meant it was easy for people to try out in the early days. </li>
<li> Evolving the feature for several months before integrating allowed us to iterate rapidly on the UI. </li>
<li> We had a number of "friends of Panorama" inside Mozilla whom we could turn to; they really made it possible. </li>
<li> Having our dedicated chat channel (#tabcandy) was a great way not only for the team to keep in touch, but also for the "friends of Panorama" to make themselves available. </li>
<li> We had a weekly "scrum" email thread that helped keep us all up to date (since the entire team was geographically distributed). </li>
<li> We collected knowledge relevant to the team in our wiki, and used it to get new people up to speed quickly: <a href="https://wiki.mozilla.org/Firefox/Projects/TabCandy/Work">https://wiki.mozilla.org/Firefox/Projects/TabCandy/Work</a> </li>
<li> Aza's external evangelism (including blog posts and tweets) brought energy and at least one developer to the project. He also created a <a href="http://azarask.in/projects/tabcandy/">centralized dashboard</a> early on. </li>
<li> Reviews could finally keep up with patches once Ian became an official reviewer. Another thing that helped with reviews was the <a href="http://azarask.in/projects/tabcandy/review.html">reviewer dashboard</a> that allowed us to see where things were piling up. </li>
<li> People have commented that the code is clean, well structured, and easy to get up to speed on. Part of this is the way it's written like a web app, and the use of iQ. </li>
<li> We were consistent about documenting all of our functions. We also had a <a href="http://hg.mozilla.org/labs/tabcandy/raw-file/tip/content/doc/index.html">series of web pages</a> that brought that documentation together. </li>
<li> Our use of meta tracking bugs for milestones allowed us to keep focused. </li>
<li> The team was generally on top of bugzilla, keeping up with all the conversations. Having a Panorama-specific component in Bugzilla allowed the team to see all the traffic for our feature without getting swamped with the Bugzilla firehose. </li>
</ul><p><b>Needs Improvement</b></p><ul><li> As outsiders, we encountered a steep learning curve, and made a number of naive decisions that had to be reversed later. </li>
<li> We weren't involved in mainstream Mozilla enough (we didn't attend the Firefox team meetings, weren't following the mozilla.dev.planning mailing list, etc). This meant we were often surprised by new developments, and also meant we weren't visible to the rest of Mozilla. </li>
<li> If it was clear that this was a stated goal of fx4, a little earlier, within the firefox team, ux, and to dev/community communications, it would have been easier to get people on board and help. </li>
<li> We spent a lot of time trying to figure out who to ask for things. </li>
<li> We often had to pull our "friends of Panorama" away from their "day job" to help us out. </li>
<li> We should have had better communication earlier of what we wanted to do with the platform folks so that they can suggest/optimize the performance of many things on the platform side. </li>
<li> We were often review-bound; we had a lot of work to do and we wrote patches faster than they could get reviewed. We'd also sometimes end up with a whole lot of reviewed patches waiting for approval. Either way, we had to deal with a lot of bitrot. </li>
<li> It was unclear early on what exactly the hurdles would be in getting this in the product (reviews, unit tests, code style, talos, etc). </li>
<li> We didn't start writing unit tests until we got serious about landing, so we had a lot of catch-up to do there. </li>
<li> By developing for a number of months before integrating, we had a huge hurdle to initially land because of the size of our code base. For one thing, it would have been good to get reviewers involved earlier. </li>
<li> Since Panorama is largely self-contained (both the code and the team), we often punted on deeper integration with the browser. For instance, the notion of "tab groups" should really have been a real xul/js construct in the tabbrowser level. Also, starting it as an add-on meant it already had a lot of momentum towards over-compartmentalization when we did integrate it. </li>
<li> When Panorama first landed, and for a few months after, it had the nasty habit of getting triggered accidentally and hosing your tabs in various interesting ways. We should have landed preffed off at first and flipped the default switch once things were more stable. </li>
<li> Key combos (and gestures), in particular the Panorama activation command, were and endless source of argument amongst the community. </li>
<li> We could have done more (blogging, for instance) to keep interested parties outside of the core team up to date on where we were. Perhaps our scrum threads could have been public as well? </li>
<li> We could have used better documentation for the overall architecture (as opposed to the invididual functions). </li>
<li> The code is different from mainstream Mozilla; a number of folks find this off-putting. </li>
<li> We never formalized an API, and the feature still isn't documented on MDC. </li>
<li> The design kept evolving, which on its own is fine, but we didn't keep a spec up to date, which caused confusion. </li>
<li> Although various folks pitched in on the planning side, having a dedicated Project Manager would have made a big difference. </li>
<li> Panorama exercised the browser code in ways it wasn't used to, and a few times we uncovered flaws that hadn't been found before. That's probably good, but it usually took us a while to realize that it wasn't just something we were doing wrong in the Panorama code. </li>
</ul><p><b>Further Thoughts</b></p><ul><li> Having at least one insider 100% dedicated to the project would have made a big difference. </li>
<li> In any established product, there's inertia against large innovative features. For version one of such a feature, you need a dedicated strike team in order to get over that inertia. For version two, however, the feature and team needs to dissolve back into the product as a whole. </li>
<li> It would be great if this process of introducing major innovations was more understood and had better support throughout the system. At the very least, there should be a "so you want to start a feature strike-team?" FAQ. </li>
</ul><p>What do you think? Anything to add? Comment here or edit <a href="https://wiki.mozilla.org/Firefox/Projects/Tabcandy/Panorama_1_Debrief">the wiki page</a>.</p>Ian Gilmanhttp://www.blogger.com/profile/07923261215410652507noreply@blogger.com3tag:blogger.com,1999:blog-8295194.post-76877293091434829922011-04-19T10:31:00.000-07:002011-04-27T10:21:35.963-07:00Firefox Panorama: We Did It!About a year ago, <a href="http://www.azarask.in/blog/">Aza Raskin</a> came to me with the basic idea that would become <a href="http://www.azarask.in/blog/post/designing-tab-candy/">Panorama</a>, and asked if I would noodle around with him on it, to see what we could make of it. Our prototypes, along with the ideas behind them, were compelling enough that the Firefox team embraced them, and the race was on to land the feature in the next shipping version of the browser. Firefox 4 is out now (closing in on <a href="http://glow.mozilla.com/">100 million downloads</a> so far!), and Panorama is one of its promoted features, so I guess we did OK.<br />
<br />
There's plenty still to be done – much potential to live up to – but I'm quite happy with how things turned out. Of course none of it would've been possible without the wonderful Panorama team:<br />
<ul><li><a href="http://mitcho.com/">Michael Yoshitaka Erlewine</a></li>
<li><a href="http://twitter.com/raymondlee/">Raymond Lee</a></li>
<li><a href="http://seanedunn.com/">Sean Dunn</a></li>
<li><a href="http://kevinhanes.net/">Kevin Hanes</a></li>
<li><a href="http://twitter.com/ttaubert/">Tim Taubert</a></li>
</ul>… and the support of many Mozilla stalwarts, including (but by no means limited to):<br />
<ul><li><a href="http://ehsanakhgari.org/">Ehsan Akhgari</a></li>
<li><a href="http://blog.zpao.com/">Paul O’Shannessy</a></li>
<li><a href="http://ed.agadak.net/">Edward Lee</a></li>
<li><a href="http://flavors.me/da">Dietrich Ayala</a></li>
<li><a href="http://blog.mozilla.com/dolske/">Justin Dolske</a></li>
<li><a href="http://design-noir.de/">Dão Gottwald</a></li>
<li><a href="http://blog.mozilla.com/faaborg/">Alex Faaborg</a></li>
<li><a href="http://beltzner.ca/mike/">Mike Beltzner</a></li>
</ul>Thank you all for making the vision a reality! <br />
<br />
It was an unusual project, so we've taken some time to look back and see what we've learned. I'll be distilling and writing up those thoughts in future posts, as well as sharing some of my own personal experiences with the Mozilla Way.<br />
<br />
... And of course if you haven't played with Panorama yet, go <a href="http://www.mozilla.com/firefox/">get Firefox 4</a> and give it a spin!Ian Gilmanhttp://www.blogger.com/profile/07923261215410652507noreply@blogger.com2tag:blogger.com,1999:blog-8295194.post-80076908994603258432011-01-04T10:00:00.000-08:002011-03-28T10:00:13.363-07:00Happy 2011!It's been almost a year since I left Microsoft to go freelance, and I can now say it's definitely been the right thing to do! I'm reading <a href="http://www.danpink.com/">Daniel Pink</a>'s <a href="http://www.amazon.com/Free-Agent-Nation-Working-Yourself/dp/0446678791/">Free Agent Nation</a> (for the first time, though it's a decade old), and I find I agree with just about everything he has to say… if you still wonder why I left full-time employment, it's all in there!<br />
<br />
So, I've been working on a few different projects in this time (<a href="http://www.chrisjordan.com/">Chris Jordan's new website</a> for instance, and several others I can't talk about yet), but the main gig has been (and continues to be) the new webpage navigation/organization feature for Firefox 4, <a href="http://www.azarask.in/blog/post/designing-tab-candy/">Panorama</a>. It's been quite the ride, going from a quiet little prototype to what some have hailed as the <a href="http://www.cio.com/article/640334/5_Best_Browser_Innovations_of_2010">best browser innovation of the year</a>, getting immersed in the Mozilla open source culture along the way.<br />
<br />
We still have a few months to go on Firefox 4, and I'm looking forward to bringing it on home to the finish line. After that, no doubt I will continue to be involved in the next version, but I'm also looking forward to branching out with more of a variety of projects, teams, and clients, as well as seriously starting some of my own things.<br />
<br />
Meanwhile, life is good. Working from home has allowed me to reconnect more fully with my family and my neighborhood. I'm even cooking more, which I love. Caitlyn and I are starting to play around with website creation together, and continuing to build stuff with Legos, along with all the other crazy antics five-year-olds and their fathers get up to. Christina's getting deeper into her creative endeavors, and I'm enjoying being involved, sometimes as participant, sometimes as observer.<br />
<br />
All in all, I feel like we're finding a rich blending of all of our interests and activities. I look forward to seeing what this new year holds, now that we've found a good rhythm!<br />
<br />
How about you? What do you wish for? May the New Year treat you well!Ian Gilmanhttp://www.blogger.com/profile/07923261215410652507noreply@blogger.com1tag:blogger.com,1999:blog-8295194.post-19581212333086135652007-03-13T21:58:00.000-07:002011-03-28T10:00:43.246-07:00Interview on Port 25Hank Janssen recently interviewed me about the Firefox version of Photosynth. You can find the interview, in audio form, at the top of <a href="http://port25.technet.com/archive/2007/02/28/we-re-writing-firefox-plug-ins-interview-with-ian-gilman-and-thoughts-on-10-months-at-microsoft.aspx">this post</a>.Ian Gilmanhttp://www.blogger.com/profile/07923261215410652507noreply@blogger.com2tag:blogger.com,1999:blog-8295194.post-48834850213575378712007-01-23T23:18:00.000-08:002011-03-28T10:01:33.478-07:00Photosynth FirefoxI've just completed work on the Firefox version of <a href="http://labs.live.com/photosynth/">Photosynth</a>, and now it's live! Still Windows only; one step at a time.Ian Gilmanhttp://www.blogger.com/profile/07923261215410652507noreply@blogger.com0