Tag: mozilla

Notes from Code for America Summit session on “Localization: Benefits & Challenges”

Day three of this year’s Code for America Summit followed an unconference format. Luke Crouch and I facilitated a session called “Localization: Benefits & Challenges.” During the session, each of us talked about why we find localization a valuable and beneficial activity, challenges to localization and brain-stormed tools and solutions.

Here are our notes. If you’re working on localization/internationalization in open source projects, especially mobile web apps, I’d love to hear from you!

Why localize?

  • greatest need for access to info is often non-english speaking
  • human needs are language agnostic, services should be as well
  • incorporating all perspectives requires crossing languages
  • empower cross-cultural understanding

What needs L10n?

  • websites
  • documentation
  • knowledge bases
  • phone trees
  • SMS
  • forums
  • social media
  • print media

Challenges

  • keeping content up to date
  • maintaining parity with english-language content
  • machine translation vs human translation
  • quality assurance
  • analytics
  • keeping entire loop translated / fractured experiences
  • cost
  • selecting and prioritizing languages
  • fonts / non-roman alphabets
  • right-to-left languages and user interactions
  • partnership building takes time
  • determining best practices
  • trust between communities?
  • socio-political context

Solutions

Note: Internationalization (I18n) is the process of preparing a project for localization. Localization (L10n) is the process of translating content.

Approaches

  • have users be translators
  • concentrate on building local communities
  • *listen* to needs of users. what do they need translated?
  • user interface vs content
  • platforms & tools address user interface
  • content is trickier: micro-sites, data stores, other?

Tools (libraries for L10n)

Platforms (for collecting/managing translations)

Action items moving forward

  • establish best practices
  • create a turn-key process and/or technology stack
  • organized translation camps

“One-thing” takeaways

Unconference facilitators asked each member of the session to provide a “one-thing” take-away from the session.

  • Localization is not just an international issue
  • Frame of reference for doing localization
  • Localization is solvable and urgent
  • We can work together right now to make this better

Why I Go to Conferences

Usually by 9pm on a given evening, I am winding down, feeling introspective and generally not chatty. However, this Sunday evening I had just arrived home after attending PyCon in Santa Clara, California. Upon realizing I was talking Sherri’s ears off, I stopped to ask, “Am I always like this after I get home from a conference.” The answer was a definitive: “Yes.”

It got me thinking about about why I go to conferences.

Not For the Technical Content

Perhaps this is heretical to say, but for whatever reason, it’s really difficult for me to learn technical topics deeply at conferences. I learn best in environments where I can minimize distractions, go at my own pace and engage one on one with my subject matter and instructor.  Conference learning is the antithesis of this: tons of distractions, the speakers set the pace and the learning is one to many, even in the smallest sessions and tutorials.

This does not mean that I get nothing from technical talks. Some are very inspiring and give me ideas of subjects to look up and study later, when I get home.

For the Community

Conferences connect me with community, and that is their most important offering. Over the years, I have found there is simply no substitute for time spent with people in real spaces.

Don’t misunderstand me. I love that our world is made smaller by technology. I love that I can work for Mozilla remotely using Skype, Vidyo, IRC and other internet-based technologies. I enjoy the convenience of being able to attend local planning meetings without leaving my home. It’s allowed me to continue participating even though my family obligations have increased substantially over the last year.

But technology doesn’t provide the same sense of connection and of belonging that I get from joining the physical space of my community. At conferences I see people I never see in person except at conferences. I run into people  with whom I have trouble connecting online due to our mutually busy schedules or offset timezones. At conferences I am able to interact with whole, three dimensional persons rather than flat images or disembodied voices. Because of this, conversation itself feels as if it has greater depth and meaning.

The connections that I form and strengthen at conferences have a lasting and cumulative effect. They provide the connective agent that makes online interactions between in-person events stronger and more productive. The people that I meet at community events become my friends, colleagues, peers, managers and mentors.

Why do you go to conferences and other community events?

How to Install Firefox and Thunderbird (Including Beta, Aurora & Nightly) on Ubuntu

One of the first things I do when setting up a new machine is install Firefox, Firefox Nightly and Thunderbird Aurora. There isn’t one source for all of these programs, and I always forget where to get each of them and how to make language packs work.

This article explains how to install the various releases of Firefox and Thunderbird on Ubuntu.

Overview of Firefox Builds

