SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
5 tips and 4 and ½ tricks for
porting GNOME applications
to Maemo platform
Eduardo Lima (Etrunko)
8th
GUADEC, Birmingham, UK
About INdT
● Instituto Nokia de Tecnologia
● Founded by Nokia do Brasil
● R&D for mobile devices
● About 200 employees
● Partnership with universities
● Three main sites:
– Manaus
– Brasilia
– Recife
About INdT – Recife Site
● About 40 employees
● Focused on OSS for mobile devices
– Nokia Internet Tablets (770 and N800)
– S60 smartphones
● Some projects
– Canola
– Python for Maemo
– Tapioca
– Maemo Games
– Maemo SDK VMWare/Qemu Appliances
– Carman
– Mamona
– Gmyth
– Evas optimization
Why Porting Applications?
● GNOME is mobile as well
Other Reasons
● Bring new experiences to Maemo devices
● Replacement of built-in applications
● All advantages of FOSS
– New features implemented
– Bug fixes and improvements
– Community of users testing and reporting
bugs
● Yet another way to contribute to projects
● “Don't reinvent the wheel!”
Some Restrictions
● Small screen (Good resolution)
– Reduced usable area
● Processor power
– 220 MHz (770)
– 320 MHz (N800)
● RAM
– 64 MB (770)
– 128 MB (N800)
– No swap (can be activated)
● DSP
Some (more) Restrictions
● Limited storage (JFFS2 helps)
– 128 MB (770)
– 256 MB (N800)
● No FPU in 770
● Power consumption
● Maemo patched libraries
– Old versions
– Can't just be upgraded
● Scratchbox environment
First Steps
● Install scratchbox environment
● Install Maemo SDK (i386 and armel)
– Bora for N800
– Gregale for 770
● Find yourself a device (if possible)
● Pick an application
– Study the code
– Find the libraries it depends on
Feasibility Of The Port
● Check the dependencies
– libbonobo/libbonoboui
– libgnomeprint/libgnomeprintui
– libgnome/libgnomeui
– libgnomecanvas
– gnomekeyring
● Processor power required
● Storage required
● Memory consumption
Getting Rid Of GNOME Stuff
● Some things can just be replaced
– Help
– Icon lookup
● Other things must go within #ifdef blocks
– GnomeProgram
– Session management
– Synchronize accelerators
● Add configure checks for specific bits
Example: Gnumeric
It Works!
Brief Analysis Of The Screen
Great Resolution
Reduced Usable Area
Using The Virtual Keyboard
Using The Virtual Keyboard
Toolbar
Toolbar
Virtual Keyboard + Toolbar
Virtual Keyboard + Toolbar
And so on...
And so on...
Summary
● Use hildon stuff
– Program/Window
– Menu
– Toolbars
– Tap and hold
– Dialogs (Open, Save, Fonts, Colors, etc)
● Hide anything else
– Status bars
– Other widgets
● Focus on the purpose of the application
Hildonization
● Replace the toplevel GtkWindow by a
HildonWindow
● Get a HildonProgram instance
● Add the HildonWindow to HildonProgram
● Change GtkMenuBar to a regular
GtkMenu
● Add GtkMenu to HildonWindow
● Add GtkToolbar objects to HildonWindow
● Add configure checks for Hildon libraries
How does it look like?
Other tips
● Set application name
– g_set_application_name()
● Unset HildonWindow settings properties
– gtk-button-images and gtk-menu-images
● Register the application with libosso
– osso_initialize() and osso_deinitialize()
– D-Bus service file (/usr/share/dbus-1/services)
● .desktop files go to another location
– /usr/share/applications/hildon
Almost finished
● Build packages for everything
– Both i386 and armel targets
● Test the packages in the device
– Scratchbox armel emulation does not work
● Publish the packages, preferably by apt
● Submit patches!
Challenges
● Dialogs usually are not developed taking
small screens into account
● Reduce installation size
– Documentation
– Translations
● Debian packaging is boring
● Acceptable performance
Other ports (Abiword)
Other ports (Evince)
Other ports (Gconf Editor)
Other ports (Rhythmbox)
Other ports (Leafpad)
Other ports (Xournal)
Thank You!
eduardo.lima@indt.org.br
http://etrunko.blogspot.com

Contenu connexe

Similaire à 5 Tips and 4 and 1⁄2 Tricks for Porting GNOME Applications to Maemo Platform

The pathway to Chromium on Wayland (Web Engines Hackfest 2018)
The pathway to Chromium on Wayland (Web Engines Hackfest 2018)The pathway to Chromium on Wayland (Web Engines Hackfest 2018)
The pathway to Chromium on Wayland (Web Engines Hackfest 2018)Igalia
 
OSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
OSMC 2014: Naemon 1, 2, 3, N | Andreas EricssonOSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
OSMC 2014: Naemon 1, 2, 3, N | Andreas EricssonNETWAYS
 
