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!

 

As you work on Mozilla, you’ll often file bugs or submit patches that will involve changes needing to be made to the documentation on MDN. I’ve written an article on MDN about this issue, and I’m duplicating it here to get it in front of more people that need this information.

Flag your bugs

When you file a bug that, upon resolution, will likely require that documentation be updated, you should add the dev-doc-needed keyword to the bug:

dev-doc-needed.png

You don’t need to wait until the bug is fixed. Indeed, it’s easiest for the doc team if you add this keyword well in advance of the bug being resolved. That lets us plan ahead. That said, it’s never too late to apply dev-doc-needed to your bugs!

Also, note that if you use the addon-compat keyword to flag that a bug will impact add-on compatibility, you should absolutely also add dev-doc-needed!

The writing team uses Bugzilla queries, as well as a special documentation tracking site that interfaces with Bugzilla, to track our work. By using dev-doc-needed, your bugs will get brought to our attention at the right time to ensure the best odds that your stuff will be written up in a timely manner.

When the bug’s contents are documented, the person that did the work will replace the dev-doc-needed keyword with dev-doc-complete and, ideally, add a comment to the bug with links to the pages that were updated or created to cover the bug’s contents. You should try to review the changes to ensure that the writer got things right.

Indeed, if you love Mozilla, you’ll be sure you’re available to help out if the writer has questions. They may contact you by email, or post questions as comments on the bug. Try to take a few moments out of your busy day to answer questions.

Provide information to the writers

That brings us to the next point. Not only should you be sure to answer questions the writers bring to you, but a little simple preparation can stave off a lot of back and forth. Try to add a note to the bug that indicates exactly what needs documenting. A lot of bugs have pretty cryptic descriptions, or the actual documentation issue at hand isn’t obvious from the bug’s description.

For example, a bug might have a summary like “foobar.com doesn’t work in Firefox 45″. There may then be pages and pages of comments where the problem is debated, possible solutions suggested, and so forth, followed by the bug eventually being marked as resolved. With no other information, the hapless writer is left to pore over all those comments and the patches, hoping to figure out what needs documenting.

When the patch is finally checked in, you should try to add a comment that summarizes what the final resolution was. This can be either “Writers: check out comment 32″ if there’s already a comment that explains the final resolution, or a quick summary of what’s changed, like “Check out the new method and attributes in nsISomeInterface” or “We added the someStandardDOMMethod” method to DOM elements”. Doing this can save the writers a lot of time (time that could better be spent writing even more stuff), and can save you from having to answer pesky questions.

It’s also helpful, of course, if your bug includes a link to the specification or design document for the feature being affected by the patch.

Just having directions on where in the code to look, or what subtle change has occurred, can make all the difference between your change being documented quickly and having it languish for a long time because it scares the writers off.

What if there’s not a bug for it?

Sometimes, you notice something’s wrong with the documentation. Maybe there’s a missing article, or you realize we need a guide on how to use some technology, and there doesn’t seem to be one. You can, of course, write it yourself. But if that doesn’t work for you, feel free to file a bug against the Documentation Requests product on the Mozilla Developer Network component on Bugzilla.

Feel free to update the documentation yourself

MDN is a wiki! You can log in and update the documentation yourself. A lot of programmers don’t consider themselves up to the task of writing documentation, or are crazy busy, and that’s okay! That’s why we have writers, and that’s why we have all the above tips.

However, if you have a few minutes, and feel comfortable doing it, feel free to log in and apply the necessary fixes yourself. This is often really simple for minor changes to the behavior of something, and can possibly save everyone time and effort.

For that matter, if you have the time to jot down relatively thorough notes about your change, you can toss them into the bug, or add them to the wiki. Our happy, helpful documentation gnomes live to clean up your writing, so don’t be afraid to try.

Ask for help!

If you’re not sure how to get something handled in documentation, or are trying to update the docs and are stuck, feel free to pop into #devmo on IRC, where the doc team hangs out, or ask questions on the documentation newsgroup.

 

One of our initiatives on the Mozilla Developer Network’s documentation wiki is to improve browser agnosticism. That is, to ensure that where appropriate, our open web documentation is just as useful for web developers using other browsers as it is for those using Firefox. A lot of our documentation is currently very Firefox-oriented, even when it’s not necessary.

Consider this, for example:

Example of non-agnostic docs

Here we see a big banner about how this method of the DOM Element object was introduced in Gecko 1.9.1. However, it’s actually a standard DOM method. This banner should go away, and the text should be updated wherever necessary to remove any Firefox-specific discussion.

In addition, the article should have our standard browser compatibility table at the bottom. This table provides information about which releases of all the major browsers introduced support for the feature.

I’ve updated this article now so it looks the way it’s supposed to, as an example of what it ought to look like.

Noting introduction of sub-features

Some features are fairly complex; for example, the HTML <input> element has evolved over time, with the addition of new attributes and new possible values for many of them. This is where adding additional rows to the browser compatibility table comes into play. Let’s look at a few rows from the compatibility table for <input>:

Example of longer compatibility table

Here we see multiple table rows, each for a given named feature of the element being documented. In the case of Firefox, we see that type=color isn’t implemented yet, and we used {{unimplemented_inline(547004)}} to include a link to the corresponding bug. We also have the WebKitBug template for linking to WebKit bugs, and should add an unimplemented_webkit_inline or similar for creating Unimplemented badges that link to WebKit bugs, but haven’t done so yet.

Browser version-specific notes

Sometimes, you simply have to note browser-specific stuff, even in open web documentation. This should usually be done in the “Browser compatibility” section, with a subsection added for each browser that needs a note. For example, the browser compatibility section on the main WebSockets page has a subsection entitled “Gecko notes,” which covers Gecko-specific issues related to WebSockets, such as the fact that the constructor is prefixed.

If you do need to include browser-specific content in the middle of article text, try to put it in a call-out box or note box instead of just throwing it into the body text of the article.

The future

As we continue to build our Kuma, our new wiki platform for MDN documentation, we’re keeping browser agnosticism for documentation in mind. We have features planned to make it easier to call out browser differences and browser specific features, and to help readers filter the content based on their interests.

When in doubt… ask!

While updating or writing open web documentation, if you run into something that you’re not sure how to handle, please feel free to pop into #devmo on IRC, or to drop email to me, and ask for help. All of our happy, helpful documentation gnomes live to serve.

 

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 next week’s Wiki Wednesday announcement. Thanks in advance for your help!

JavaScript

SpiderMonkey

Thanks to Panagiotis Tsalaportas for contributing last week!

Developing Mozilla

Thanks to Neil Rashbrook for contributing last week!

Extensions

Thanks to Panagiotis Tsalaportas for contributing last week!

XUL

Thanks to Neil Rashbrook for his contributions last week.

XPCOM

Thanks to Neil Rashbrook for contributing last week.

Interfaces

Plugins

Thanks to Benjamin Smedberg for stamping out useless content last week.

CSS

SVG

Thanks to Panagiotis Tsalaportas for contributing last week!

HTML

DOM

 

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 next week’s Wiki Wednesday announcement. Thanks in advance for your help!

JavaScript

Thanks to David Bruant and syssgx for their contributions!

SpiderMonkey

Developing Mozilla

Extensions

XUL

XPCOM

Interfaces

Plugins

CSS

Thanks to myakura for contributing!

SVG

Thanks to syssgx for contributing!

HTML

DOM

 

 

 

 

 

 

© 2012 Bit Stampede Suffusion theme by Sayontan Sinha