40 votes

Comment fonctionne FireFox ? Comment fonctionne le code source ?

J'aimerais apprendre comment FireFox fonctionne dans les coulisses. J'aimerais comprendre le code source et les différents composants, mais la base de code est plutôt vaste et je ne sais pas par où commencer.

Je me demande s'il n'existe pas une sorte de marche à suivre écrite par quelqu'un de l'équipe firefox ou de l'extérieur de la communauté.

J'ai regardé un peu : https://developer.mozilla.org/En mais je ne vois rien qui me dise "Commencez ici". J'essaie simplement de passer en revue leur base de code pour des raisons d'[auto-]éducation.

Merci !

Regards,
Frank

36voto

Jesse Buchanan Points 569

Le Seneca College de Toronto a un programme qui s'adresse exactement à cela : les débutants en développement Mozilla.

Consultez certains de ces liens :

Le vrai monde de Mozilla

Programme hebdomadaire de l'automne 2008

Quelques laboratoires si vous voulez vous plonger dans le vif du sujet :

Lab : Apprentissage du développement collaboratif (automne 2008)

Lab : Création de projets Open Source (automne 2008)

Laboratoire : Real World Mozilla - Lecture du code source

Labo : Travailler avec des correctifs

Labo : Plonger dans Mozilla - Déboguer Mozilla

Laboratoire : Correction du bug de Thunderbird

Laboratoire : Modifier le navigateur

Laboratoire : Modification de Firefox à l'aide d'une extension

Lab : Mozilla dans le monde réel - Premier composant XPCOM

Lab : Real World Mozilla - Ajout de chrome au premier composant XPCOM

Si vous avez besoin d'aide, utilisez IRC : #seneca sur irc.mozilla.org. Ne vous inquiétez pas si vous n'êtes pas un étudiant (de Seneca), beaucoup de gens dans le monde entier (des gens de Seneca, des gens de Mozilla, et d'autres) sont dans ce canal, le but est d'éduquer les développeurs sur l'open source en général et le projet Mozilla en particulier.

Bonne chance !

30voto

Jason S Points 58434

Voici une réponse descendante (la plupart des autres réponses sont ascendantes) :

Firefox est un XUL (voir également : XUL ) ; XUL est une variante de XML utilisée pour décrire une interface graphique qui est interprétée par un moteur de rendu, de la même manière que le HTML est rendu dans le navigateur, mais XUL inclut les menus du navigateur, les boutons, la barre d'état, les raccourcis clavier, etc. C'est assez intéressant ; j'ai été capable de mettre en place des applications GUI simples beaucoup plus rapidement avec XUL qu'avec d'autres frameworks (et c'est indépendant de la plate-forme !).

Si vous regardez dans le répertoire de l'application Firefox (là où vous l'avez installé sur votre système), vous verrez un répertoire "chrome" avec un tas de fichiers .jar. Il s'agit simplement de fichiers .zip avec une structure particulière (y compris un manifeste) et vous pouvez les parcourir vous-même.

Une grande partie du navigateur Firefox est en fait XUL + Javascript. Il utilise de nombreuses bibliothèques de bas niveau écrites en C++ et accessibles à Javascript via XPCOM, mais si vous voulez comprendre (et modifier) le comportement de haut niveau, les parties XUL+Javascript sont probablement le point de départ.

edit : p.s. voici quelques tutoriels/références pour XUL : 1 2 et aussi le Le livre d'O'Reilly

edit : Les documents XUL sont très similaires aux documents HTML (mais plus encore !) dans la façon dont ils interagissent avec l'utilisateur + événements. Il y a un modèle de document pour en modifiant dynamiquement le XUL, et il y a modèles d'événements qui ont des écouteurs d'événements. Les deux agissent comme HTML + DOM + son modèle d'événement, mais avec un ensemble plus riche d'objets/interfaces/événements/etc. intégrés. Les gestionnaires d'événements sont des interfaces d'un type particulier, et peuvent être implémentés par des objets Javascript (déclarés dans le XUL avec la commande onclick="blah()" ou ajoutés dynamiquement par des appels Javascript à addEventListener() -- les deux sont exactement la même syntaxe que les événements HTML dans Firefox) ou par C++ ou d'autres langages qui peuvent mettre en œuvre des objets XPCOM avec les interfaces appropriées.

5voto

Yuliy Points 8854

Une façon de commencer serait d'examiner certains bogues récemment corrigés dans Firefox (cf. Bugzilla ) et voir comment ils ont été corrigés.

Cela dit. La base de code de Firefox est très vaste et il est probable qu'aucune personne ne la comprenne entièrement. Ce serait donc une bonne idée de commencer par une petite section (disons les favoris), d'essayer de trouver le code correspondant et de voir comment il fonctionne. Encore une fois, les bogues résolus et les fichiers qu'ils affectent seraient un bon moyen d'identifier du code pertinent pour commencer.

2voto

FL4SOF Points 705

J'ai travaillé avec du code mozilla ( précisément mozilla/nss/security). en ce qui concerne ma compréhension de mozilla :

Il suit une architecture en couches avec, en bas, la couche NSPR (Netscape Portable Runtime) qui interagit avec les systèmes d'exploitation.

obtenir le code source à partir de
https://developer.mozilla.org/En/Download\_Mozilla\_Source\_Code et le construire dans votre environnement de travail (pour autant que je sache, il supporte une grande variété de plateformes/architectures).

rejoindre la communauté des développeurs Mozilla/essayer d'aider en testant certains des composants.

pour coder pour mozilla, passez par : http://www.mozilla.org/hacking/ ( Les normes de portabilité du C++ sont un must si vous êtes un programmeur C++).

J'espère que certains des éléments ci-dessus pourront vous aider à démarrer.

0voto

Nikolai Lebedev Points 53

Un ensemble de vidéos a été récemment publié (comme début 2015) qui parcourent certains composants de Mozilla Firefox. Elles pourraient peut-être vous intéresser.

https://air.mozilla.org/search/?q=tag%3A+TorontoBootcamp

Ils ne sont pas très novices mais peuvent quand même être utiles je pense.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X