MDN 1.9
- BrowserID! (bugs 706518 and 706519 and 706526 and 714228 and 714969)
- New header with the Mozilla universal tab (bug 684925)
- New site-wide messaging ability with django-soapbox (bug 711728)
- Animate our tumbeasts images with css animations. Thanks to a contributor - lifeinterfaces! (bug 704085)
- Various other bugs and fixes
MDN 2.0
- Set up 'master' and 'next' branches and corresponding stage servers on allizom.org
- Wiki content migration & work
BrowserID
A few years ago I pushed hard for OpenID on SourceForge.net. OpenID was and is a noble project. But now I can tell some big advantages of BrowserID over OpenID:
- It feels like an identity. I cognitively associate my online identity with my email, and BrowserID is a verified-email protocol. When I saw my email in the BrowserID login dialog on MDN, I already understand that I'm logging in - much more-so than an empty 'URL' input box.
- No NASCAR effect. Because BrowserID is designed to be an open web standard, there's a single sign-in button that invokes a javascript API. It can be polyfilled with Mozilla's BrowserID service until platforms implement it, but even that will automatically be consumed by platform-native UI.
- The site already knows you. As a site owner, we already have email addresses for our users. So when you sign in with BrowserID, we don't have to say "Now sign in with your existing account to merge your new identity with your existing" the way we did with OpenID. We know you own that email, so we log you into the account with that email address - simple.
- Changing email is easy. Craig and I fretted for a whole hour or so over how to let users change their email address with BrowserID, but we were over-thinking it. Since BrowserID is effectively a streamlined "verify your email" dance, we simply point our "Change email" links to our sign-in page. If you're already signed in, and you sign in with a new verified email address, we simply update your email. BrowserID has already done the whole verify-your-email-address dance.
- No lock-in. We get a verified email address from BrowserID, so we can register users in django with set_unusable_password(). But if we ever drop BrowserID (oh noes!), we have a verified email address. So we can initiate an email-based password reset flow for users. In addition, any site can run their own verification service so they don't need to call Mozilla's BrowserID at all.
- Privacy. Finally, BrowserID is a user-centric identity system. This really hit me when I watched Ben's Deeper Look at BrowserID video. Especially when BrowserID is implemented in other platforms, Mozilla doesn't sit between you and the sites or services you use. A primary authority can issue identity certificates to your agent, and you present those certificates to other parties for authentication. "This triangle is never closed."
All-in-all, it was much simpler and much more intuitive to implement BrowserID on MDN than it was to implement OpenID on SourceForge. The Mozilla Identity team has built an awesome product, and Les integrated django-browserid with his trademark pace and effectiveness. BrowserID is great for the whole web - it will help us regain control of our online identities. It's worth repeating, "the people I work with are built of brains and heart" - it's another great day for Mozillians and for the web.
/me is so proud
MDN 1.8
- Bug fixes for the new django authentication. (bugs 703364 and 706530 and 708826)
- James built a new message broadcast app we will add to the site in 1.9 (bugs 705675 and 711728)
- Les merged our 'mdn' and 'master' branches and put the new wiki pages behind waffle so we can use more sane branches (bugs 702988 and 702989 and 702990 and 705849)
- Added attribution for our tumbeasts images (bug 704085)
- Tweaks and fixes to the now-released Apps page
- Various other bugs and fixes
MDN 1.9
- Les and Craig have done some good work to set us up to transition to BrowserID! At first we'll cover the "golden paths" of BrowserID - i.e., log in existing users with a single account, register new users.
- Aside from BrowserID, we're just working on a bunch of smaller bug fixes around the holidays.
In Q1 2012 we are planning to sprint thru our wiki migration from MindTouch to django. Les has already started a migration script we will work on to import all the MindTouch wiki pages into django. That will be a big focus of 2.0. After that, the only big unknown is how to replace DekiScript with JavaScript.
Since Jay will be gone, John is re-joining us part-time to do some product management along with folks from the Developer Engagement team until we hire a dedicated PM. Until that happens, we're going to work hard on the wiki migration and we'll only add features if they are high priority - like Apps, BrowserID, mobile, etc.
MDN 1.7 Released
We released MDN 1.7 today. Included in this release:
MDN
- Developer Profile CTA on demo submit page. (bug 696260)
- Geolocation on the events page. (bug 700778)
- Fix bug editing derby demos. (bug 704196)
- Various other bug fixes, additions, improvements
- Continue to support the Apps developer launch on MDN
Wiki
- Switch auth from MindTouch to django (big bug 674635)
MDN 1.8
The major themes of MDN 1.8 are:
- Merge our separate mdn & wiki branches so we can develop and deploy both with a sane release process.
It also lets run the new wiki on the production site, controlled by waffle, so we can get feedback from MDN users on the new wiki. - Clean up and polish the django auth.
- Define UX and mockups for BrowserID.
- Continue to support the Apps developer launch on MDN.
It's gonna be the future soon
Jay is leaving Mozilla! :( I'm going to miss him and his war stories from the good ol' days of Netscape. He brought a lot of insight and perspective to MDN and drove the efforts to make it more than "just" a documentation wiki. Until someone else takes over product management, we're going to put our heads down to work on the big components of the MindTouch-django wiki migration:
- Migrate MindTouch wiki data.
It's nice that MindTouch stores HTML and our django wiki also stores HTML. Much better than having to parse and translate wiki markup. - Implement an alternative to DekiScript
MindTouch's DekiScript is a LuaScript subset for making dynamic content snippets in wiki pages. We're planning to implement an equivalent system based on JavaScript with a library to work with the django wiki.
I'll probably run product management interference for any urgent MDN features (e.g., apps) until we have a dedicated product manager.
Right now James and Les and I are in Toronto with #sumo and #sumodev talking about the future of the newly-amalgamating "Platforms" Webdev team. We want to open MDN, SUMO, Mozillians.org, and Input sites as community "platforms" over the next year. Stay tuned for more ...
MDN 1.6
We released MDN 1.6 today.
MDN
- We fixed a bunch of un-localized strings. (Though we're not consistently using pseudo-translation to spot un-localized strings yet.)
- Fixed a bug when editing dev derby demos.
- Fixed a couple of other bugs generating server errors.
- Made content updates for dev derby, web landing page, and upcoming apps page.
Kuma
- We wrapped up the last bug (handling collisions) for section editing.
- We closed one of the last bugs (migrating and syndicating user preferences) for moving authentication from MindTouch to django.
- Cleaned up document listing pages - i.e., "Docs that need technical review", "Docs that need editorial review", etc.
Up next
For MDN 1.7 we will:
- Complete the switch from MindTouch authentication & users to django authentication & users.
- Add some spiffy HTML5 features to MDN.
- (Start to) Merge the separate kuma (master) and mdn (mdn) branches into a single branch so we can optimize our git workflow and run the new wiki side-by-side with MindTouch for testing and comparison.
- Promote MDN developer profiles.
- Include various content changes and bug fixes.
In other news(?), as you can see from my Google search box there, Angry Birds Web now works in Firefox, and Safari and IE9. (Why does Rovio give Opera a big fat screen to download Google Chrome? How much is Google paying these developers to bundle or promote Chrome with everything?) Someone needs to tell Rovio it's not just for the Chrome Web Store anymore. And someone needs to tell Google that "Chrome Web" is as senseless as "Firefox Web", "Explorer Web", "Opera Web", "Safari Web", "Xbox Web", "iPhone Web", or anything else into which companies are trying to confine the web these days.
pseudo-translation to test i18n
I really like that Mozilla has a strong L10n team made up of both employees and community volunteers. Months ago we made some cool localization changes to MDN, and I learned a lot about django localization, gettext, pootle, and translate toolkit.
Back then Leszek, a localization volunteer and add-on developer, filed a bug about a bunch of un-localized MDN strings, and then found a bunch more un-localized strings again recently. I remembered I had read about using pseudo-translations for localizability testing, and thought I'd try it for MDN.
MDN, like (almost?) all Mozilla webdev projects, uses gettext message files (svn), so we can use translate toolkit. (woo! SourceForge project!) We also use a product_details repository (svn) to closely track the same language and country codes used by other Mozilla products. I needed to add the new test locale, but Pike pointed out we have to use a single-character subtag (x-testing) to indicate a privately-defined language code (per ietf bcp47), while Stas pointed out that pootle requires a two-character subtag. So, we added 'x-testing' language to the product_details (bug), then I added xx_testing in locale/ for pootle, along with a x_testing -> xx_testing symlink so django uses the xx_testing files for the x-testing locale.
I installed toolkit and ran podebug on our message.pot file:
cd locale/ mkdir -p xx_testing/LC_MESSAGES podebug --rewrite=bracket templates/LC_MESSAGES/messages.pot \ xx_testing/LC_MESSAGES/messages.po ./compile-mo.sh .
Which gave me a pseudo-translated messages.po file and a compiled .mo file.
I changed MDN to use the environment-specific language-loading snippet (found in playdoh funfactory) to keep the test locale from showing up in production. (We have to add the 'x-testing' locale to linux on our staging servers so gettext can use it there, which proves to be quite a chore.)
Voilà - a new pseudo-translated locale for MDN development. It shows which strings we forgot to mark for localization:
Couple of items I'd like help with:
- Find out how to exclude jinja template variable names so that
{{ _('Welcome back, {username}]) }}
doesn't create
#: templates/includes/login.html:3 msgid "Welcome back, {username}" msgstr "Ẇḗŀƈǿḿḗ ƀȧƈķ, {ŭşḗřƞȧḿḗ}"
- Put all this into tower