<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Yura Zenevich</title>
 <link href="http://yzen.github.io/atom.xml" rel="self"/>
 <link href="http://yzen.github.io/"/>
 <updated>2014-12-04T23:15:04+00:00</updated>
 <id>http://yzen.github.io/</id>
 <author>
   <name>Yura Zenevich</name>
   <email>yzenevich@mozilla.com</email>
 </author>

 
 <entry>
   <title>Resources For Contributing to Firefox OS Accessibility.</title>
   <category term="firefoxos" scheme="http://yzen.github.io/category" />
   <link href="http://yzen.github.io/firefoxos/2014/11/28/resources-for-contributing.html"/>
   <updated>2014-11-28T00:00:00+00:00</updated>
   <id>http://yzen.github.io/firefoxos/2014/11/28/resources-for-contributing</id>
   <content type="html">&lt;h1&gt;Resources For Contributing to Firefox OS Accessibility.&lt;/h1&gt;

&lt;p class=&quot;meta&quot;&gt;28 Nov 2014 - Toronto, ON&lt;/p&gt;


&lt;p&gt;I believe when contributing to &lt;strong&gt;Firefox OS&lt;/strong&gt; and &lt;em&gt;Gaia&lt;/em&gt;, just like with most open source projects, a lot of attention should be given to reducing the barrier for entry for new contributors. It is even more vital for &lt;em&gt;Gaia&lt;/em&gt; since it is an extremely fast moving project and the number of things to keep track of is overwhelming. In an attempt to make it easier to start contributing to Firefox OS Accessibility I compiled the following list of resources, that I will try keeping up to date. It should be helpful for a successful entry into the project:&lt;/p&gt;

