Project Descriptions are located here.

CS3108 Independent Work (Mozilla) - AY 09/10 Semester 2

Academic Advisor: A/P Lee Wee Sun

Teaching Assistant: Gary Kwong

This course, CS3108 Independent Work with focus on the Mozilla Platform, is a 4 MC module offered to students in the School of Computing. It was first introduced in AY 08/09 Semester 1 and is a CS/CU module. (Complete Satisfactorily / Complete Unsatisfactorily)

Weekly Sessions

COM1/102, every Thursday, 6pm - 8pm GMT+8. Starts from official school week 1 to official week 12, excluding mid-term break.

Useful Links

  • Mozilla Developer Center
  • Bugzilla
  • Planet Mozilla
  • Build Documentation
  • Mozilla IRC - irc.mozilla.org, SSL port 6697 - Join the #nus channel among others (in this order), e.g. #firefox, #thunderbird, #developers, #shiretoko (Firefox 3.1 dev channel), #maildev (Thunderbird dev channel).
    • You should listen in to the latter channels to get a feel of the communications environment. Ask questions starting from #nus first, in that order.
  • Suggested ideas - Some possible ideas to work on, as already prioritized by Mozilla's development teams.
  • FAQ - Common questions one may face.
  • Other related links

Course Expectations

The course aims to offer students an insight into the ways and processes of the open source development community in Mozilla, by working on a Mozilla project of their own.

CS3108 Principles:

  • The work must contain significant computing content.
  • The student must take initiative, plan and document the work.

Students are expected to give a 5-10 min presentation at the mid-term (~6 weeks) and a final presentation after ~11 weeks, in addition to a final report of approximately 10 pages. Each should also maintain a blog regularly, describing their experiences and achievements / challenges faced in this course.

There are no prerequisites, but participation, enthusiasm, and independent learning are important aspects of the course. Students are free to decide which Mozilla project they want to work on.

Course Description

Mozilla.

A community of 300 million people.

Firefox. Thunderbird. Sunbird. XULRunner. Mobile. Gecko.

The possibilities are endless.

Every user is part of the community.

Write a patch. Test a build. File a bug. Use an open source application. Tell your friends about Open Source and Mozilla.

You can be part of the community too.

The Mozilla Platform powers many of the open source projects in the internet world today. From the Firefox browser, to the Thunderbird email client, and even the Flickr Uploader, these applications are used by many millions of users in the world today. With developers and users from all parts of the world and all timezones around the globe, Mozilla never sleeps. Here is your chance to collaborate with people all around the world to make improvements for hundreds of millions of users.

You can work on any aspect of the Mozilla Platform as you prefer, be it on the platform itself, including Javascript language, or on the application-level, such as Firefox or Thunderbird. Layout, canvas backend, XUL front-end hacking, or even creating an extension for any of these applications are possible.

There is a lot of independent learning involved in this course.

Module Schedule (To be updated)

A description of the course schedule, subject to minor changes along the way:

Topics to be covered:

  • What is Open Source? What is Mozilla?
  • Where are the developers? Who are they? Other members of the community?
  • Planet Mozilla, Mozilla Add-ons, Spread Firefox.
  • Tools of communication - Bugzilla, Litmus, IRC, Email, Mozilla Wiki, MXR, Bonsai, Pastebin etc.
  • Triage, QA testing process.
  • Read up on documentation on how to set up and then prepare build environment on Windows / Linux / Mac.
  • Tracemonkey demonstration video. (Edit: Gone?)
  • Demonstration of a debug build, hooking into a debugger.
  • Tools used - CVS, Hg, Komodo Edit, Visual Studio (Windows-only)
  • Checking out code, deciding on a .mozconfig.
  • Mozilla build system.
  • Building Mozilla from scratch. (Firefox / Thunderbird / Calendar)
  • Creating .diffs, patches.
  • and many more...

  • Week 0 (07 Jan 10)
    • Introductory talk

  • Week 1 (14 Jan 10)
    • Introduction to the course, schedule, location.
    • Course expectations. Jump right into the deep end.
    • IRC, #nus, who to turn to for help.
    • Quick introduction to development tools, MXR, Pastebin, etc.
    • Set up build prerequisites. Build Mozilla Firefox (hopefully) with a hg bundle file. (Only Linux was able to finish the build within the first session)
    • Guest appearance by Yuen Hoe (Jason)

  • Week 2 (21 Jan 10)
    • Administration
      • Getting on IRC
    • Examples of possible topics to work on
      • Real backend bugs
        • Debugger demonstration (gdb)
        • Javascript
      • Frontend examples
        • Extension
        • DOM Inspector demonstration
    • Guest appearance by Yaoquan

  • Week 3 (28 Jan 10)
    • Administration
    • More development information (Dromaeo profiling, mozconfig -jNUMBER tweaking)
    • Discussion about Open Source, Mozilla, Mobile, significance
    • Community (qdb, pastebin, planet mozilla)
    • Students talk about the ideas that they have
      • Others advise, critique and hopefully offer suggestions for improvements

---

  • Week 4 (05 Feb 09)
    • Light-hearted mork, Mozilla QDB stuff.
    • How hg works, and live demonstration.
    • Community discussions of students' proposals of projects, everyone giving one another tips and suggestions.

  • Week 5 (12 Feb 09)
    • Finish up on hg, hg outgoing, backout, etc.
    • patch -p[0|1|2|3...] usage, -R to undo a patch, --dry-run etc.
    • Unit test overview - Mozmill tests, reftests, mochitests, chrometests, xpcshell tests.
    • Mozilla Concept Series - viewing of videos and discussions on them.
    • Quick walkthrough of Mozilla Addons' Developer Tools.
    • Suggested blogging questions - Look here for an example.

  • Week 6 (19 Feb 09)
    • Quick guide through Talos - performance tracking. Also isthetreegreen.com for quick Tinderbox overview.
    • Students suggested to follow blogs that are relevant to their code. (e.g. those of the relevant devs on Planet Mozilla.)
    • Students describe current situation and any difficulties they're facing, group brainstorm for solutions.
    • Presentation format suggestions
      • Old situation, current, then future situation.
      • Any problems encountered?
      • Demonstrations are ideal, automated ones all the more merrier.

  • Mid-term break (26 Feb 09)

  • Week 7 (05 Mar 09)

  • Week 8 (12 Mar 09)
    • Chris Blizzard shuttle video
    • Sharing session on presentation from the prior week
    • Opinions for change and improvement for one another

  • Week 9 (19 Mar 09)
    • Mini-teaching session by everyone taking CS3108
    • Mention of Google Summer of Code

  • Week 10 (26 Mar 09)
    • Reflections and suggestions for the future.

  • Week 11 (02 Apr 09)
    • No session, for students to prepare for final presentation.

  • Week 12 (09 Apr 09)
    • Last session
    • Final presentation