Difference between revisions of "Fall 2007 Weekly Schedule"
Chris Tyler (talk | contribs) (→Week 1 (Sept 3) Course introduction: - added FSOSS registration) |
(→Week 5 (Oct 1) – Bugs, Bugzilla, and Debugging) |
||
(49 intermediate revisions by 4 users not shown) | |||
Line 4: | Line 4: | ||
=Part I – Essential Mozilla Development Skills and Concepts= | =Part I – Essential Mozilla Development Skills and Concepts= | ||
+ | |||
== Week 1 (Sept 3) Course introduction == | == Week 1 (Sept 3) Course introduction == | ||
Line 26: | Line 27: | ||
** Read the [[Blog Guidelines]] for instructions on how to use your blog in the course | ** Read the [[Blog Guidelines]] for instructions on how to use your blog in the course | ||
** Add your '''blog feed''' and info to the [[Open Source@Seneca Planet List]] so that it appears in the [http://zenit.senecac.on.ca/~chris.tyler/planet OpenSource@Seneca Planet] | ** Add your '''blog feed''' and info to the [[Open Source@Seneca Planet List]] so that it appears in the [http://zenit.senecac.on.ca/~chris.tyler/planet OpenSource@Seneca Planet] | ||
− | ** Register for [http://fsoss.senecac.on.ca FSOSS 2007] -- Note: volunteers can attend for free! (Watch for instructions for | + | ** Register for [http://fsoss.senecac.on.ca FSOSS 2007] -- Note: volunteers can attend for free! (E-mail [mailto:fsoss.volunteer.signup@senecac.on.ca fsoss.volunteer.signup@senecac.on.ca] from your Seneca e-mail account). |
+ | |||
+ | |||
+ | == Week 2 (Sept 10) - Collaborative and Community Development Practices == | ||
+ | |||
+ | * Collaborative development using on-line tools | ||
+ | * [[Real_World_Mozilla_IRC_Introduction|Intro to Internet Relay Chat (IRC)]] | ||
+ | * Blogs and Planets | ||
+ | ** [http://planet.mozilla.org Planet Mozilla] | ||
+ | ** [http://zenit.senecac.on.ca/~chris.tyler/planet/ OpenSource@Seneca Planet] | ||
+ | * Using Wikis for Collaborative writing | ||
+ | ** [http://www.wikipedia.org Wikipedia] and [http://www.mediawiki.org/ MediaWiki] | ||
+ | ** Intro to course wiki | ||
+ | *** Guided Tour | ||
+ | *** "Yes, you can edit it!" | ||
+ | *** Common Editing tasks, History, Reverting changes | ||
+ | *** Watches, [[Special:Recentchanges|Recent Changes]] | ||
+ | *** Comparing selected versions (cf. diff) | ||
+ | *** [http://developer.mozilla.org/en/docs/Help:Editing Editing help] | ||
+ | ** Wikis used by Mozilla | ||
+ | *** http://developer.mozilla.org (a.k.a., devmo, MDC) | ||
+ | *** http://wiki.mozilla.org (a.k.a., wmo or wiki.m.o) | ||
+ | * Project discussion | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | * [[Mozilla Community]] (on-line lecture) by Mozilla's Mike Beltzner | ||
+ | * '''Getting started in Open Source projects, or "Learning to be at the festival"''' (on-line lecture) by David Humphrey (given at [http://www.mozilla24.com/en-US/ Mozilla24 in Stanford]): Formats - [http://videos.mozilla.org/mozilla24/1-16_david.mpg mpg], [http://videos.mozilla.org/mozilla24/1-16_david.ogg ogg], [http://videos.mozilla.org/mozilla24/1-16_david.mp4 mp4] | ||
+ | * [[Real_World_Mozilla_IRC_Lab|IRC Lab]] | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Complete all TODO items from Week 1 | ||
+ | ** Blog about your reactions to [http://www.firstmonday.org/issues/issue3_3/raymond/ "Cathedral and Bazaar"] and [http://video.google.ca/videoplay?docid=7707585592627775409&q=open+source "Revolution OS"]. | ||
+ | ** Comment in at least one other student's blog with your feedback to what they wrote | ||
+ | ** Create an account on [http://developer.mozilla.org MDC] | ||
+ | ** Look at the [[Project List]] and [[Potential Projects]] pages and pick ''3 projects'' on which you'd like to work--next week, you'll narrow this to just one. List them [[Fall 2007 Project Sign-up|here]] along with your name so other students can see and groups can form. | ||
+ | ** Add your wiki page to the class list for your section: [[Students in DPS909]] or [[Students in OSD600]] | ||
+ | |||
+ | |||
+ | == Week 3 (Sept 17) - Managing and Building large source trees == | ||
+ | |||
+ | * Revision Control Systems (RCS) | ||
+ | ** Introduction to RCS | ||
+ | ** cvs, svn, hg | ||
+ | ** Common concepts and tasks | ||
+ | *** Repository | ||
+ | *** Local Working Copy | ||
+ | *** RCS Changes (changesets) vs. Backups | ||
+ | *** Typical read-only activities: Checkout, Update, Log, Status | ||
+ | * Using Make to build software | ||
+ | ** Intro to Make | ||
+ | ** Mozilla has over 50,000 Makefiles | ||
+ | * Building Mozilla from Source | ||
+ | ** [[Real_World_Mozilla_Build_Mozilla_Lab|Building Mozilla for the first time]] | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** Two simple [http://matrix.senecac.on.ca/~chris.tyler/osd600/makefile-examples.tgz makefile examples] | ||
+ | ** [[How the Build Works|How the Mozilla Build Works]] (on-line lecture) by Mozilla's J. Paul Reed | ||
+ | ** [[Release Builds: from source tree to exe]] (on-line lecture) by Mozilla's Robert Helmer | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Watch online lectures about the Mozilla build system. | ||
+ | ** Practice creating a simple [[Real World Mozilla Makefile Lab|makefile]] | ||
+ | ** Do a Debug Mozilla build on your home machine and blog about the experience | ||
+ | ** Finalize your project choice, form a group (if you are working in a group), and create a proper project page for your project in the [[Project List]]. See the full [[Fall 2007 Major Project|project instructions]]. | ||
+ | |||
+ | * '''NOTE''' | ||
+ | ** Thursday's class will be special, as we will have a guest speaker flying here to talk to you about the build. Please have your build done before Thursday so you can ask questions and understand what he's talking about. | ||
+ | |||
+ | |||
+ | == Week 4 (Sept 24) - Navigating the Mozilla source tree == | ||
+ | |||
+ | * Learning to be Lost Productively | ||
+ | ** Adding to Mozilla is not like writing a program from scratch | ||
+ | ** Leverage the existing code by reading, studying, and copying existing code | ||
+ | * Mozilla Source Code structure and style | ||
+ | ** [http://developer.mozilla.org/en/docs/Mozilla_Source_Code_Directory_Structure Mozilla directory structure] | ||
+ | ** [http://mozilla.org/hacking/mozilla-style-guide.html Developer style guide] | ||
+ | ** [http://www.mozilla.org/hacking/portable-cpp.html Portability Rules for C++] | ||
+ | * Searching for Code | ||
+ | ** http://lxr.mozilla.org and http://mxr.mozilla.org | ||
+ | * How to Make Changes | ||
+ | ** building with client.mk in mozilla/ vs. incremental builds | ||
+ | ** Working with Patches | ||
+ | *** [http://developer.mozilla.org/en/docs/Creating_a_patch Creating a patch] | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** Reading: Chapter 11 (pages 379-397) of Diomidis Spinellis, ''Code Reading: The Open Source Perspective'', ISDN 0-201-79940-5 - [http://www.spinellis.gr/codereading/ information about the book] - [http://proquest.safaribooksonline.com/?uiCode=seneca&xmlId=0201799405 eBook version via Seneca Library and Safari] | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Lab - Learning to use LXR/MXR effectively: [http://zenit.senecac.on.ca/wiki/index.php/Real_World_Mozilla_Source_Code_Reading_Lab Source Code Reading Lab] - Blog about your experience. | ||
+ | ** Lab - cvs diff and patch: [http://zenit.senecac.on.ca/wiki/index.php/Real_World_Mozilla_Incremental_Build_Lab Incremental Build Lab] | ||
+ | ** Practice doing incremental builds and applying patches | ||
+ | ** Identify the main file(s) that your project will be changing and blog about your experience finding them and your observations about those files. | ||
+ | ** State your 0.1 release target on your project's wiki page (explain what you will have completed by the time you reach 0.1 release). Discuss this with your professor. | ||
+ | ** Review, and where appropriate, comment on blog postings by other students. | ||
+ | |||
+ | == Week 5 (Oct 1) – Bugs, Bugzilla, and Debugging == | ||
+ | |||
+ | * What is a bug? | ||
+ | ** Open vs. Closed Bug Tracking - [http://www.arcanology.com/2007/09/19/ie-and-the-demise-of-borgzilla/ discussion of Mozilla vs Microsoft/IE] | ||
+ | ** BMO - https://bugzilla.mozilla.org | ||
+ | ** Searching for Bugs | ||
+ | ** How to File a Bug | ||
+ | ** Following bugs through bugzilla | ||
+ | * Debugging Tools and Techniques | ||
+ | ** C++ with VS.NET and gdb | ||
+ | ** JS with Venkman | ||
+ | ** DOMi | ||
+ | ** Error Console | ||
+ | ** Lab - [[Dive into Mozilla Debugging Mozilla Lab|Debugging Mozilla]] | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** [[The Life-cycle of a Bug]] (on-line lecture) by Mozilla's Mike Connor | ||
+ | ** [http://www.toolness.com/wp/?p=25 Account of fixing a first bug, by Mozilla's Atul Varma] | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Create a [https://bugzilla.mozilla.org bugzilla] account | ||
+ | ** Find 5+ bugs related to your project, and add them to your project wiki page | ||
+ | ** CC yourself on two bugs that relate to your project | ||
+ | ** Watch a user in bugzilla for the week and blog about the experience (Ted, Andrew, someone else related to your project) | ||
+ | ** Come up with some ways for others to contribute to your project and add them to your project wiki page. Remember, you're asking for help, so be clear about what you need done, and make it easy so that people will pick you vs. another project. | ||
+ | |||
+ | == Week 6 (Oct 8) – Developing the Browser == | ||
+ | |||
+ | * NOTE: no class Monday Oct 8 due to Thanksgiving holiday | ||
+ | * Lab - [[Modifying the Browser Lab]] | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | * TBA | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Complete the [[Modifying the Browser Lab|lab]] and '''post a patch''' to your personal wiki page. | ||
+ | ** Look at the [http://developer.mozilla.org/devnews/index.php/2007/10/08/keeping-an-eye-on-blockers/ list of current FF3/Gecko1.9 blocker bugs] and '''CC yourself''' on three bugs that are related to your project, or that you find interesting. | ||
+ | ** Write a '''blog summary''' of our experience '''watching a user in bugzilla''' from last week | ||
+ | ** Write a '''blog summary''' updating your progress on your 0.1 release. | ||
+ | ** Make sure your project wiki page is up to date and matches your 0.1 release goals. | ||
+ | ** Start looking for opportunities to help other projects as part of your contrib mark. Each student should have a list of ways you can get involved on their project wiki page. | ||
+ | |||
+ | |||
+ | == Week 7 (Oct 15) – Extending the Browser == | ||
+ | |||
+ | * 0.1 release due this week | ||
+ | * FSOSS assignment ([[DPS909 FSOSS 2007|DPS909]], [[OSD600 FSOSS 2007|OSD600]]) | ||
+ | * [http://developer.mozilla.org/en/docs/Extensions Firefox Extensions] | ||
+ | ** [http://developer.mozilla.org/en/docs/Setting_up_extension_development_environment Setting-up your development environment] | ||
+ | ** [http://developer.mozilla.org/en/docs/Building_an_Extension 'Hello World!' Extension Tutorial] | ||
+ | * Lab - [[Dive into Mozilla Modifying Firefox using an Extension Lab|Modifying the Browser Part II - writing an extension]] | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** MozDev documentation on Extensions: http://developer.mozilla.org/en/docs/Extensions | ||
+ | ** Personal HOWTO for creating an extension: http://roachfiend.com/archives/2004/12/08/how-to-create-firefox-extensions/ | ||
+ | ** Video: [http://www.vimeo.com/395422 Best practices & design patterns for add-ons] by Mike Beltzner | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Complete the [[Dive into Mozilla Modifying Firefox using an Extension Lab|lab]] and '''post the .xpi''' to your personal wiki page. | ||
+ | ** Blog about your experience writing your first extension. What was hard? What did you find confusing? | ||
+ | ** Complete your 0.1 release and write a '''blog post''' about what you've created, how to use it, and where to give feedback | ||
+ | ** Make sure you are ready for [http://fsoss.senecac.on.ca FSOSS] (e.g., registered, read the assignment) | ||
+ | |||
+ | * '''NOTE''' | ||
+ | ** Thursday's class will be special, as we will have a guest speaker (Mark Finkle) flying here to talk to you about Firefox Extensions. Please have your [[Dive into Mozilla Modifying Firefox using an Extension Lab|lab]] completed before Thursday so you can ask questions and understand what he's talking about. Those of you working on extension related projects should also take the opportunity to ask more questions. | ||
+ | |||
+ | |||
+ | == Week 8 (Oct 29) – FSOSS Reflections, Debugging Continued == | ||
+ | |||
+ | * FSOSS assignment due this week (BSD - [[DPS909 FSOSS 2007|paper]], CPA - blog post) | ||
+ | * Class discussion of FSOSS of Open Source | ||
+ | * More on Debugging (VS.NET, gdb, dtrace) | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** [http://sparc.senecacollege.ca/pub/fsoss/2007/ FSOSS talks on-line] | ||
+ | ** [http://sparc.senecacollege.ca/pub/mozilla.lecture/mozilla-20073/vlad-debugging-seneca.avi Mozilla Debugging] (on-line lecture) by Mozilla's Vladimir Vukicevic | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Complete any outstanding labs or blog/wiki/project requirements. | ||
+ | ** Actively seek out contrib opportunities with other projects in the class | ||
+ | ** We are looking for help transcoding and posting videos from FSOSS and the guest talks for contrib marks. If you are interested, please speak to Chris or Dave. | ||
+ | |||
+ | * '''NOTE''' | ||
+ | ** Thursday's class will be special, as we will have a guest speaker (Vladimir Vukicevic) flying here to talk to you about Mozilla Debugging Techniques and Tools. UPDATE: [http://sparc.senecacollege.ca/pub/mozilla.lecture/mozilla-20073/vlad-debugging-seneca.avi video is posted.] | ||
+ | |||
+ | |||
+ | == Week 9 (Nov 5) – Bug Fixing == | ||
+ | |||
+ | * Finding a bug, filing, fixing, patching | ||
+ | * Code Review, [http://www.mozilla.org/owners.html Module Owners and Peers] | ||
+ | * Using '''CVS Log''' and '''Bonsai''' to determine who should review | ||
+ | * Good Examples of Bugs | ||
+ | ** [https://bugzilla.mozilla.org/show_bug.cgi?id=343416 Bug 343416] | ||
+ | ** [https://bugzilla.mozilla.org/show_bug.cgi?id=335878 Bug 335878] | ||
+ | ** [https://bugzilla.mozilla.org/show_bug.cgi?id=132183 Bug 132183] | ||
+ | * Lab - [[Thunderbird Bug Fix Lab|Fixing a bug in Thunderbird]] | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** [http://developer.mozilla.org/en/docs/Getting_your_patch_in_the_tree Getting your patch in the tree] | ||
+ | ** [http://weblogs.mozillazine.org/lilmatt/2007/05/it_begins.html Personal blog account of fixing a bug] | ||
+ | ** [http://fdiv.net/2007/05/15/the-secret-life-of-a-thunderbird-patch/#more-74 Personal blog account of fixing a bug in Thunderbird] | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Complete your 0.2 plan and update your project wiki page. | ||
+ | ** Blog about your 0.2 plans as well as any help you need from other students | ||
+ | ** Complete and add 2 new contributions to your personal list of contributions. | ||
+ | ** Complete this week's [[Thunderbird Bug Fix Lab|lab]] (hopefully during class time). Make sure you complete the '''Wiki''' and '''Blog''' requirements in the lab. | ||
+ | |||
+ | |||
+ | == Week 10 (Nov 12) – XPCOM - Modular Development in Mozilla == | ||
+ | |||
+ | * Intro to [http://developer.mozilla.org/en/docs/XPCOM XPCOM] | ||
+ | ** XPCOM can be built in C++ or [http://developer.mozilla.org/en/docs/How_to_Build_an_XPCOM_Component_in_Javascript using JS] | ||
+ | ** Components, [http://developer.mozilla.org/en/docs/Interfaces Interfaces], and [http://developer.mozilla.org/en/docs/XPIDL XPIDL] | ||
+ | * Lab: [[Real World Mozilla First XPCOM Component|Creating a Binary C++ XPCOM Component]]. Complete this lab '''before Thursday's class'''. | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** [http://sparc.senecacollege.ca/pub/mozilla.lecture/mozilla-20073/bsmedberg-xpcom-seneca.avi Introduction to XPCOM] (on-line lecture) by Mozilla's Benjamin Smedberg | ||
+ | ** [http://developer.mozilla.org/en/docs/Creating_XPCOM_Components "Creating XPCOM Components"] -- an excellent on-line book working step-by-step through creating a real XPCOM component. | ||
+ | ** [http://ted.mielczarek.org/code/mozilla/jscomponentwiz/ JS Component Wizard] | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** 0.2 release is due sometime this week. | ||
+ | *** Update your wiki page | ||
+ | *** Upload your release "code" | ||
+ | *** Blog about your release, giving any instructions on how to use it, screenshots of it being used, etc. | ||
+ | ** Complete this week's [[Real World Mozilla First XPCOM Component|lab]] '''before Thursday's lecture'''. Put a '''zip''' with all your files on your personal wiki page when done. | ||
+ | |||
+ | * '''NOTE''' | ||
+ | ** Thursday's class will be special, as we will have a guest speaker (Benjamin Smedberg) flying here to talk to you about XPCOM. UPDATE: [http://sparc.senecacollege.ca/pub/mozilla.lecture/mozilla-20073/bsmedberg-xpcom-seneca.avi video is posted]. | ||
+ | ** [http://benjamin.smedbergs.us/tests/XPCOM-intro.pdf Benjamin Smedberg's XPCOM Slides] | ||
+ | |||
+ | |||
+ | == Week 11 (Nov 19) – XPCOM II - Using XPCOM from JS/Chrome == | ||
+ | |||
+ | * XUL | ||
+ | ** [http://developer.mozilla.org/en/docs/The_Joy_of_XUL The Joy of XUL] | ||
+ | ** [http://developer.mozilla.org/en/docs/XUL_Tutorial The XUL Tutorial] | ||
+ | * XUL Overlays | ||
+ | ** [http://developer.mozilla.org/en/docs/XUL_Overlays XUL Overlays Intro] | ||
+ | ** [http://developer.mozilla.org/en/docs/XUL_Tutorial:Overlays Overlays Tutorial] | ||
+ | * Common XUL Widgets | ||
+ | ** [http://developer.mozilla.org/en/docs/XUL:button Button] | ||
+ | ** [http://developer.mozilla.org/en/docs/XUL:textbox Textbox] | ||
+ | ** [http://developer.mozilla.org/en/docs/XUL:menulist Menulist] | ||
+ | ** [http://developer.mozilla.org/en/docs/XUL:listbox Listbox] | ||
+ | * Lab: [[Real World Mozilla Adding Chrome to FirstXpcom Lab|adding chrome/UI to the FirstXpcom component]] | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** [http://developer.mozilla.org/en/docs/XUL_Explorer XUL Explorer] | ||
+ | ** [http://developer.mozilla.org/en/docs/Code_snippets Common Extension Code Snippets] | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Complete [[Real World Mozilla Adding Chrome to FirstXpcom Lab|lab]] and '''blog''' about the experience | ||
+ | ** Update your project wiki page with a final roadmap for your 0.3 release | ||
+ | |||
+ | |||
+ | == Week 12 (Nov 26) – Major Project Presentations == | ||
+ | |||
+ | * Students will present their major projects in class | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Make sure you have finished all labs and other requirements from previous weeks | ||
+ | ** Make sure you finish any outstanding contrib | ||
+ | ** Make sure your project and personal wiki pages are up-to-date | ||
+ | |||
+ | |||
+ | == Week 13 (Dec 3) – Major Project Due == | ||
+ | |||
+ | * Major projects (0.3) are due this week | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** See Week 12 TODO | ||
+ | ** 0.3 releases are due this week. Speak to your professor if you need to make a case for an extension. |
Latest revision as of 11:41, 20 April 2008
Contents
- 1 Introduction
- 2 Part I – Essential Mozilla Development Skills and Concepts
- 2.1 Week 1 (Sept 3) Course introduction
- 2.2 Week 2 (Sept 10) - Collaborative and Community Development Practices
- 2.3 Week 3 (Sept 17) - Managing and Building large source trees
- 2.4 Week 4 (Sept 24) - Navigating the Mozilla source tree
- 2.5 Week 5 (Oct 1) – Bugs, Bugzilla, and Debugging
- 2.6 Week 6 (Oct 8) – Developing the Browser
- 2.7 Week 7 (Oct 15) – Extending the Browser
- 2.8 Week 8 (Oct 29) – FSOSS Reflections, Debugging Continued
- 2.9 Week 9 (Nov 5) – Bug Fixing
- 2.10 Week 10 (Nov 12) – XPCOM - Modular Development in Mozilla
- 2.11 Week 11 (Nov 19) – XPCOM II - Using XPCOM from JS/Chrome
- 2.12 Week 12 (Nov 26) – Major Project Presentations
- 2.13 Week 13 (Dec 3) – Major Project Due
Introduction
The fall is broken into two parts. First, open source and Mozilla specific skills and ideas are taught. Students learn how to deal with the tools, techniques, and practices of the Mozilla project and its community. Second, students are taught about Mozilla’s extensibility model, and how to write Firefox Addons and Extensions.
Part I – Essential Mozilla Development Skills and Concepts
Week 1 (Sept 3) Course introduction
- Course introduction
- Intro to open source
- Intro to Mozilla project
- Mozilla Project Overview
- Community, Foundation, Corporation
- The Mozilla Manifesto
- Mozilla platform and technologies
- Readings/Resources
- "Cathedral and Bazaar" by Eric Raymond
- "Revolution OS" [film] (see also http://www.revolution-os.com/ or QA 76.9.A25 R68 2003)
- Mike Shaver discusses the Mozilla Manifesto [MP3]
- TODO
- Create an account on this wiki for yourself
- Create a personal wiki page on this wiki, and add a link for yourself to the People page
- Create a blog (wordpress or blogspot or whatever) and create a feed category or tag called "open source"
- Read the Blog Guidelines for instructions on how to use your blog in the course
- Add your blog feed and info to the Open Source@Seneca Planet List so that it appears in the OpenSource@Seneca Planet
- Register for FSOSS 2007 -- Note: volunteers can attend for free! (E-mail fsoss.volunteer.signup@senecac.on.ca from your Seneca e-mail account).
Week 2 (Sept 10) - Collaborative and Community Development Practices
- Collaborative development using on-line tools
- Intro to Internet Relay Chat (IRC)
- Blogs and Planets
- Using Wikis for Collaborative writing
- Wikipedia and MediaWiki
- Intro to course wiki
- Guided Tour
- "Yes, you can edit it!"
- Common Editing tasks, History, Reverting changes
- Watches, Recent Changes
- Comparing selected versions (cf. diff)
- Editing help
- Wikis used by Mozilla
- http://developer.mozilla.org (a.k.a., devmo, MDC)
- http://wiki.mozilla.org (a.k.a., wmo or wiki.m.o)
- Project discussion
- Readings/Resources
- Mozilla Community (on-line lecture) by Mozilla's Mike Beltzner
- Getting started in Open Source projects, or "Learning to be at the festival" (on-line lecture) by David Humphrey (given at Mozilla24 in Stanford): Formats - mpg, ogg, mp4
- IRC Lab
- TODO
- Complete all TODO items from Week 1
- Blog about your reactions to "Cathedral and Bazaar" and "Revolution OS".
- Comment in at least one other student's blog with your feedback to what they wrote
- Create an account on MDC
- Look at the Project List and Potential Projects pages and pick 3 projects on which you'd like to work--next week, you'll narrow this to just one. List them here along with your name so other students can see and groups can form.
- Add your wiki page to the class list for your section: Students in DPS909 or Students in OSD600
Week 3 (Sept 17) - Managing and Building large source trees
- Revision Control Systems (RCS)
- Introduction to RCS
- cvs, svn, hg
- Common concepts and tasks
- Repository
- Local Working Copy
- RCS Changes (changesets) vs. Backups
- Typical read-only activities: Checkout, Update, Log, Status
- Using Make to build software
- Intro to Make
- Mozilla has over 50,000 Makefiles
- Building Mozilla from Source
- Readings/Resources
- Two simple makefile examples
- How the Mozilla Build Works (on-line lecture) by Mozilla's J. Paul Reed
- Release Builds: from source tree to exe (on-line lecture) by Mozilla's Robert Helmer
- TODO
- Watch online lectures about the Mozilla build system.
- Practice creating a simple makefile
- Do a Debug Mozilla build on your home machine and blog about the experience
- Finalize your project choice, form a group (if you are working in a group), and create a proper project page for your project in the Project List. See the full project instructions.
- NOTE
- Thursday's class will be special, as we will have a guest speaker flying here to talk to you about the build. Please have your build done before Thursday so you can ask questions and understand what he's talking about.
- Learning to be Lost Productively
- Adding to Mozilla is not like writing a program from scratch
- Leverage the existing code by reading, studying, and copying existing code
- Mozilla Source Code structure and style
- Searching for Code
- How to Make Changes
- building with client.mk in mozilla/ vs. incremental builds
- Working with Patches
- Readings/Resources
- Reading: Chapter 11 (pages 379-397) of Diomidis Spinellis, Code Reading: The Open Source Perspective, ISDN 0-201-79940-5 - information about the book - eBook version via Seneca Library and Safari
- TODO
- Lab - Learning to use LXR/MXR effectively: Source Code Reading Lab - Blog about your experience.
- Lab - cvs diff and patch: Incremental Build Lab
- Practice doing incremental builds and applying patches
- Identify the main file(s) that your project will be changing and blog about your experience finding them and your observations about those files.
- State your 0.1 release target on your project's wiki page (explain what you will have completed by the time you reach 0.1 release). Discuss this with your professor.
- Review, and where appropriate, comment on blog postings by other students.
Week 5 (Oct 1) – Bugs, Bugzilla, and Debugging
- What is a bug?
- Open vs. Closed Bug Tracking - discussion of Mozilla vs Microsoft/IE
- BMO - https://bugzilla.mozilla.org
- Searching for Bugs
- How to File a Bug
- Following bugs through bugzilla
- Debugging Tools and Techniques
- C++ with VS.NET and gdb
- JS with Venkman
- DOMi
- Error Console
- Lab - Debugging Mozilla
- Readings/Resources
- The Life-cycle of a Bug (on-line lecture) by Mozilla's Mike Connor
- Account of fixing a first bug, by Mozilla's Atul Varma
- TODO
- Create a bugzilla account
- Find 5+ bugs related to your project, and add them to your project wiki page
- CC yourself on two bugs that relate to your project
- Watch a user in bugzilla for the week and blog about the experience (Ted, Andrew, someone else related to your project)
- Come up with some ways for others to contribute to your project and add them to your project wiki page. Remember, you're asking for help, so be clear about what you need done, and make it easy so that people will pick you vs. another project.
Week 6 (Oct 8) – Developing the Browser
- NOTE: no class Monday Oct 8 due to Thanksgiving holiday
- Lab - Modifying the Browser Lab
- Readings/Resources
- TBA
- TODO
- Complete the lab and post a patch to your personal wiki page.
- Look at the list of current FF3/Gecko1.9 blocker bugs and CC yourself on three bugs that are related to your project, or that you find interesting.
- Write a blog summary of our experience watching a user in bugzilla from last week
- Write a blog summary updating your progress on your 0.1 release.
- Make sure your project wiki page is up to date and matches your 0.1 release goals.
- Start looking for opportunities to help other projects as part of your contrib mark. Each student should have a list of ways you can get involved on their project wiki page.
Week 7 (Oct 15) – Extending the Browser
- 0.1 release due this week
- FSOSS assignment (DPS909, OSD600)
- Firefox Extensions
- Lab - Modifying the Browser Part II - writing an extension
- Readings/Resources
- MozDev documentation on Extensions: http://developer.mozilla.org/en/docs/Extensions
- Personal HOWTO for creating an extension: http://roachfiend.com/archives/2004/12/08/how-to-create-firefox-extensions/
- Video: Best practices & design patterns for add-ons by Mike Beltzner
- TODO
- Complete the lab and post the .xpi to your personal wiki page.
- Blog about your experience writing your first extension. What was hard? What did you find confusing?
- Complete your 0.1 release and write a blog post about what you've created, how to use it, and where to give feedback
- Make sure you are ready for FSOSS (e.g., registered, read the assignment)
- NOTE
- Thursday's class will be special, as we will have a guest speaker (Mark Finkle) flying here to talk to you about Firefox Extensions. Please have your lab completed before Thursday so you can ask questions and understand what he's talking about. Those of you working on extension related projects should also take the opportunity to ask more questions.
Week 8 (Oct 29) – FSOSS Reflections, Debugging Continued
- FSOSS assignment due this week (BSD - paper, CPA - blog post)
- Class discussion of FSOSS of Open Source
- More on Debugging (VS.NET, gdb, dtrace)
- Readings/Resources
- FSOSS talks on-line
- Mozilla Debugging (on-line lecture) by Mozilla's Vladimir Vukicevic
- TODO
- Complete any outstanding labs or blog/wiki/project requirements.
- Actively seek out contrib opportunities with other projects in the class
- We are looking for help transcoding and posting videos from FSOSS and the guest talks for contrib marks. If you are interested, please speak to Chris or Dave.
- NOTE
- Thursday's class will be special, as we will have a guest speaker (Vladimir Vukicevic) flying here to talk to you about Mozilla Debugging Techniques and Tools. UPDATE: video is posted.
Week 9 (Nov 5) – Bug Fixing
- Finding a bug, filing, fixing, patching
- Code Review, Module Owners and Peers
- Using CVS Log and Bonsai to determine who should review
- Good Examples of Bugs
- Lab - Fixing a bug in Thunderbird
- Readings/Resources
- TODO
- Complete your 0.2 plan and update your project wiki page.
- Blog about your 0.2 plans as well as any help you need from other students
- Complete and add 2 new contributions to your personal list of contributions.
- Complete this week's lab (hopefully during class time). Make sure you complete the Wiki and Blog requirements in the lab.
Week 10 (Nov 12) – XPCOM - Modular Development in Mozilla
- Intro to XPCOM
- XPCOM can be built in C++ or using JS
- Components, Interfaces, and XPIDL
- Lab: Creating a Binary C++ XPCOM Component. Complete this lab before Thursday's class.
- Readings/Resources
- Introduction to XPCOM (on-line lecture) by Mozilla's Benjamin Smedberg
- "Creating XPCOM Components" -- an excellent on-line book working step-by-step through creating a real XPCOM component.
- JS Component Wizard
- TODO
- 0.2 release is due sometime this week.
- Update your wiki page
- Upload your release "code"
- Blog about your release, giving any instructions on how to use it, screenshots of it being used, etc.
- Complete this week's lab before Thursday's lecture. Put a zip with all your files on your personal wiki page when done.
- 0.2 release is due sometime this week.
- NOTE
- Thursday's class will be special, as we will have a guest speaker (Benjamin Smedberg) flying here to talk to you about XPCOM. UPDATE: video is posted.
- Benjamin Smedberg's XPCOM Slides
Week 11 (Nov 19) – XPCOM II - Using XPCOM from JS/Chrome
- XUL
- XUL Overlays
- Common XUL Widgets
- Lab: adding chrome/UI to the FirstXpcom component
- Readings/Resources
- TODO
- Complete lab and blog about the experience
- Update your project wiki page with a final roadmap for your 0.3 release
Week 12 (Nov 26) – Major Project Presentations
- Students will present their major projects in class
- TODO
- Make sure you have finished all labs and other requirements from previous weeks
- Make sure you finish any outstanding contrib
- Make sure your project and personal wiki pages are up-to-date
Week 13 (Dec 3) – Major Project Due
- Major projects (0.3) are due this week
- TODO
- See Week 12 TODO
- 0.3 releases are due this week. Speak to your professor if you need to make a case for an extension.