Websites/Mozilla.org/One Mozilla
Overview:
Now that we're running the Firefox product site (formerly mozilla.com) under mozilla.org/firefox, we're ready to move to the next step (one of many) to build a real One Mozilla, a single platform where Mozilla.org and Mozilla product sites (Firefox, Thunderbirds, Apps, etc.) can co-exist and share code.
Why Build a New Platform?
Mozilla.org is a pretty simple static content site (though, we have a lot of it!), but working on the site has become increasingly hard over the past few years. Here are some of our pain points (some might sound all too familiar to you in your job):
- Mobile, we currently don't have framework for handling mobile pages
- Templates, we currently don't have clear separation of templates and code, which is messy, hard to understand
- SVN, we currently use SVN instead of GIT and SVN doesn't excel when it comes to tracking features and managing rollouts quickly
- (Here's more on our SVN pains: http://jlongster.com/s/git-transition/)
- Libraries, we currently can't leverage popular libraries of optimizations that other mozilla sites use
Why Bedrock
- Mobile, we will have libraries to handle mobile views of pages with a lot of nice features (keeps track of user's preference, uses templates to reuse code, etc)
- Templates, we will have a powerful templating system: jinja2 (http://jinja.pocoo.org/docs/)
- GIT, we will build on top of git instead of SVN, which allows for easy branching and merging for rolling out (until we create a new workflow that the community weighs in on, localizations will still be kept in SVN)
- Libraries, we'll be able to benefit from a number of awesome Python libraries:
- django-mobility, mobile detection/redirection, https://github.com/jbalogh/django-mobility
- jingo, jinja2 template integration with django,jingo-minify https://github.com/jbalogh/jingo jingo-minify
- JS/CSS minifier, https://github.com/jsocol/jingo-minify/
- django-waffle, feature flipper for continuous deployment, https://github.com/jsocol/django-waffle
- django-celery, celery (async task manager) integration with django, https://github.com/ask/django-celery
- django-qunit, quint testing integration, https://github.com/kumar303/django-qunit
- django-nose, nose test runner, https://github.com/jbalogh/django-nose
These libraries are currently being used and actively developed on other Mozilla sites.
Most of this and more can be found at "Current Pain Points with Mozilla.com's Architecture/Platform": http://jlongster.com/s/moz-com-dev/