<?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>Mozilla Web Development &#187; Mozilla.com</title>
	<atom:link href="http://blog.mozilla.com/webdev/category/mozilla-com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.com/webdev</link>
	<description>Everybody Likes Ninjas</description>
	<lastBuildDate>Wed, 01 Feb 2012 16:41:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>How Apache &amp; Some Magic Helped Move Mozilla to .org</title>
		<link>http://blog.mozilla.com/webdev/2011/08/22/how-apache-some-magic-helped-move-mozilla-to-org/</link>
		<comments>http://blog.mozilla.com/webdev/2011/08/22/how-apache-some-magic-helped-move-mozilla-to-org/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 18:41:30 +0000</pubDate>
		<dc:creator>James Long</dc:creator>
				<category><![CDATA[Mozilla.com]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=1965</guid>
		<description><![CDATA[Over the past couple weeks my teammates at Mozilla have been blogging about our goal to merge our major websites, currently spread across several domains, into the one and only site mozilla.org. Their posts provide a lot of good history on this project: Moving Towards One Mozilla by John Slater Bringing Mozilla Product Sites Back [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past couple weeks my teammates at Mozilla have been blogging about our goal to merge our major websites, currently spread across several domains, into the one and only site <a href="http://mozilla.org/">mozilla.org</a>. Their posts provide a lot of good history on this project:</p>
<ul>
<li><a href="http://www.intothefuzz.com/2011/08/10/moving-towards-one-mozilla/">Moving Towards One Mozilla</a> by John Slater</li>
<li><a href="http://blog.chrissiebrodigan.com/2011/08/bringing-mozilla-product-sites-back-home-to-mozilla-org-hellz-yeah/">Bringing Mozilla Product Sites Back Home to Mozilla.org</a> by Chrissie Brodigan</li>
<li><a href="http://davidwboswell.wordpress.com/2011/08/11/creating-regional-hubs-to-support-mozillas-local-communities/">Creating regional hubs to support Mozilla’s local communities</a> by David Boswell</li>
</ul>
<p>John, David, and Chrissie explain the project from the engagement &amp; contributor perspective, but I’m here to explain some of the tech details behind the merge. As the tech lead on the project, I’ve had to navigate through some rather complex waters and figure out a solution that is simple enough to understand but fits the needs of everyone involved.</p>
<p>Mozilla has a huge network of contributors across the world, and a long and rich history. For this reason, any change has a large impact for Mozilla and its contributors. <strong>Merging websites is a huge change</strong>, and we must minimize the impact of this.</p>
<p><a href="http://mozillamessaging.com/">Mozilla Messaging</a> has already been merged into mozilla.org, and <a href="http://mozilla-europe.org/">Mozilla Europe</a> is mostly there. My main focus was on merging <a href="http://mozilla.com/">mozilla.com</a> and <a href="http://mozilla.org/">mozilla.org</a>. Each of those websites have their own development workflow, community, project owners, etc. How in the world can we merge these sites back into one place? (Historical note: these used be a single site, but were split about 5 years ago).</p>
<p>It’s clear that we can’t literally merge the codebases for each site into a single SVN-managed codebase. This would be a <strong>huge change</strong> and would <em>wreak havoc on our localizers</em>, who already have development version of the sites set up to work on. Not to mention the internal restructuring within Mozilla it would force us to do immediately.</p>
<p>We want to merge everything thoroughly in the future, and that will happen slowly over time. But we can’t wait for that to merge our sites, since that might take months or even years. We need to make mozilla.com and mozilla.org <em>appear</em> to be running under one domain, even if the projects are separate. Enter Apache.</p>
<h2 id="implementing_the_merge">Implementing the Merge</h2>
<p><a href="http://mozilla.com/">mozilla.com</a> and <a href="http://mozilla.org/">mozilla.org</a> both use PHP, and one of PHP’s advantages is dead-simple deployment. We can leverage this and put some magic into Apache to run both sites as one domain.</p>
<p>The idea is simple:</p>
<ul>
<li>Use SVN to checkout mozilla.org into the mozilla.com codebase under the /org folder</li>
<li>Put Apache rewrites in htaccess to load all of mozilla.org’s pages as top-level URLs</li>
<li>Fix URL conflicts and other small bugs</li>
<li>Serve this new repository at mozilla.org</li>
</ul>
<p>A few problems fall out of this, but mostly small bugs that can be fixed in how we load the mozilla.org pages. The main problem is that mozilla.org’s htaccess file won’t be processed, so we need to merge it in to mozilla.com’s htaccess. This proved difficult because of performance: mozilla.org had about 1500 redirects which causes a bit of a slowdown.</p>
<p>This was solved during a benchmarking phase which showed that <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritemap">RewriteMap</a> performs quite well for this task (see <a href="http://jlongster.com/2011/08/18/a-little-apache--some-magic-helped-moved-our-site-to-org.html#benchmarking">Benchmarking</a>).</p>
<p>This keeps mozilla.org and mozilla.com as separate projects (even separate SVN repos), but magically served as one domain. Eventually we will merge the projects &amp; communities more permanently, but it will be easier to work towards that with this merge already done.</p>
<h2 id="benchmarking">Benchmarking</h2>
<p>Another complexity with this is performance. Our temporary hack must not incur a performance penalty since we serve millions of users a day.</p>
<p>After worrying about this for a while, I implemented the merge with a few different tweaks and benchmarked the different setups. <a href="https://wiki.mozilla.org/Mozilla.com/2011-Rebranding-Project/Benchmarks">Read all about my conclusions here with pretty graphs</a> and how I justified that our current solution will perform fine.</p>
<p>Big thanks to <a href="http://www.laurathomson.com/">Laura Thomson</a>, another Mozillian who brought RewriteMap to light when I was complaining about the huge amount of rewrites in our #webdev IRC channel.</p>
<h2 id="future">Future</h2>
<p>This merge hack is a big step towards our <a href="http://www.intothefuzz.com/2011/08/10/moving-towards-one-mozilla/">One Mozilla</a> project. It is just temporary, though, and we are working on a new platform for mozilla.org which will serve our needs better. More to come on this soon.</p>
<p>You can track our work on the merge in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=610724">this tracking bug</a>.</p>
<p>You can see our staging site for the merged site at <a href="http://www-dev.allizom.org/">http://www-dev.allizom.org/</a>. Poke around and let us know if anything is broken!</p>
<p>We will be pushing this hack live this Wednesday, August 24th! Feel free to <a href="mailto:jlong@mozilla.com">contact me</a> if you have any concerns about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2011/08/22/how-apache-some-magic-helped-move-mozilla-to-org/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plugin Checker Launched</title>
		<link>http://blog.mozilla.com/webdev/2009/10/13/plugin-checker-launched/</link>
		<comments>http://blog.mozilla.com/webdev/2009/10/13/plugin-checker-launched/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 22:28:05 +0000</pubDate>
		<dc:creator>Mike Morgan</dc:creator>
				<category><![CDATA[Mozilla.com]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.mozilla.com/webdev/?p=731</guid>
		<description><![CDATA[Today we launched a Plugin Checker to help people find and update their plugins. Why is this important to you? Crashes are the number one concern for Firefox users, and we are listening. At least 30% of all Firefox crashes are caused by third-party plugins. Many major security vulnerabilities exploit out of date plugins. Why [...]]]></description>
			<content:encoded><![CDATA[<p>Today we launched a <a href="http://www.mozilla.com/en-US/plugincheck/">Plugin Checker</a> to help people find and update their plugins.</p>
<p><a href="http://blog.mozilla.com/webdev/files/2009/10/nurse.png"><img src="http://blog.mozilla.com/webdev/files/2009/10/nurse.png" alt="smiling nurse" width="226" height="215" class="alignright size-full wp-image-754" /></a></p>
<h2>Why is this important to you?</h2>
<ul>
<li>Crashes are the number one concern for Firefox users, and we are listening.</li>
<li>At least 30% of all Firefox crashes are caused by third-party plugins.</li>
<li>Many major security vulnerabilities exploit out of date plugins.</li>
</ul>
<h2>Why is this important to Mozilla?</h2>
<p>Increasing awareness about plugins makes the web better, and that&#8217;s <a href="http://www.mozilla.org/about/manifesto">our mission</a>.</p>
<ul>
<li>We want the web to be safer.</li>
<li>We want the web to be less crashy.</li>
<li>We want to help everyone &#8212; not just Firefox users &#8212; to address the plugin problem. (though admittedly it doesn&#8217;t fully work with all browsers yet, it will)</li>
</ul>
<h2>What did we do?</h2>
<p>The plugin checker has three components:</p>
<ul>
<li>The Server: <a href="https://wiki.mozilla.org/PFS2">Plugin Finder Service (PFS2)</a></li>
<li>The Javascript: <a href="http://github.com/ozten/Perfidies-of-the-Web/tree">Perfides</a></li>
<li>The Web Page: <a href="http://www.mozilla.com/en-US/plugincheck/">mozilla.com</a></li>
</ul>
<p> The end result is actually pretty simple &#8212; and that&#8217;s how it needs to be.  Here&#8217;s your plugins, and here&#8217;s their statuses:</p>
<p><a href="http://blog.mozilla.com/webdev/files/2009/10/flash_quicktime.png"><img src="http://blog.mozilla.com/webdev/files/2009/10/flash_quicktime.png" alt="flash_quicktime" title="Example showing Flash and Quicktime plugin statuses"  width="660" height="159" class="aligncenter size-full wp-image-732" /></a></p>
<p>Putting it all together, we reach a workflow similar to the graph below.  Our goal is to query a central database that contains plugin information and inform users about the status of their plugins.  This was built so it could be used to support Firefox directly in the future.</p>
<p><a href="http://blog.mozilla.com/webdev/files/2009/10/pfs-workflow.png"><img src="http://blog.mozilla.com/webdev/files/2009/10/pfs-workflow.png" alt="pfs-workflow" title="this shows that the web service can power both a web front-end or an integrated client service" width="537" height="574" class="aligncenter size-full wp-image-740" /></a></p>
<h2>What will happen next?</h2>
<p>The three components above are a good start, but together we can do more.</p>
<ul>
<li><a href="http://theunfocused.net/2009/10/06/firefox-3-6-knows-when-your-plugins-are-out-of-date/">Integrate this experience with the Firefox client</a>.  Firefox will identify vulnerable plugins and help you update them.</li>
<li>Create a self-service panel for vendors to update their plugin info as new releases come out.</li>
<li>Create an open directory for all plugin information (sort of like <a href="http://plugindoc.mozdev.org/">Plugindoc</a> but dynamic)</li>
<li>Evangelize plugin detection via an embeddable widget &#8212; get it out on WordPress, etc.</li>
<li>Integrate with our <a href="http://crash-stats.mozilla.com/">crash reporting system</a> so we have a report card/dashboard for which plugins are most crashy</li>
</ul>
<h2>How can you help?</h2>
<p>This entire project is open source.  You can work on any of these components to help contribute to the effort:</p>
<ul>
<li><a href="http://svn.mozilla.org/projects/pfs2/trunk/">View the server code for PFS2</a></li>
<li><a href="http://github.com/ozten/Perfidies-of-the-Web">View the client code for Perfides</a></li>
<li><a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Websites&#038;component=www.mozilla.com">File a bug if you find one</a></li>
<li><a href="http://spreadsheets.google.com/viewform?formkey=dGpKQkNuNkNQNjF4RW1FT08yRHRqMWc6MA..">Tell us about plugins we don&#8217;t know about</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.com/webdev/2009/10/13/plugin-checker-launched/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

