Difference between revisions of "DPS909 and OSD600 Fall 2009 Weekly Schedule"
(→Week 2 (Sept 14) - Collaborative and Community Development Practices) |
m (→Week 5 (Oct 5) – Bugs, Bugzilla, and Debugging) |
||
(18 intermediate revisions by 4 users not shown) | |||
Line 25: | Line 25: | ||
** Complete '''readings''' and watching/listening to this weeks resources. | ** Complete '''readings''' and watching/listening to this weeks resources. | ||
** Create an '''account''' on this wiki for yourself | ** 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 '''personal wiki page''' on this wiki, and add a link for yourself to the [[People]] page as well as the [[Fall_2009_Open_Source_Students|Fall 2009 students page]] |
** Create a '''blog''' (wordpress or blogspot or whatever) and create a feed category or tag called "open source" | ** 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 | ** Read the [[Blog Guidelines]] for instructions on how to use your blog in the course | ||
Line 31: | Line 31: | ||
** '''Blog''' on your reactions to the readings for this week, and also introduce yourself. | ** '''Blog''' on your reactions to the readings for this week, and also introduce yourself. | ||
** 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. | ** 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 14) - Collaborative and Community Development Practices == | == Week 2 (Sept 14) - Collaborative and Community Development Practices == | ||
Line 55: | Line 54: | ||
** [http://twitter.com Twitter] | ** [http://twitter.com Twitter] | ||
*** Use of Twitter in conjunction with blogging | *** Use of Twitter in conjunction with blogging | ||
− | ** Wikis | + | ** [[Overview_of_Mozilla_Communication#Wikis|Wikis]] |
− | *** [ | + | *** [[Main_Page|Seneca Course Wiki]] |
*** [http://developer.mozilla.org Mozilla Developer Center (MDC)] | *** [http://developer.mozilla.org Mozilla Developer Center (MDC)] | ||
*** [http://wiki.mozilla.org Mozilla Wiki (wikimo)] | *** [http://wiki.mozilla.org Mozilla Wiki (wikimo)] | ||
Line 64: | Line 63: | ||
**** Watches, [[Special:Recentchanges|Recent Changes]] | **** Watches, [[Special:Recentchanges|Recent Changes]] | ||
**** Comparing selected versions (cf. diff) | **** Comparing selected versions (cf. diff) | ||
− | **** [http:// | + | **** [http://meta.wikimedia.org/wiki/Help:Editing Editing help] |
− | ** [ | + | ** [[Overview_of_Mozilla_Communication#Weekly_Calls|Public, project-wide status calls]] |
− | ** [ | + | ** [[Overview_of_Mozilla_Communication#Mailing_Lists.2FNewsgroups|Mailing Lists]] |
− | ** [ | + | ** [[Overview_of_Mozilla_Communication#Bugzilla|Bugzilla]] - http://bugzilla.mozilla.org |
− | ** [ | + | ** [[Overview_of_Mozilla_Communication#.27The_Tree.27:_Tinderbox.2C_HG.2C_Try_Server.2C_Talos|The "Tree"]] |
*** Mercurial (hg) | *** Mercurial (hg) | ||
*** Tinderbox | *** Tinderbox | ||
Line 75: | Line 74: | ||
* '''Readings/Resources''' | * '''Readings/Resources''' | ||
− | * [[Mozilla Community]] (on-line lecture) by Mozilla's [https://wiki.mozilla.org/User:Beltzner Mike Beltzner] | + | ** [[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] | + | ** '''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] |
− | * [http://arstechnica.com/open-source/news/2009/06/academic-source-code-dust-up-symptom-of-cs-education-ills.ars Ars Technica article on the value of academic blogging and open source] | + | ** [http://arstechnica.com/open-source/news/2009/06/academic-source-code-dust-up-symptom-of-cs-education-ills.ars Ars Technica article on the value of academic blogging and open source] |
− | * [http://www.vimeo.com/3914346 Code Swarm Community Commits Visualizations] | + | ** [http://www.vimeo.com/3914346 Code Swarm Community Commits Visualizations] |
− | * [[ | + | ** [[Communicating Using IRC Lab Fall 2009]] |
* '''TODO''' | * '''TODO''' | ||
** Ensure all TODO items from week 1 are '''completed''' | ** Ensure all TODO items from week 1 are '''completed''' | ||
+ | ** Begin (or continue) reading the [http://zenit.senecac.on.ca/~chris.tyler/planet/ CDOT Blog Planet], as this is where we will share class announcements and discussions. | ||
** Create Wiki Accounts on MDC and wikimo | ** Create Wiki Accounts on MDC and wikimo | ||
** Consider creating an account on Twitter to use in conjunction with your blog | ** Consider creating an account on Twitter to use in conjunction with your blog | ||
− | ** Dial- | + | ** Dial-in to one of the Mozilla Status calls happening this week, and blog about the experience. I'd recommend the Firefox call. |
** Join at least one Mozilla Mailing list | ** Join at least one Mozilla Mailing list | ||
** '''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> | ** '''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, blog your reactions. | ** Watch online lectures for this week about open source community, blog your reactions. | ||
− | ** Complete this week's [[ | + | ** Complete this week's [[Communicating Using IRC Lab Fall 2009|lab]] by '''Friday'''. |
+ | |||
+ | == Week 3 (Sept 21) - 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 | ||
+ | |||
+ | * Build Environments | ||
+ | ** Finding and Installing build dependencies | ||
+ | *** Example: [https://wiki.mozilla.org/MozillaBuild Mozilla Build] for Windows | ||
+ | *** Using yum, MacPorts, etc. | ||
+ | ** Operating systems, cross-platform builds | ||
+ | *** Virtualization - [http://www.virtualbox.org/ Virtual Box] | ||
+ | ** Machine requirements | ||
+ | *** Fast I/O, lots of RAM (for linking) | ||
+ | ** Tools | ||
+ | ** Libraries | ||
+ | ** Settings | ||
+ | *** Environment variables, PATHs | ||
+ | |||
+ | * Build Tools | ||
+ | ** [http://www.gnu.org/software/autoconf/ autoconf] | ||
+ | ** [http://www.gnu.org/software/make/ make] | ||
+ | ** Common open source approaches to automation (Python, Bash) | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** [[How the Build Works|How the Mozilla Build Works]] (on-line lecture) by Mozilla's J. Paul Reed | ||
+ | ** [http://sparc.senecacollege.ca/pub/mozilla.lecture/mozilla-20073/1-Mozilla-build-system.avi Mozilla's Build System] (on-line lecture) by the owner of the Mozilla Build System, Ted Mielczarek | ||
+ | ** [http://hgbook.red-bean.com/read/a-tour-of-mercurial-the-basics.html Introduction to Mercurial]. The [http://hgbook.red-bean.com/ full book] is excellent to read or use as a reference, but this section is a must. | ||
+ | ** [http://vocamus.net/dave/?p=607 Great Introduction to GCC/G++] (Brian Gough's [http://www.network-theory.co.uk/docs/gccintro/ An Introduction to GCC for the GNU Compilers gcc and g++]) | ||
+ | ** [http://www.eng.hawaii.edu/Tutor/Make/ Introduction to Make and Makefiles] | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** '''Watch''' online lectures about the Mozilla build system. | ||
+ | ** '''Read''' the material on Mercurial, GCC, and Make | ||
+ | ** [http://developer.mozilla.org/en/docs/Build_Documentation Build Firefox] (or [https://developer.mozilla.org/En/Developer_Guide/Source_Code/Getting_comm-central Thunderbird]) on at least one of Windows/Linux/OSX, and preferrabely two platforms. Blog about the experience: | ||
+ | *** What problems did you have? | ||
+ | *** What did you learn in the process? | ||
+ | *** What surprised you? | ||
+ | *** '''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 '''complete''' your [[Fall 2009 DPS909 and OSD600 Initial Project Plan 0.0|Initial Project Plan]] due next '''Monday Sept 28th'''. | ||
+ | |||
+ | == Week 4 (Sept 28) - 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 and styles | ||
+ | * Mozilla Source Code structure and style | ||
+ | ** [https://developer.mozilla.org/En/Mozilla_Coding_Style_Guide Mozilla Coding Style Guide] | ||
+ | ** [http://developer.mozilla.org/en/docs/Mozilla_Source_Code_Directory_Structure Mozilla directory structure] | ||
+ | ** [https://developer.mozilla.org/En/Source_code_directories_overview Mozilla Source Code Directory Overview] | ||
+ | ** [http://www.mozilla.org/hacking/portable-cpp.html Portability Rules for C++] | ||
+ | * Searching for Code | ||
+ | ** http://mxr.mozilla.org | ||
+ | *** [http://mxr.mozilla.org/mozilla-central/ Firefox Source code (trunk)] | ||
+ | *** [http://mxr.mozilla.org/comm-central/ Thunderbird Source (trunk)] | ||
+ | ** [http://dxr.proximity.on.ca/dxr DXR] - a Seneca/Mozilla project to add more data to MXR. | ||
+ | * How to Make Changes | ||
+ | ** building with ''client.mk,'' ''clobber'' builds, ''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 - [[Working with Patches Lab|Working with patches]] | ||
+ | ** Begin work on your project, based on your initial project plan. | ||
+ | ** Review, and where appropriate, comment on blog postings by other students. | ||
+ | |||
+ | == Week 5 (Oct 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 | ||
+ | ** Dupes, Depends, Blocks | ||
+ | ** Following bugs through bugzilla | ||
+ | * Mozilla Bug Case Studies | ||
+ | ** Adding animation support to the PNG format - For Firefox 3.0, [http://en.wikipedia.org/wiki/APNG animation support was added to PNG], and then Mozilla's image library. See the [http://littlesvr.ca/apng/ project page] and [https://bugzilla.mozilla.org/show_bug.cgi?id=257197 bug 257197]. | ||
+ | ** Plug-in Watcher - Give the browser (and extension developers) a way to monitor the CPU load for a plugin (e.g., Flash playing a movie). This feature shipped in Firefox 3.0. See the [http://zenit.senecac.on.ca/wiki/index.php/Plugin-watcher project page] and [https://bugzilla.mozilla.org/show_bug.cgi?id=412770 bug 412770]. | ||
+ | ** Adding GPS Support to Fennec on Windows CE - Mozilla was interested in getting GPS support added to the Windows CE platform for Fennec. This project added it, and it will ship as part of the first Fennec release. See the [http://zenit.senecac.on.ca/wiki/index.php/Add_GPS_Support_for_Windows_Mobile project page], [http://www.ndaversa.com/2009/04/21/10-release-update/ blog], [https://bugzilla.mozilla.org/show_bug.cgi?id=477557 bug 477557], and [https://bugzilla.mozilla.org/show_bug.cgi?id=482613 bug 482613]. | ||
+ | ** Mercurial Web Improvements - Mozilla's HG Web interface is written in Python, JavaScript, and jQuery. A number of enhancements where requested for Mozilla's needs. This project added this, fixing nine issues in all. See the [http://zenit.senecac.on.ca/wiki/index.php/Mercurial_history_browsing project page], [http://blog.sidkalra.com/ student blog], and bugs [https://bugzilla.mozilla.org/show_bug.cgi?id=459727 459727], [https://bugzilla.mozilla.org/show_bug.cgi?id=445560 445560], [https://bugzilla.mozilla.org/show_bug.cgi?id=448707 448707], [https://bugzilla.mozilla.org/show_bug.cgi?id=468089 468089], [https://bugzilla.mozilla.org/show_bug.cgi?id=459823 459823], [https://bugzilla.mozilla.org/show_bug.cgi?id=471321 471321], [https://bugzilla.mozilla.org/show_bug.cgi?id=453162 453162], [https://bugzilla.mozilla.org/show_bug.cgi?id=486939 486939]. | ||
+ | * 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]] | ||
+ | |||
+ | * '''Guest Speakers''' | ||
+ | ** [http://blog.mozilla.com/bhearsum/ Ben Hearsum] (bhearsum) and [http://armenzg.blogspot.com/ Armen Zambrano Gasparnian] (armenzg) of the Mozilla Build Team will be visiting the [[SBR600]] and [[DPS909]]/[[OSD600]] classes on Thursday. | ||
+ | ** Please show our guests respect by being punctual. | ||
+ | ** Bring your questions! | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** [[The Life-cycle of a Bug]] (on-line lecture) by Mozilla's Mike Connor | ||
+ | ** [http://belmont.senecac.on.ca/pub/mozilla.lecture/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 12) – Bug Fixing: Putting it all together (building, debugging, patches, bugs) == | ||
+ | |||
+ | * Finding a bug, filing, fixing, patching | ||
+ | * [https://developer.mozilla.org/En/Developer_Guide/How_to_Submit_a_Patch Submitting a Patch for Review] | ||
+ | * Using '''cvs/hg log''', '''blame''', and the list of [https://developer.mozilla.org/en/Mozilla_Modules_and_Module_Ownership Module Owners] 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''' | ||
+ | ** [https://developer.mozilla.org/En/Developer_Guide/How_to_Submit_a_Patch Submitting 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''' | ||
+ | ** No class on Monday due to Thanksgiving. | ||
+ | ** Complete work on your 0.1 release, updating your blog, your wiki page, etc. '''Due next week''' | ||
+ | ** 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 (Nov 2) – Modifying the Browser -- In Tree == | ||
+ | |||
+ | * JavaScript development | ||
+ | * Debugging JavaScript | ||
+ | * Working with Chrome in the Source Tree | ||
+ | * JAR files | ||
+ | * Lab - [https://wiki.mozilla.org/Education/Learning/ModifyBrowser Modifying the Browser Lab] | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | * Watch [http://www.youtube.com/watch?v=hQVTIJBZook JavaScript: The Good Parts] Google lecture by [http://www.crockford.com/ Douglas Crockford]. | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Blog about two things you learned about JavaScript while watching Crockford's talk. What surprised you most? | ||
+ | ** Complete the [https://wiki.mozilla.org/Education/Learning/ModifyBrowser lab] and '''post a patch''' to your personal wiki page. | ||
+ | ** Look for opportunities to help other projects as part of your contrib mark. Blog about things people can do for your project. | ||
+ | ** Work on your 0.2 project release, blogging about your plans and progress. | ||
+ | ** Remember that you are required to blog '''at least once per week'''. |
Latest revision as of 10:39, 22 December 2009
Contents
- 1 Introduction
- 2 Part I – Essential Open Source Development Skills and Concepts
- 2.1 Week 1 (Sept 7) Course introduction
- 2.2 Week 2 (Sept 14) - Collaborative and Community Development Practices
- 2.3 Week 3 (Sept 21) - Managing and Building Large Source Trees
- 2.4 Week 4 (Sept 28) - Navigating the Mozilla source tree
- 2.5 Week 5 (Oct 5) – Bugs, Bugzilla, and Debugging
- 2.6 Week 6 (Oct 12) – Bug Fixing: Putting it all together (building, debugging, patches, bugs)
- 2.7 Week 7 (Nov 2) – Modifying the Browser -- In Tree
Introduction
The fall is broken into two parts. First, general open source and and community (i.e., Mozilla) 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
Week 1 (Sept 7) 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 (Mozilla Corporation VP of Engineering) discusses the Mozilla Manifesto [MP3]
- Article about Mozilla and Firefox in the New York Times
- TODO
- Complete readings and watching/listening to this weeks resources.
- 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 as well as the Fall 2009 students 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
- Blog on your reactions to the readings for this week, and also introduce yourself.
- Begin learning how to use IRC for communication. We'll cover this in detail next week, but it's better to get started early.
Week 2 (Sept 14) - Collaborative and Community Development Practices
- Open, collaborative, geographically dispersed development and the web
- Synchronous vs. Asynchronous Communication
- Timezones
- The function and value of community
- Mozilla Foundation (MoFo)
- Mozilla Corporation (MoCo), map of offices/individuals
- Mozilla Community
- Other companies or institutions working on Mozilla technology
- Individual Contributors
- Where can the Mozilla community be found? Overview of Mozilla Communication
- IRC - Intro to Internet Relay Chat (IRC)
- Blogs and Planets
- How to blog?
- How do people use blogs?
- Planet Mozilla
- OpenSource@Seneca Planet
- Mozilla Education Planet
- Twitter
- Use of Twitter in conjunction with blogging
- Wikis
- Seneca Course Wiki
- Mozilla Developer Center (MDC)
- Mozilla Wiki (wikimo)
- Intro to course wiki
- "Yes, you can edit it!"
- Common Editing tasks, History, Reverting changes
- Watches, Recent Changes
- Comparing selected versions (cf. diff)
- Editing help
- Public, project-wide status calls
- Mailing Lists
- Bugzilla - http://bugzilla.mozilla.org
- The "Tree"
- Mercurial (hg)
- Tinderbox
- 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
- Ars Technica article on the value of academic blogging and open source
- Code Swarm Community Commits Visualizations
- Communicating Using IRC Lab Fall 2009
- TODO
- Ensure all TODO items from week 1 are completed
- Begin (or continue) reading the CDOT Blog Planet, as this is where we will share class announcements and discussions.
- Create Wiki Accounts on MDC and wikimo
- Consider creating an account on Twitter to use in conjunction with your blog
- Dial-in to one of the Mozilla Status calls happening this week, and blog about the experience. I'd recommend the Firefox call.
- Join at least one Mozilla Mailing list
- Comment in at least one other student's blog with your feedback to what they wrote. Reminder: Comments have to be approved for them to be be shown on your blog. Check your blog settings.
- Watch online lectures for this week about open source community, blog your reactions.
- Complete this week's lab by Friday.
Week 3 (Sept 21) - Managing and Building Large Source Trees
- Revision Control Systems (RCS)
- Build Environments
- Finding and Installing build dependencies
- Example: Mozilla Build for Windows
- Using yum, MacPorts, etc.
- Operating systems, cross-platform builds
- Virtualization - Virtual Box
- Machine requirements
- Fast I/O, lots of RAM (for linking)
- Tools
- Libraries
- Settings
- Environment variables, PATHs
- Finding and Installing build dependencies
- Readings/Resources
- How the Mozilla Build Works (on-line lecture) by Mozilla's J. Paul Reed
- Mozilla's Build System (on-line lecture) by the owner of the Mozilla Build System, Ted Mielczarek
- Introduction to Mercurial. The full book is excellent to read or use as a reference, but this section is a must.
- Great Introduction to GCC/G++ (Brian Gough's An Introduction to GCC for the GNU Compilers gcc and g++)
- Introduction to Make and Makefiles
- TODO
- Watch online lectures about the Mozilla build system.
- Read the material on Mercurial, GCC, and Make
- Build Firefox (or Thunderbird) on at least one of Windows/Linux/OSX, and preferrabely two platforms. Blog about the experience:
- What problems did you have?
- What did you learn in the process?
- What surprised you?
- 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 complete your Initial Project Plan due next Monday Sept 28th.
- 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 and styles
- Mozilla Source Code structure and style
- Searching for Code
- http://mxr.mozilla.org
- DXR - a Seneca/Mozilla project to add more data to MXR.
- How to Make Changes
- building with client.mk, clobber builds, 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 - Source Code Reading Lab
- Lab - Working with patches
- Begin work on your project, based on your initial project plan.
- Review, and where appropriate, comment on blog postings by other students.
Week 5 (Oct 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
- Dupes, Depends, Blocks
- Following bugs through bugzilla
- Mozilla Bug Case Studies
- Adding animation support to the PNG format - For Firefox 3.0, animation support was added to PNG, and then Mozilla's image library. See the project page and bug 257197.
- Plug-in Watcher - Give the browser (and extension developers) a way to monitor the CPU load for a plugin (e.g., Flash playing a movie). This feature shipped in Firefox 3.0. See the project page and bug 412770.
- Adding GPS Support to Fennec on Windows CE - Mozilla was interested in getting GPS support added to the Windows CE platform for Fennec. This project added it, and it will ship as part of the first Fennec release. See the project page, blog, bug 477557, and bug 482613.
- Mercurial Web Improvements - Mozilla's HG Web interface is written in Python, JavaScript, and jQuery. A number of enhancements where requested for Mozilla's needs. This project added this, fixing nine issues in all. See the project page, student blog, and bugs 459727, 445560, 448707, 468089, 459823, 471321, 453162, 486939.
- Debugging Tools and Techniques
- C++ with VS.NET and gdb
- JS with Venkman and Firebug
- DOMi
- Error Console
- Lab - Debugging Mozilla
- Guest Speakers
- Ben Hearsum (bhearsum) and Armen Zambrano Gasparnian (armenzg) of the Mozilla Build Team will be visiting the SBR600 and DPS909/OSD600 classes on Thursday.
- Please show our guests respect by being punctual.
- Bring your questions!
- Readings/Resources
- The Life-cycle of a Bug (on-line lecture) by Mozilla's Mike Connor
- Strategies for Debugging Mozilla (on-line lecture) by Mozilla's Vladimir Vukićević
- Account of fixing a first bug, by Mozilla's Atul Varma
- TODO
- Create a 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 FSOSS or join as a 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 12) – Bug Fixing: Putting it all together (building, debugging, patches, bugs)
- Finding a bug, filing, fixing, patching
- Submitting a Patch for Review
- Using cvs/hg log, blame, and the list of Module Owners to determine who should review
- Good Examples of Bugs
- Lab - Fixing a bug in Thunderbird
- Readings/Resources
- TODO
- No class on Monday due to Thanksgiving.
- Complete work on your 0.1 release, updating your blog, your wiki page, etc. Due next week
- Register for FSOSS or join as a volunteer.
- 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 7 (Nov 2) – Modifying the Browser -- In Tree
- JavaScript development
- Debugging JavaScript
- Working with Chrome in the Source Tree
- JAR files
- Lab - Modifying the Browser Lab
- Readings/Resources
- Watch JavaScript: The Good Parts Google lecture by Douglas Crockford.
- TODO
- Blog about two things you learned about JavaScript while watching Crockford's talk. What surprised you most?
- Complete the lab and post a patch to your personal wiki page.
- Look for opportunities to help other projects as part of your contrib mark. Blog about things people can do for your project.
- Work on your 0.2 project release, blogging about your plans and progress.
- Remember that you are required to blog at least once per week.