SlideShare a Scribd company logo
Mozilla Add-on SDK
I'm Martin aka freaktechnik 
● Information Technology and Electrical 
Engineering student 
● Euphonium player 
● Nightingale Media Player developer 
● Firefox Add-on developer
Goals 
● Basic Firefox Extension Knowledge 
● Tools for Development 
● Add-on SDK Extension Structure and API
Firefox Extensions 
3 Different Types
Traditional Overlay Add-ons 
● The old style 
● Restart to apply 
● Add content by overlaying documents 
● XPCOM
Bootstrapped Extensions 
● Since Firefox 4 
● Restartless 
● Everything is done with XPCOM
Add-on SDK Extensions 
● Compile to bootstrapped extensions 
● CommonJS environement
Base Knowledge 
● JavaScript 
● Maybe HTML and CSS 
● XPCOM
Tools 
● Firefox 
● CFX or JPM 
● An editor
JPM 
● The 'compiler' apart from others 
● Node based 
● npm install jpm --global
Basic Extension Structure 
jpm init
Basic Extension Structure 
● lib →main modules 
● data →misc files 
● test →unit test modules 
● package.json →add-on metadata
Modules 
● Where functionality is 
● Prebuilt SDK modules 
● 3rd party “libraries“ 
● Custom modules for Add-on logic
SDK Modules 
● Split into high-level and low-level API modules 
● High-level modules provide simple APIs for 
things like 
– Page content modification (sdk/page-mod) 
– Tabs (sdk/tabs) 
– Requests (sdk/request) 
– Buttons and toolbars (sdk/ui) 
– Panels (sdk/panel) 
– Clipboard (sdk/clipboard) 
– Passwords (sdk/passwords)
Custom Modules 
● Main loading point module (usually main.js) 
● require() to import other modules 
● exports object for public symbols
Content Scripts 
● Scripts that run in a browser context 
● Still run in a separated sandbox 
● They have access to the document's DOM 
● port for communication
Debugging 
● Firefox 31 
● Always enabled via run command 
● Content-scripts can't be reached
XPCOM with Jetpack 
● const { Cu, Ci, Cr, Cc } = 
require('chrome') 
● Be nice to the global scope: 
const { jsm } = 
require('resource://some.jsm'); 
● You can define components
Future 
● JPM release 
● Integrated extension toolkit
Help! 
● MDN: 
https://developer.mozilla.org/en-US/Add-ons/SDK/ 
● Sourcecode: 
https://github.com/mozilla/addon-sdk 
● IRC: irc://irc.mozilla.org/jetpack 
● Follow @MozillaCH on Twitter

More Related Content

What's hot

Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
niallo
 
Improving the MODX Documentation - March 29, 2019
Improving the MODX Documentation - March 29, 2019Improving the MODX Documentation - March 29, 2019
Improving the MODX Documentation - March 29, 2019
Mark Hamstra
 
Web Framework and Struts 2 - KNOWARTH
Web Framework and Struts 2 - KNOWARTHWeb Framework and Struts 2 - KNOWARTH
Web Framework and Struts 2 - KNOWARTH
KNOWARTH Technologies
 
Enterprise Griffon
Enterprise GriffonEnterprise Griffon
Enterprise Griffon
James Williams
 
Hello android
Hello androidHello android
Hello android
DENNIS JUNG
 
Cross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet coreCross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet core
Swaminathan Vetri
 
Docker @haufe lexware tech lunch
Docker @haufe lexware tech lunchDocker @haufe lexware tech lunch
Docker @haufe lexware tech lunch
HaufeLexwareRomania
 
Eclipse demo camp 2016 Toronto
Eclipse demo camp 2016 TorontoEclipse demo camp 2016 Toronto
Eclipse demo camp 2016 Toronto
Gorkem Ercan
 
2013 Ohio LinuxFest - Ports, Packages, and PBI's
2013 Ohio LinuxFest - Ports, Packages, and PBI's2013 Ohio LinuxFest - Ports, Packages, and PBI's
2013 Ohio LinuxFest - Ports, Packages, and PBI's
Ken Moore
 
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
Ofer Cohen
 
WSO2 Presentation Layer
WSO2 Presentation LayerWSO2 Presentation Layer
WSO2 Presentation Layer
Nuwan Bandara
 
ASP.NET vNext
ASP.NET vNextASP.NET vNext
ASP.NET vNext
Richard Caunt
 
