mozilla @ rosedu tech talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · de ce mozilla? •netscape...

36
Mozilla @ ROSEdu Tech Talks Crash course and overview 29 Martie 2012 Valentin Goșu

Upload: others

Post on 28-Sep-2020

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Mozilla @ ROSEdu Tech Talks Crash course and overview

29 Martie 2012

Valentin Goșu

Page 2: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Conținut

• De ce Mozilla?

• Extensii pentru Firefox

• Firefox – cum contribuim

• Boot2Gecko

Page 3: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

De ce Mozilla?

• Netscape

• Mozilla - 1998

• Firefox - 2004

• Misiunea

– Mozilla's mission is to promote openness, innovation and opportunity on the web.

Page 4: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Extensii pentru Firefox

• Cea mai ușoară metodă de a implementa un feature

• Nu toți au aceleași nevoi

Page 5: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Extensii pentru Firefox

• http://addons.mozilla.org

• XUL Add-ons

• Add-on SDK

Page 6: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

XUL Add-ons

• Ce este XUL?

• Care este structura extensiei

• Avantaje

• Dezavantaje

Page 7: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Structura extensiei

• C:\Users\[username]\App Data\Roaming\ Mozilla\Firefox\Profiles\[profile]\extensions\

• ~/.mozilla/firefox/[profile]/extensions/

• Firefox.exe –P [profile] –no-remote

Page 8: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Structura extensiei

my_extension.xpi: //Echivalent cu un folder cu același nume /install.rdf //Informații generale despre extensie /chrome.manifest //Inregistrează conținutul în browser /chrome/ /chrome/content/ //Fișiere XUL și JavaScript /chrome/icons/default/* //Imaginea default a extensiei /chrome/locale/* //Localizare /defaults/preferences/*.js //Fisiere Default /plugins/* /components/* // XPCOM components /components/cmdline.js // Rularea extensiei ca aplicație

Page 9: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Structura extensiei

• install.rdf <em:id>{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}</em:id>

<em:targetApplication> <Description>

<em:id> {ec8030f7-c20a-464f-9b0e-13a3a9e97384} </em:id> <em:minVersion> 0.7 </em:minVersion>

<em:maxVersion> 13.0a1 </em:maxVersion>

</Description> </em:targetApplication>

<em:name> ROSEdu Tech Talks </em:name>

<em:description> Stuff you need to know </em:description>

<em:creator> ROSEdu </em:creator>

<em:homepageURL> http://rosedu.org </em:homepageURL>

Page 10: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Structura extensiei

• chrome.manifest

overlay packagename overlayname path/to/files

locale packagename localename path/to/files

Skin/style packagename skinname path/to/files

overlay chrome://browser/content/browser.xul chrome://chatzilla/content/browserOverlay.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}

Page 11: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Structura extensiei

• chrome/content/ff-overlay.js extensia_mea.onFirefoxLoad = function(event) {

document.getElementById("contentAreaContextMenu") .addEventListener("popupshowing", function (e){extensia_mea.showFirefoxContextMenu(e); }, false); };

window.addEventListener("load", extensia_mea.onFirefoxLoad, false);

Page 12: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Structura extensiei

• chrome/content/ff-overlay.xul <?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet href="chrome://extensia_mea/skin/overlay.css" type="text/css"?>

<!DOCTYPE overlay SYSTEM "chrome://extensia_mea/locale/overlay.dtd">

<overlay id="extensia_mea-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<stringbundleset id="stringbundleset"> <stringbundle id="extensia_mea-strings" src="chrome://extensia_mea/locale/overlay.properties"/> </stringbundleset>

<script type="application/x-javascript" src="options.js"/>

<statusbarpanel id="extensia_mea-panel" insertbefore="statusbar-display"> ...

</statusbarpanel>

</overlay>

Page 13: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Avantaje

• Performanță

• Flexibilitate

• Conectare la elementele interne ale Firefox

• Standalone application (XUL Runner)

Page 14: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Dezavantaje

• Incompatibilitate

• Securitate

• Portabilitate

