MDC upgrade status report

February 6th, 2010

We’re working toward upgrading the Mozilla Developer Center from MindTouch 9.08.3 to MindTouch 9.12. We’re going through some testing and tweaking on our staging server at the moment, and hope to deploy very soon. At the moment we’re sorting out a glitch with the RSS feeds on the staging server not loading properly.

The 9.12 release of MindTouch offers a few key improvements we’ll be hoping serve us very well.

Performance

MindTouch has done some significant work on performance. They’ve added a caching module that reduces database hits substantially, which in their tests increases performance by an average of 400%. Hopefully this will be noticeable for our users, since obviously performance has been one of the largest complaints we’ve had.

Scaling

A number of bugs that made our multiple-host configuration unstable have been fixed. Most of these were backported to the 9.08.3 release we’re running currently, but there should be a slight increase in reliability with the impending upgrade.

Editor

MindTouch 9.12 supports CKEditor 3.0, the newest generation of the editor currently in use on MDC. This will not be activated at the outset, while we do further testing on the staging server, but this editor upgrade should offer us improved performance, accessibility, and reliability. In addition, it has a new JavaScript API that should let us extend it in new ways to even better suit our needs.

What would make MDC easier for you to use?

January 28th, 2010

In a little over a week, I’m going to be having a meeting with some folks from MindTouch to discuss ideas for features that would make their software easier and better for collaborative documentation projects like ours.

Obviously, this is very exciting, and I’d like to be sure to bring lots of good ideas along with me when I go.

So, if you have thoughts on “big picture” ideas for improvements that would make the Mozilla Developer Center easier and better for collaborative documentation work, please drop me an email, or comment here, and I’ll sort through the ideas and bring them with me.

Update: “Performance” is not a “big picture” feature in the context of this request for ideas. Obviously there are performance issues. I’m talking about the actual creation, organization, and management of the documentation content itself here.

Bringing kick-ass graphics to the web in 3D

January 16th, 2010

I’ve spent the last week and a half or so writing about WebGL, the in-progress specification to bring real-time 3D graphics to the web. This is a very, very cool technology done — in my opinion — in the right way: instead of inventing a whole new API, WebGL takes the established and well-regarded OpenGL ES standard and makes it available to web content.

I’ve written a series of eight articles with corresponding demos. In order to try them out, you’ll need to be running a trunk build of Firefox, and set the webgl.enabled_for_all_sites preference to true.

Getting started with WebGL
How to set up a WebGL context.
Adding 2D content to a WebGL context
How to render simple flat shapes using WebGL.
Using shaders to apply color in WebGL
Demonstrates how to add color to shapes using shaders.
Animating objects with WebGL
Shows how to rotate and translate objects to create simple animations.
Creating 3D objects using WebGL
Shows how to create and animate a 3D object (in this case, a cube).
Using textures in WebGL
Demonstrates how to map textures onto the faces of an object.
Lighting in WebGL
How to simulate lighting effects in your WebGL context.
Animating textures in WebGL
Shows how to animate textures; in this case, by mapping an Ogg video onto the faces of a rotating cube.

I should note that the last demo currently badly leaks memory due to a bug in the WebGL code in the current trunk builds of Firefox. A fix is in the works and should hit the tree soon.

I really look forward to seeing some of the excellent stuff that’s likely to come with the introduction of GL support for the web.

Busy, busy, busy…

December 25th, 2009

I haven’t blogged for a while. Things have been… well, busy. Between having the flu twice over the fall (which I did blog about), then pneumonia, then the crazy amount of writing I’m trying to get done for Firefox 3.6 (which may be a relatively small release, but given the compressed timeline is actually a lot of writing work to do very fast), things have been quite complicated.

On top of all that, right after Thanksgiving, my wife’s sister was diagnosed with inoperable brain cancer, and things have been upended around here while we try to help out with various things. That situation will continue to develop and be complicated for the foreseeable future.

Then last week, a close family friend (a very nice lady who was like a grandmother to me when we lived overseas) became seriously ill, and while that hasn’t resulted in any changes to what I need to do, it’s certainly been a distraction.

I’m doing my best to keep up under the circumstances; my apologies for any unanswered emails (I have plenty) or delayed documentation. Everything will get done… eventually.

All that said, we’re starting to get to the point where I’m reasonably happy with the state of the Firefox 3.6 documentation. Yes, there’s stuff left to write, but it’s getting to the point where it’s mostly relatively small (or obscure) stuff, and some “bonus” material that will help smooth out some rough spots.