Custom angular libraries
Custom angular librariesCustom angular libraries
Custom angular libraries
MattVaughn9
 
.Net Core
.Net Core.Net Core
SELF 2014: PBI v10: Application Management Made Easy
SELF 2014: PBI v10: Application Management Made EasySELF 2014: PBI v10: Application Management Made Easy
SELF 2014: PBI v10: Application Management Made Easy
Ken Moore
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
Batzorigt Rentsen
 

What's hot (16)

Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
 
Improving the MODX Documentation - March 29, 2019
Improving the MODX Documentation - March 29, 2019Improving the MODX Documentation - March 29, 2019
Improving the MODX Documentation - March 29, 2019
 
Web Framework and Struts 2 - KNOWARTH
Web Framework and Struts 2 - KNOWARTHWeb Framework and Struts 2 - KNOWARTH
Web Framework and Struts 2 - KNOWARTH
 
Enterprise Griffon
Enterprise GriffonEnterprise Griffon
Enterprise Griffon
 
Hello android
Hello androidHello android
Hello android
 
Cross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet coreCross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet core
 
Docker @haufe lexware tech lunch
Docker @haufe lexware tech lunchDocker @haufe lexware tech lunch
Docker @haufe lexware tech lunch
 
Eclipse demo camp 2016 Toronto
Eclipse demo camp 2016 TorontoEclipse demo camp 2016 Toronto
Eclipse demo camp 2016 Toronto
 
2013 Ohio LinuxFest - Ports, Packages, and PBI's
2013 Ohio LinuxFest - Ports, Packages, and PBI's2013 Ohio LinuxFest - Ports, Packages, and PBI's
2013 Ohio LinuxFest - Ports, Packages, and PBI's
 
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
 
WSO2 Presentation Layer
WSO2 Presentation LayerWSO2 Presentation Layer
WSO2 Presentation Layer
 
ASP.NET vNext
ASP.NET vNextASP.NET vNext
ASP.NET vNext
 
Custom angular libraries
Custom angular librariesCustom angular libraries
Custom angular libraries
 
.Net Core
.Net Core.Net Core
.Net Core
 
SELF 2014: PBI v10: Application Management Made Easy
SELF 2014: PBI v10: Application Management Made EasySELF 2014: PBI v10: Application Management Made Easy
SELF 2014: PBI v10: Application Management Made Easy
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 

Viewers also liked

Nightingale Features Showcase
Nightingale Features ShowcaseNightingale Features Showcase
Nightingale Features Showcase
Martin Giger
 
Building Mobile Apps on Salesforce Platform with Mobile SDK
Building Mobile Apps on Salesforce Platform with Mobile SDKBuilding Mobile Apps on Salesforce Platform with Mobile SDK
Building Mobile Apps on Salesforce Platform with Mobile SDK
Salesforce Developers
 
The element of art
The element of artThe element of art
The element of art
gzorskas
 
24symbols. The Spotify Model for eBooks - Presentation
24symbols. The Spotify Model for eBooks - Presentation24symbols. The Spotify Model for eBooks - Presentation
24symbols. The Spotify Model for eBooks - Presentation
24Symbols
 
Hosted Virtualization
Hosted VirtualizationHosted Virtualization
Hosted Virtualization
jayallen77
 
P1121327289
P1121327289P1121327289
P1121327289
Ashraf Aboshosha
 
P1121105111
P1121105111P1121105111
P1121105111
Ashraf Aboshosha
 
P1121102462
P1121102462P1121102462
P1121102462
Ashraf Aboshosha
 
The year you where born
The year you where bornThe year you where born
The year you where born
JE
 
Great expectations
Great expectationsGreat expectations
Great expectations
WhyCantIGetAUserName
 
P1121138815
P1121138815P1121138815
P1121138815
Ashraf Aboshosha
 
London
LondonLondon
Major_Proj_Ramya
Major_Proj_RamyaMajor_Proj_Ramya
Major_Proj_Ramya
Ramya Emandi
 
P1131210137
P1131210137P1131210137
P1131210137
Ashraf Aboshosha
 
Footprints Of Disaster.Okspra Hndts
Footprints Of Disaster.Okspra HndtsFootprints Of Disaster.Okspra Hndts
Footprints Of Disaster.Okspra Hndts
rcastleberry
 
