Changes

Jump to: navigation, search

Mozilla Developer Resource Kit

4,743 bytes added, 01:15, 18 October 2008
Project Leader(s)
== Project Description ==
This project will create a resource kit suitable for new both developers and studentseducators alike, and contain all the code, tools, build environment, documentation, and learning materials necessary to become a productive Mozilla developer and contributor. See [https://bugzilla.mozilla.org/show_bug.cgi?id=117214 bug 117214].
== Project Leader(s) ==
* David Humphrey
* Chris Tyler
* James Boston
* Mohak Vyas
== Project Contributor(s) ==
* N/ACesar Oliveira
== Project Details ==
Mozilla is a large and difficult project to get started on because of its scale and scope. A number of issues stand in the way for new contributors:
# tools and documentation is often scattered across the web in wikis, blogs, forums, etc. This situation has improved greatly in recent years, with improvements to [http://developer.mozilla.org MDC]. However, MDC is not enough on it's its own, and suffers from a lack of top-level paths through the enormous amounts of content (i.e., reference vs. learning).
# often one needs more than just a tool or instructions on how to use it--examples, tutorials, etc. are also useful
# many developers, especially those in the east where bandwidth is lacking, struggle to use web-based resources. Having local access to Mozilla's large resources (mxr, mdc, source) would open this world to a new set of developers
=== Resource Kit Contents ===
The resource kit will be contained on one or more discs (<strike>likely one DVD</strike>multiple DVDs). Initially the kit will '''target Windows developers''', since this is the largest set of potential developers and because the tools and configuration necessary to do Mozilla development is less foreign to Linux/Unix developers. The disc or discs will contain a number of resources:
==== Complete Linux Development Environment ====
While the The kit will target Windows, it will include a complete Linux-based Mozilla development environment. This will be done in order to introduce Windows developers to the need for cross platform development and testing, and also to help transition them onto other platforms like Linux and OS X.
The OS chosen would be '''Fedora Core''', and the included software/packages would match, or be compatible with, the [http://developer.mozilla.org/en/docs/Linux_Build_Prerequisites Linux Build instructions], the [http://wiki.mozilla.org/ReferencePlatforms/Linux-CentOS-5.0 Linux reference platform doc], and the existing [http://blog.mozilla.com/bhearsum/archives/16 Linux Reference VM]. We would not use the existing reference VM because our goal is to add convenience software and settings such that Mozilla development is made easier for new developers and so that Windows developers are made to feel comfortable.
# VM Image. I have contacted VMWare to see if it is possible to redistribute the VMWare Player. Other hosts are also possible, but need to work well so that developers aren't turned-off Linux based on the Windows host software. '''UPDATE''' I have filled out the VMware Player Distribution Questionnaire, and am waiting for further information.
Consider using desktop wallpaper from http://www.hongkiat.com/blog/70-nice-and-beautiful-firefox-wallpapers/ or http://www.zuneo.fr/2005/01/wallpapers-firefox.html
==== Tools ====
Ideally these would be installable via a single setup/wizard/installer as options, or perhaps in the model of the Open CD (i.e., a XUL Runner web based installer, where you choose each package separately).
* [http://go.microsoft.com/fwlink/?LinkId=51410&clcid=0x409 Visual C++ 2005 Express Edition] - checking with Microsoft to see what choices there are for including or auto-downloading this. '''UPDATE:''' <strike>Lots of uncertainty on Microsoft's side (I've spoken to people in the OS Lab + on the VS.NET team). Still trying to find a solution that doesn't involve manual installation.</strike> Finally got word from Doug Handler, Technical Product Manager with Microsoft, who says: "The MSFT distribution agreement basically states that no other software besides the MSFT image can be on the disc. This means that if the author / whomever, wants to distribute VS Express and other software on media that 2 discs need to be included." I'm following-up to get this finalized.
* [http://msdn2.microsoft.com/en-us/vstudio/aa700755.aspx Microsoft Platform SDK] (NOTE: When installing the SDK, you must install at least the "Windows Core SDK" (Tools, Build Environment, and Redistributable Components) and the "Web Workshop SDK" (Build Environment)).
* [http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.23.exe Mozilla Build 1.23]* CVS that works with the source server (http://ftp.gnu.org/non-gnu/cvs/binary/stable/x86-woe/cvs-1-11-22.zip)
* [https://addons.mozilla.org/en-US/firefox/addon/16 Chatzilla]
* [https://addons.mozilla.org/en-US/firefox/addon/216 Venkman]
* Editor config files and addons for common/supported editors
** emacs
*** [http://code.google.com/p/js2-mode/ js2-mode]
** vi
** komodo
* [http://developer.mozilla.org/devnews/ Mozilla Developer News]
* [http://developer.mozilla.org/devnews/index.php/categories/about-mozilla/feed/ about:mozilla feed] (NOTE: included in devnews by default).
 
Perhaps something like [http://extjs.com/deploy/dev/examples/feed-viewer/view.html this]. The Java documentation [http://java.sun.com/javase/reference/index.jsp main entry page] does a nice job of this.
===== Navigation and Sidebar =====
One of the goals of the kit is to provide local access to Mozilla learning, reference, and source code documentation. The local web app should include a sidebar and header suitable for users to quickly navigate and discover what is available. This means quick access to different types of searches (e.g., code index and also documentation), top-down categorization of documentation materials, etc.
Should the top-level organization of the app be content or chrome? Using something like ext's [http://extjs.com/deploy/dev/examples/layout/complex.html complex layout] could be interesting. Consider using [http://extjs.com/ ext.js] + [http://jquery.com/ jquery] to do the category/TOC tree. Could also use this [http://www.aariadne.com/filetree/filetree.html extjs FileTree widget]. Also, since [http://webglimpse.net/ glimpse] is being used for [[Create Local MXR|MXR]], perhaps it can also be used to do the indexing of the static documentation.
===== [[Create Local MXR|Local MXR]] =====
The local MXR would index only the trees in the kit (see the Source Code section). The look of the HTML pages should be modified somewhat to make it clear that this is a separate resource to what is on the web, and therefore the code indexed is not the same. See the [[Create Local MXR]] project for more details.
 
'''UPDATE:''' I've got a working prototype:
 
[[Image:Mxr-extjs.png]]
 
Filed [https://bugzilla.mozilla.org/show_bug.cgi?id=435814 bug 435814] to track my work integrating dehydra and mxr.
 
===== Web-Based Mozilla Tools =====
 
* Using the nserror info at http://silver.uwcs.co.uk/mozilla/misc/nserror_list, create an equivalent version to [http://silver.uwcs.co.uk/mozilla/misc/nserror this] to run locally, perhaps running in JS only.
* Ted's Extension Wizard: http://ted.mielczarek.org/code/mozilla/extensionwiz/extensionwiz_source.zip
* XUL Periodic Table: http://www.xulplanet.com/references/xulpt/top.xul (OK to use? Need to confirm). See [http://www.veerwest.com/blog/web-development/xul-in-html-experimentations notes] on how to embed xul fragments in an html doc.
===== Documentation and Learning Materials =====
* Documentation on using each of the tools included in the kit
* Reference and other Documentation (much from [http://developer.mozilla.org MDC]). Where MDC is a wiki meant for distributed collaboration, the documentation in the kit is read-only. Furthermore, where wikis prefer writers to readers, the documentation in the kit needs more top-down organization to link everything together (cf. MSDN). Getting rid of the wiki would mean that the content can be distributed as files vs. needing a web/wiki server. Like the local MXR, the look-and-feel of the pages should be altered so that they don't appear to be MDC, and it's clear that this is something separate. In addition, some docs would need to be changed sho they reference the contents of the kit (i.e., where multiple tools can be used, focus on the one(s) that are included in the kit). See notes on [[MediaWiki Import and Export]]. '''UPDATE:''' Eric Shepherd has given us a sanitized mysql dump from MDC - 2008-04-28. Instructions for recreating devmowiki are [http://developer.mozilla.org/en/docs/MDC:Hacking_wiki here].** Chris has suggested scripting all changes to the MDC dump, so it can be easily reproduced. Wikipedia does something [http://en.wikipedia.org/wiki/Wikipedia:Wikipedia_CD_Selection/section_excludes similar] for their [http://en.wikipedia.org/wiki/Wikipedia:Wikipedia_CD_Selection CD-ROM version] for schools.
* Learning materials (much from [http://zenit.senecac.on.ca/wiki Seneca courses])
** Presentations/Lectures (from Seneca and Mozilla)
** Tutorials
** Video/Audio content (guest lectures, conference talks, etc.). Idea: Would be cool to consider using Ogg/Theora and Chris Double's whatwg video patches ([https://bugzilla.mozilla.org/show_bug.cgi?id=422540 bug 422540], [https://bugzilla.mozilla.org/show_bug.cgi?id=382267 bug 382267]).
* API Reference - [http://www.xulplanet.com/ndeakin/ Neil Deakin] has agreed to help by providing his [http://www.xulplanet.com/references/xpcomref/ 1.9 XPCOM Reference] he created for XULPlanet (just over 1MB). '''UPDATE:''' Neil has sent us his perl scripts for generating this content.
* Books
* Is it worth mining the newsgroups for info?
* What about Mac OS X?
* Can I leverage the Mozilla update system for extensions to push content updates?
* <strike>Should the various and scattered "How to make an extension" online resources be part of the MDRK? (consider it is probably an interesting first step in Mozilla code for many a beginner)</strike> Yes, they will be.
==== Example Resource Kits ====
 
* http://docs.msdnaa.net/ark_new3.0/cd3/npage.htm
* http://www.amd.com/us-en/Processors/DevelopWithAMD/0,,30_2252_9044,00.html
* http://msdn.microsoft.com/windowsmobile/downloads/resourcekit/default.aspx
* http://www.linuxfirmwarekit.org/
* http://developer.apple.com/samplecode/AppleApplications/index.html (example of how Apple works with categories vs. trees).
 
==== TODO ====
 
* Create Linux build/dev environment, perhaps as a [http://zenit.senecac.on.ca/wiki/index.php/Potential_Projects#Create_a_MDRK_Spin project in the fall].
* Finalize agreement with Microsoft to redistribute VS.NET Express
* Collect all software and other binary materials to go on the discs
* Write "one pagers" on all the tools included with the kit
* Build tree hierarchy for MDC content using a file-system dir structure (likely more than one root, e.g., Reference, Books, Tutorials, etc.)
* Write tool to parse a "transformation" script, which would take page titles and copy them to category dirs, delete them, etc. The basic idea is to avoid touching the files from MDC manually.
* Do a wget of the MDC mirror on liberia, which does *not* pull in any outside materials.
* Create a "transformation" script to automate the process of classifying and cleaning the MDC content generated by the wget, such that it is never done manually:
** Find and kill all red links in the MDC content (i.e., transform them into plain text).
** Find and kill all place-holder docs which have little or no valuable content.
** Delete any docs that are not in scope for the kit (e.g., docs that refer to things not specifically about Mozilla development)
* Explore packaging options for the web-based content via Prism/XULRunner. This also includes an httpd/perl-cgi solution for Windows that doesn't suck--perhaps an embedded extension solution?
1
edit

Navigation menu