Difference between revisions of "Winter 2008 OSD600 Weekly Schedule"
Chris Tyler (talk | contribs) (→Week 4 - Collaborative and Community Development Practices) |
m |
||
(26 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | [[Image:osd600_winter2008.png|thumb|300px|Photo taken at the end of the year. Open Source FTW! From left to right: Radovan Nesic, Peter Evanoff, Peter Chan, Joseph Cresencia, Chris Tyler. Also we're missing one person: Samer Ziadeh. [http://peter.sykokillers.com/wp-content/uploads/2008/04/picture.jpg High Quality]]] | ||
== Week 1 (Jan 8) Course introduction == | == Week 1 (Jan 8) Course introduction == | ||
Line 67: | Line 68: | ||
** Blog about your project selection and your plans for the next step. | ** Blog about your project selection and your plans for the next step. | ||
− | == Week 4 - | + | == Week 4 - Navigating the Mozilla Source Tree == |
* Learning to be Lost Productively | * Learning to be Lost Productively | ||
Line 95: | Line 96: | ||
== Week 5 – Bugs, Bugzilla, and Debugging == | == Week 5 – 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 | ||
+ | |||
+ | * '''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 (best to choose 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 – Developing the Browser == | == Week 6 – Developing the Browser == | ||
− | == Week 7 – | + | * Lab - [[Modifying the Browser Lab]] |
+ | |||
+ | * '''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 – Release 0.1 == | ||
+ | |||
+ | ToDo: | ||
+ | |||
+ | * '''Finish''' your 0.1, '''release it''' (via your project Wiki), and '''blog about it''' (with a link to the release on your project page). | ||
+ | * Catch up on blogging. | ||
+ | * '''Plan your 0.2'''. | ||
== Break Week == | == Break Week == | ||
− | == Week 8 – Extending the Browser II == | + | == Week 8 – Toward 0.2 == |
+ | |||
+ | '''March 4 Guest: Mike Shaver''' | ||
+ | |||
+ | * '''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 1 new contribution to your personal list of contributions. | ||
+ | |||
+ | == Week 9 – Extending the Browser == | ||
+ | |||
+ | * [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''' | ||
+ | ** Video: [http://www.vimeo.com/395422 Best practices & design patterns for add-ons] by Mike Beltzner | ||
+ | ** Video: | ||
+ | ** 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/ | ||
+ | |||
+ | * '''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 | ||
+ | |||
+ | == Week 10 – 0.2 == | ||
+ | |||
+ | ToDo: | ||
+ | * Release your 0.2, update the project wiki page, and blog about it | ||
− | + | Ben Hearsum visit -- Thursday | |
− | == Week | + | == Week 11 – 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]] | ||
− | == Week 12 – | + | * '''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 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 12 – XPCOM == | ||
+ | * 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] | ||
+ | * Optional Lab: [[Real World Mozilla First XPCOM Component|Creating a Binary C++ XPCOM Component]]. | ||
+ | |||
+ | * '''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] | ||
+ | |||
+ | * [http://sparc.senecacollege.ca/pub/mozilla.lecture/mozilla-20073/bsmedberg-xpcom-seneca.avi Ben Smedberg on XPCOM]. | ||
+ | |||
+ | * TODO | ||
+ | ** Prepare your 0.3 release | ||
== Week 13 – Presentations / Major Project Due == | == Week 13 – Presentations / Major Project Due == | ||
+ | |||
+ | * Complete this week's [[Real World Mozilla First XPCOM Component|lab]], put a '''zip''' with all your files on your personal wiki page when done, and blog about the experience. | ||
+ | * Prepare for a brief (10-20 minute) demo on Thursday. | ||
+ | * Catch up on your blogging! | ||
== Previous Versions of OSD600 == | == Previous Versions of OSD600 == | ||
[[Fall 2007 Weekly Schedule]] | [[Fall 2007 Weekly Schedule]] |
Latest revision as of 19:36, 11 April 2008
Week 1 (Jan 8) 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
- Mozilla Communication Tools
- Web sites/Wikis
- Planet Mozilla
- IRC
- 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 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
- 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. Your personal page should initially include your contact information and a link to your blog; as you progress through the course, update this page with information about your work.
- Add your blog feed and info to the Open Source@Seneca Planet List so that it appears in the OpenSource@Seneca Planet
- Write a blog posting containing your reaction to and reflections on "The Catederal and the Bazaar" and "Revolution OS".
- Start lurking on irc.mozilla.org - especially the #seneca and #developers channels (Note: to access the #seneca channel, you must be registered - type "/nickserv help" in your IRC client or refer to http://freenode.net/faq.shtml#registering for more information)
- IRC tutorial - http://www.irchelp.org/irchelp/irctutorial.html#intro
Week 2 - 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
- 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
- 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
- Complete all TODO items from Week 1
- Watch online lectures about the Mozilla build system.
- Practice creating a simple makefile
- Try performing a Debug Mozilla build on your home machine and blog about the experience
- 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.
Week 3 - Build (Continued)
- TODO
- 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.
- Blog about your project selection and your plans for the next step.
- 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 (this can be done via IRC!).
- Review, and where appropriate, comment on blog postings by other students.
Week 5 – 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
- 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 (best to choose 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 – Developing the Browser
- 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 – Release 0.1
ToDo:
- Finish your 0.1, release it (via your project Wiki), and blog about it (with a link to the release on your project page).
- Catch up on blogging.
- Plan your 0.2.
Break Week
Week 8 – Toward 0.2
March 4 Guest: Mike Shaver
- 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 1 new contribution to your personal list of contributions.
Week 9 – Extending the Browser
- Readings/Resources
- Video: Best practices & design patterns for add-ons by Mike Beltzner
- Video:
- 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/
- 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
Week 10 – 0.2
ToDo:
- Release your 0.2, update the project wiki page, and blog about it
Ben Hearsum visit -- Thursday
Week 11 – 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 this week's lab (hopefully during class time). Make sure you complete the Wiki and Blog requirements in the lab.
Week 12 – XPCOM
- Intro to XPCOM
- XPCOM can be built in C++ or using JS
- Components, Interfaces, and XPIDL
- Optional Lab: Creating a Binary C++ XPCOM Component.
- 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
- Prepare your 0.3 release
Week 13 – Presentations / Major Project Due
- Complete this week's lab, put a zip with all your files on your personal wiki page when done, and blog about the experience.
- Prepare for a brief (10-20 minute) demo on Thursday.
- Catch up on your blogging!