Archive for the 'MDC' Category

MDC upgrade progress report

Wednesday, March 3rd, 2010

As I’ve blogged before, we’re trying to upgrade the Mozilla Developer Center to the “Noatak” release of MindTouch (version 9.12).

Unfortunately, we’re still having trouble getting the RSS feeds on the staging server to work and so far nobody can figure out why. We’re still working with the support guys at MindTouch, trying to figure this out. It’s the last remaining hold-up; once this is resolved, we’ll be throwing the switch, so to speak.

I’ve blogged in the past a little about what we expect to gain with the Noatak upgrade, but MindTouch has updated their release notes since then, so I’m going to go over it some more.

Performance and Scaling

One of the big wins (we hope) for us will be performance. MindTouch refactored their API to help reduce the number of database hits needed to get things done. In addition, they implemented a new caching module that in their tests speeds up page performance by up to 10x.

They’ve also further improved their support for running across multiple application servers, which we do, although it’s unclear how much of this work we don’t already have, since we’re running a custom build that already integrates several of these changes. However, one additional benefit that most people won’t see — but will be helpful for administration purposes — is that the control panel now shows the status of the Lucene indexer, so I’ll be able to tell if an index pass is underway and if so, how far along it is.

UI improvements

I’ve mentioned before that they’ve added preliminary support for CKEditor 3.0. By default, however, it will still be using the FCKeditor 2.6.x that we’re currently using. We’ll look at switching over sometime after we get deployed, in order to deal with these things one step at a time. Because CKEditor support is new, there may be additional risks involved in switching to it, so we’re not in a hurry to do so.

Once we do, though, we expect the editing experience to be noticeably improved, as it’s faster and more accessible, and offers more customization options that we’ll be able to leverage.

Also, one problem many people have reported is data loss when they try to save but have gotten logged out or lose their internet connection. While over the long term, the ideal solution would be some kind of AJAX-based saving solution, Noatak adds a check where if the save would fail, you get a warning message but don’t lose your edit. Instead, you can — at least — copy and paste your work into another document, then log in and return to the editor to paste your edit back in and save. It’s not a perfect solution but is vastly better than silently losing your work!

Improvements have also been made to file attachment management, making it easier to avoid accidentally attaching multiple copies of the same thing instead of new versions superseding older ones.

Wrap up

So this is all pretty good. It’s not an enormous release in terms of user-facing features, but should be a win for performance and reliability. Of course, we won’t really know for sure how much of a benefit we’ll get out of it until we’ve deployed it and see how it fares when pounded on by our many gazillions of users.

Want to make the Web a better place?

Tuesday, February 23rd, 2010

Do you love the Web? Or at least like it a lot?

Do you enjoy teaching people how to make awesome stuff happen?

Do you have great writing skills and a knack for figuring out how stuff works by looking at the code?

Want to make the Web a better place for everybody?

If so, you’re in luck! Mozilla is now looking for a great writer to help make the documentation on the Mozilla Developer Center even better. Keeping up with the rapid pace of growth of Web technology is exciting and hectic, but extremely rewarding.

If you’d like to take a shot at making the Web better, maybe you should apply for our new Technical Writer: Developer Documentation position!

CSS transitions in Gecko

Monday, February 22nd, 2010

Current Firefox nightlies have support for the bleeding-edge CSS transitions specification. I’ve spent the last few days playing with this feature, and have written some examples as well as reference and how-to documentation for using them.

CSS transitions make it easy to smoothly animate changes to CSS styles, instead of changes taking effect instantly. With a number of ways to control and customize the transition effect, and support for everything from font size and style to colors and even position, you can create some impressive effects with very little work. I suggest taking a look at the demos I put together to get a good idea what you can do.

Obviously since CSS transitions are still in the Working Draft stage, it’s entirely possible the syntax could change, but this is a great way to easily add a little pizazz to your web content.

MDC upgrade status report

Saturday, 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?

Thursday, 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

Saturday, 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.

MDC account signups re-enabled

Tuesday, 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

Tuesday, 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

Tuesday, 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

Wednesday, 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.