At any given time, there are four builds of Firefox available:

  • Release: Highly tested, relatively bug-free and stable. This is the build most people should use.
  • Beta: Needs a few final touches, but is otherwise stable and almost ready for prime-time. This build is for those who want a preview of upcoming features and are will to put up with a few minor bugs here and there.
  • Aurora: Aurora is a pre-Beta build. It’s most stable than a nightly, but not as stable as a beta. Use this build if you want a balance of cutting-edge features and stability.
  • Nightly: The most cutting-edge build you can get. It will have the most recent features, but might not be completely stable. Use this if you have a high tolerance for bugs.

Release

The most current release of Firefox should be available in the official Ubuntu repositories for all recent versions. As of the writing of this post, release from Quantal (12.10) to Precise (11.10) have Firefox 17, which is the current release version. The official repository for Raring (13.04), not yet released, has a beta build of Firefox 18.

Moreover, Firefox comes installed by default for these versions of Ubuntu. You shouldn’t have to do anything to install it. If you’ve un-installed it for some reason, you can install it with:

sudo apt-get install firefox

UPDATE 7 Jan: A commenter mentioned Ubuntuzilla, which I did not know about before. If you’re on a version of Ubuntu prior to 11.10 and want to install the current version of Firefox, this could be a good option for you.

Beta

A group called Mozilla Team maintains a repository for Firefox Beta (as well as and Thunderbird Beta).

To install from these repositories, first you have to add the ppa:

sudo add-apt-repository ppa:mozillateam/firefox-next

For Thunderbird, the command is:

sudo add-apt-repository ppa:mozillateam/thunderbird-next

Note: if your system doesn’t have add-apt-repository for some reason, try installing python-software-properties and if that doesn’t work then try installing software-properties-common.

Then update packages and install:

sudo apt-get update
sudo apt-get install firefox

Note: You’ll notice that this package name is the same as it is in the official repository. This means that you can’t have both installed at the same time. You can ‘pin’ a package to a given source and version, allowing you to install a specific version from a specific source. But, as long as the package names are the same, they can’t be installed concurrently. You’ll have to compile and execute one version from the source if you want to do this.

(If anyone knows how to re-name packages within a PPA, let me know how in the comments.)

Aurora & Nightly

Aurora & Nightly packages are maintained by Ubuntu Mozilla Daily Build team and there is one PPA for Firefox and Thunderbird nightlies, and then two other PPAs for the Aurora versions of each.

Installing Aurora versions:

sudo add-apt-repository ppa:ubuntu-mozilla-daily/firefox-aurora
sudo add-apt-repository ppa:ubuntu-mozilla-daily/thunderbird-aurora
sudo apt-get update
sudo apt-get install firefox
sudo apt-get install thunderbird

Note: See note in previous section regarding the limitations of packages with the same name.

Installing nightlies:

sudo add-apt-repository ppa:ubuntu-mozilla-daily/ppa
sudo apt-get update
sudo apt-get install firefox-trunk
sudo apt-get install thunderbird-trunk

You’ll notice that the packages names for both Firefox and Thunderbird are appended with ‘-trunk’. This means you can install and run nightly versions along side release, beta or aurora. In fact, this is what I do. I install and use release and nightly.

Installing Locales / Language Packs

For whatever reason, I’ve had a lot of trouble getting other locales to work with Firefox on recent versions of (X)Ubuntu. I always try installing the relevant language pack from the official repository. Packages like language-pack-de and language-pack-es should install everything you need for those locales, including the language packs for Firefox. But it never works. Here’s a method I’ve found that reliably works, at lease in 12.10.

Install your desired language pack xpi from:

You’ll also need to set your preferred language for displaying pages.

  1. In Firefox, open Preferences > Content.
  2. Under Languages press Choose.
  3. If you don’t see your desired language, click Select a language to add… and add one.
  4. If this doesn’t work, open about:config and set general.useragent.locale to your desired locale.

Almost there. Firefox will select the language pack to use based on what the system language is. If you’re not sure what your locale is, type this in a prompt:

printenv LANG

In my case, I get:

en_US.UTF8

This presents a problem because I don’t want to have to change the language for my entire system just to test another locale in Firefox. Luckily, there’s a solution.

You can start Firefox from the command line and specific the LANG environmental variable:

LANG=es_ES.UTF8 firefox

If you want to change the menu and/or or launcher command, you would use:

sh -c "LANG=es_ES.UTF8 /usr/bin/firefox-trunk %u"

Troubleshooting

I tested the above procedures on Xubuntu 12.10 with both Firefox release and nightly (trunk). If you have trouble with other configurations, let me know.

If you install a language pack that renders Firefox unable to start, start it in safe mode and remove the language pack. From the command-line, issue:

firefox --safe-mode

What Keeps Me at Mozilla