Please do let me know if you see any issues in the documentation that need to be addressed, and I’ll see what I can do!

Epic food fail

November 22nd, 2009

Tonight, we all went out to Chili’s for dinner. It was an… interesting experience. We went in, got a table, and all that, no problem. Then our server came around and took our drink order. No problem. While he brought drinks, I debated back and forth between a burger, fajita quesadilla, or fajitas, but finally decided on the fajita quesadilla.

Then it was time to place our order.

Sarah ordered first. Oldtimer burger with American cheese and mayo, nothing else, and onion straws instead of fries.

Sophie ordered next, asking for a grilled cheese and cinnamon apples. We had to repeat “grilled cheese” a couple of times because the server had a hard time hearing it. He joked about it even, laughing about being 60% deaf.

Then I ordered my fajita quesadilla, asking for steak instead of the usual chicken, and some beans, with no guacamole or sour cream.

A couple of minutes later, he comes back and confirms that Sarah wanted her burger with the mayo on the side, which she did, and asks if we’d like Sophie’s food to come out early, which we said would be very nice.

Great.

A few minutes later, he comes out with Sophie’s meal: grilled chicken and cinnamon apples.

So we patiently explained that we’d ordered the grilled cheese, and he apologized and took it away to swap it out. He returned a few minutes later with the sandwich.

Shortly after that, he arrived with the rest of the food. For Sarah, a burger and fries. For me… steak fajitas with beans and extra guacamole. Since I was thinking about the fajitas anyway, I was okay with that, and was able to overlook the guacamole since it was on the side.

Sarah pointed out the fries and requested that he get her onion straws, which he left to do. While he was off doing that, Sarah opened the burger and discovered it had no cheese on it. So when the server returned, she pointed out the lack of cheese and asked him to have them melt some cheese on it. “Swiss?” he asked.

“No, American,” Sarah reminded him. So he headed off with the plate, returning a couple of minutes later with a cold slice of American cheese on top of it. By this point, the comedy of errors is such that she decided not to say anything.

A few minutes later, a manager came along and apologized for the incorrect sandwich (Sophie’s) and the fries thing. We said we understood about Sophie’s meal — “grilled cheese” and “grilled chicken” sound similar enough. But she apparently didn’t realize my order was wrong too. I mentioned that, and that it was okay, and at that point she comped the meal.

There were so many mistakes that we couldn’t be angry about it — especially since the guy was so apologetic about it, and was quick to respond to each mistake. Now, sure, we only tipped him $2 on what would have been a $30 tab, but still…

MDC account signups re-enabled

November 17th, 2009

We’ve deployed the new reCAPTCHA plugin on the Mozilla Developer Center, and I’ve re-enabled user account signups. The “Register” link is now available again at the top of MDC pages.

Hopefully the scum-sucking spammers won’t bypass the new signup procedure.

Do I sound bitter? Maybe…

Going places

November 10th, 2009

Happy the gerbil was running around in his exercise ball tonight, when she hopped from the tile to the slightly lower wood floor in the living room, and the lid popped off his ball.

Before we knew it, Happy was on the move, exploring the living room. I got down on my knees and tried to catch him, but of course he was too quick for me. So I got some food and put it out, and he ignored it, and started checking out under the couch, over by my chair, and so on.

So then I tried putting some food in my hand and waited, and while he came and sniffed around my hand a bit, he didn’t climb onto it, so I wasn’t really able to snag him.

Finally, I had a brainstorm. We just got Happy a new, larger cage the other day, and the old one (also glass) hasn’t been put away yet, so I had Sarah go get that while I kept an eye on Happy.

She brought it to me, still empty, and I set it down on its side on the floor, then placed inside it Happy’s food dish with a little food in it. Then we waited.

It only took a minute or so for Happy to notice it, sniff around a bit, then crawl inside. A quick tipping up, and Happy was recaptured and transferred back into his new cage.

Watching Happy explore the world while dodging my attempts to grab him was actually sort of fun. But in reflection, it also makes me think about how tricky it can be to document moving targets like the open Web. Stuff changes, and it changes fast — sometimes so fast you can’t keep up. Seems like every time you reach out to start writing about something, it either changes or gets made obsolete by something newer, better, or faster.