P1131213152
P1131213152P1131213152
P1131213152
Ashraf Aboshosha
 
P1151139820
P1151139820P1151139820
P1151139820
Ashraf Aboshosha
 
An update on psychopharmacology part i 22 june 2007 fountain house
An update on psychopharmacology part i 22 june 2007 fountain houseAn update on psychopharmacology part i 22 june 2007 fountain house
An update on psychopharmacology part i 22 june 2007 fountain house
Pk Doctors
 

Viewers also liked (20)

Nightingale Features Showcase
Nightingale Features ShowcaseNightingale Features Showcase
Nightingale Features Showcase
 
Building Mobile Apps on Salesforce Platform with Mobile SDK
Building Mobile Apps on Salesforce Platform with Mobile SDKBuilding Mobile Apps on Salesforce Platform with Mobile SDK
Building Mobile Apps on Salesforce Platform with Mobile SDK
 
The element of art
The element of artThe element of art
The element of art
 
24symbols. The Spotify Model for eBooks - Presentation
24symbols. The Spotify Model for eBooks - Presentation24symbols. The Spotify Model for eBooks - Presentation
24symbols. The Spotify Model for eBooks - Presentation
 
CómicSJ yang zu
CómicSJ yang  zuCómicSJ yang  zu
CómicSJ yang zu
 
Hosted Virtualization
Hosted VirtualizationHosted Virtualization
Hosted Virtualization
 
P1121327289
P1121327289P1121327289
P1121327289
 
P1121105111
P1121105111P1121105111
P1121105111
 
P1121102462
P1121102462P1121102462
P1121102462
 
The year you where born
The year you where bornThe year you where born
The year you where born
 
Parkour
ParkourParkour
Parkour
 
Great expectations
Great expectationsGreat expectations
Great expectations
 
P1121138815
P1121138815P1121138815
P1121138815
 
London
LondonLondon
London
 
Major_Proj_Ramya
Major_Proj_RamyaMajor_Proj_Ramya
Major_Proj_Ramya
 
P1131210137
P1131210137P1131210137
P1131210137
 
Footprints Of Disaster.Okspra Hndts
Footprints Of Disaster.Okspra HndtsFootprints Of Disaster.Okspra Hndts
Footprints Of Disaster.Okspra Hndts
 
P1131213152
P1131213152P1131213152
P1131213152
 
P1151139820
P1151139820P1151139820
P1151139820
 
An update on psychopharmacology part i 22 june 2007 fountain house
An update on psychopharmacology part i 22 june 2007 fountain houseAn update on psychopharmacology part i 22 june 2007 fountain house
An update on psychopharmacology part i 22 june 2007 fountain house
 

Similar to Brief Introduction to the Mozilla Add-on SDK

CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
Ortus Solutions, Corp
 
Introduction and course Details of Embedded Linux Platform Developer Training
Introduction and course Details of Embedded Linux Platform Developer TrainingIntroduction and course Details of Embedded Linux Platform Developer Training
Introduction and course Details of Embedded Linux Platform Developer Training
Veda Solutions - Embedded Systems & Linux Device Drivers Training
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Ron Munitz
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
php-user-group-minsk
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Max Romanovsky
 
Informix Expedition Through Connectivity
Informix Expedition Through ConnectivityInformix Expedition Through Connectivity
Informix Expedition Through Connectivity
Kevin Smith
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh
 
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
OW2
 
DocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winnerDocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDoku
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
Opersys inc.
 
Moodle Development Best Pracitces
Moodle Development Best PracitcesMoodle Development Best Pracitces
Moodle Development Best Pracitces
Justin Filip
 
Web technologies for desktop development
Web technologies for desktop developmentWeb technologies for desktop development
Web technologies for desktop development
Darko Kukovec
 
Javascript Update May 2013
Javascript Update May 2013Javascript Update May 2013
Javascript Update May 2013
Ramesh Nair
 
Build your apps everywhere with Lightning Web Components Open Source, Fabien ...
Build your apps everywhere with Lightning Web Components Open Source, Fabien ...Build your apps everywhere with Lightning Web Components Open Source, Fabien ...
Build your apps everywhere with Lightning Web Components Open Source, Fabien ...
CzechDreamin
 
Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)
Igalia
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
Bethmi Gunasekara
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
Women in Technology Poland
 
OpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and JenkinsOpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and Jenkins
Alkacon Software GmbH & Co. KG
 
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKYocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Marco Cavallini
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM

