As you’re probably aware, we’ve had a series of problems with the wiki lately. I’d like to share a status report as to what those are and where we stand.

Failing wiki extensions

There’s an issue that’s causing extensions that add features to the wiki to fail to start up. This is a problem caused by a bug in the wiki software that’s not properly handling the scenario in which multiple hosts are restarted at the same time. Due to a lack of proper mutual exclusion during wiki startup, the launch of extensions can fail fairly spectacularly, resulting in the loss of the configuration of the extensions, so that future attempts to start them are guaranteed to fail.

This didn’t happen on every restart (oh, the joy of mutual exclusion bugs), but happened pretty often. Since the wiki periodically restarts itself automatically to clean up cruftiness, the result was that this bug would randomly crop up fairly frequently.

Late last week, MindTouch’s support team gave us a script that detects when this has happened and repairs the lost configuration and restarts the extensions. This was tested over the weekend on three of our most commonly-used extensions, and seems to have worked very well. They’ll be adding the rest of our extensions into the mix tomorrow.

That’s a short-term, hacky, workaround for the problem.

MindTouch’s engineers are working on a patch that will correct the underlying bug. They’ve implemented the fix on their trunk codebase, and are testing it there now. It’s a substantial revision to how extensions are loaded, and they want to get it thoroughly tested. Once they’re sure the patch works, they’ll backport it to the release we’re running and test it there. Then, finally, we’ll get it installed, and we should be in good shape.

This situation is being tracked in bug 715341 if you’d like to follow along.

The Great DOM Reference Kerfluffle

While experimenting with some ideas for the DOM Reference, Jean-Yves inadvertently initiated a move of the entire DOM Reference to a different part of the wiki. That was bad enough, but could have been easily fixed. Unfortunately, the site crashed partway through the move, resulting in things being left in a state where it wasn’t a simple “move the subtree back where it belongs” operation. Instead, he had to manually move every page back where it belonged one at a time. This took several days, but is now finished. If you notice any issues with the DOM Reference, please let us know!

 

Here are today’s Wiki Wednesday articles! If you know about these topics, please try to find a few minutes to look over these articles that are marked as needing technical intervention and see if you can fix them up. You can do so either by logging into the wiki and editing the articles directly, or by emailing your notes, sample code, or feedback to mdnwiki@mozilla.org.

Contributors to Wiki Wednesday will get recognition in the next Wiki Wednesday announcement. Thanks in advance for your help!

JavaScript

Thanks to David Bruant, -TNO-, and xkizer for their contributions the last couple of weeks.

SpiderMonkey

Developing Mozilla

Extensions

XUL

XPCOM

Thanks to Neil Rashbrook for his contributions!

Interfaces

Plugins

CSS

Thanks to McGurk and cgack for their contributions to CSS documentation!

SVG

HTML

Thanks to Jens.B and tw2113 for their contributions since last time.

DOM

Thanks to cgack for contributing!

 

During the Engagement team work week last week, the four on-staff Mozilla developer documentation writers (myself, Janet Swisher, Jean-Yves Perrier, and Will Bamberg) had a sit-down to talk. This was a big deal since it was Jean-Yves’s first time meeting with us in person since joining Mozilla on December 1, and Will’s first time meeting with us since he’s been largely off doing fairly separate stuff documenting the Jetpack SDK.

We had a long discussion about a wide variety of things, and I figured I’d blog about it, to share those ideas and thoughts with the wider Mozilla community — and to flesh out the ideas from the outline format I took the notes in.

Today, let’s talk about our reference documentation and what we can do to improve it.

In this, my final post covering what we talked about during this meeting, we’ll take a look at the new organizational hierarchy we’ve developed for MDN (in a series of previous meetings as well as on a public etherpad), and how we’re going to go about rearranging our content into this new order.

Introducing the new hierarchy