But, just like trying to catch a runaway rodent, documenting the open web is a lot of fun, in a strange, giddy sort of way.

Another MDC status update

November 3rd, 2009

I just had a meeting with assorted people related to the Mozilla Developer Center work that’s ongoing, including reps from MindTouch and our own IT team. I figured it would be good to summarize what’s going on.

The test server for MDC that we’ll be using to check out updates before actually installing them is expected to be ready today. I’m working with IT and QA to schedule testing work on that, so we can roll it out as soon as possible.

We’ll also use the test system to try out the new reCAPTCHA plugin; once that’s confirmed to be working for us, we’ll be able to re-activate user registrations on MDC, which will of course be a huge win for both openness and my sanity.

The 9.08.1 update will not, unfortunately, resolve all of our problems. However, it should make restarting the site rather more reliable than it is now. We do expect to continue to have to restart periodically due to memory leakage by the Mono runtime on which MindTouch is based. The Mono team is aware of these problems, and they’re working on an improved garbage collection system, but that’s not looking like it will ship until sometime in the first half of next year.

The next major release of MindTouch, code-named Noatak, is tentatively scheduled to ship around the end of November (it’s slipped from its original November 12 target date, which I expected). MindTouch intends to resolve all of the non-Mono-related issues we’re having with reliability by that time. In addition, they plan to offer support for CKEditor 3.0, a much-improved editor that we look forward to being able to use.

Plans are starting to formulate for the features we intend to implement once stability is addressed. Hopefully the reliability problems will start to ease up significantly over the next month to month and a half.

MDC reliability update

October 21st, 2009

I just finished a meeting with folks at MindTouch and our IT guys, and here’s the latest on the reliability issues we’re having with the Mozilla Developer Center:

  • The red error messages we keep seeing in pages where templates are being used are happening because of services (or MindTouch extensions) that fail to start up correctly, or have crashed and could not be restarted. This is happening due to an XML reading routine that isn’t thread-safe and needs to be. MindTouch has fixed this issue for the 9.08.1 release that’s due to ship at the end of next week.
  • Another problem that occurs during startup causes the Lucene search service and the MindTouch pubsub service not to link up correctly. This results in the search index not being updated as content is added to the site (or failing to generate at all if we initiate a full rebuild of the index). MindTouch intends to fix this for their Noatak release, which is scheduled to ship in mid-November. They are going to try to deliver a hotfix before then if possible.
  • Another problem with indexing occurs while attempting to rebuild the index; the indexer is failing due to a problem with the new thread pool used in the 9.08 release. MindTouch switched us back to the old thread pool during their visit last week, but this is still an issue that needs to be fixed. However, it’s not currently directly impacting MDC. A real fix is due for the Noatak release.
  • Yet another problem is occurring with the indexing system: a regression in the 9.08 release causes simultaneous read and write operations on the index to cause the read to fail, resulting in search failures. This doesn’t hurt us very often, but does need to be addressed. This, too, is due to be fixed in Noatak.

Next week, IT will have a testbed version of MDC set up, finally actually duplicating our live configuration (two hosts, etc). This will let us do proper testing in advance of future upgrades, and we’ll use this for the first time with the 9.08.1 update, with the hope of going live with that update sometime the first or second week of November.

QA has a test plan for MDC, which will be used to certify each update before deployment.

The long and short of it is this: we finally have a grasp on what’s going wrong, and a plan to fix it — and test it — going forward.

I’ll post again as more information comes in.

MDC status report

October 15th, 2009

This week has been a hectic one for the Mozilla Developer Center. As most folks are aware by now, we’ve had some stability issues lately.

This week, MindTouch sent up a representative to sit down with our IT guys to figure out what’s going on, and progress has been made. There’s still work to be done, and I’m in touch with them to get a status report on exactly what we still need to do. I’ll share that information once I have it.

In other MDC news, I’ve added a cool new template, “manch“, which lets you insert a link to a method in the current interface reference article. You can see it used in the just-added documentation for the nsIHttpActivityObserver interface.

The syntax is simple:

{{manch("foo")}}

This inserts the text “foo()” with a link to the anchor “#foo()” on the current page. I think this template will help make composing interface reference documentation easier. On top of this, I’ve fixed a bug in the “interface” template that caused it to sometimes direct to the wrong page.

I’ve also updated the Sample interface document on MDC based on minor changes to our preferred style for these pages, as well as new syntax rules for templates that make things cleaner.