FizzyPop
FizzyPop is the codename for a web application centered around creating Mozilla development projects.
Contents
Objective
Create a simple, straight forward web-based system to generate code scaffolding for the many different types of Mozilla projects. The basic architecture plan includes creating a client-side JavaScript application that uses a web-service to generate the actual scaffolding. A secondary goal is to create a rich web client that shows the flexibility and power of writing web applications using open web technologies.
Implementation
The idea is to create a browser-based web client to collect information about a project and submit the data to a JSON-based web-service, which will generate the scaffolding from a series of pre-built templates. The web-service will package the generated files into an archive which is then downloaded to the user. The client portion will be JavaScript, along with a JS DHTML library. The server portion implementation technology is undecided as of now. The current front-runner is PHP & Smarty templates, but other ideas are welcome.
Milestones
M1: Basic Extension
- Create simple web application to support simple extension projects (use Extension Wizard as a feature guide)
- Toolbar
- Sidebar
- Menus (Main / Context)
- About box
- Options dialog
- Basic validation of data
- Post to web service to create a project archive
- Templates for commonly used files (eg. XUL with appropriate namespace. Anything else?)
M2: Beyond Extensions
- Add support for JS XPCOM components (See JS XPCOM wizard)
- Special support for XUL template query processor
- Special support for autocomplete data source
- Add XULRunner application support
- Basic application project
- Simple "quick applications" templates
- UI feature/component support
M3: Richer Extensions and Richer Web App
- Cleanup the overall UI of the web client and use whatever web technology we can to make the whole app look and feel richer
- Add links to MDC topics wherever possible.
- Add richer UI element support
- Toolbar button editor
- Menuitem editor, including show/hide (enable/disable) support
- Preference item editor
- Add scaffolding support for common extension code features
- Common event handler stubs (page load)
- Observer notifications (quit, http-request, http-response)
- Preference watchers
- Richer XULRunner application support
- Auto-update
- MAR generation
Other Ideas:
- Add binary project support (C++ components)
- Add JavaXPCOM / PyXPCOM support
Questions
- Should projects be Mozilla buildable? or just flat file archives?
- Should projects support native compiler projects (Visual Studio solutions)?
- How many applications are we supporting in the future? (Firefox, Songbird, Thunderbird, Sunbird, Prism, Nvu, McCoy, Flock, Seamonkey)