Mozilla Developer Resource Kit
Project Name
Mozilla Developer Resource Kit
Project Description
This project will create a resource kit suitable for new developers and students, and contain all the code, tools, build environment, documentation, and learning materials necessary to become a productive Mozilla developer and contributor.
Project Leader(s)
- David Humphrey
- Chris Tyler
Project Contributor(s)
- N/A
Project Details
Introduction
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 MDC. However, MDC is not enough on it's 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
- developers coming from proprietary platforms and development environments are used to the concept of resource kits, and find Mozilla's distributed approach to knowledge and resources foreign.
The goal of this project is to create a set of discs that remote users could download or order and begin learning and developing Mozilla easily.
Resource Kit Contents
The resource kit will be contained on one or more discs (likely 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 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 the Linux Build instructions, the Linux reference platform doc, and the existing 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.
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).
- Visual C++ 2005 Express Edition - checking with Microsoft to see what choices there are for including or auto-downloading this
- 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)).
- Mozilla Build 1.2
- Chatzilla
- Venkman
- Firebug
- Extension Developers Extension
- Console2
- Chrome List - could tie the LXR stuff into the local MXR instance
- Execute JS
- XPCOMViewer
- XUL Explorer 0.8
- DOMi - NOTE: AMO URL when it goes up.
- KomodoEdit -
checking with ActiveState to see what's possible here in terms of redistributingShane confirms that we can redistribute
Scripts and other Best Practices resources
- Editor config files and addons for common/supported editors
- emacs
- vi
- komodo
- .mozconfig files for standard development scenarios
Source Code
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
- 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
- Thunderbird
- OpenKomodo
- Miro
Local Versions of Remote Mozilla Tools
Because both of these projects assume a web application being used locally, it might make sense to do a Prism or XUL Runner app, specialized to host them (cf. http://wiki.oxymoronical.com/Projects:MozDevDocs)
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.
I'm not sure the best way to do this, in terms of having a usermode, lightweight web server that can run this on Windows. We could use something like lighttpd or one of the other small servers for win32. Ideally, this could run as an app vs. a service--people won't want to install a service just to search source code.
Local 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. Again, a Prism app could be used, and perhaps/hopefully the same one as for the local MXR.
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
Documentation
Many different 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 MDC)
- Learning materials (much from Seneca courses)
- Labs and Walkthroughs
- Presentations/Lectures (from Seneca and Mozilla)
- Tutorials
- Video/Audio content (guest lectures, conference talks, etc.)
- Interviews, articles, substantial blog posts, etc. from Mozilla Developers
- Bibliography/Lists of non-free books of interest to Mozilla Developers
- Glossary of Terms
Questions/Issues
- How to deal with localization?
- Can we allow the user to modify VS such that it knows about the symbol/source server when debugging?
- Is it wise to give source that can't be built? I'm thiking of Miro, OpenKomodo, etc. for which you need a different toolchain than Firefox (version wise). My idea in including them is that you can refer to them. Maybe this makes it more difficult rather than less so.
- What's the best way to use MDC and other Mozilla documentation in this such that future releases don't need a lot of manual work to pull in new material?
- Should source code for popular extensions be included and indexed? This might be nice in terms of providing learning/teaching materials for extension developers.
- Need to clear copyright and licensing on all materials to be used.
- Should there be more than one? For example, Academic version, Developer version? I lean toward 'no', but perhaps some types of content could be put on a separate disc?
- There should also be an Enterprise Deployment version (NOTE: trying to get a student to do this with mkaply)
- Is it worth mining the newsgroups for info?
- What about Mac OS X?