Note (added 30 December 2016): I quit Mozilla in August 2015. You can read why here and here. Most of what’s written below is still reasonably accurate, as far as I know. Except I think Mozilla being mission-driven is mostly horseshit, more about marketing than reality. Working for Mozilla might still be a good resume builder, but be weary of their ever-declining relevance. If you’re not a straight, white cishet man, be prepared to put up with a lot of bullshit, including lack of diversity across the board, co-workers potentially proselytizing to you without your consent, and other harassment that goes unchecked.

Doing good is part of our code.

A friend of mine is considering an offer to work at Mozilla and asked the question “what keeps me at Mozilla?” Below is my response to them.

(Note: As a couple of colleagues have indicated in the comments, this list is very-US centric. Benefits and even ability to work for Mozilla varies by your country of citizenship/residency.)

  • Near total flexibility in working environment. I can work at home, or from our Portland space, or any of the many Mozilla offices.
  • Ability to travel and go to conferences. Different teams have different policies about this, but over the last year I have been able to go to the conferences I’ve wanted to. Plus I can book travel to the MTV/SF offices whenever I feel like I need actual face-time.
  • Good salary and benefits. I don’t know exactly how Mozilla salaries compare to other Bay Area companies, but compared to Portland they are awesome. Last year I was able to pay off my student loan debt, save 10% of my salary AND buy a house. The health insurance is pretty good (not perfect; e.g. we don’t have complete coverage for trans folks yet). Paid time-off is plentiful as well (by US standards, anyway). And, having a flexible work environment means you can use for PTO for actual vacation as opposed to running errands or going to medical appointments.
  • Relative freedom in selecting your tools. You pick your hardware and operating system. You have root on your own machine. You can request a new laptop at least every two years (some people seem to get them sooner). There are gadgets like tablets, Android and now Firefox OS phones. If you need something to get your job done, you will get it.
  • Significant choice regarding what projects you work on. That’s not to say you can work on whatever you want according to whim alone. There is oversight, and your projects need to fit within Mozilla’s high-level goals. But within your functional team, you often have a great amount of say in what you spend your day-t0-day time doing. And, if you get in a position where you’re not doing what you really want to be, there are avenues for changing that.
  • Ability to work for mission-driven, open source oriented organization. Jobs at such organizations are rare because such organizations are few in number. At Mozilla, you have the honor of working for a project that has a ton of world-wide visibility and impact. We are working on initiatives that really matter, such as keeping the web open and bringing that open web to as much as the globe as possible (with Firefox OS).
  • You will work with brilliant, driven folks. These folks far outnumber the assholes. And it’s not just employees you’ll be working with. You will become part of a global army of awesome volunteer contributors.

If that’s piqued your interest, head on over to our Careers website and see if any of the open listings interest you. Got questions? I’m happy to answer them.

Oh, and to any co-workers who are reading, free free to add your own responses to ‘what keeps you at Mozilla’ by leaving a comment.

(Photo of Firefox billboard courtesy of Fligtar.)

A Moment of Reflection on Firefox’s Birthday

8 years ago today, Mozilla released Firefox 1.0. I remember when this happened. I was 23 and working for a small technology publisher in San Francisco. Even now, I can feel the excitement I felt then at having a viable open source alternative to Internet Explorer. I was an early Firefox Affiliate and I installing it on every computer I could get access to, including all the ones at work.

Never in my wildest dreams did I think then that I’d be fortunate enough to make my living in open source, let alone working for Mozilla. Mozilla isn’t a perfect organization, and it’s been a stressful first year for me, but I’m still proud to call myself a Mozillian and look forward to being here for a long while. At least long enough so see us successfully launch FirefoxOS and hire some more women and queer people (especially in technical roles).

What about you? Where were you when Firefox 1.0 launched?

Oh, and If you’re curious about this history of the Mozilla Project, including key releases, check out this timeline.

Joining the Technical Evangelism Team at Mozilla

I’m happy to announce that next Monday, 5 November will be my first day working full-time as a technical project manager and evangelist on the Technical Evangelism team within Mozilla’s Developer Engagement group, lead by Stormy Peters.

I joined Mozilla 13 months ago as a Web Product Engineer on the Web Productions team. During that time I helped guide the successful launches of Firefox Live, Firefox Flicks, the Legacy Firefox Startpage, a re-vamped Mozilla Careers and De Todos Para Todos. I’m going to miss working day-to-day with my awesome colleagues on this team!

However, I’m also excited about what I’ll be working during the next year because I’ll be contributing to programs directly related to the launch of FirefoxOS. This includes the early adopter hardware program, and programs to engage developers in writing HTML5 apps for FirefoxOS.

If you love technical project management, consider applying for my previous role. Got questions about that or how you can get involved in FirefoxOS? Drop me a line.

 