MeeGo on OMAP4 PandaBoard
MeeGo on OMAP4 PandaBoardMeeGo on OMAP4 PandaBoard
MeeGo on OMAP4 PandaBoardNishanth Menon
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneursRodrigo Gil
 
The Chromium/Wayland project (Web Engines Hackfest 2017)
The Chromium/Wayland project (Web Engines Hackfest 2017)The Chromium/Wayland project (Web Engines Hackfest 2017)
The Chromium/Wayland project (Web Engines Hackfest 2017)Igalia
 
The Chromium project's Way to Wayland (FOSDEM 2018)
The Chromium project's Way to Wayland (FOSDEM 2018)The Chromium project's Way to Wayland (FOSDEM 2018)
The Chromium project's Way to Wayland (FOSDEM 2018)Igalia
 
Akademy 2010 presentation
Akademy 2010 presentationAkademy 2010 presentation
Akademy 2010 presentationMarco Martin
 
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)Igalia
 
OSMC 2014 | Naemon 1, 2, 3, N by Andreas Ericsson
OSMC 2014 | Naemon 1, 2, 3, N by Andreas EricssonOSMC 2014 | Naemon 1, 2, 3, N by Andreas Ericsson
OSMC 2014 | Naemon 1, 2, 3, N by Andreas EricssonNETWAYS
 
Hildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for FremantleHildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for FremantleAlberto Garcia
 
Full stack development
Full stack developmentFull stack development
Full stack developmentArnav Gupta
 
The Chromium/Wayland Project (BlinkOn 9)
The Chromium/Wayland Project (BlinkOn 9)The Chromium/Wayland Project (BlinkOn 9)
The Chromium/Wayland Project (BlinkOn 9)Igalia
 
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)Ron Munitz
 
Towards shipping Ozone/Wayland (BlinkOn 10)
Towards shipping Ozone/Wayland (BlinkOn 10)Towards shipping Ozone/Wayland (BlinkOn 10)
Towards shipping Ozone/Wayland (BlinkOn 10)Igalia
 
Android Development...The 20,000-Foot View
Android Development...The 20,000-Foot ViewAndroid Development...The 20,000-Foot View
Android Development...The 20,000-Foot ViewCommonsWare
 
Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012Tomáš Kypta
 
Debugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile DevicesDebugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile DevicesDale Lane
 
Maemo Development Platform
Maemo Development PlatformMaemo Development Platform
Maemo Development Platformtko
 
Campkde 2010: KDE Plasma netbook
Campkde 2010: KDE Plasma netbookCampkde 2010: KDE Plasma netbook
Campkde 2010: KDE Plasma netbookMarco Martin
 
Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012Tomáš Kypta
 

Similaire à 5 Tips and 4 and 1⁄2 Tricks for Porting GNOME Applications to Maemo Platform (20)

The pathway to Chromium on Wayland (Web Engines Hackfest 2018)
The pathway to Chromium on Wayland (Web Engines Hackfest 2018)The pathway to Chromium on Wayland (Web Engines Hackfest 2018)
The pathway to Chromium on Wayland (Web Engines Hackfest 2018)
 
OSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
OSMC 2014: Naemon 1, 2, 3, N | Andreas EricssonOSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
OSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
 
MeeGo on OMAP4 PandaBoard
MeeGo on OMAP4 PandaBoardMeeGo on OMAP4 PandaBoard
MeeGo on OMAP4 PandaBoard
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
 
The Chromium/Wayland project (Web Engines Hackfest 2017)
The Chromium/Wayland project (Web Engines Hackfest 2017)The Chromium/Wayland project (Web Engines Hackfest 2017)
The Chromium/Wayland project (Web Engines Hackfest 2017)
 
The Chromium project's Way to Wayland (FOSDEM 2018)
The Chromium project's Way to Wayland (FOSDEM 2018)The Chromium project's Way to Wayland (FOSDEM 2018)
The Chromium project's Way to Wayland (FOSDEM 2018)
 
Akademy 2010 presentation
Akademy 2010 presentationAkademy 2010 presentation
Akademy 2010 presentation
 
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)
Integration of the Chromium Browser in the GENIVI Platform (16th GENIVI AMM)
 
OSMC 2014 | Naemon 1, 2, 3, N by Andreas Ericsson
OSMC 2014 | Naemon 1, 2, 3, N by Andreas EricssonOSMC 2014 | Naemon 1, 2, 3, N by Andreas Ericsson
OSMC 2014 | Naemon 1, 2, 3, N by Andreas Ericsson
 
Hildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for FremantleHildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for Fremantle
 
Full stack development
Full stack developmentFull stack development
Full stack development
 
The Chromium/Wayland Project (BlinkOn 9)
The Chromium/Wayland Project (BlinkOn 9)The Chromium/Wayland Project (BlinkOn 9)
The Chromium/Wayland Project (BlinkOn 9)
 
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
 