We’ve been talking about fixing MDN’s tendency toward being very shallow, organizationally, for some time. Most MDN content is located right at the top of the hierarchy, making it really disorganized. This is something we want to fix, but work has been slow.

Over the last few weeks, we’ve increasingly discussed this in #devmo, and we finally have a new hierarchy designed that we think will improve things enormously. You can get a look at this on the etherpad we created for the purpose of working it out. There are a few areas where debate is ongoing, but you’ll get the idea of what we’re shooting for.

Making the move

The first step toward moving to this new hierarchy will be to create the new landing pages for each section and subsection, and to revise those that already exist as needed.

We’ll move existing articles as we get to them and as they’re discovered during day-to-day work.

In addition, all new pages should be created in the new hierarchy, once the new landing pages are in place.

Between creating all new content in the right places, and moving old content as we’re able, we’ll gradually make this transition.

On top of that, we can add pages to landing pages even before they get moved, and worry about moving them later if we need to.

A team effort

Because this project is unfortunately not going to be a top priority for the full-time writing team (we’re being kept crazy busy keeping up with the release train!), we’ll be relying pretty heavily on the rest of the MDN community to drive this work forward. Fortunately, it’s something that can be done a bit at a time as community members (and full-time writers) have a moment to spare now and then.

Hopefully you can pitch in and help us make MDN cleaner and easier to navigate!

 

During the Engagement team work week last week, the four on-staff Mozilla developer documentation writers (myself, Janet Swisher, Jean-Yves Perrier, and Will Bamberg) had a sit-down to talk. This was a big deal since it was Jean-Yves’s first time meeting with us in person since joining Mozilla on December 1, and Will’s first time meeting with us since he’s been largely off doing fairly separate stuff documenting the Jetpack SDK.

We had a long discussion about a wide variety of things, and I figured I’d blog about it, to share those ideas and thoughts with the wider Mozilla community — and to flesh out the ideas from the outline format I took the notes in.

Today, let’s talk about our reference documentation and what we can do to improve it.

Using the CSS Reference as a test platform

Jean-Yves has been working furiously on updating, cleaning up, and enhancing the CSS Reference. He’s experimenting with new ways to format the content, ways to improve usability, and generally doing a lot of amazing stuff there. If you haven’t looked recently, you should.

You’ll find, if you look it over, that he’s doing two things: he’s going through alphabetically, tidying things up and making corrections, and he’s using a few pages to try out new ways to present the content.

These experiments are paying off. We’ll soon have an improved structure for the content of each page, and new, clearer ways to describe the syntax of CSS properties. Each page will offer a link to an explanation of how the syntax descriptions should be parsed.

We’re also going to be experimenting with using tooltips to define technical terms, so you can get them without having to follow links (although links will still be offered).

In addition, it will be easier in the future to navigate the documentation. Right now, once you’re on a page for a particular CSS property, you have to use the back button in your browser to get back to the index. We’ll be adding an index link, and will be looking at options to present an actual index in a sidebar on every reference page.

Spreading out

Once we’ve got the CSS Reference changes nailed down, we’re going to take what we’ve learned from those experiments and apply them to the other references, including (but not limited to):

In addition, we’ll continue to work toward removing Gecko-specific content, making our open web documentation browser-agnostic.

MDN everywhere

We’re also working on trying to make as much of our content as possible genuinely usable on mobile devices. Part of this process involves removing cases where we use tables to lay out our text (such as we do on many of our landing pages). We’ll be switching to using CSS columns instead.

Other issues that need to be addressed include how to cleanly present sample code on mobile. These tend to be fairly wide, making them hard to read at best on mobile devices. This is going to be a challenge, but we’re up to the task!

 

During the Engagement team work week last week, the four on-staff Mozilla developer documentation writers (myself, Janet Swisher, Jean-Yves Perrier, and Will Bamberg) had a sit-down to talk. This was a big deal since it was Jean-Yves’s first time meeting with us in person since joining Mozilla on December 1, and Will’s first time meeting with us since he’s been largely off doing fairly separate stuff documenting the Jetpack SDK.

