Changes

Jump to: navigation, search

DPS909 and OSD600 Fall 2008 Weekly Schedule

16,079 bytes added, 12:32, 24 March 2009
no edit summary
=Introduction=
The fall is broken into two parts. First, general open source and and community (i.e., Mozilla, OpenOffice.org) specific skills and ideas are taught. Students learn how to deal with the tools, techniques, and practices of their chosen project and its community. Second, students are taught about extensibility models, and how to write Add-ons and Extensions.
=Part I – Essential Open Source Development Skills and Concepts=
** '''Blog''' on your reactions to the readings for this week.
** Begin learning how to use [[Irc|IRC]] for communication. We'll cover this in detail next week, but it's better to get started early.
 
 
== Week 2 (Sept 8) - Collaborative and Community Development Practices ==
 
* Collaborative development using on-line tools
* [[Irc|Intro to Internet Relay Chat (IRC)]]
* [http://en.wikipedia.org/wiki/Blog Blogs] and [http://en.wikipedia.org/wiki/Planet_(blog) Planets]
** [http://planet.mozilla.org Planet Mozilla]
** [http://planet.go-oo.org/ Novell's OpenOffice.org Planet]
** [http://planetopenoffice.org/ Planet OpenOffice.org]
** [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
*** "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 and OpenOffice.org
*** http://developer.mozilla.org (a.k.a., devmo, MDC)
*** http://wiki.mozilla.org (a.k.a., wmo or wiki.m.o)
*** http://wiki.services.openoffice.org/wiki/Main_Page
* Project discussion
 
* '''Guests'''
** <strike>On Thursday September 11th during class, we'll be joined by OpenOffice.org's Community Manger, [http://www.openoffice.org/lspintro.html Louis Suarez-Potts] . Louis will talk about open source community, the OpenOffice.org project, and answer your questions.</strike> '''Postponed'''
** Also on Thursday September 11th from 5:00 - 6:00, the Fedora project leader, [http://fedoraproject.org/wiki/PaulWFrields Paul Frields], will be hosting an IRC discussion on [irc://irc.freenode.net/seneca freenode:#seneca] for the LUX students. You are encouraged to join and listen to Paul discuss the [http://fedoraproject.org/ Fedora project], Linux, and how their community works. You can also see a video of Paul talking about Fedora [http://www.redhatmagazine.com/2008/05/15/video-fedora-project-leader-on-fedora-9/ here].
 
* '''Readings/Resources'''
* [[Mozilla Community]] (on-line lecture) by Mozilla's [https://wiki.mozilla.org/User:Beltzner 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]
* [[Learning Collaborative Development Lab Fall 2008]]
 
* '''TODO'''
** Ensure all TODO items from week 1 are '''completed'''
** '''Comment''' in at least one other student's '''blog''' with your feedback to what they wrote. <b>Reminder: Comments have to be approved for them to be be shown on your blog. Check your blog settings.</b>
** Watch online lectures for this week about open source community
** Complete this week's [[Learning Collaborative Development Lab Fall 2008|lab]] by '''Friday'''.
** Look at the [[Potential Projects]] page and pick '''3 projects''' on which you'd like to work--next week, you'll narrow this to just one. List them [[DPS909 and OSD600 Fall 2008 Project Sign-up|here]] along with your name.
** Add your wiki page to the class list for your section: [[Students in DPS909 Fall 2008]] or [[Students in OSD600 Fall 2008]]
 
 
== Week 3 (Sept 15) - Managing and Building large source trees ==
 
* Revision Control Systems (RCS)
** Introduction to RCS
** [http://en.wikipedia.org/wiki/Concurrent_Versions_System cvs], [http://en.wikipedia.org/wiki/Subversion_(software) svn], [http://en.wikipedia.org/wiki/Mercurial_(software) 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 [http://en.wikipedia.org/wiki/Make_(software) Make]
* Building Large Open Source Projects from Source
** [[Building Open Source Projects Lab Fall 2008]]
 
* '''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
** [http://sparc.senecacollege.ca/pub/mozilla.lecture/mozilla-20073/1-Mozilla-build-system.avi Mozilla's Build System] (on-line lecture) by Mozilla's Ted Mielczarek
 
* '''TODO'''
** '''Watch''' online lectures about the Mozilla build system.
** '''Attend''' part/all of the [https://wiki.mozilla.org/DeveloperDays/TorontoSept2008/Schedule Mozilla Developer Day] (T1014, S1209) and '''blog''' about your experience, what you learned, who you met, etc.
** '''Create''' a simple [[Real World Mozilla Makefile Lab|makefile]]
** Do the [[Building Open Source Projects Lab Fall 2008|lab]] on your home machine and blog about the experience. '''Note:''' Do not put build output in your blog. You can use your wiki pages for that. The blog should be commentary on the experience of building a large piece of open source software.
** '''Pick''' your project and '''start''' working on it. '''Create''' a proper project page for your project in the [[Project List]]. See instructions [[Fall 2008 DPS909 and OSD600 Major Project|here]].
 
* '''NOTE'''
** Tuesday's class will be special, since the [https://wiki.mozilla.org/DeveloperDays/TorontoSept2008/Schedule Mozilla Developer Day] will be happening downstairs in '''T1014''', and '''S1209'''. You are all invited to attend any/all of the Monday/Tuesday sessions. There will be no formal class/lab, as we will be attending the event.
 
 
== Week 4 (Sept 22) - 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://mxr.mozilla.org
** http://zenit.senecac.on.ca/wiki/dxr
* How to Make Changes
** building with ''client.mk'' 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 - [[Real World Mozilla Source Code Reading Lab|Source Code Reading Lab]]
** Lab - [[Fall 2008 Working with Patches Lab|Working with patches]]
** 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 (Sept 29) – 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
** Dupes, Depends, Blocks
** Following bugs through bugzilla
* Debugging Tools and Techniques
** C++ with VS.NET and gdb
** JS with Venkman and Firebug
** 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://sparc.senecacollege.ca/pub/mozilla.lecture/mozilla-20073/vlad-debugging-seneca.avi Strategies for Debugging Mozilla] (on-line lecture) by Mozilla's Vladimir Vukićević
** [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 3+ 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 (e.g., ted, mfinkle, bsmedberg, or someone else related to your project)
** Be working on your 0.1 release. Ask for help if you're stuck
** Register for [http://fsoss.ca FSOSS] or join as a [[Volunteer|volunteer]].
** 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 13) – Bug Fixing ==
 
* Finding a bug, filing, fixing, patching
* Code Review, [http://www.mozilla.org/owners.html Module Owners and Peers]
* Using '''cvs/hg 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'''
** Be working on your 0.1 release, updating your blog, your wiki page, etc.
** Register for [http://fsoss.ca FSOSS] or join as a [[Volunteer|volunteer]].
** 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 7 (Oct 27) – Modifying the Browser -- In Tree ==
 
* 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.
** 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 8 (Nov 3) – Modifying the Browser -- Extensions ==
 
* [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/
** [http://sparc.senecacollege.ca/pub/mozilla.lecture/mozilla-20073/2-Mozilla-Firefox-extensions.avi Building Firefox Extensions] (on-line lecture) by Mozilla's Mark Finkle
** 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.
** Be working on your 0.2 release and write a '''blog post''' to update everyone on what you're planning, what you've done since 0.1, etc.
 
 
== Week 9 (Nov 10) - XPCOM Part I: Modular C++ 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]]. Use [http://cdot.senecac.on.ca/ff-cvs.tgz pre-built tree here] if you don't have a Firefox build. NOTE: must be extracted to '''C:\temp'''.
 
* '''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://benjamin.smedbergs.us/tests/XPCOM-intro.pdf Benjamin Smedberg's XPCOM Slides]
** [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.
** Begin the [[Real World Mozilla First XPCOM Component|lab]]. Because your 0.2 is due this week, you are not require do to complete the lab until next week. Put a '''zip''' with all your lab files on your personal wiki page when done.
 
* '''NOTE'''
** Thursday's class will be special, as we will have a guest speaker (Tom Aratyn) coming to talk about Extension Development.
 
 
== Week 10 (Nov 17) - XPCOM Part II: Using XPCOM ==
 
* Review of [https://developer.mozilla.org/En/XPCOM XPCOM]
* [https://developer.mozilla.org/en/Creating_XPCOM_Components/Using_XPCOM_Components Using XPCOM Components]
** [[Discussion of Using XPCOM Components]]
* Lab: [[Real World Mozilla First XPCOM Component|Creating a Binary C++ XPCOM Component]]. Use [http://cdot.senecac.on.ca/ff-cvs.tgz pre-built tree here] if you don't have a Firefox build. NOTE: must be extracted to '''C:\temp'''.
 
* '''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://benjamin.smedbergs.us/tests/XPCOM-intro.pdf Benjamin Smedberg's XPCOM Slides]
** [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.
 
* '''TODO'''
** 0.3 release.
** Finish the [[Real World Mozilla First XPCOM Component|lab]]. Put a '''zip''' with all your lab files on your personal wiki page when done.
 
 
== Week 11 (Nov 24) – 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, as well as what you've done to date.
 
[[Category:DPS909]]
[[Category:OSD600]]

Navigation menu