Strategies for Facilitating Better Meetings

As part of my work with Mozilla and Stumptown Syndicate, I attend a lot of meetings and many of those I am responsible for facilitating.

I think most people consider meetings to be necessary evils. Meetings are often time-consuming, inefficient and take us away from real work we need to be doing, and yet they seem unavoidable. It’s probably true that we can’t get away with eliminating meetings all together. Sometimes you just have to get everyone in a “room” together to hash out some issue.

However, I think we can work towards having more efficient meetings and below are some strategies I’ve learned for doing so.

Designate a Facilitator

The facilitator is usually the “driver” of the meeting. She helps the group understand and achieve their objective(s), assists the group in following the agenda and staying on schedule. The facilitator should ensure that notes are taken. Often, but not always, the facilitator is the person who initiates and schedules the meetings (by sending out the meeting invite).

Have a Clear, Obtainable Objective

Before the meeting (ideally when the meeting is scheduled), an objective (or set of objectives) for the meeting should be drafted and communicated to the entire group. The objective should follow SMART criteria: specific, measurable, attainable, relevant and time-bound. If you are meeting to make a series of decisions, state what specific decisions need to be made.

Create and Distribute an Agenda

Having an agenda is essential for keeping a meeting focused and timely. Whenever possible, circulate the agenda ahead of time so attendees can: a) determine the important of their presence at the meeting and prioritize their schedule accordingly, and b) prepare for the meeting.

In agendas I draft, I always include the following:

(Descriptive) Meeting Title & Date

== Objective ==
== Attendees ==
== Agenda / Notes ==
== Action Items ==

Did you note my use of wiki syntax? Not a coincidence! If you’re using a wiki in your organization, writing notes and agendas in wiki syntax makes recording of agendas and meeting notes that much easier (more on this in a bit).

Make Sure You Really Need a Meeting

It sounds simple, but before you schedule a meeting, ask yourself if you really need one. Can you clearly state your objective and draft an agenda? If not, you may not be prepared to have a meeting. Would an email work instead? A quick IRC conversation?

Include Compete Participation Instructions

Include complete participation instructions every time, even for regular meetings with regular participants. The reason for this is that you want as few barriers to attending your meeting and being on time for it as possible. If someone has to go looking for information on how to participate in the meeting, there is a chance that they will be late or that they won’t attend at all.

Things to consider including in your meeting invite:

  • date and time (including in UTC)
  • physical location (if there is one) and any special access instructions
  • conference/video call information, including complete dial-in number, room number and any required access codes
  • key instructions for using the conference/vidyo call system (e.g. how to mute yourself)
  • direct links to on-line meeting systems
  • if software is required to participate in the meeting, instructions on how to obtain and install it

Don’t assume that participants will have any of the above info readily accessible, even if they have attended your meetings before.

Here’s text that I put at the bottom of every Mozilla meeting invite (some info has been faked, so please don’t use for a real Mozilla meeting):

==============================================================
Connection Details: 

Vidyo 9597 (ckoehler).

+1 650 903 0800, x92 (or +1 800 707 2533, password 000) 
Then 99597 

•1 to mute if you’re dialed in (nb: it makes an audible beep) 

Direct room link: 
https://v.mozilla.com/flex.html?roomdirect.html&key=1234567890 
==============================================================

Note: If you’re a Mozillian and you want non-employees to join your Vidyo meeting, be sure to include the direct link.

Be Mindful of Participants’ Time

Because people’s time is precious, we should be mindful when requesting and utilizing it. There are several aspects to being mindful of your participants’ time:

  • Make sure each participant is really required at the meeting. Each of your participants should have an integral role in obtaining the objective of your meeting. If they don’t, add them as an optional attendee or don’t invite them at all.
  • Be aware of the timezone for each of your participants. When working with a global organization it’s often not possible to find a time that’s convenient for everyone. But you should have some awareness of who is being inconvenienced when, and try to distribute that burden. For example, don’t  schedule every meeting for times that are convenient only for those in Pacific time.
  • Start on-time and end on-time. Most people have multiple meetings per day, and have other things they need to do at certain times. Don’t make others late by conducting a meeting that exceeds its scheduled time. Better yet, strive to end a few minutes early! Most everyone appreciates a few unexpected minutes between commitments to stretch their legs, use the restroom and get some water or coffee. Likewise, be respectful of those who arrive on-time for a meeting by starting on-time. A meeting that starts at the scheduled time is that much more likely to end by the scheduled time.

Take Notes