Similar to Brief Introduction to the Mozilla Add-on SDK (20)

CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
 
Introduction and course Details of Embedded Linux Platform Developer Training
Introduction and course Details of Embedded Linux Platform Developer TrainingIntroduction and course Details of Embedded Linux Platform Developer Training
Introduction and course Details of Embedded Linux Platform Developer Training
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
 
Informix Expedition Through Connectivity
Informix Expedition Through ConnectivityInformix Expedition Through Connectivity
Informix Expedition Through Connectivity
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
 
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
 
DocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winnerDocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winner
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
Moodle Development Best Pracitces
Moodle Development Best PracitcesMoodle Development Best Pracitces
Moodle Development Best Pracitces
 
Web technologies for desktop development
Web technologies for desktop developmentWeb technologies for desktop development
Web technologies for desktop development
 
Javascript Update May 2013
Javascript Update May 2013Javascript Update May 2013
Javascript Update May 2013
 
Build your apps everywhere with Lightning Web Components Open Source, Fabien ...
Build your apps everywhere with Lightning Web Components Open Source, Fabien ...Build your apps everywhere with Lightning Web Components Open Source, Fabien ...
Build your apps everywhere with Lightning Web Components Open Source, Fabien ...
 
Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
 
OpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and JenkinsOpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and Jenkins
 
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKYocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 

More from Martin Giger

Indexed db
Indexed dbIndexed db
Indexed db
Martin Giger
 
Nightingale Social & Cloud mockup
Nightingale Social & Cloud mockupNightingale Social & Cloud mockup
Nightingale Social & Cloud mockup
Martin Giger
 
Ozon / Melanom
Ozon / MelanomOzon / Melanom
Ozon / Melanom
Martin Giger
 
ig_chino plakat 2010
ig_chino plakat 2010ig_chino plakat 2010
ig_chino plakat 2010Martin Giger
 
ig_chino Flyer 2010
ig_chino Flyer 2010ig_chino Flyer 2010
ig_chino Flyer 2010Martin Giger
 
Open source software
Open source softwareOpen source software
Open source software
Martin Giger
 
Friedrich Schiller
Friedrich SchillerFriedrich Schiller
Friedrich SchillerMartin Giger
 
Jacob Und Willhelm Grimm
Jacob Und Willhelm GrimmJacob Und Willhelm Grimm
Jacob Und Willhelm GrimmMartin Giger
 
Hochdruck oder Tiefdruck
Hochdruck oder TiefdruckHochdruck oder Tiefdruck
Hochdruck oder TiefdruckMartin Giger
 
Wie Funktioniert ein Hochregallager
Wie Funktioniert ein HochregallagerWie Funktioniert ein Hochregallager
Wie Funktioniert ein HochregallagerMartin Giger
 
Schimmelpilze
SchimmelpilzeSchimmelpilze
Schimmelpilze
Martin Giger
 
BNSF Präsentation
BNSF PräsentationBNSF Präsentation
BNSF PräsentationMartin Giger
 
Staatsbankrott von Griechenland
Staatsbankrott von GriechenlandStaatsbankrott von Griechenland
Staatsbankrott von Griechenland
Martin Giger
 

More from Martin Giger (18)

Indexed db
Indexed dbIndexed db
Indexed db
 
Nightingale Social & Cloud mockup
Nightingale Social & Cloud mockupNightingale Social & Cloud mockup
Nightingale Social & Cloud mockup
 
Ozon / Melanom
Ozon / MelanomOzon / Melanom
Ozon / Melanom
 
ig_chino plakat 2010
ig_chino plakat 2010ig_chino plakat 2010
ig_chino plakat 2010
 
ig_chino Flyer 2010
ig_chino Flyer 2010ig_chino Flyer 2010
ig_chino Flyer 2010
 
Plakat 2009
Plakat 2009Plakat 2009
Plakat 2009
 
Open source software
Open source softwareOpen source software
Open source software
 
Was ist HDTV
Was ist HDTVWas ist HDTV
Was ist HDTV
 
Friedrich Schiller
Friedrich SchillerFriedrich Schiller
Friedrich Schiller
 
Jacob Und Willhelm Grimm
Jacob Und Willhelm GrimmJacob Und Willhelm Grimm
Jacob Und Willhelm Grimm
 
