Changes

Jump to: navigation, search

Mozilla Developer Resource Kit

7,511 bytes added, 00: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</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.
This Linux development environment will be available in a number of formats:
# LiveCD, which is also installable
# 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]
* [https://addons.mozilla.org/en-US/firefox/addon/1843 Firebug]- more recent version [http://fireclipse.xucia.com/#Downloads here].
* [http://ted.mielczarek.org/code/mozilla/extensiondev/ Extension Developers Extension]
* [https://addons.mozilla.org/en-US/firefox/addon/1815 Console2]
* [http://starkravingfinkle.org/projects/xulexplorer/xulexplorer-0.8-win32.exe XUL Explorer 0.8]
* DOMi - NOTE: AMO URL when it goes up.
* [http://www.activestate.com/store/productdetail.aspx?prdGuid=20f4ed15-6684-4118-a78b-d37ff4058c5f KomodoEdit] - <strike>checking with ActiveState to see what's possible here in terms of redistributing</strike> Shane confirms that we can redistribute. It would be cool to also bundle some custom Mozilla-dev specific extensions, similar to what Shane discusses [http://blogs.activestate.com/shanec/2008/01/call-to-firefox.html here]. <strike>I've emailed for clarification on whether this is possible.</strike> '''UPDATE:''' Shane confirms that something like this is possible, and suggests the best route is to do "Komodo Edit plus Dev Pack."
==== Scripts and other Best Practices resources ====
* Editor config files and addons for common/supported editors
** emacs
*** [http://code.google.com/p/js2-mode/ js2-mode]
** vi
** komodo
As much as possible, provide source code for the Mozilla-based tools included in the kit. This is partly done to make it possible to write learning and other resource material that discusses code explicitly, but also in order to provide an example of the importance of providing open source code.
* Firefox(trunk size = 314M)
** Tagged major release version (probably Firefox 3). This version of the code would be used in almost all examples and document resources
** Trunk version. This would be useful for people with limited bandwidth, because they could cvs update this version instead of having to pull the entire tree
==== Local Versions of Remote Mozilla Tools ====
Because both of these projects assume These resources/tools are all web based, and would be hosted in a combined web application being used hosted locally, it might make sense to do . Ideally this would mean a Prism or XUL Runner XULRunner app, specialized to host them (cf. http://wiki.oxymoronical.com/Projects:MozDevDocs)
===== Local MXR =====This local web app would have different sections, including:
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.===== "Front Page" =====
===== Local MDC not The local app would include a "Front Page" that allows navigation to the entire =====tools, documentation, and other resources. One idea is to include a news feed so that developers could start to get connected to the community and see what's happening in the developer space.
Where MDC is a wiki meant for distributed collaboration, the documentation in the kit is read-only* [http://developer.mozilla. Furthermore, where wikis prefer writers to readers, the documentation in the kit needs more top-down organization to link everything together (cforg/devnews/ Mozilla Developer News]* [http://developer. MSDN)mozilla. Getting rid of the wiki would mean that the content can be distributed as files vsorg/devnews/index. needing a webphp/wiki servercategories/about-mozilla/feed/ about:mozilla feed] (NOTE: included in devnews by default).
Like the local MXR, the lookPerhaps something like [http://extjs.com/deploy/dev/examples/feed-and-feel of the pages should be altered so that they don't appear to be MDC, and it's clear that viewer/view.html this is something separate]. Again, The Java documentation [http://java.sun.com/javase/reference/index.jsp main entry page] does a Prism app could be used, and perhaps/hopefully the same one as for the local MXRnice job of this.
==== Software =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.
The user will get copies of the latest stable releases of popular ===== Web-Based Mozilla software. Tools This is not strictly necessary for development, but helps give a sense of what's possible with the Mozilla platform. NOTE: these could be bundled on a supplementary disc:=====
* FirefoxUsing 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.* ThunderbirdTed's Extension Wizard: http://ted.mielczarek.org/code/mozilla/extensionwiz/extensionwiz_source.zip* Miro* KomodoEdit* SongbirdXUL 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 =====
Many different In addition to MDC, many other types of documentation would be included in the kit, some of which exist and some which would need to be created. Wherever possible, the documentation in the kit would refer to things in the kit--the kit should be self-contained as much as possible.
* 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
* Glossary of Terms
 
==== Software ====
 
The user will get copies of the latest stable releases of popular Mozilla software. This is not strictly necessary for development, but helps give a sense of what's possible with the Mozilla platform. NOTE: these could be bundled on a supplementary disc:
 
* Firefox
* Thunderbird
* XULRunner
* Prism
* Miro
* KomodoEdit
* Songbird
==== Questions/Issues ====
* 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://wiki.creativecommons.org/LiveContent_2.0
* 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