Thunderbird:Backend Hacking Guide For Newbies: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Add navigational links)
Line 32: Line 32:
==== Build Automation ====
==== Build Automation ====
* Tinderbox <link>
* Tinderbox <link>
==== Best for the last: MOST IMPORTANT TOOL Community ====
==== Community ====
* IRC
* IRC
** [http://chatzilla.hacksrus.com/ Chatzilla]
** [http://chatzilla.hacksrus.com/ Chatzilla]
Line 81: Line 81:
.... Event sinks, bounded buffers, monitors etc..
.... Event sinks, bounded buffers, monitors etc..
.... PR_SUCESS, PR_FAIL ....
.... PR_SUCESS, PR_FAIL ....
==== Advanced Topics ====
... Instrumentation, optimization, performance etc...


=== Sample Projects ===
=== Sample Projects ===

Revision as of 17:11, 4 April 2008

Back to ...

Back-end Programming for Thunderbird

So, you love C/C++ and want to contribute to Thunderbird, but you are new to Mozilla development in general, and don't know what frameworks, technologies, tools involved in it. You are at the right place, this page is prepared for you.

First, a little bit background. Thunderbird is a cross-platform mail application developed on top of Mozilla framework. It's an open-source application used by millions, and evolving around its contributors. Mozilla framework is the central toolkit, and C/C++ is the core language for back-end programming. Tier 1 platforms for Thunderbird are Windows, Linux and Mac OS X (both PPC and Intel). So, when you develop code for Thunderbird, you have the obligation to make sure that your code works on all of these platforms, unless it's a platform specific patch.

Mozilla development process is large scale and highly distributed. Tools play an essential role to coordinate this collective effort. Every hacker MUST get familiar with these tools to involve.

Tool Arsenal for Mozilla Development

C/C++ Compilers

  • MSVC (Windows)
  • gcc (Linux, Mac OS X)
  • ??

Debuggers

  • MSVC (Windows)
  • gdb (Linux, Mac OS X)
  • ??

Bug Tracking

Source Control Management

  • CVS <link>
  • Bonsai <link>

Patching

  • Patch

Collaboration

  • Pastebin <link>

Build Automation

  • Tinderbox <link>

Community

Development Process

Review, Super review <link>

Getting the Source

- <link>

Setting up the Development Environment

  • Windows
Note for Windows programmers: If you develop code mostly on Windows and   looking for the same Visual Studio comfort ....
  • Mac
  • Linux

Building the Code

<link>

Important Components of Mozilla Framework

PL

What is PL? How it is different than platform's C runtime, Secure C functions, etc...

NSPR

What is NSPR? why it is needed, etc..

XPCOM

What is XPCOM, IDL firebot: uuid, <link>

Best Practices

Memory allocation

<link>

nsCOMPtr<>

<link>

Assertions

....

Understand how to log, trace etc.

....

Understanding threading, Proxy etc.. !!!

... + <link>

Unit Testing (TUnit, cppUnit etc..)

....

Development tools

 o Locklint
 o Firebug
 o

Common Idioms, and Patterns

.... Event sinks, bounded buffers, monitors etc.. .... PR_SUCESS, PR_FAIL ....

Advanced Topics

... Instrumentation, optimization, performance etc...

Sample Projects

  • Sample project to learn how to patch and how to submit a patch
  • Using NSPR in your applications
 MSVC project
 XCODE project
 SlickeEdit project??
 Eclipse??
  • XPCOM: Developing an XP component and running it in a standalone application
 MSVC project
 XCODE project
 SlickeEdit project??
 Eclipse??
  • ...

Components of Thunderbird