This is the P2PU Archive. If you want the current site, go to www.p2pu.org!

Web Browser Extension Dev.

Syllabus for Web Browser Extension Dev.

micadeyeye's picture
Fri, 2010-09-03 10:30

==Extension Development Course==

===Week 1===
* Introduction to Web Browsers  - Browser War, Evolution of WBs with examples
* Web Browser Reference Architectures (RA) - The various RAs, A Generic RA
* Browser Technology Overview - Mozilla Platform - XPIDL, XPCOM, XPFE
* Collaborative Development Tools - Mozilla IRC, MDC, Wikis

===Week 2===
* Web Browser Directory Structure - Folders and Files (header files, IDL files, implementation files)
* Using Mozilla webtools (Tinderbox, LXR, Bonsai)
* Getting build requirements - Platform (OS and Browser ver.) dependencies
* Web Browser Build Process - Using Revision Control Systems (CVS, SVN, HG) and Compressed Files (tar and zipped files), Introduction to makefiles, using .mozconfig

===Week 3 & 4===
* Introduction to XPCOM Components - XPCOMViewer
* Writing your first XPCOM Component in JS
* Writing your first XPCOM Component in C++
* Strategies for Testing XPCOM Components (e.g., xpcshell unit tests)
* Learning how to debug Mozilla (C/C++ and JavaScript) - Firebug, GDB
* Bug filing - Bugs, Bugzilla

===Week 5===
* Modifying Firefox
* XUL and Javascript Firefox Extensions
* Writing XUL/JS Extension
* Combining your XPCOM and XUL Extension
* Accessing XPCOM on web pages
* XULRunner and application deployment

===Week 6===
* Individual Project and Examination

==Specific Outcomes==

Upon completion of this course, students should be able to:
* Discuss the building blocks of a web browser
* Build a web browser from source
* Write JS/C++ XPCOM, XUL-based applications
* Use collaborative tools and technical documentation to help find solutions to problems
* Extend a web browser UI and functionalities
* Apply knowledge gained to related areas in software development
* Work collaboratively with fellow students and, where possible, members of the open source community
solve implementation problems by working with existing open source technical documentation and existing code
create and give project demos, showing how the software works and where it is going in future releases

==Grading==

* 15% of the total mark will be based on the contents of your blog and project wiki site
* 25% on your first demo. This will be an online artifact resulting from the project, and you will be continuously working on the project. Most likely, a UI with no implememntation and would be presented as screencasts/screenshots, diagrams or video demo on your site.
* 30% on your second demo. The source code will be graded here, and the project should work to some extent.
* 30% on your final demo and documentation.

==Projects==
* Localization Projects/Extensions - ANLOC (http://bit.ly/cP036e), Freeseer (http://bit.ly/c7dZA1)
* Porting Extensions that require shared libraries to other Operating Systems. An example is the TransferHTTP extension - http://transferhttp.mozdev.org.
* Extending the UI of a web browser. When I move from one location to the other, I always have to change my proxy settings. I would like to see a feature that makes me type in my proxy options and choose one from them (like a select menu) as I move from one location to the other.

==Resources (URLs)==
* http://grosskurth.ca/papers/browser-refarch.pdf
* Firefox Hacks - http://www.oreillynet.com/pub/a/mozilla/excerpt/FirefoxHacks_chap01/inde...
* Creating firefox extension - http://kb.mozillazine.org/index.php?title=Getting_started_with_extension...
* http://www.oreillynet.com/pub/a/mozilla/excerpt/FirefoxHacks_chap01/inde...
* Example Codes for Firefox modification - http://kb.mozillazine.org/Category:Example_code
* Firefox Toolbar Tutorial - http://www.borngeek.com/firefox/toolbar-tutorial/ch_4.html
* Chrome registration - http://developer.mozilla.org/en/docs/Chrome_Registration
* Introduction to COM - http://www.codeproject.com/com/comintro.asp
* Mozilla club in seneca - http://zenit.senecac.on.ca/wiki/index.php/Club_Moz
* Creating .xpi (mozilla extension file) - http://www.csie.ntu.edu.tw/~piaip/docs/CreateMozApp/mozilla-chp-6-sect-4...
* Extension creation wizard - http://ted.mielczarek.org/code/mozilla/extensionwiz/
* More on extension creation - http://kb.mozillazine.org/Getting_started_with_extension_development
* Registering_your_extension_in_the_Extension_Manager
* XUL Annotations - http://xul.andreashalter.ch/download/html/index.html
* Online Creating Mozilla Application Book - http://docs.mandragor.org/files/Misc/Mozilla_applications_en/
* Applying cascading and more features in CSS - http://www.w3.org/TR/REC-CSS2/cascade.html*important-rules
* Localizing in XUL (using of ampersand) - http://www.rietta.com/firefox/Tutorial/locale.html,
http://www.oreillynet.com/pub/a/mozilla/2000/11/10/localizing.html?page=1
* For extensions(xpcomviewer, firebug e.t.c.) - mozdev.org
https://addons.mozilla.org
* XPCOM API - http://developer.mozilla.org/xpcom/api/
* Libre Software Engineering Practice by Antoine Van Gelder  - http://dl.dropbox.com/u/8844335/Libre%20Software%20Engineering%20Practic...

Comments

i m quite interested to join

Ravi  Panwar's picture
Ravi Panwar
Sat, 2010-09-11 10:55

i m quite interested to join this course ..