<?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>Eric Wong &#187; Mozilla</title>
	<atom:link href="http://ewong.me/category/mozilla/feed/" rel="self" type="application/rss+xml" />
	<link>http://ewong.me</link>
	<description>Software Engineer</description>
	<lastBuildDate>Tue, 11 Jun 2013 06:04:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Becoming a full-fledged Mozilla contributor</title>
		<link>http://ewong.me/becoming-a-full-fledged-mozilla-contributor/</link>
		<comments>http://ewong.me/becoming-a-full-fledged-mozilla-contributor/#comments</comments>
		<pubDate>Sun, 02 Sep 2012 19:49:44 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Open Source Projects]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://ewong.me/?p=95</guid>
		<description><![CDATA[The first Firefox bug I&#8217;ve submitted a patch for is in the recently released Firefox 15! I&#8217;ve since worked on another Firefox bug, slated for Firefox 17, and am currently working on two more bugs. Being a fan of Python, &#8230; <a href="http://ewong.me/becoming-a-full-fledged-mozilla-contributor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The <a title="First Firefox Bug" href="http://hg.mozilla.org/mozilla-central/rev/7ec73828b931">first Firefox bug</a> I&#8217;ve submitted a patch for is in the recently released Firefox 15! I&#8217;ve since worked on <a title="Firefox bug" href="https://hg.mozilla.org/mozilla-central/rev/3bc014ea9703">another Firefox bug</a>, slated for Firefox 17, and am currently working on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=504240">two</a> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=767755">more</a> bugs.</p>
<p>Being a fan of Python, I am also trying to work on some Mozilla Release Engineering bugs, but run into problems trying to replicate the dev environment used. This area, while interesting, is not as well developed in terms of documentation or process for outside contributors; their wiki information on <a title="Setting up release engineering dev environment" href="https://wiki.mozilla.org/ReleaseEngineering/How_To/Setup_Personal_Development_Master">setting up a dev environment</a> is somewhat geared towards Mozilla employees.</p>
<p>But while I haven&#8217;t made any real headway on any release engineering bugs yet, I do have a partial dev environment up so that I can attempt to tackle a subset of their bugs, mainly the ones that don&#8217;t rely on having permissions to Mozilla&#8217;s massive build infrastructure. I also want to get involved with Autoland after reading Lukas Blakk&#8217;s (a Mozilla Release Manager) <a href="http://lukasblakk.com/why-isnt-autoland-working/">blog post on Autoland</a>.</p>
<p>All in all, I feel like I am well on the way to becoming a full-fledged Mozilla contributor.</p>
]]></content:encoded>
			<wfw:commentRss>http://ewong.me/becoming-a-full-fledged-mozilla-contributor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How I became a Firefox contributor</title>
		<link>http://ewong.me/how-i-became-a-firefox-contributor/</link>
		<comments>http://ewong.me/how-i-became-a-firefox-contributor/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 18:16:06 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Open Source Projects]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://ewong.me/?p=61</guid>
		<description><![CDATA[The world of open source software can be intimidating. Code and build complexity aside, each project&#8217;s culture is also different and they all do things differently. Some use Git, some Mercurial, others still SVN. Some have great documentation, others don&#8217;t. &#8230; <a href="http://ewong.me/how-i-became-a-firefox-contributor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The world of open source software can be intimidating.  Code and build complexity aside, each project&#8217;s culture is also different and they all do things differently.  Some use Git, some Mercurial, others still SVN.  Some have great documentation, others don&#8217;t.  Some have documented processes, some have a one-person buildmaster.  Some are very newbie friendly and others not so much.  <a href="http://ewong.me/open-source-hacking/">After examining a few open source projects from a developer-contributor perspective</a>, the one that has captured my attention so far is Firefox.</p>
<p>I use Firefox everyday and wanted to contribute to its source code, for bragging rights if nothing else.  And Mozilla makes it really easy to start.  They have a <a href="https://developer.mozilla.org/En/Developer_Guide" title="Developer's Guide">Developer&#8217;s Guide</a> that tells you everything you need to get started.  There is a lot of information there though, and some of it is slightly outdated, so it can still be confusing and make you feel lost.  Here are the steps I took to submitting my first patch to Firefox:</p>
<ol>
<li>I compiled Firefox following these <a href="https://developer.mozilla.org/En/Simple_Firefox_build" title="Simple Firefox Build Instructions">build instructions</a>.  It took about 75 minutes on my machine (Intel Core2 Quad Q9550 w/ 4GB RAM)</li>
<li>I looked for a bug to work on in <a href="https://bugzilla.mozilla.org/describecomponents.cgi?product=Firefox" title="Bugzilla">Bugzilla</a>.  Mozilla has a <a href="https://bugzilla.mozilla.org/buglist.cgi?status_whiteboard_type=allwordssubstr;status_whiteboard=%5Bgood%20first%20bug%5D;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;list_id=2564203" title="good first bugs list">list of good first bugs</a>  for newbies like me.  I read through that list but didn&#8217;t find anything that immediately caught my eye.  I just continued browsing Bugzilla until I saw a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=724841">new bug</a> that sounded simple enough for me to fix.  (I later found a <a href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=sw%3A%5Bmentor%3D;list_id=2564524">mentored bug list</a> which contains bugs with a designated mentor that you can go to for help.)</li>
<li>This was the hardest part &#8211; studying the source code to figure out where the bug should be fixed.  Until now, I didn&#8217;t know Firefox used Javascript as well as C++.  The codebase was massive and I had no clue where to start.  I knew my way around C++, but was lost in Javascript and its associated XUL/XML files.  I asked for help on the #developers channel on the Mozilla IRC server.  People there are very friendly and extremely helpful.  In addition to pointing me to possible places to start in the code, they also introduced the <a href="http://mxr.mozilla.org/mozilla-central/" title="MXR Tool">MXR tool</a> to me.  MXR allows you to search through the source code by text or by identifier (variables, classes, types, etc.).  I now had some starting points from which to start debugging.</li>
<li>The 2nd hardest part &#8211; figuring out how to debug.  There&#8217;s a <a href="https://developer.mozilla.org/En/Debugging">whole section on debugging Mozilla projects</a>.  I would have like to configure debuggers for C++ and Javascript, but I found the simplest way to get started was to just look at the debug output logs.  The C++ log output uses a different mechanism than the Javascript output.
<p>For Javascript, I just inserted dump() statements to trace through the code and output variable values.  The dump output appears on the console when you start firefox with the &#8220;-console&#8221; option.</p>
<p>The C++ output was a little trickier.  I saw all these PR_LOG() calls throughout the code, but couldn&#8217;t figure out where the output was going.  With help from #developers, I was able to enable these logs statements.  I had to <a href="https://developer.mozilla.org/en/Configuring_Build_Options">recompile Firefox with debug on</a> and <a href="http://www.mozilla.org/projects/nspr/reference/html/prlog.html#25306">set environment variables NSPR_LOG_MODULES and NSPR_LOG_FILE</a> to start the C++ logging.  The PR_LOG() output will go to the file specified in NSPR_LOG_FILE.
</li>
<li>Having the edit-compile-debug cycle down, I was now on more familiar ground.  I found a potential fix for the bug and <a href="https://developer.mozilla.org/en/Creating_a_patch">created a patch</a> for it.</li>
<li>I read that a patch should be tested locally before being submitted for formal test and review.  Again, there&#8217;s <a href="https://developer.mozilla.org/en/Mozilla_automated_testing">documentation on testing your patches</a>, but it was daunting.  I asked for help again on #developers.  Someone told me in my case, I just had to run &#8220;mochitests&#8221; and only on the modules I changed.  I did so and <a href="https://developer.mozilla.org/En/Developer_Guide/How_to_Submit_a_Patch">submitted my patch</a> and test results for both formal automated testing and review on Bugzilla.</li>
<li>I don&#8217;t have privileges on the Mozilla testing server (<a href="https://wiki.mozilla.org/ReleaseEngineering/TryServer">Try Server</a>), so I asked someone on IRC to help me with this.  <a href="http://www.joshmatthews.net/blog/">jdm</a> on #developers did so for me (thanks!).</li>
<p>As of last night, the automated test passed (I think) and I&#8217;m  awaiting review and acceptance and/or comment on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=724841">my patch</a>.  Then I can say I have code in Firefox!</p>
]]></content:encoded>
			<wfw:commentRss>http://ewong.me/how-i-became-a-firefox-contributor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Hacking</title>
		<link>http://ewong.me/open-source-hacking/</link>
		<comments>http://ewong.me/open-source-hacking/#comments</comments>
		<pubDate>Sun, 04 Mar 2012 21:41:36 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Open Source Projects]]></category>
		<category><![CDATA[PlanetMozilla]]></category>

		<guid isPermaLink="false">http://ewong.me/?p=45</guid>
		<description><![CDATA[I&#8217;ve been wanting to contribute to an open source project for quite a while now, but haven&#8217;t gotten around to it until recently. Over the past year or so, I&#8217;ve been perusing open source projects that I use and seeing &#8230; <a href="http://ewong.me/open-source-hacking/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been wanting to contribute to an open source project for quite a while now, but haven&#8217;t gotten around to it until recently. Over the past year or so, I&#8217;ve been perusing open source projects that I use and seeing how each community works. I concentrated mostly on projects that I use extensively, among them, <a title="Rockbox" href="http://www.rockbox.org/">Rockbox</a>, <a title="Django" href="http://www.djangoproject.com/">Django </a>, <a href="http://sparkleshare.org/">SparkleShare</a> and <a title="Mozilla" href="http://developer.mozilla.org/En/Developer_Guide">Mozilla</a> (Firefox).</p>
<p>Rockbox is a great replacement for the firmware on my MP3 player. I prefer the interface and it provides a lot more features. I even write firmware in my dayjob, so Rockbox was originally the first project I wanted to contribute to. A lot of Rockbox development discussion take place on their development mailing list which I started subscribing to. That&#8217;s when I decided it was not for me. A lot of chippiness and arguing occur there and I wanted to avoid that. I know open source project development is sort of known for harsh abrupt discussions, but I knew more developer-friendly communities exist and wanted to find one of these to contribute to first. Why take abuse when it&#8217;s something I want to do for fun?</p>
<p>Django has great documentation, and that&#8217;s also the case with regards to <a href="http://docs.djangoproject.com/en/dev/internals/contributing/">contributing to it</a>. They have an <a href="http://code.djangoproject.com/query?status=!closed&amp;easy=1&amp;page=2&amp;order=priority">&#8220;easy pickings&#8221;</a> list of easy first bugs that newbie developers can tackle. I hope to contribute to Django some day because I think it is a very useful project, but some things I came across with SparkleShare and Mozilla made it easier to start contributing to them instead.</p>
<p>SparkleShare is an open source version of Dropbox. Its Windows client is still very much in its infancy, but it works well enough for me. I came across a problem in trying to use it with some non-default settings though, and was able to fix it myself <a href="http://ewong.me/sparkleshare/">as I described here</a>. My fix was accepted into the main project. The reason I was able to so easily contribute right away is because they are hosted on <a href="http://github.com/">GitHub</a>. GitHub makes it extremely easy to contribute to a project. I just forked the repository, made my fix, and had them pull my changes. I&#8217;ve since went on to make minor enhancements to their web client, <a href="https://github.com/ekw/SparkleShare-Dashboard">SparkleShare-Dashboard</a>, as well.</p>
<p>Though I successfully found an open source project to contribute to, for reasons of my own, I wanted to work on a more well-known and challenging project. And everyone knows Mozilla Firefox. Like Django, Mozilla has great intro documentation as well for anyone who wants to contribute. To start with, I downloaded the Firefox source code and compiled it by following their <a href="http://developer.mozilla.org/En/Simple_Firefox_build">clear instructions here</a>. Then, I looked for a bug that sounded simple enough for a newbie to start with. Mozilla also has a <a href="http://bugzilla.mozilla.org/buglist.cgi?status_whiteboard_type=allwordssubstr&amp;status_whiteboard=%5Bgood%20first%20bug%5D&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;list_id=314531">good-first-bug list</a> similar to Django&#8217;s easy pickings list. Nothing caught my fancy there though. So I started browsing through new bugs recently entered and <a href="http://bugzilla.mozilla.org/show_bug.cgi?id=724841">found one</a> that sounded simple enough for a first-timer. I&#8217;ve been working on it on and off since, whenever I have some free time. The majority of the effort has been figuring out the best way to debug the code, how to configure the debug logging and where the log statements appear. Mozilla has excellent (though some out-dated) documentation on this and their developer IRC channel has been a big help. I&#8217;m 95% of the way to a patch that I will then submit and test (a whole other learning experience).</p>
<p>I&#8217;ve had a good time contributing to these two open source projects so far and plan to continue as time allows. I look forward to being able to (soon) say code I wrote is in Firefox.</p>
]]></content:encoded>
			<wfw:commentRss>http://ewong.me/open-source-hacking/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.246 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-06-20 10:11:29 -->