We had a long discussion about a wide variety of things, and I figured I’d blog about it, to share those ideas and thoughts with the wider Mozilla community — and to flesh out the ideas from the outline format I took the notes in.

Today, I’ll be sharing the results of our discussion about the impending Kuma migration and what will come next.

Scripts and templates

The next Big Thing that needs to happen in Kuma’s ongoing development process is to implement support for the type of scripted templates we use pretty frequently on MDN. One of my goals for when I resume work after this week I’m taking off (I do so love scheduled automated posting in WordPress) is to go through our existing templates and figure out the types of things we need to be able to do, to get those prioritized for the development team.

It’s almost certain that we’ll be using server-side JavaScript rather than the Lua-derived DekiScript language currently used by MDN’s MindTouch based wiki. That means we’ll need to update our existing templates. It’s possible some sort of automation might be done for that, but realistically, I don’t expect that to happen (and if it does, there will certainly be a need to review and hand-tweak stuff in at least some cases).

That said, this will be a great opportunity to look at all our templates, figure out which ones we don’t really use anymore, and get rid of them. In addition, we can clean up existing templates to work better, be smarter, and integrate localization support in templates that don’t currently have it.

Future development

We need to be ready for the future. The initial deployment of MDN on Kuma will not have all the features we want. Indeed, it won’t even have all the features we already have, although it should have most of the ones we use regularly. As such, we need to be sure we have bugs filed to give the development team a solid set of things to be done going forward.

Among other things, we’ll want to be able to have live examples embedded in documentation, so you can see how things work without having to click a link to a separate page. These should support HTML, CSS, JavaScript, and all the web goodness we love so much.

We need support for server-side components, so that examples for XMLHttpRequest, WebSockets, and the like can be run without needing to host stuff outside Mozilla’s servers.

We’d like features to make it easy to integrate documentation content with IDEs and other utilities, as well as to make it easier for scraping tools to peel out content to present in other formats.

We want offline access to the content, either by publishing sections of the site as PDF or by making it easy to download chunks of the site in HTML form.

We need good localization tools, such as dashboards of content in need of translating, support for comparing the English and translated versions of a page to find the areas that need reviewing, and so forth.

Let’s make it happen!

We’ll be making sure we have a prioritized set of features to guide the developers toward making Kuma a platform that serves our needs as well as possible. If you have ideas for features the Kuma platform could have to make our lives better, please share them.

This is our chance to have as near-perfect a platform for our documentation as possible! It will take time to get there, but we’ll do our best to make it happen!

 

During the Engagement team work week last week, the four on-staff Mozilla developer documentation writers (myself, Janet Swisher, Jean-Yves Perrier, and Will Bamberg) had a sit-down to talk. This was a big deal since it was Jean-Yves’s first time meeting with us in person since joining Mozilla on December 1, and Will’s first time meeting with us since he’s been largely off doing fairly separate stuff documenting the Jetpack SDK.

We had a long discussion about a wide variety of things, and I figured I’d blog about it, to share those ideas and thoughts with the wider Mozilla community — and to flesh out the ideas from the outline format I took the notes in.

Today, I’m going to share our thoughts about finding and reaching our users.

Who are you and what do you want?

First, you get bonus geek points if you catch the reference I just made.

In order to improve our documentation, we need to know more about who our users are and what they want. There are a few key metrics we need to gather:

  • How many users do we really have?
  • Is that number growing, and how fast?
  • Where are they and are we serving them content they can read?
  • What do they look for and do they find it?
  • What’s the most popular content? The least popular?
  • Is the content any good?

We talked a good bit about the idea of publishing a survey that we can run periodically to get some feedback from our users. We’ll be talking to the metrics team and other teams that have run surveys to get ideas for how to go about this. Jean-Yves is going to be heading this up for us for the time being.