Hochdruck oder Tiefdruck
Hochdruck oder TiefdruckHochdruck oder Tiefdruck
Hochdruck oder Tiefdruck
 
Otto Waalkes
Otto WaalkesOtto Waalkes
Otto Waalkes
 
Wie Funktioniert ein Hochregallager
Wie Funktioniert ein HochregallagerWie Funktioniert ein Hochregallager
Wie Funktioniert ein Hochregallager
 
Ol Doinyo Lengai
Ol Doinyo LengaiOl Doinyo Lengai
Ol Doinyo Lengai
 
Fabian Unteregger
Fabian UntereggerFabian Unteregger
Fabian Unteregger
 
Schimmelpilze
SchimmelpilzeSchimmelpilze
Schimmelpilze
 
BNSF Präsentation
BNSF PräsentationBNSF Präsentation
BNSF Präsentation
 
Staatsbankrott von Griechenland
Staatsbankrott von GriechenlandStaatsbankrott von Griechenland
Staatsbankrott von Griechenland
 

Recently uploaded

20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Zilliz
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 

Recently uploaded (20)

20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 

Brief Introduction to the Mozilla Add-on SDK

  • 2. I'm Martin aka freaktechnik ● Information Technology and Electrical Engineering student ● Euphonium player ● Nightingale Media Player developer ● Firefox Add-on developer
  • 3. Goals ● Basic Firefox Extension Knowledge ● Tools for Development ● Add-on SDK Extension Structure and API
  • 4. Firefox Extensions 3 Different Types
  • 5. Traditional Overlay Add-ons ● The old style ● Restart to apply ● Add content by overlaying documents ● XPCOM
  • 6. Bootstrapped Extensions ● Since Firefox 4 ● Restartless ● Everything is done with XPCOM
  • 7. Add-on SDK Extensions ● Compile to bootstrapped extensions ● CommonJS environement
  • 8. Base Knowledge ● JavaScript ● Maybe HTML and CSS ● XPCOM
  • 9. Tools ● Firefox ● CFX or JPM ● An editor
  • 10. JPM ● The 'compiler' apart from others ● Node based ● npm install jpm --global
  • 12. Basic Extension Structure ● lib →main modules ● data →misc files ● test →unit test modules ● package.json →add-on metadata
  • 13. Modules ● Where functionality is ● Prebuilt SDK modules ● 3rd party “libraries“ ● Custom modules for Add-on logic
  • 14. SDK Modules ● Split into high-level and low-level API modules ● High-level modules provide simple APIs for things like – Page content modification (sdk/page-mod) – Tabs (sdk/tabs) – Requests (sdk/request) – Buttons and toolbars (sdk/ui) – Panels (sdk/panel) – Clipboard (sdk/clipboard) – Passwords (sdk/passwords)
  • 15. Custom Modules ● Main loading point module (usually main.js) ● require() to import other modules ● exports object for public symbols
  • 16. Content Scripts ● Scripts that run in a browser context ● Still run in a separated sandbox ● They have access to the document's DOM ● port for communication
  • 17. Debugging ● Firefox 31 ● Always enabled via run command ● Content-scripts can't be reached
  • 18. XPCOM with Jetpack ● const { Cu, Ci, Cr, Cc } = require('chrome') ● Be nice to the global scope: const { jsm } = require('resource://some.jsm'); ● You can define components
  • 19. Future ● JPM release ● Integrated extension toolkit
  • 20. Help! ● MDN: https://developer.mozilla.org/en-US/Add-ons/SDK/ ● Sourcecode: https://github.com/mozilla/addon-sdk ● IRC: irc://irc.mozilla.org/jetpack ● Follow @MozillaCH on Twitter

Editor's Notes

  1. AMO Questions/Understanding (bad at explaining) → ask them directly
  2. Just ZIP files Also Themes (no scripts anymore), langpacks and searchengines (sometimes recognized as normal extension)
  3. Components can be in nearly any language
  4. Manually load components → need to use JS to load binaries
  5. XPCOM API wrappers to commonjs → stable API (for example e10s doesn't affect you in most cases) SDK isn't bundled anymore with jpm...
  6. -> CommonJS and chrome JS, also everything is mozJS, no DOM etc.
  7. Init Run Xpi Test help (testall, -b etc.)
  8. Console output in console when run, else browser console (important, not web console)
  9. Quick, buuut, extreaction brackets