(not sure if this should go in m.d.mdc or m.d.mdn, hope this is right)
tl;dr: Demo and screenshot of a mdn-navigation in last section.
I think there are some issues that prevents MDN from being a good
documentation site and think promotejs/arewefirstyet (that BTW promote
old url formats) and other SEO initiatives are a bit premature.
Currently I believe I am more likely to get an answer fast from e.g.
w3schools, although it might not be as comprehensive as MDN. You have
probably heard some of the comments before, but hopefully this is not to
redundant.
The primary problem, I think, is that the site feels slow. Quite a few
things could be done to speed it up:
- Don't use SSL
- Pre-generate all pages a static html files (there are only ~20k pages)
and handle redirects in mod_rewrite (the user state could be a iframe or
a tiny amount of inline JavaScript).
- Rewrite all links when rendering page content so no links point to
urls that are redirected. E.g. the link
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/splice
in text "Method of Array" currently goes to url, that redirects to
another url.
- Remove/Reduce the use of JavaScript (especially from other domains), e.g.
- - The google search api seems to be loaded on every page even though
it is only used on the search page.
- - "tabzilla.js" could be inlined and do not need JavaScript
- - Persona is only needed when the button is clicked
- - Syntax-highlighting ought to be done on the server side
- - Most of the JavaScript seems only the be relevant for logged in
editors or for few pages (e.g. the video players).
- - jQuery is not really needed.
- The use of custom css-fonts seems to give a "flash of unstyled
content" which might be one thing that makes the site *feel* heavy. So
even though it is a cool feature, I think the price is to high in this
case. I think MDN shouldn't be a demo of every bell and whistle, but
rather aggressively strive to be the most useful, which in this case
implies fastest, on the net.
But the site is also difficult to navigate and to get an overview of for
several reasons:
- The site lacks primary navigation. Some pages have a breadcrumb either
in the top (in very dimmed colors) or in some non-standard way (e.g.
PR_CreateThreadPool in the NSPR api reference, that BTW have many broken
links), but it doesn't give a sense of what the related pages are.
- The tags in the bottom are close to useless for navigation. I assume
the system/editorial tags (like MakeBrowserAgnostic or
NeedsTechnicalReview) are useful for the editors, but none of the tags
are for users. The tag pages (e.g. /tag/JavaScript) are to messy and
unstructured to be used for navigation.
- The search is implemented such that it loads a new MDN page (which is
slow) and requires 3rd-party-javascript to be enabled, so it is the
worst of both worlds. But it also returns non-relevant results, e.g. it
returns results from other locales (at a minimum, translations should be
folded in to one result item), "meta pages" (like "$history", "$compare"
and talk) are included (although I think a blogpost mentioned some of
this was being fixed). On the search results page the items are very
tall and contains some variation of "| MDN - Mozilla Developer
Network"/"| MDN"/" - Mozilla Developer Network" and the domain and url
of the page, al of which is redundant and noisy.
- Obvious spam and junk content (e.g. /en-US/docs/aaaaaa), as well as
all the "... (External)"-pages should be completely deleted.
- Probably caused by the lack of navigation, I often get the feeling
that the same content exists in multiple places, and some of it on other
Mozilla sites, e.g.
https://addons.mozilla.org/en-US/developers/docs/sdk/latest/
The individual pages (to use an example
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/map
) also have some problems, I think:
- The urls are very long and a mix of upper- and lowercase. No need of
including all levels of ancestors in the path (in this case,
"JavaScript" could be "js" and "docs", "Reference", "Global_Objects",
and even "en-US" are kind of implied).
- The style of writing seems verbose with more of a prose-style than
that of a reference. E.g. when I have used this page, it has often been
to check the arguments for the callback. But this information is only
found described as prose in the second paragraph of the forth section.
If the syntax box (that doesn't really need to have its own header) was
simply something like "array.map(callback(item, index, array)[,
thisArg])", it would be easier and less error-prone to find the answer
quickly.
- The "Implemented in"/"ECMAScript Edition"-box is very prominent on the
page. But it is the least helpful information, since I suspect few know
of the top of their head what browser versions included what version of
the spec (or which part of the spec was included, and if it was bug
free). So this should at least be moved to the browser compatibility
section.
- The table of contents, and especially the "tags"- and "files"-links
under it, aren't really useful.
- The layout of the page ought to be much more compact, e.g. smaller
headings with no underlining, less padding in the syntax box, less
white-space everywhere. The dl/dt/dd that are used for parameters, would
probably be more readable/skimmable if it was put in a table.
- I also think that the brown color scheme communicate something
dull/dirty/old/heavy, as opposed to the light/fresh/happy blue scheme of
Addon SDK site (although it is perhaps a bit to "busy").
I tried to implement a mockup of a navigation as an addon to get an idea
of if it would make the site feel different and I think it does. The
addon can be found here and I added a screenshot in the data-folder for
those that do not want to run un-vetted addons:
https://builder.addons.mozilla.org/package/153894/latest/
Note that:
- The structure is based on ".../en-US/docs/all", so all pages should be
represented so the menu should be complete. But I have tried to merge
redirects and talk pages using some heuristics and this process probably
introduced errors (but could easily be created on the server).
- I have structured some of the content manually (e.g.
https://developer.mozilla.org/en-US/docs/FC_CloseSession ). This is
process is far from complete (as e.g. illustrated by the many items
under "Other"), but this is exactly the problem with the current site.
Some of the structure is probably also wrong. But I do believe that
every page could be placed into some hierarchy with one parent, that
would seem logical to most users and that most editors could agree on.
- I am not suggesting that the navigation should be implemented as
JavaScript or that new pages should be loaded inline (nor that a 2MB
json-file should be used). This is a mockup. Instead the navigation
should be rendered as plain html. The navigation could perhaps be
progressively enhanced with JavaScript to allow expanding and
collapsing, but the navigation might also just be some more traditional
menu. The instant search should of course also be performed on the server.
- All the aliases (i.e. the pages redirecting to the page) is show in
the little yellow "..." popup box. This is primarily for debugging and
shouldn't be included.
- To illustrate how different "satellite documentation sites" could be
tied into MDN I added the addon api documentation so the navigation also
appears there.
- The addon also "fixes" some of the layout problems, e.g. replaces the
lists with tables, reduces the heading size and underline, removes some
spacing, remove the table of contents.
--
Anders