Statistics and metrics: A numbers game

We’d like to start publishing metrics and usage data for our community to read. This is information that can be of enormous use to writers to figure out what content is most important, what content is most in need of work, and what content should be prioritized for localization.

I’ll be talking to our metrics team about creating a dashboard with information about the most viewed content, search statistics, and the like. I’m sure they’ll have great ideas about the types of statistics we can get the most usage out of, and how to go about presenting it.

That information ought to be public, and I’ll be working to make that so.

 

During the Engagement team work week last week, the four on-staff Mozilla developer documentation writers (myself, Janet Swisher, Jean-Yves Perrier, and Will Bamberg) had a sit-down to talk. This was a big deal since it was Jean-Yves’s first time meeting with us in person since joining Mozilla on December 1, and Will’s first time meeting with us since he’s been largely off doing fairly separate stuff documenting the Jetpack SDK.

We had a long discussion about a wide variety of things, and I figured I’d blog about it, to share those ideas and thoughts with the wider Mozilla community — and to flesh out the ideas from the outline format I took the notes in.

One area we spent a lot of time talking was about automation and how little of it we currently do when creating documentation.

One-way generation of documentation

Right now, there’s a Firefox extension by Trevor Hobson that we can use to do one-time generation of reference documentation from IDL. This has been a great tool for us but isn’t an ideal solution for a couple of reasons:

  1. It uses MXR to get the code and tries to use that to differentiate between releases. This used to work great but no longer does since we don’t create a new branch for every release anymore.
  2. It only works for IDL; it can’t parse C header files or JavaScript code modules.
  3. It only works once. Once the article is generated, all future revisions must be done by hand, unless you’re willing to lose any edits you’ve made to the article in the interim.
  4. It only works one-way. Once you’ve made changes to the article, you can’t get those back into the IDL.

Two-way documentation sync: A dream within a dream

Our dream — and it may be an impossible one, or at least extremely unlikely — is the notion of being able to do two-way synchronization of reference documentation back and forth between the wiki and the source. This would obviously involve a lot of code to manage, and getting resources to create something like this is unlikely anytime soon.

The idea is that you could pull content into the wiki from comments in headers and the like, and then use the wiki to edit that content, publishing patches back to be pushed to the tree in an automated fashion after some sort of review. Likewise, periodically, the documentation would be refreshed based on changes made to the headers.

The details would have to be worked out, obviously, but this is a fascinating idea that, if it could be perfected, could make our reference documentation not only easier to maintain, but would help the writers make sure the comments in the headers were kept accurate and tidy.

Automation and localization: A conundrum

Obviously, in-source documentation is inherently unfriendly toward localization. You don’t want to clutter up the code with multiple translations of the content, so localized content would have to be maintained separately. Automated content would only be in English; all localizations would likely, unfortunately, need to be done manually. However, we might be able to mitigate that somewhat. If the editing of automated docs were more structured than the current free-flow system we have (that is, if each method, for instance, were edited as individual components rather than as part of a whole, for example), it would be relatively easy to pull in just the changed stuff and know exactly what needs translating, quite easily.

It’s been suggested that, at least for younger folks outside the English-speaking parts of the world, reference documentation being only (or primarily) in English isn’t an issue since they learn it in school anyway. However, older users may have little if any English. Either way, having translated material is usually preferable, at least to some folks, as long as it’s accurate and current.

Talk about planning ahead!

There are a lot of things to think about when automation is involved, and we’ll be talking about this more in the future. Given that a lot of this is extremely far-forward looking, there’s no rush here! Let’s think about it and get it right.

 

During the Engagement team work week last week, the four on-staff Mozilla developer documentation writers (myself, Janet Swisher, Jean-Yves Perrier, and Will Bamberg) had a sit-down to talk. This was a big deal since it was Jean-Yves’s first time meeting with us in person since joining Mozilla on December 1, and Will’s first time meeting with us since he’s been largely off doing fairly separate stuff documenting the Jetpack SDK.

