tags:

views:

150

answers:

5

I am a CS grad student, and I am interested in spending some spare time in getting involved with development of Mozilla Firefox web browser . I would like to contribute to HTML renderer , JavaScript engine etc. But I don't have any solid experience in writing parsers or similar stuff, and I don't have any clue from where to start.

There are of course some links in https://developer.mozilla.org/En/Developer_Guide/ but since Firefox is already is very huge project, I don't know from where I should start learning.

So, my question is what core things I need to learn first to get started with Web browser Development and from where I can learn this (any links)? Do I have to revise how to write parsers/compilers? How do I learn to write HTML renderer/ JavaScript engine? Is it even possible considering they are already very huge projects? Sometime back, I downloaded source code of V8 JavaScript engine (http://code.google.com/p/v8/) but I couldn't understand much from it's source code as it was highly optimized code, and there were no much useful comments for beginner like me to understand what going on.

Update: I am fairly comfortable working with C, C++, Java, PHP, C#, VB.Net, JavaScript and I am more interested in learning how web browser parses an web page, how it constructs and maintains the DOM, how CSS is applied, how HTML reflow engine works, how it interacts with JavaScript engine, how it interacts with web server, how the components are drawn on the screen etc.

+6  A: 

You might want to review a list of known bugs and see if you're able to fix them. Other possible way to get a foot in the door is to get involved in quality assurance tasks, which would help you learn better internals of the application.

Mchl
Mchl speaks the truth. You don't want to try to learn everything there is to know about parsers or rendering before you start hacking, you'll never get started. Just find a bug that looks interesting to fix, and find your way around the code base until you figure out just enough to fix that bug. The more you learn, the more you'll be able to do. There are lots of helpful people in irc.mozilla.org #developers that can help you find your way.
Ted Mielczarek
@Mchl and @Ted Mielczarek, thanks for suggestions. May be I first start with trying to fix a bug otherwise I will never get started...
Ajinkya Kulkarni
+2  A: 

If you are interested in parsing, learn finite state automata and formal gramars, it should be part of your CS curriculum at some point, like in a compilers class. For the javascript part, study about JIT compilers, specially on how a tracing JIT works. Follow Mozilla development blogs, here is a good starting article: http://hacks.mozilla.org/2010/03/a-quick-note-on-javascript-engine-components/

Finally, but not least importantly, try to contact people already working there, and try to build a mentor-pupil relationship, they can assign you tasks and can help if you get stuck when working on the code. Going to opensource conferences is a great way to meet the people behind a project and get started contributing.

carlfilips
thanks for link and various suggestions.
Ajinkya Kulkarni
+4  A: 

Bugs marked in Bugzilla with the [good first bug] whiteboard status are a good place to start. You can view the list here.

Find something you like and try to fix it! The developers on IRC (#developers in irc.mozilla.org) are usually happy to help when you get stuck.

Justin L.
+6  A: 

Hang out in irc.mozilla.org/#developers and watch for interesting conversations. Go to http://bugzilla.mozilla.org and start searching for open bugs in components that sound interesting, then look for bugs that catch your fancy. Use tools like http://mxr.mozilla.org/ and http://dxr.mozilla.org to help you locate the relevant code, and ask questions in #developers. Learn, hack, repeat.

I wrote a post about my experiences getting involved over the past year, and it seems to reflect the path that a significant amount of Mozilla developers took.

Josh Matthews
I liked your post and several other posts on your blog. I will follow the path that you and others have suggested. Thanks!
Ajinkya Kulkarni
+1  A: 

Mozilla Developer Guide

Rob