<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Coffee on the Keyboard &#187; amo</title>
	<atom:link href="http://coffeeonthekeyboard.com/tag/amo/feed/" rel="self" type="application/rss+xml" />
	<link>http://coffeeonthekeyboard.com</link>
	<description>by James Socol</description>
	<lastBuildDate>Fri, 20 Apr 2012 22:17:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/>		<item>
		<title>Code-sharing Update</title>
		<link>http://coffeeonthekeyboard.com/code-sharing-update-361/</link>
		<comments>http://coffeeonthekeyboard.com/code-sharing-update-361/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 17:01:10 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[amo]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=361</guid>
		<description><![CDATA[When we decided to move SUMO to a new platform, one of the reasons we chose Django was code sharing and reuse—specifically that SUMO and AMO would be able to share code, meaning both teams would save time and see benefits. So how is that going? Were we right in our assumption here? The code [...]]]></description>
			<content:encoded><![CDATA[<p>When we decided to <a href="http://coffeeonthekeyboard.com/the-evolution-of-sumo-339/">move SUMO to a new platform</a>, one of the reasons we chose <a href="http://www.djangoproject.com/">Django</a> was code sharing and reuse—specifically that <a href="http://support.mozilla.com/">SUMO</a> and <a href="https://addons.mozilla.org">AMO</a> would be able to share code, meaning both teams would save time and see benefits.</p>
<p>So how is that going? Were we right in our assumption here? The code we&#8217;re sharing so far:</p>
<dl>
<dt><a href="http://github.com/jbalogh/django-multidb-router">MultiDB Router</a></dt>
<dd>A Django DB router that supports reading from a pool of slave databases.</dd>
<dt><a href="http://github.com/jbalogh/django-cache-machine">Cache Machine</a></dt>
<dd>A powerful caching library for Django that, in particular, provides automatic object caching and invalidation through the ORM.</dd>
<dt><a href="http://github.com/jbalogh/jingo">Jingo</a></dt>
<dd>An adapter for using <a href="http://jinja.pocoo.org/2/">Jinja2</a> templates with Django.</dd>
<dt><a href="http://github.com/jbalogh/django-nose">Django-Nose</a></dt>
<dd>A test runner for Django using <a href="http://somethingaboutorange.com/mrl/projects/nose/0.11.2/">Nose</a>.</dd>
<dt><a href="http://github.com/jbalogh/django-debug-cache-panel">Django Debug Cache Panel</a></dt>
<dd>Adds a cache panel for <a href="http://github.com/robhudson/django-debug-toolbar">Django Debug Toolbar</a>.</dd>
<dt><a href="http://github.com/jbalogh/test-utils">Test-Utils</a></dt>
<dd>Tools we use testing in the Django/Jinja2/Nose setup.</dd>
<dt><a href="http://github.com/jsocol/bleach">Bleach</a></dt>
<dd>A library for sanitizing and linkifying user HTML, based on <a href="http://code.google.com/p/html5lib/">html5lib</a>.</dd>
<dt><a href="http://github.com/davedash/django-fixture-magic">Fixture Magic</a></dt>
<dd>Django management commands for working with fixture data.</dd>
</dl>
<p>Additionally, we expect both teams will probably use the following, eventually:</p>
<dl>
<dt><a href="http://github.com/jsocol/didyoumean">DidYouMean</a></dt>
<dd>A wrapper for <a href="http://hunspell.sourceforge.net/">Hunspell</a>, using <a href="http://code.google.com/p/pyhunspell/">PyHunspell</a> to provide spelling suggestions for searches.</dd>
<dt><a href="http://github.com/fwenzel/django-gearman">Django Gearman</a></dt>
<dd>Provides an easier interface from Django to the Python <a href="http://gearman.org/">Gearman</a> bindings.</dd>
<dt>AMO&#8217;s JS and CSS minification</dt>
<dd>AMO has already solved the problem of JS and CSS minification with Django and Jinja2.</dd>
</dl>
<p>And it&#8217;s not a released library, but SUMO has also been able to directly reuse code from AMO to simplify pagination.</p>
<p>Overall, it seems like we&#8217;re doing really well on this! It&#8217;s great to see the projects not just sharing code, but packaging and publishing it on Github and <a href="http://pypi.python.org/pypi">PyPI</a>. If any of the above is useful to you, go ahead and try it out! You can open issues with any of the packages on Github, or find us in <a href="irc://irc.mozilla.org/webdev">#webdev</a> in irc.mozilla.org.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/code-sharing-update-361/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>So You Wanna Help Mozilla?</title>
		<link>http://coffeeonthekeyboard.com/so-you-wanna-help-mozilla-316/</link>
		<comments>http://coffeeonthekeyboard.com/so-you-wanna-help-mozilla-316/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 00:45:22 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[amo]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[sumo]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web dev]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=316</guid>
		<description><![CDATA[A common theme we heard in responses to our web developer survey was: &#8220;I wish I could help Mozilla, but I&#8217;m just a web developer.&#8221; Well, fellow web ninjas, you can put your skills to work with Mozilla and help make the web a better place. Our web projects are open, just like Firefox, and [...]]]></description>
			<content:encoded><![CDATA[<p>A common theme we heard in responses to our <a href="http://hacks.mozilla.org/2009/11/web-developer-survey-update/">web developer survey</a> was: &#8220;I wish I could help Mozilla, but I&#8217;m just a web developer.&#8221;</p>
<p>Well, fellow web ninjas, you <em>can</em> put your skills to work with Mozilla and help make the web a better place. Our web projects are open, just like Firefox, and we&#8217;d love your help!</p>
<p>If you&#8217;re a web developer and want to help Mozilla and Firefox users while working on sites that see millions of visitors every day, follow me through the jump and I&#8217;ll show you around our shop and introduce you to the tools we use.<span id="more-316"></span></p>
<h3>Our Projects</h3>
<p>Mozilla Web Dev is responsible for pretty much every web site at Mozilla, from <a href="https://addons.mozilla.org/">Addons</a> to <a href="http://support.mozilla.com/">Support</a> to <a href="http://www.mozilla.com/">Mozilla.com</a> to <a href="http://www.spreadfirefox.com/">Spread Firefox</a>. We also take care of web services like the <a href="https://wiki.mozilla.org/AUS">Application Update Service</a>, <a href="https://wiki.mozilla.org/PFS2">Plugin Finder Service</a> and the <a href="https://wiki.mozilla.org/Socorro">Crash Report Beacon</a>.</p>
<p>Almost all of our code (everything except Socorro—the crash report beacon—I think) is available on <a href="http://viewvc.svn.mozilla.org/vc/">svn.mozilla.org</a>. You can browse around the server and see the source right now. It will all basically run on the standard LAMP (where P is PHP or Python) stack.</p>
<h3>Our Tools</h3>
<p>The control center of web development at Mozilla is <a href="http://bugzilla.mozilla.org/">Bugzilla</a>. All our work takes the form of &#8220;bugs&#8221; here. A &#8220;bug&#8221; is not necessarily a problem with the software. A new feature or a software update would also be called a &#8220;bug.&#8221; I&#8217;ll talk about the life-cycle of a web development bug below.</p>
<p>IRC is just as important as Bugzilla. Both our staff and our contributors are geographically diverse, and IRC gives us a good way to coordinate and talk to each other around the globe. If you&#8217;re new to IRC, <a href="https://addons.mozilla.org/en-US/firefox/addon/16">ChatZilla</a> is an easy place to start. Most projects have their own channel on <a href="http://irc.mozilla.org/">irc.mozilla.org</a>, like <a href="irc://irc.mozilla.org/sumo">#sumo</a> for Support and <a href="irc://irc.mozilla.org/amo">#amo</a> for Addons. We&#8217;re also usually in <a href="irc://irc.mozilla.org/webdev">#webdev</a>.</p>
<p>As web developers, are chief weapon is HTML. HTML and CSS. HTML, CSS, and JavaScript. <em>No one expects the&#8230;</em> (Sorry.) On the front-end, we chiefly work in HTML, CSS, and JavaScript, and occasionally other technologies like XML. On the back-end, nearly all of our projects are in PHP or Python.</p>
<p>For version control we mostly use Subversion, though git (and git-svn) has gained a bunch of ground lately. (Addons will be <a href="http://micropipes.com/blog/2009/11/17/amo-development-changes-in-2010/">moving to git</a> sometime next year.)</p>
<p>To work on your own computer, you&#8217;ll probably need to set up Apache, MySQL, and PHP or Python. <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> can be incredibly helpful here. Working on Linux (or Mac OS) is usually easier than Windows, and closer to our server environment. A tool like <a href="http://www.virtualbox.org/">VirtualBox</a> will let you run a Linux virtual machine on most other operating systems. It&#8217;s a little slower but switching back and forth is easy. I&#8217;ll try to write about my local development set up soon.</p>
<h3>Our Workflow</h3>
<p>Let&#8217;s go over the life of a bug. This is a little long-winded.</p>
<p>A bug is born either when someone describes a problem or when we decide to add a new feature. (Every project has its own way of doing the latter.) Sometimes our Web <abbr title="Quality Assurance">QA</abbr> team finds problems, sometimes community members do. Then the bug is created, or filed, usually by the person who discovers it—that could be you!</p>
<p>Once a bug has been filed, possibly after some discussion of the best way to fix it, a developer—and that could be you, too—will &#8220;take&#8221; the bug, accepting responsibility for fixing it. Fixing a bug means changing the application in some way: changing a behavior, adding a localization, etc.</p>
<p>When the developer believes they&#8217;ve fixed the problem in their copy, they generate a patch (Subversion&#8217;s &#8220;diff&#8221; command is useful). They then upload that patch as a new attachment, and request review (r?) from someone else. Who does the review will depend on the project and how busy everyone is. If you&#8217;re not sure who to ask, ask in IRC.</p>
<p>The patch will either get an r+ or an r-. An r+ means it&#8217;s good to go, and it can usually be checked in to Subversion (unless there are reasons to wait). An r- means there&#8217;s something wrong. This can range from a patch containing some extraneous data to a patch not solving the problem, and an r- almost always includes a description of the problem.</p>
<p>When a patch with a positive review (r+) gets checked in to Subversion, the developer will include the revision in the bug and change it from <em>new</em> to <em>resolved: fixed</em>. In a few minutes, the change will appear on a staging server that&#8217;s updated frequently with the latest code. Our Web QA staff and contributors will test the bug, compare expected to actual behavior, and with either <em>reopen</em> the bug, if it&#8217;s not fixed, or set the status to <em>verified</em>. Then the bug is considered done. Verified bugs rarely reopen.</p>
<p>Once all the bugs for a milestone are done, we &#8220;freeze&#8221; the source against new commits while Web QA does a final check that everything is in good shape. When QA signs off on the current code, we push the new version onto our production web servers.</p>
<p>So that&#8217;s the life of a bug, from filed to production. When it gets to production, your code can be seen or used by millions of people every day.</p>
<h3>Join Us</h3>
<p>So if you&#8217;re a web developer and want to help Mozilla and Firefox, head over to Bugzilla or IRC and get started. We hope to see you soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/so-you-wanna-help-mozilla-316/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