We had a long discussion about a wide variety of things, and I figured I’d blog about it, to share those ideas and thoughts with the wider Mozilla community — and to flesh out the ideas from the outline format I took the notes in.

One thing we talked about, since we had Will around, was why Jetpack isn’t documented on MDN and what would be required in order to change that.

Jetpack’s special needs

Right now, there are a few specific reasons why Jetpack’s documentation isn’t on MDN.

First, because the docs are built from code that can be checked out or downloaded by the developer, it’s available offline. Obviously one of our goals for MDN is to eventually support offline usage. However, says Will, this is probably not a deal-breaker for MDN since using the SDK generally requires being online anyway. But it’s still something the loss of which would annoy people.

The other major issue is that the current setup lets users add docs for third-party modules, integrated into the docs on their machine. Jetpack users love this feature and use it frequently. There’s currently no established way to document third-party modules in a way that integrates with MDN content.

Problems and a short-term goal

That all being said, it’s clear that at least for now, Jetpack’s documentation can’t move onto MDN without disrupting a lot of people’s workflow in unhappy ways. So for the time being, we’re going to leave things as-is, with one exception: we’re going to start trying to find good ways to cross-link between the Jetpack docs and the content on MDN where appropriate. This will unfortunately largely be a manual process, but at present, the two documentation sites essentially pretend the other doesn’t exist, and this is entirely unacceptable.

So I’d like to encourage writers contributing to either set of documentation to be sure to link to the other whenever appropriate. This will likely be a slow process, but it needs to be done. If anyone would like to volunteer to work on this on the Jetpack side, please contact Will and he’ll help guide you on your way.

Long-term goals and dreams

Someday, ideally, the Jetpack material will migrate to MDN. That will require some development work and advance planning, most of which can’t realistically happen until well after we complete our migration to Kuma. We’ll be thinking about this a lot over the coming months, and drawing up ideas to send to the Kuma development team, to help drive the development of our new documentation platform in a direction that will make this possible.

One idea we had was obvious enough: set up a place to document third-party Jetpack modules on MDN. This could be done now, except that the Jetpack SDK offers ways to automatically generate documentation. Perhaps we could work with that team to add a button to automatically publish documentation to MDN’s third-party module section.

Another, more involved, notion we had: could the new file system API be used to let you connect locally-hosted Jetpack documentation to MDN in a way that, while not visible to anyone else on the Web, would look integrated to local users? That is, you could have Jetpack documentation on your computer that MDN would (with your permission) detect and present as if it were part of MDN, with some sort of banner indicating that it’s not official content. This could be an interesting experiment, if nothing else. It could also be used for drafting content before publishing it to the rest of the world.

A lot to think about

Obviously, there’s a lot to consider here, and the “good” solutions are going to take time and planning. In the meantime, we’ll keep on working to come up with great solutions while working on fixing the existing lack of inter-linking between MDN and the Jetpack documentation.

 

During the Engagement team work week last week, the four on-staff Mozilla developer documentation writers (myself, Janet Swisher, Jean-Yves Perrier, and Will Bamberg) had a sit-down to talk. This was a big deal since it was Jean-Yves’s first time meeting with us in person since joining Mozilla on December 1, and Will’s first time meeting with us since he’s been largely off doing fairly separate stuff documenting the Jetpack SDK.

We had a long discussion about a wide variety of things, and I figured I’d blog about it, to share those ideas and thoughts with the wider Mozilla community — and to flesh out the ideas from the outline format I took the notes in.

This time, I’m going to talk about our plans for documenting BrowserID.

What it is and where we are

BrowserID is a new, open, identity system developed at Mozilla that makes it easier to sign in to lots of web sites using just your email address and a single password. Any site that supports BrowserID can then query a BrowserID identification server to determine if you’ve correctly authenticated.