• Restart

Page 15: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Add-on SDK

• Mai mic

• Fără restart

• HTML5 & Javascript

• Mai sigur

• Web editor

• High level sau low level

Page 16: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Add-on SDK

require("widget").Widget({ id: "widgetID1", label: "My Mozilla Widget", contentURL: "http://www.mozilla.org/favicon.ico", onClick: function(event) { require("tabs").open("http://www.mozilla.org"); } });

Page 17: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Add-on SDK

• Clipboard

• Context-menu

• Hotkeys

• Notifications

• Page-mod

• Page-worker

• Panel

• Passwords

• Private-browsing

• Request

• Selection

• Self

• Tabs

• Timers

• Widget

• Windows

Page 18: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

How To

• Add-on SDK – https://addons.mozilla.org/en-US/developers/builder

– https://addons.mozilla.org/en-US/developers/docs/sdk/latest/

• Extensii "native" – https://developer.mozilla.org/En/Firefox_addons_developer_guide

– https://developer.mozilla.org/en/Extensions

Page 19: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Întrebări despre extensii

Page 20: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Firefox

• Ce este Gecko?

• Code versioning – Mercurial vs Git

• Getting to know the code

Page 21: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

hg, make

• hg clone http://hg.mozilla.org/mozilla-central/ src

• echo '. $topsrcdir/browser/config/mozconfig' > .mozconfig

• echo 'mk_add_options AUTOCONF=autoconf2.13' >> .mozconfig

• make -f client.mk build

mozilla-central mozilla-aurora mozilla-beta mozilla-release

Page 22: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

What to do

• bugzilla.mozilla.org

– Assign

– Ask

– Code

– Patch

Page 23: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Getting to know the code

Page 24: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Think small

• https://developer.mozilla.org/en/Mozilla_Source_Code_Directory_Structure

• Concentrează-te pe fișierul curent

• Break stuff – pentru asta sunt testele

• http://mxr.mozilla.org/

• IRC – irc.mozilla.org

– #devmo

– #css

Page 25: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Building

• hg clone http://hg.mozilla.org/mozilla-central/ – git clone git://github.com/doublec/mozilla-central.git

• .mozconfig – https://developer.mozilla.org/en/Configuring_Build_Options

• make -f client.mk build

• objdir/dist/bin

Page 26: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Rebuiling

• Încet: make în objdir

• Foarte încet: make –f client.mk build

• Rapid:

– Make în subdirector din objdir

– (uneori) make în layout/build și toolkit/library

Page 27: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Testing

• Reftests

• Crashtests

• XPCShell Tests

• Mochitests

• JS tests

• https://developer.mozilla.org/en/Running_automated_tests

• https://developer.mozilla.org/en/Mozilla_automated_testing

Page 28: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Testing

• Push to try – https://wiki.mozilla.org/ReleaseEngineering/TryServer

• hg push -f ssh://hg.mozilla.org/try/

Page 29: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Some things to remember

• XPCOM

– Cross Platform Component Object Module

– Permite dezvoltarea separată a modulelor

– Interfețe idl

– https://developer.mozilla.org/en/Creating_XPCOM_Components

– https://developer.mozilla.org/en/

Page 30: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Boot2Gecko

• Ce este?

• Este Android?

• De ce nu Android/IOS/WP7?

Page 31: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Boot2Gecko

• Linux based

• Gonk – the kernel (C)

• Gecko – the layout engine (C++)

• Gaia – the user interface (HTML5 & Js)

• WebAPI – arewemobileyet.com

Page 32: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

WebAPI

Page 33: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Demo

Page 34: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Boot2Gecko

• Getting Started

• https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko

• https://wiki.mozilla.org/Gaia/Hacking

Page 35: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Alte proiecte

Page 36: Mozilla @ ROSEdu Tech Talksswarm.cs.pub.ro/~vgosu/moz_rtt.pdf · De ce Mozilla? •Netscape •Mozilla - 1998 •Firefox - 2004 •Misiunea –Mozilla's mission is to promote openness,

Întrebări