One of the most important things you can do during a meeting is to ensure that good notes are taken. Taking notes has the following benefits:

  • helps to keep participants focused and on-track during the meeting
  • provides a clear record of what was discussed and decided during the meeting, for reference both by those who attended the meeting and those who were not able to do so

I find it works well for the group to take notes together in the same etherpad I have used for the agenda.  Notes do not have to be a word for word recounting of what was said in the meeting, but should include a summary of the discussion points, questions raised and answers given.

You don’t need to create perfect notes while the meeting is happening. Just record the important information and be prepared to edit afterward.

Follow-Up

A good meeting is not complete until you’ve distributed and recorded the revised meeting notes (or minutes), with key decisions and action items clearly indicated.

The complete agenda and note-taking process looks like this:

  • create and circulate an agenda in advance of the meeting
  • use etherpad (or another collaborative editing tool) whenever possible
  • take notes, with the group’s assistance, in the same document you used for the agenda
  • edit the notes after the meeting is complete, making sure to call out key decisions and action items
  • distribute the edited notes to everyone you invited to the meeting (not just those who actually attended)
  • record the notes in an accessible location (on a public wiki, on your organization’s intranet, etc.)

When I distribute meeting notes, I usually do so via email, with a link to the edited notes and action items included in the actual body of the email.

Your Strategies?

What strategies do you have for running better meetings? Let me know by leaving a comment.

On Accountability

Back in July, someone claiming to be a “Mozilla member” made threatening comments here on my blog, directed towards myself and my colleague Tim Chevalier. I reported the comments immediately to Mozilla HR. It look nearly three months, but I can now report a resolution.

The person who left the comments is a Mozilla employee. They have been contacted by Mozilla HR and directed not to make these kind of comments to Mozilla employees or community members in the future, or else face disciplinary action. They have also issued an apology to me personally. Unfortunately, the person has declined to provide a public apology and isn’t being compelled to do so.

I find the lack of a public apology disappointing and a detriment to the Mozilla community. Those who violate community conduct standards should face the consequences of their actions and they should have to face them publicly.

Why? Many reasons. Without having to face consequences, abusive behavior is likely to continue, and likely to escalate. When those who violate conduct standards are held publicly accountable for their actions, it gives those who might have been a target of such behavior in the past a chance to finally speak up. And, it demonstrates that the Mozilla community takes its employees’ and contributors’ conduct toward one another seriously and doesn’t tolerate abuse. A public apology gives those who transgress an opportunity to make amends with the community.

In the case of the person who left the threats on my blog, their desire not to look bad is being placed above our (mine, Tim’s and others from marginalized groups) need to feel safe, and thus represents a refusal to acknowledge their deleterious effect on our entire community.

The commenter’s actions harmed not just the two of us who were the direct targets, but the Mozilla community as a whole by setting the example that if a queer person feels they are being discriminated against at Mozilla and speaks out about it, they will be penalized with a public threat. Why was the original comment a threat? Because saying “we don’t want you two around” implies that they would do their best, either directly or indirectly, to make sure Tim and I were not able to continue to be around. Furthermore, their use of “we” created anxiety that there was not just one, but many people at Mozilla who wanted to force out people who speak out against discrimination.

More generally, the commenter’s actions set a precedent that if somebody is in a vulnerable minority group, they must choose between being silent and accepting what they experience as discriminatory treatment or risk being humiliated and threatened if they speak out against it. Being in a situation where the only choices are to accept abuse without criticizing it or be retaliated against for speaking up, is unfair. A community where people in minority groups are treated unfairly is one that many such people will either leave, or not join in the first place, because they don’t feel welcome. And driving away people in minority groups hurts the community. It deprives the community of all that minority group members can contribute, and means Mozilla won’t have the best employees and contributors it can possibly have.

In the lack of acknowledgment that the commenter’s actions harmed the community, I hear unwillingness to say that Mozilla values its contributors who are queer. If harming us does not harm the community, then the only logical conclusion is that we’re not an important part of the community. It’s hurtful to see that the facts apparently point to this conclusion.

While it’s true that I could reveal the identity of the anonymous commenter, I don’t feel comfortable doing so publicly, here on my blog because I fear a lack of support from the Mozilla community. On the one hand, many of you expressed your outrage and disapproval of the commenter’s behavior, but on the other hand, some of you also expressed doubt that the commenter could even be part of the Mozilla community. Also, I have not seen a lot of outspoken support for those who speak up on these issues, and have certainly experienced a lack of institutional support on behalf of Mozilla leadership.

What I will do is encourage those of you who have been the target of threatening behavior, even if it seems insignificant, to document and report it.

Update 3 October 19:45 PDT: Read Harassment, Accountability, and Justice for Tim’s response to this issue.