Right now, what BrowserID developer docs that exist are slapped onto Github along with the code. That’s been good enough while BrowserID was in development, but now that it’s starting to try to get more broadly deployed, it’s time to get the documentation whipped into proper shape and up on MDN.

Where we’re going and how we’ll get there

Will Bamberg will be heading up work on the new MDN landing page for BrowserID content starting soon; a stub is currently in place with no content. Will is going to be drafting up the content for that page soon so it can be reviewed and tidied up before content starts to be added to the site.

A “BrowserID field guide,” which covers how to go about making a site use BrowserID for authentication, will likely be the first content added to MDN. After that, an API reference and further examples will be created. We’ll also have links to plugins for popular web apps and other popular web site software (such as the BrowserID WordPress plugin).

We’re pretty excited about BrowserID, and looking forward to having really great content to help web developers start using it to authenticate their users in an incredibly painless way.

 

During the Engagement team work week last week, the four on-staff Mozilla developer documentation writers (myself, Janet Swisher, Jean-Yves Perrier, and Will Bamberg) had a sit-down to talk. This was a big deal since it was Jean-Yves’s first time meeting with us in person since joining Mozilla on December 1, and Will’s first time meeting with us since he’s been largely off doing fairly separate stuff documenting the Jetpack SDK.

We had a long discussion about a wide variety of things, and I figured I’d blog about it, to share those ideas and thoughts with the wider Mozilla community — and to flesh out the ideas from the outline format I took the notes in.

Let’s start by talking documentation sprints.

Ideas for growing doc sprints

After successfully launching our doc sprints program last year, we have plans to try to make them even better. The ways in which we’ll accomplish that are still a bit up in the air, but we’re working on it. One thing we would like to do is look at the possibility of attaching some of them to MozCamp events; that is, adding a couple of days before or after a MozCamp dedicated to doc sprinting. This would let us share event planning resources with those events, likely saving money and making the preparation easier and quicker.

One thing we do want to do in order to improve the results of future doc sprints is do a better job of setting goals for each event. Janet will continue to spearhead the doc sprints for the time being, and is going to talk to other event planners in the Mozilla community to get ideas for how they go about setting goals. She’s also going to look over the output from past sprints to see how we did and how we can get better.

Doc sprint planning

It may be too late to look at attaching a doc sprint to the Buenos Aires MozCamp taking place in April; however, we can and should look into future MozCamp events to see if we can do that.

In addition, when we don’t attach to MozCamps, we would like to make use of Mozilla Spaces whenever possible. This would help bring Mozillians together in a great way, and would help give our writers and volunteers more access to engineers in a lot of cases. Right now, the most likely candidates for this are obviously Mountain View and Toronto, but as we build out more Spaces, this list will grow.

We’ll also be continuing to alternate between virtual and in-person sprints. In fact, our next virtual sprint is in a week: from January 20-21.

Helping communities run their own doc sprints

We also want to encourage local communities to hold their own doc sprint events. These can be either general documentation events, where local teams of folks get together to write new content, or localization events, where regional groups of Mozillians come together to translate content. Both of these kinds of local events are worthwhile goals, and we want to be sure to encourage that.

One way we’re going to do that is by assembling a documentation sprint planning guide. This will provide information about how to announce, organize, and manage doc sprints. It’ll also provide tips on finding a location (such as how to arrange to use a Mozilla Space, for example, or how to find another site if your local area doesn’t have one). On top of that, information will be provided as to how to get swag to hand out to participants and how to promote your event.

In addition, at least sometimes, we can help get subject-matter experts involved, especially when there are some already in your area.

The community of Mozillian writers and translators is growing, and my goal as the doc team lead is to ensure it keeps doing that, partly through helping organize things, but at least as importantly by enabling other Mozillians to continue to push our already great documentation forward. Let’s make 2012 a great year by working together!

© 2012 Bit Stampede Suffusion theme by Sayontan Sinha