Towards shipping Ozone/Wayland (BlinkOn 10)
Towards shipping Ozone/Wayland (BlinkOn 10)Towards shipping Ozone/Wayland (BlinkOn 10)
Towards shipping Ozone/Wayland (BlinkOn 10)
 
Android Development...The 20,000-Foot View
Android Development...The 20,000-Foot ViewAndroid Development...The 20,000-Foot View
Android Development...The 20,000-Foot View
 
Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012
 
Debugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile DevicesDebugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile Devices
 
Maemo Development Platform
Maemo Development PlatformMaemo Development Platform
Maemo Development Platform
 
Campkde 2010: KDE Plasma netbook
Campkde 2010: KDE Plasma netbookCampkde 2010: KDE Plasma netbook
Campkde 2010: KDE Plasma netbook
 
Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012
 

5 Tips and 4 and 1⁄2 Tricks for Porting GNOME Applications to Maemo Platform

  • 1. 5 tips and 4 and ½ tricks for porting GNOME applications to Maemo platform Eduardo Lima (Etrunko) 8th GUADEC, Birmingham, UK
  • 2. About INdT ● Instituto Nokia de Tecnologia ● Founded by Nokia do Brasil ● R&D for mobile devices ● About 200 employees ● Partnership with universities ● Three main sites: – Manaus – Brasilia – Recife
  • 3. About INdT – Recife Site ● About 40 employees ● Focused on OSS for mobile devices – Nokia Internet Tablets (770 and N800) – S60 smartphones ● Some projects – Canola – Python for Maemo – Tapioca – Maemo Games – Maemo SDK VMWare/Qemu Appliances – Carman – Mamona – Gmyth – Evas optimization
  • 4. Why Porting Applications? ● GNOME is mobile as well
  • 5. Other Reasons ● Bring new experiences to Maemo devices ● Replacement of built-in applications ● All advantages of FOSS – New features implemented – Bug fixes and improvements – Community of users testing and reporting bugs ● Yet another way to contribute to projects ● “Don't reinvent the wheel!”
  • 6. Some Restrictions ● Small screen (Good resolution) – Reduced usable area ● Processor power – 220 MHz (770) – 320 MHz (N800) ● RAM – 64 MB (770) – 128 MB (N800) – No swap (can be activated) ● DSP
  • 7. Some (more) Restrictions ● Limited storage (JFFS2 helps) – 128 MB (770) – 256 MB (N800) ● No FPU in 770 ● Power consumption ● Maemo patched libraries – Old versions – Can't just be upgraded ● Scratchbox environment
  • 8. First Steps ● Install scratchbox environment ● Install Maemo SDK (i386 and armel) – Bora for N800 – Gregale for 770 ● Find yourself a device (if possible) ● Pick an application – Study the code – Find the libraries it depends on
  • 9. Feasibility Of The Port ● Check the dependencies – libbonobo/libbonoboui – libgnomeprint/libgnomeprintui – libgnome/libgnomeui – libgnomecanvas – gnomekeyring ● Processor power required ● Storage required ● Memory consumption
  • 10. Getting Rid Of GNOME Stuff ● Some things can just be replaced – Help – Icon lookup ● Other things must go within #ifdef blocks – GnomeProgram – Session management – Synchronize accelerators ● Add configure checks for specific bits
  • 13. Brief Analysis Of The Screen
  • 16. Using The Virtual Keyboard
  • 17. Using The Virtual Keyboard
  • 24. Summary ● Use hildon stuff – Program/Window – Menu – Toolbars – Tap and hold – Dialogs (Open, Save, Fonts, Colors, etc) ● Hide anything else – Status bars – Other widgets ● Focus on the purpose of the application
  • 25. Hildonization ● Replace the toplevel GtkWindow by a HildonWindow ● Get a HildonProgram instance ● Add the HildonWindow to HildonProgram ● Change GtkMenuBar to a regular GtkMenu ● Add GtkMenu to HildonWindow ● Add GtkToolbar objects to HildonWindow ● Add configure checks for Hildon libraries
  • 26. How does it look like?
  • 27. Other tips ● Set application name – g_set_application_name() ● Unset HildonWindow settings properties – gtk-button-images and gtk-menu-images ● Register the application with libosso – osso_initialize() and osso_deinitialize() – D-Bus service file (/usr/share/dbus-1/services) ● .desktop files go to another location – /usr/share/applications/hildon
  • 28. Almost finished ● Build packages for everything – Both i386 and armel targets ● Test the packages in the device – Scratchbox armel emulation does not work ● Publish the packages, preferably by apt ● Submit patches!
  • 29. Challenges ● Dialogs usually are not developed taking small screens into account ● Reduce installation size – Documentation – Translations ● Debian packaging is boring ● Acceptable performance
  • 36.