&lt;p&gt;Firstly, links to high level documentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia&quot;&gt;Developing &lt;em&gt;Gaia&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lists.mozilla.org/listinfo/dev-gaia&quot;&gt;&lt;em&gt;dev-gaia&lt;/em&gt; mailing list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;h1&gt;Git&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Gaia&lt;/em&gt; project is hosted on &lt;a href=&quot;https://github.com/&quot;&gt;&lt;strong&gt;Github&lt;/strong&gt;&lt;/a&gt; and the version control that is used is &lt;a href=&quot;http://www.git-scm.com/&quot;&gt;&lt;strong&gt;Git&lt;/strong&gt;&lt;/a&gt;. Here&#39;s a link to the project source code:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/mozilla-b2g/gaia/&quot;&gt;&lt;em&gt;https://github.com/mozilla-b2g/gaia/&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of my coworkers (James Burke) proposed the following workflow that you might find useful (&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1068713#c12&quot;&gt;link to source&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fork &lt;em&gt;Gaia&lt;/em&gt; using Github UI (I will use my &lt;em&gt;Github&lt;/em&gt; user name - &lt;code&gt;yzen&lt;/code&gt; as an example)&lt;/li&gt;
&lt;li&gt;From your fork of &lt;em&gt;Gaia&lt;/em&gt; (&lt;a href=&quot;https://github.com/yzen/gaia&quot;&gt;&lt;em&gt;https://github.com/yzen/gaia&lt;/em&gt;&lt;/a&gt;), clone that locally, and set up a &quot;remote&quot; that is called &quot;upstream&quot; that points to the mozilla-b2g/gaia repo:&lt;/li&gt;
&lt;/ul&gt;


&lt;pre&gt;&lt;code class=&quot;shell&quot;&gt;    git clone --recursive git@github.com:yzen/gaia.git gaia-yzen
    cd gaia-yzen
    git remote add upstream git@github.com:mozilla-b2g/gaia.git
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;For each bug you are working on, create a branch to work on it. This branch will be used for the pull request when you are ready. So taking this bug number &lt;em&gt;123&lt;/em&gt; as an example, and assuming you are starting in your clone&#39;s &lt;em&gt;master&lt;/em&gt; branch in the project directory:&lt;/li&gt;
&lt;/ul&gt;


&lt;pre&gt;&lt;code class=&quot;shell&quot;&gt;    # this updates your local master to match mozilla-b2g&#39;s latest master
    # you should always do this to give better odds your change will work
    # with the latest master state for when the pull request is merged
    git pull upstream master

    # this updates your fork on github&#39;s master to match
    git push origin master

    # Create bug-specific branch based on current state of master
    git checkout -b bug-123
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now you will be in the &lt;code&gt;bug-123&lt;/code&gt; branch locally, and its contents will look the same as the &lt;code&gt;master&lt;/code&gt; branch. The idea with bug-specific branches is that you keep your master branch pristine and only matching what is in the official &lt;em&gt;mozilla-b2g&lt;/em&gt; branch. No other local changes. This can be useful for comparisons or rebasing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do the changes in relation to the bug you are working on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Commit the change to the branch and then push the branch to your fork. For the commit message, you can just copy in the title of the bug:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;pre&gt;&lt;code class=&quot;shell&quot;&gt;    git commit -am &quot;Bug 123 - this is the summary of changes.&quot;
    git push origin bug-123
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now you can go to &lt;a href=&quot;https://github.com/yzen/gaia&quot;&gt;&lt;em&gt;https://github.com/yzen/gaia&lt;/em&gt;&lt;/a&gt; and do the pull request.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the course of the review, if you need to do other commits to the branch for review feedback, once it is all reviewed, you can flatten all the commits into one commit, then force push the change to your branch. I normally use &lt;code&gt;rebase -i&lt;/code&gt; for this. So, in the &lt;code&gt;gaia-yzen&lt;/code&gt; directory, while you are in the &lt;em&gt;bug-123&lt;/em&gt;, you can run:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;pre&gt;&lt;code class=&quot;shell&quot;&gt;    git rebase -i upstream/master
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;At this point, git gives you a way to edit all the commits. I normally &lt;em&gt;&#39;pick&#39;&lt;/em&gt; the first one, then choose &lt;em&gt;&#39;s&#39;&lt;/em&gt; for squash for the rest, so the rest of the commits are squashed to the first picked commit.&lt;/p&gt;

&lt;p&gt;Once that is done and git is happy, you can the force push the new state of the branch back to &lt;em&gt;GitHub&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;shell&quot;&gt;    git push -f origin bug-123
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;More resources at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Making_Gaia_code_changes&quot;&gt;Making &lt;em&gt;Gaia&lt;/em&gt; code changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Submitting_a_Gaia_patch&quot;&gt;Submitting a Gaia patch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;h1&gt;Source Code&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;All apps are located in &lt;em&gt;apps/&lt;/em&gt; directory. Each up is located within its own directory. So for example if you are working on a &lt;em&gt;Calendar&lt;/em&gt; app you would be making your changes in the &lt;em&gt;apps/calendar&lt;/em&gt; directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The way we want to make sure that the improvements that we work on actually help &lt;em&gt;Firefox OS&lt;/em&gt; accessibility and do not regress we have a policy of adding &lt;em&gt;gaia-ui&lt;/em&gt; python Marionette tests for all new accessible functionality. You can find tests in the &lt;em&gt;tests/python/gaia-ui-tests/gaiatest/tests/accessibility/&lt;/em&gt; directory.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;More resources at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Understanding_the_Gaia_codebase&quot;&gt;Understanding the &lt;em&gt;Gaia&lt;/em&gt; codebase&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;h1&gt;Building and Running &lt;em&gt;Gaia&lt;/em&gt;&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Different_ways_to_run_Gaia&quot;&gt;Different ways to run &lt;em&gt;Gaia&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Build_System_Primer&quot;&gt;&lt;em&gt;Gaia&lt;/em&gt; build system primer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;h1&gt;Testing&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Testing_Gaia_code_changes&quot;&gt;Testing &lt;em&gt;Gaia&lt;/em&gt; code changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/Gaia_unit_tests&quot;&gt;&lt;em&gt;Gaia&lt;/em&gt; unit tests&lt;/a&gt; used for low level unit testing.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/Gaia_integration_tests&quot;&gt;&lt;em&gt;Gaia&lt;/em&gt; integration tests&lt;/a&gt; used for higher level integration tests.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/gaia-ui-tests&quot;&gt;&lt;em&gt;Gaia&lt;/em&gt; UI tests&lt;/a&gt; used for higher level integration tests. All accessibility tests are written as &lt;em&gt;Gaia&lt;/em&gt; UI tests.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;h1&gt;Localization&lt;/h1&gt;

&lt;p&gt;Localization is very relevant to accessibility especially because one of the tasks that we perform when making something accessible is ensuring that all elements in the applications are labeled for the user of assistive technologies. Please see &lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/localization_code_best_practices&quot;&gt;Localization best practices&lt;/a&gt; for guidelines on how to add new text to applications.&lt;/p&gt;

&lt;hr /&gt;

&lt;h1&gt;Debugging&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Debugging&quot;&gt;Debugging Firefox OS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Tools/WebIDE&quot;&gt;WebIDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Different_ways_to_run_Gaia#Using_Gaia_in_Firefox_Mulet&quot;&gt;Mulet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;hr /&gt;

&lt;h1&gt;Using a screen reader&lt;/h1&gt;

&lt;p&gt;Using a device or navigating a web application is different with the screen reader. Screen reader introduces a concept of virtual cursor (or focus) that represents screen reader&#39;s current position inside the app or web page. For mode information and example videos please see: &lt;a href=&quot;https://wiki.mozilla.org/Accessibility/Mobile/ScreenReader&quot;&gt;Screen Reader&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h1&gt;Accessibility&lt;/h1&gt;

&lt;p&gt;Here are some of the basic resources to help you get to know what mobile accessibility (and accessibility) is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://yzen.github.io/firefoxos/2014/04/30/mobile-accessibility-checklist.html&quot;&gt;Mobile Accessibility Checklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/WAI/intro/aria&quot;&gt;ARIA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;yzen&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>TIL Debugging Gaia with B2G Desktop and WebIDE.</title>
   <category term="firefoxos" scheme="http://yzen.github.io/category" />
   <link href="http://yzen.github.io/firefoxos/2014/10/24/today-i-learned.html"/>
   <updated>2014-10-24T00:00:00+00:00</updated>
   <id>http://yzen.github.io/firefoxos/2014/10/24/today-i-learned</id>
   <content type="html">&lt;h1&gt;TIL Debugging Gaia with B2G Desktop and WebIDE.&lt;/h1&gt;

&lt;p class=&quot;meta&quot;&gt;24 Oct 2014 - Toronto, ON&lt;/p&gt;


&lt;p&gt;With some great help from Rob Wood from Mozilla Firefox OS Automation team, I finally managed to get &lt;strong&gt;Gaia&lt;/strong&gt; up and running and ready for debugging with &lt;a href=&quot;http://nightly.mozilla.org/#Desktop%20Boot2Gecko&quot;&gt;B2G Desktop Nightly&lt;/a&gt; build and &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Tools/WebIDE&quot;&gt;WebIDE&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is currently &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1070830&quot;&gt;impossible&lt;/a&gt; to develop / debug &lt;strong&gt;Gaia&lt;/strong&gt; using Firefox for Desktop. Thus, it&#39;s a pretty big barrier for new contributors who are just starting out with &lt;strong&gt;Gaia&lt;/strong&gt;. Turns out, it is fairly easy to run &lt;strong&gt;Gaia&lt;/strong&gt; codebase with &lt;em&gt;B2G Desktop&lt;/em&gt; build. Here are the instructions:&lt;/p&gt;

&lt;h2&gt;Prerequisits:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Download and install &lt;a href=&quot;http://nightly.mozilla.org/#Desktop%20Boot2Gecko&quot;&gt;B2G Desktop Nightly&lt;/a&gt; build&lt;/li&gt;
&lt;li&gt;Download and install &lt;a href=&quot;http://nightly.mozilla.org/#Desktop&quot;&gt;Firefox for Desktop Nightly&lt;/a&gt; build&lt;/li&gt;
&lt;li&gt;Check out &lt;strong&gt;Gaia&lt;/strong&gt; code base: &lt;code&gt;git clone https://github.com/mozilla-b2g/gaia.git&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Instructions:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In your &lt;strong&gt;Gaia&lt;/strong&gt; repository build a &lt;strong&gt;Gaia&lt;/strong&gt; user profile from scratch:
&lt;code&gt;make&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the following command to start the &lt;em&gt;B2G Nightly&lt;/em&gt; build with &lt;strong&gt;Gaia&lt;/strong&gt; profile that you just built:
&lt;code&gt;/path/to/your/B2G/b2g-bin -profile /path/to/your/gaia/profile -start-debugger-server [PORT_NUMBER]&lt;/code&gt;
For example: &lt;code&gt;/Applications/B2G.app/Contents/MacOS/b2g-bin -profile /Users/me/gaia/profile -start-debugger-server 7000&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Start &lt;a href=&quot;http://nightly.mozilla.org/#Desktop&quot;&gt;Firefox for Desktop Nightly&lt;/a&gt; build&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open &lt;em&gt;WebIDE&lt;/em&gt; (&lt;em&gt;Tools -&gt; Web Developer -&gt; WebIDE&lt;/em&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Press &lt;em&gt;Select Runtime -&gt; Remote Runtime&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Replace the port with the one used in step 2 (&lt;code&gt;7000&lt;/code&gt;) and click OK&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A dialog should pop up within the &lt;em&gt;B2G&lt;/em&gt; emulator asking to permit remote debugging. Press OK&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At this point you should have access to all apps bundled with the profile as well as the Main Process via WebIDE&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When you make changes to &lt;strong&gt;Gaia&lt;/strong&gt; code base, you can run &lt;code&gt;make&lt;/code&gt; again to rebuild your profile. &lt;strong&gt;Hint:&lt;/strong&gt; if you are working on a single app, just run &lt;code&gt;APP=my_app make&lt;/code&gt; to only rebuild the app.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;yzen&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>isfirefoxosaccessibleyet.com</title>
   <category term="firefoxos" scheme="http://yzen.github.io/category" />
   <link href="http://yzen.github.io/firefoxos/2014/09/24/isfirefoxosaccessibleyet.com.html"/>
   <updated>2014-09-24T00:00:00+00:00</updated>
   <id>http://yzen.github.io/firefoxos/2014/09/24/isfirefoxosaccessibleyet.com</id>
   <content type="html">&lt;h1&gt;isfirefoxosaccessibleyet.com&lt;/h1&gt;

&lt;p class=&quot;meta&quot;&gt;24 Sep 2014 - Toronto, ON&lt;/p&gt;


&lt;p&gt;Eitan from Mozilla&#39;s accessibility team was nice enough to reserve a &lt;a href=&quot;http://isfirefoxosaccessibleyet.com&quot;&gt;isfirefoxosaccessibleyet.com&lt;/a&gt; domain where we could track Firefox OS accessibility status easily and in the open. I am really happy to announce that &lt;a href=&quot;http://isfirefoxosaccessibleyet.com&quot;&gt;isfirefoxosaccessibleyet.com&lt;/a&gt; is now ready to be seen in public.&lt;/p&gt;

&lt;p&gt;There are several bits of information about each app (including the overall system) that you can find there: an overall accessibility score, a number of opened, resolved and currently in progress bugs. We also provide links to the actual bug lists handy in case you need to dig deeper.&lt;/p&gt;

&lt;p&gt;For anyone who wants to help out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you are a user and want to file a bug, you should be able to find a link inside each app&#39;s section.&lt;/li&gt;
&lt;li&gt;If you are a developer and want to hack on &lt;em&gt;Gaia&lt;/em&gt; accessibility, each app section has an up-to-date lists if high priority and good first bugs.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Please feel free to check it out!&lt;/p&gt;

&lt;p&gt;yzen&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Building and Flashing a Firefox OS device</title>
   <category term="firefoxos" scheme="http://yzen.github.io/category" />
   <link href="http://yzen.github.io/firefoxos/2014/05/07/building-flame.html"/>
   <updated>2014-05-07T00:00:00+00:00</updated>
   <id>http://yzen.github.io/firefoxos/2014/05/07/building-flame</id>
   <content type="html">&lt;h1&gt;Building and Flashing a Firefox OS device&lt;/h1&gt;

&lt;p class=&quot;meta&quot;&gt;07 May 2014 - Toronto, ON&lt;/p&gt;


&lt;p&gt;Yesterday I found a mystery box sitting on my table. I was super excited to discover that I finally got the new &quot;Flame&quot; reference &lt;em&gt;Firefox OS&lt;/em&gt; device (&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Developer_phone_guide/Flame&quot;&gt;MDN&lt;/a&gt;). So let the testing begin!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/flame.png&quot; title=&quot;Flame Device&quot; alt=&quot;Picture of a &amp;quot;Flame&amp;quot; reference device&quot; /&gt;&lt;/p&gt;

&lt;p&gt;First of all, I wanted to comment on the great build and hardware quality that the device has! I was impressed to a point of wanting to dog-food the device as my primary smartphone. Unfortunately, none of the &lt;em&gt;Firefox OS&lt;/em&gt; devices released to date work on Wind Mobile network (1700/2100 AWS band).&lt;/p&gt;

&lt;p&gt;My second thought was to flash it with the latest &lt;em&gt;Firefox OS&lt;/em&gt; build. Since I am using &lt;em&gt;OSX&lt;/em&gt; as my primary working environment, I opted for using the current &lt;em&gt;Ubuntu LTS&lt;/em&gt; with &lt;a href=&quot;https://www.virtualbox.org/&quot;&gt;Virtual Box&lt;/a&gt; and &lt;a href=&quot;http://vagrantup.com/&quot;&gt;Vagrant&lt;/a&gt;. I was using that setup for a while now with the &lt;em&gt;Inari&lt;/em&gt; device without any issues. The first thing I discovered when building for &quot;Flame&quot; is that my build now explicitly fails because of the non-case sensitive file system (I shared the source for &lt;em&gt;B2G&lt;/em&gt;, &lt;em&gt;gecko&lt;/em&gt; and &lt;em&gt;Gaia&lt;/em&gt; between the host and the guest environments).&lt;/p&gt;

&lt;p&gt;Given that other developers that work on &lt;em&gt;OSX&lt;/em&gt; and develop for &quot;Flame&quot; might face the same issues, here is a step by step guide to setting up, building and flashing the reference device:&lt;/p&gt;

&lt;h2&gt;Case sensitive disk image&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;NOTE: proceed to the next step if you have a case-sensitive file system already&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To create mountable case-sensitive disk image run&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  hdiutil create -volname &#39;firefoxos&#39; -type SPARSE -fs \
  &#39;Case-sensitive Journaled HFS+&#39; -size 40g ~/firefoxos.sparseimage
  open ~/firefoxos.sparseimage
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The drive will now be located at &lt;code&gt;/Volumes/firefoxos/&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;Source code&lt;/h2&gt;

&lt;p&gt;The disk image is the place to keep the &lt;em&gt;B2G&lt;/em&gt; &lt;a href=&quot;https://github.com/mozilla-b2g/B2G&quot;&gt;source code&lt;/a&gt;. In case you have a pre-existing &lt;em&gt;Gaia&lt;/em&gt; and &lt;em&gt;gecko&lt;/em&gt; repositories you can use symlinks to/for them.&lt;/p&gt;

&lt;p&gt;Now is also a good time to set an environment variable that will be used to reference the path to B2G source:
&lt;code&gt;
export B2G_PATH=&quot;/Volumes/firefoxos/B2G&quot;
&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;Build environment&lt;/h2&gt;

&lt;p&gt;By now you should have &lt;a href=&quot;https://www.virtualbox.org/&quot;&gt;Virtual Box&lt;/a&gt; and &lt;a href=&quot;http://vagrantup.com/&quot;&gt;Vagrant&lt;/a&gt; installed. &lt;em&gt;Vagrant&lt;/em&gt; makes it really easy to create and configure the build environment with just one command. All of the provisioning stuff is specified in this &lt;code&gt;Vagrantfile&lt;/code&gt; that you should save somewhere close to where you keep your other VMs.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/7723421.js&quot;&gt; &lt;/script&gt;


&lt;p&gt;Now navigate to the directory you saved the &lt;code&gt;Vagrantfile&lt;/code&gt; to. And run the following command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;vagrant up
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It will take some time to set everything up but once you are done your VM should be easily accessible via &lt;em&gt;ssh&lt;/em&gt;, so type:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;vagrant ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and you are in.&lt;/p&gt;

&lt;h2&gt;Configure, build and flash&lt;/h2&gt;

&lt;p&gt;At this point you are all set up and ready to roll. Here&#39;s what you need to do:&lt;/p&gt;

&lt;p&gt;Connect your device via USB and verify that it is visible to the VM: &lt;code&gt;adb devices&lt;/code&gt; should list it.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  cd B2G // host&#39;s B2G_PATH is synced to guest&#39;s $HOME/B2G
  ./config.sh flame // Will take some time to fetch everything
  ./build.sh // Will take a very long time to build everything
  ./flash.sh // Will flash the device with your new shiny build
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Hopefully everything worked for you and you are ready to hack on &lt;em&gt;B2G&lt;/em&gt; or &lt;em&gt;Gaia&lt;/em&gt; from OSX. The changes you make will be synced to the VM. When you are ready to build again, just &lt;em&gt;ssh&lt;/em&gt; to it and run the necessary commands (&lt;a href=&quot;https://developer.mozilla.org/en-US/Firefox_OS/Building&quot;&gt;more here&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;yzen&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>FirefoxOS Accessible Tabs</title>
   <category term="firefoxos" scheme="http://yzen.github.io/category" />
   <link href="http://yzen.github.io/firefoxos/2014/05/01/firefoxos-accessible-tabs.html"/>
   <updated>2014-05-01T00:00:00+00:00</updated>
   <id>http://yzen.github.io/firefoxos/2014/05/01/firefoxos-accessible-tabs</id>
   <content type="html">&lt;h1&gt;FirefoxOS Accessible Tabs&lt;/h1&gt;

&lt;p class=&quot;meta&quot;&gt;01 May 2014 - Toronto, ON&lt;/p&gt;


&lt;p&gt;Firefox OS accessibility has been one of the main focus items for our team for quite a while now. The &lt;em&gt;TODO&lt;/em&gt; list is fairly &lt;a href=&quot;https://bugzilla.mozilla.org/buglist.cgi?j_top=OR&amp;amp;f1=blocked&amp;amp;o1=substring&amp;amp;resolution=---&amp;amp;query_based_on=the-big-list&amp;amp;o2=substring&amp;amp;query_format=advanced&amp;amp;f2=short_desc&amp;amp;v1=893789&amp;amp;v2=[AccessFu]&amp;amp;known_name=the-big-list&amp;amp;list_id=9909885&quot;&gt;long&lt;/a&gt; so it&#39;s important to prioritize the most impactful items. We recently completed making the &lt;em&gt;Tabs&lt;/em&gt; widgets accessible across all Firefox OS applications.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tabs&lt;/em&gt; is part of &lt;strong&gt;Building Blocks&lt;/strong&gt; - a collection of commonly used patterns in CSS, HTML and, eventually, Javascript that comprise different commonly used widgets such as &lt;em&gt;header, list, button, etc&lt;/em&gt; (currently located &lt;a href=&quot;https://github.com/mozilla-b2g/gaia/tree/master/shared/style&quot;&gt;here&lt;/a&gt; in &lt;em&gt;Gaia&lt;/em&gt; source code). This meant that by addressing &lt;em&gt;Tabs&lt;/em&gt; accessibility we would improve accessibility of all &lt;em&gt;Gaia&lt;/em&gt; apps that use them. It would also serve as a good accessible &lt;em&gt;Tabs&lt;/em&gt; template for the upcoming apps that would need to use them.&lt;/p&gt;

&lt;p&gt;Most of the changes were specific to HTML and CSS with a little extra Javascript work, all described below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Tabs&lt;/em&gt; in Gaia now use the following markup:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;ul role=&quot;tablist&quot; class=&quot;bb-tablist&quot;&amp;gt;
  &amp;lt;li role=&quot;presentation&quot;&amp;gt;
    &amp;lt;a id=&quot;tab1&quot; href=&quot;#tabpanel1&quot; role=&quot;tab&quot; aria-controls=&quot;tabpanel1&quot;
      aria-selected=&quot;false&quot;&amp;gt;Tab 1&amp;lt;/a&amp;gt;
    &amp;lt;div id=&quot;tabpanel1&quot; class=&quot;bb-tabpanel&quot; role=&quot;tabpanel&quot;
      aria-labelledby=&quot;tab1&quot;&amp;gt;Tab Panel 1&amp;lt;/div&amp;gt;
  &amp;lt;/li&amp;gt;
  ...
  &amp;lt;li role=&quot;presentation&quot;&amp;gt;
    &amp;lt;a id=&quot;tab2&quot; href=&quot;#tabpanel1&quot; role=&quot;tab&quot; aria-controls=&quot;tabpanel2&quot;
      aria-selected=&quot;true&quot;&amp;gt;Tab 2&amp;lt;/a&amp;gt;
    &amp;lt;div id=&quot;tabpanel2&quot; class=&quot;bb-tabpanel&quot; role=&quot;tabpanel&quot;
      aria-labelledby=&quot;tab2&quot;&amp;gt;Tab Panel 2&amp;lt;/div&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
// Note: elements with the role=&quot;tabpanel&quot; do not have to be siblings of the
// role=&quot;tab&quot; elements.
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can find the CSS, that &lt;em&gt;Tabs&lt;/em&gt; in Gaia use, &lt;a href=&quot;https://github.com/mozilla-b2g/gaia/blob/master/shared/style/tabs.css&quot;&gt;here&lt;/a&gt;. As you can see from the markup above and the corresponding CSS file, there is an explicit separation between the aria roles and the styling. This was done to address a common pitfall of using the aria roles as CSS selectors to obtain the necessary styling on elements with different semantics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The only Javascript bit that was required was related to handling &lt;code&gt;aria-selected&lt;/code&gt; attribute between the list of tabs (&lt;a href=&quot;https://github.com/mozilla-b2g/gaia/blob/master/shared/js/accessibility_helper.js&quot;&gt;&lt;em&gt;accessibility_helper.js&lt;/em&gt;&lt;/a&gt;). &lt;code&gt;AccessibilityHelper.setAriaSelected&lt;/code&gt; would need to be called from the app code that is responsible for handling navigation between tabs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;As of right now, if an app implementation requires a &lt;em&gt;Tabs&lt;/em&gt; widget, developers need to use the above markup, include the above CSS file as well as the &lt;a href=&quot;https://github.com/mozilla-b2g/gaia/blob/master/shared/js/accessibility_helper.js&quot;&gt;&lt;em&gt;accessibility_helper.js&lt;/em&gt;&lt;/a&gt; file. And if they do, their users should be able to enjoy fully screen reader accessible &lt;em&gt;Tabs&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;yzen&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Mobile Accessibility Checklist</title>
   <category term="firefoxos" scheme="http://yzen.github.io/category" />
   <link href="http://yzen.github.io/firefoxos/2014/04/30/mobile-accessibility-checklist.html"/>
   <updated>2014-04-30T00:00:00+00:00</updated>
   <id>http://yzen.github.io/firefoxos/2014/04/30/mobile-accessibility-checklist</id>
   <content type="html">&lt;h1&gt;Mobile Accessibility Checklist&lt;/h1&gt;

&lt;p class=&quot;meta&quot;&gt;30 Apr 2014 - Toronto, ON&lt;/p&gt;


&lt;p&gt;&lt;em&gt;This is a concise checklist of accessibility requirements for mobile developers. It is intended to continuously evolve as more patterns arise.&lt;/em&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Colour&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Colour contrast &lt;strong&gt;MUST&lt;/strong&gt; comply with &lt;a href=&quot;http://www.w3.org/TR/WCAG/&quot;&gt;WCAG 2.0&lt;/a&gt; AA Level requirement

&lt;ul&gt;
&lt;li&gt;Contrast ratio of 4.5:1 for normal text (less than 18 point or 14 point bold)&lt;/li&gt;
&lt;li&gt;Contrast ratio of 3:1 for large text (at least 18 point or 14 point bold)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://snook.ca/technical/colour_contrast/colour.html&quot;&gt;Colour Checker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Information conveyed via colour &lt;strong&gt;MUST&lt;/strong&gt; be also available by other means (underlined text for links, etc)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Visibility&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hiding techniques such as zero opacity, z-index order and off-screen placement &lt;strong&gt;MUST NOT&lt;/strong&gt; be used exclusively to handle visibility&lt;/li&gt;
&lt;li&gt;Everything other than the current visible screen &lt;strong&gt;MUST&lt;/strong&gt; be &lt;em&gt;truly&lt;/em&gt; invisible (especially relevant for single page apps with multiple &lt;em&gt;cards&lt;/em&gt;)

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;USE&lt;/strong&gt; &lt;code&gt;hidden&lt;/code&gt; attribute or &lt;code&gt;visibility&lt;/code&gt; or &lt;code&gt;display&lt;/code&gt; style properties&lt;/li&gt;
&lt;li&gt;Unless absolutely unavoidable, &lt;code&gt;aria-hidden&lt;/code&gt; attribute &lt;strong&gt;SHOULD NOT&lt;/strong&gt; be necessary&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Focus&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;All activatable elements &lt;strong&gt;MUST&lt;/strong&gt; be focusable

&lt;ul&gt;
&lt;li&gt;Standard controls such as links, buttons, form fields are focusable by default&lt;/li&gt;
&lt;li&gt;Non standard controls &lt;strong&gt;MUST&lt;/strong&gt; have an appropriate &lt;em&gt;role&lt;/em&gt; attribute assigned to them: &lt;code&gt;button, link, checkbox&lt;/code&gt; etc (&lt;a href=&quot;http://www.w3.org/TR/wai-aria/roles&quot;&gt;ARIA Roles&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Focus should be handled in a logical order and consistent manner&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Text Equivalents&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Text equivalent &lt;strong&gt;MUST&lt;/strong&gt; be provided for every non strictly presentational non-text element within the app

&lt;ul&gt;
&lt;li&gt;Use &lt;em&gt;alt&lt;/em&gt; and &lt;em&gt;title&lt;/em&gt; where appropriate (&lt;em&gt;UPDATE&lt;/em&gt;: See Steve Faulkner&#39;s post about &lt;a href=&quot;http://blog.paciellogroup.com/2013/01/using-the-html-title-attribute-updated/&quot;&gt;Using the HTML title attribute&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;If the above attributes are not applicable use attributes such as &lt;code&gt;aria-label, aria-labelledby or aria-describedby&lt;/code&gt; (&lt;a href=&quot;http://www.w3.org/WAI/PF/aria/states_and_properties#global_states_header&quot;&gt;ARIA Properties&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Images of text &lt;strong&gt;MUST&lt;/strong&gt; be avoided&lt;/li&gt;
&lt;li&gt;All form controls &lt;strong&gt;MUST&lt;/strong&gt; be labeled for the screen reader user&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;Handling State&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Standard controls such as radio buttons and checkboxes are handled by the operating system. However,
for other custom controls state changes must be provided via aria states: &lt;code&gt;aria-checked, aria-disabled, aria-selected, aria-expanded, aria-pressed&lt;/code&gt; (&lt;a href=&quot;http://www.w3.org/TR/wai-aria/states_and_properties#attrs_widgets_header&quot;&gt;ARIA States&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;General Guidelines&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An app title &lt;strong&gt;MUST&lt;/strong&gt; be provided&lt;/li&gt;
&lt;li&gt;Headings &lt;strong&gt;MUST&lt;/strong&gt; not break hierarchical structure

&lt;ul&gt;
&lt;li&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;h1&amp;gt;Top level heading&amp;lt;/h1&amp;gt;
  &amp;lt;h2&amp;gt;Secondary heading&amp;lt;/h2&amp;gt;
  &amp;lt;h2&amp;gt;Another secondary heading&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;Low level heading&amp;lt;/h3&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Aria landmarks &lt;strong&gt;SHOULD&lt;/strong&gt; be used to describe an app or document structure: &lt;code&gt;banner, complementary, contentinfo, main, navigation, search&lt;/code&gt; (&lt;a href=&quot;http://www.w3.org/TR/wai-aria/roles#landmark_roles_header&quot;&gt;ARIA Landmark Roles&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Touch event handlers &lt;strong&gt;MUST&lt;/strong&gt; only be triggered on touchend event&lt;/li&gt;
&lt;li&gt;Touch targets &lt;strong&gt;MUST&lt;/strong&gt; be large enough for the user to interact with (&lt;a href=&quot;http://www.bbc.co.uk/guidelines/futuremedia/accessibility/mobile/design/touch-target-size&quot;&gt;BBC Mobile Accessibility Guidelines&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>TIL Running Gaia tests on Try.</title>
   <category term="firefoxos" scheme="http://yzen.github.io/category" />
   <link href="http://yzen.github.io/firefoxos/2014/03/27/today-i-learned.html"/>
   <updated>2014-03-27T00:00:00+00:00</updated>
   <id>http://yzen.github.io/firefoxos/2014/03/27/today-i-learned</id>
   <content type="html">&lt;h1&gt;TIL Running Gaia tests on Try.&lt;/h1&gt;

&lt;p class=&quot;meta&quot;&gt;27 Mar 2014 - Toronto, ON&lt;/p&gt;


&lt;p&gt;After getting some &lt;em&gt;Gaia&lt;/em&gt; unit test failures on &lt;strong&gt;Try&lt;/strong&gt; when one of my pull requests was merged in, I discovered how to use &lt;strong&gt;Try&lt;/strong&gt; to test my pull request branch myself. This is a pretty important time saver for myself and anyone else who has to deal with my mistakes. So here are the instructions:&lt;/p&gt;

&lt;h2&gt;Prerequisits:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Commit Level 1&lt;/li&gt;
&lt;li&gt;Have your [pull request] &lt;em&gt;Gaia&lt;/em&gt; branch handy.&lt;/li&gt;
&lt;li&gt;Have a local mercurual repository for  mozilla central.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Instructions:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You need to modify the following file in your mozilla central source &lt;code&gt;b2g/config/gaia.json&lt;/code&gt; from:&lt;/li&gt;
&lt;/ul&gt;


&lt;pre&gt;&lt;code class=&quot;json&quot;&gt;{
    &quot;git&quot;: {
        &quot;git_revision&quot;: &quot;&quot;,
        &quot;remote&quot;: &quot;&quot;,
        &quot;branch&quot;: &quot;&quot;
    },
    &quot;revision&quot;: &quot;57c407d3e94ba322688b4bd121eda317806ab44e&quot;, // Current rev.
    &quot;repo_path&quot;: &quot;/integration/gaia-central&quot;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;json&quot;&gt;{
    &quot;git&quot;: {
        &quot;git_revision&quot;: &quot;&quot;,
        // Replace with your own gaia remote.
        &quot;remote&quot;: &quot;https://github.com/yzen/gaia.git&quot;,
        // Replace with the [pull request] branch you want to test.
        &quot;branch&quot;: &quot;969553&quot;
    },
    &quot;revision&quot;: &quot;57c407d3e94ba322688b4bd121eda317806ab44e&quot;, // Current rev.
    &quot;repo_path&quot;: &quot;/integration/gaia-central&quot;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;The correct &lt;em&gt;trychooser&lt;/em&gt; message is:&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;code&gt;try: -b o -p linux64_gecko,linux32_gecko,macosx64_gecko -u all -t none&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;That&#39;s it! When you push to &lt;strong&gt;Try&lt;/strong&gt;, the tests will run against your branch instead of the current &lt;em&gt;/integration/gaia-central&lt;/em&gt; revision.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;yzen&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>TIL Debugging Mochitests.</title>
   <category term="" scheme="http://yzen.github.io/category" />
   <link href="http://yzen.github.io/2014/02/24/today-i-learned.html"/>
   <updated>2014-02-24T00:00:00+00:00</updated>
   <id>http://yzen.github.io/2014/02/24/today-i-learned</id>
   <content type="html">&lt;h1&gt;TIL Debugging Mochitests.&lt;/h1&gt;

&lt;p class=&quot;meta&quot;&gt;24 Feb 2014 - Toronto, ON&lt;/p&gt;


&lt;p&gt;Turns out there&#39;s an easy way to debug Chrome JS in mochitests, as described by Gijs Kruitbosch in his blog: &lt;a href=&quot;http://www.gijsk.com/blog/2013/10/debugging-chrome-js-and-mochitests-redux/&quot;&gt;Debugging Chrome JS and Mochitest Redux&lt;/a&gt;. All you need to do is to use the &lt;code&gt;--jsdebugger&lt;/code&gt; flag. Your tests will start with the debugger enabled by default and stopped before their execution. You can add breakpoints on the fly or use the &lt;code&gt;debugger;&lt;/code&gt; command in your JavaScript code.&lt;/p&gt;

&lt;p&gt;Here&#39;s an example of running some of the a11y tests from your &lt;em&gt;gecko-dev&lt;/em&gt; directory:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
./mach mochitest-a11y --jsdebugger accessible/tests/mochitest/jsat/
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;yzen&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>FirefoxOS Screen Reader Toggle</title>
   <category term="firefoxos" scheme="http://yzen.github.io/category" />
   <link href="http://yzen.github.io/firefoxos/2014/02/24/firefoxos-screen-reader-toggle.html"/>
   <updated>2014-02-24T00:00:00+00:00</updated>
   <id>http://yzen.github.io/firefoxos/2014/02/24/firefoxos-screen-reader-toggle</id>
   <content type="html">&lt;h1&gt;FirefoxOS Screen Reader Toggle&lt;/h1&gt;

&lt;p class=&quot;meta&quot;&gt;24 Feb 2014 (Updated: 7 Mar 2014) - Toronto, ON&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; After some initial user/developer trials we opted for a different hardware button combination instead of the power button press. Instead of pressing the power button three times, the user now needs to press volume up then volume down buttons three times to hear the instructions.&lt;/p&gt;

&lt;p&gt;This post is going to be an inaugural one for my new blog where I will try to give small updates about all things accessibility for &lt;strong&gt;FirefoxOS&lt;/strong&gt;, and &lt;strong&gt;Mozilla&lt;/strong&gt; in general.&lt;/p&gt;

&lt;p&gt;We are making progress every day on things like the screen reader for mobile (&lt;strong&gt;FirefoxOS&lt;/strong&gt; and &lt;strong&gt;Firefox&lt;/strong&gt; for &lt;strong&gt;Android&lt;/strong&gt;), accessibility for the essential &lt;strong&gt;FirefoxOS&lt;/strong&gt; apps and a number of other platform-wide accessibility improvements.&lt;/p&gt;

&lt;p&gt;One of such recent improvements is a shiny new quick toggle for our screen reader. With this improvement the user can enable or disable the screen reader at any point, as long as the phone is turned on (including the &lt;em&gt;first time use&lt;/em&gt; setup). To enable the screen reader, the user needs to press the power button three times in short succession (within the maximum of one second between the presses). The phone will then announce that the screen reader will be turned on if the user repeats the action of pressing the sleep button three more times in the same fashion. The instructions are identical for disabling the screen reader.&lt;/p&gt;

&lt;p&gt;Sometimes getting those three presses right might feel a little bit tricky. It seems like the events from the hardware power button get fired only when the presses are really pronounced. Thus, there is more room for improvement. There is of course the actual accessibility setting in the main &lt;em&gt;Settings&lt;/em&gt; app in case you want to play around with things like the speech rate and volume.&lt;/p&gt;

&lt;p&gt;More updates are coming..&lt;/p&gt;

&lt;p&gt;yzen&lt;/p&gt;
</content>
 </entry>
 

</feed>