osp-slp architectural specification: io · pdf fileenlightenment is the flagship and original...
TRANSCRIPT
EFL Overview
Daniel Juyung Seo <[email protected]> Chuneon Park <[email protected]>
Course
• Day 1
Classes Details
1 Introduction
2 EFL Overview
3 EFL Detail
Course
Classes Details
1 Edje
2 Writing Applications
• Day 3
Classes Details
1 Widget, Theme Customization
2 Porting to Tizen
• Day 2
0. Introduction
5 5
0.1 Lecturer
• Daniel Juyung Seo (SeoZ)
• S/W Center, Next Generation
Computing Lab
• EFL Open Source Committer
• Chuneon Park (Hermet)
• S/W Center, Next Generation
Computing Lab
• EFL Open Source Committer
6 6
0.2 Attendee
7 7
0.3 Before we dive into Add the numbers and speak loud
1000
8 8
0.3 Before we dive into Add the numbers and speak loud
1000
40
9 9
0.3 Before we dive into Add the numbers and speak loud
1000
40
1000
10 10
0.3 Before we dive into Add the numbers and speak loud
1000
40
1000
30
11 11
0.3 Before we dive into Add the numbers and speak loud
1000
40
1000
30
1000
12 12
0.3 Before we dive into Add the numbers and speak loud
1000
40
1000
30
1000
20
13 13
0.3 Before we dive into Add the numbers and speak loud
1000
40
1000
30
1000
20
1000
14 14
0.3 Before we dive into Add the numbers and speak loud
1000
40
1000
30
1000
20
1000
10
15 15
0.3 Before we dive into • No prejudice
• Ask questions during the class
• Ask to assistant during the practice
• Learn a lot!
1. Install E/EFL/Tizen
17 17
1.1 Linux • Ubuntu 12.04
• Best fits with Tizen
18 18
1.2 E/EFL Installation • http://www.enlightenment.org/p.php?p=download&l=en
19 19
1.2 E/EFL Installation – package
• Official package provided by distro
$ sudo apt-get update
$ sudo apt-get install e17 elementary-dev
• Unofficial package provided by Enlightenment team
https://launchpad.net/~efl/+archive/trunk
• Unofficial package provided by Hannes Janetzek
https://launchpad.net/~hannes-janetzek/+archive/enlightenment-svn
20 20
1.2 E/EFL Installation • Git clone and build/install them
http://git.enlightenment.org/devs/seoz/util.git/plain/efl_script_sri.sh
-> http://goo.gl/pPHlJ
$ chmod +x efl_script_sri.sh
$ ./efl_script_sri.sh clone
$ ./efl_script_sri.sh build
21 21
1.3 Launch Enlightenment • $ sudo cp /usr/local/share/xsessions/enlightenment.desktop
/usr/share/xsessions
22 22
1.3 Launch Enlightenment • http://www.enlightenment.org/p.php?p=about/e17&l=en
23 23
1.3 Launch Enlightenment
24 24
1.4 Launch EFL Applications • Main menu
•left mouse click
• Everything Launcher
•Alt + ESC
• Terminal Emulator Terminology
•shelves -> ibar -> Terminology
•$ elementary_test
•$ pkg-config --cflags --libs elementary
25 25
1.5 Tizen SDK Check • Run Tizen IDE
•Everything Launcher -> Tizen IDE
• Run Tizen Emulator Manager
•Everything Launcher -> Emulator Manager
2. EFL Overview
27 27
2.1 What is EFL?
Enlightenment Foundation Libraries
A collection of libraries for Enlightenment
< Block Diagram >
< (unofficial) EFL Logo>
28 28
2.2 What is Enlightenment? • Started as a Window Manager
• Now it’s a project name
• Consists of
•Enlightenmente Desktop/Window Manager
•E16(DR16), E17(DR17), E18(DR18)
•EFL (Enlightenment Foundation Libraries)
• Enlightenment is the flagship and original name bearer for this project. Once it was just a
humble window manager for X11 that wanted to do things differently. To do them better, but it has expanded. This can be confusing so when we refer to Enlightenment, we may mean the project as a whole or just the window manager proper. The libraries behind Enlightenment are referred to as EFL collectively, each with a specific name and purpose.
• from www.enlightenment.org
< Enlightenment Logo >
29 29
2.2 What is Enlightenment?
< Screenshot of Enlightenment Window Manager >
30 30
2.2 What is Enlightenment? • A Window Manager
• ICCCM/NETWM (FDO)
• Virtual Desktops
• Remembering & enforcing user preferences
• Window Frames (titlebars etc.)
• Tiling module even
• Focus (click/pointer/sloppy) handling
• Split desktops per screen
• Focus switching
31 31
2.2 What is Enlightenment? • A Shell
• Launching applications
• Menus
• Wallpaper handling (animated too)
• Network management (connman)
• CPU power policy management
• Keyboard layout management
• Audio mixer front-end (Pulse/ALSA)
• Backlight controls
• Clock
• Temperature monitoring
• Pager
32 32
2.2 What is Enlightenment? • A Shell
• Taskbars
• Launcher bars
• Mouse settings
• Screensaver/blanker/dim settings
• Screen lock
• Systray (please die... please)
• Screenshotting
• Battery status
• Desktop gadgets
• Notifications (FDO/DBUS)
• Custom layout modules (mobile)
• Experimental
• Virtual keyboard
33 33
2.2 What is Enlightenment? • A Filemanager
• Icons on the desktop
• Icon and list modes
• Lots of thumbnails
• Live previews
• Removable storage support (blergh!)
• DND
• Recycled for file selectors as well
34 34
2.2 What is Enlightenment? • A Compositor
• Full software compositing available
• Works decently even on ancient/slow hardware
● Pentiums, Raspberry PI, …
• OpenGL and OpenGL-ES2 too
• Effects via theme styles (Edje)
• Wayland clients supported in X11
• Screen dimming effects
• Optional auto-disable for fullscreen windows
35 35
2.2 What is Enlightenment?
• Unofficial packages are available for several platforms including:
•Ubuntu
•ArchLinux
•Gentoo
•Slackware
•OpenSUSE
•SLE, Fedora, CentOS, Mandriva
•Debian
•FreeBSD
36 36
2.2 What is Enlightenment?
• Some Linux distributions are Enlightenment-centric.
• Here is a list:
•Bodhi
•Elive
•HUMANity
•Macpup
•MoonOS
•OpenGEU
•Pentoo
•PCLinuxOS
•Sabayon
•Unite17
•Yellow Dog
37 37
2.2 What is EFL again? • A collection of libraries
•Built by the same team working on Enlightenment
•Built for the purpose of making E17 (Enlightenment 0.17)
•Always focused on staying lean and still providing fanciness
•Almost all development focus sunk into EFL vs E17
•Cover a wide range of functionality due to broad needs
• The heart of the Graphics component of Tizen
• 26% of code for E17 is E17 itself, rest is EFL.
•E17+EFL make up only 50% of code in SVN though
38 38
2.3 History
EFL Imlib2 Imlib/Fnlib
Enlightenment
(0.1 – 0.16.x)
1996 1999 2012 2001
Enlightenment
(0.17)
39 39
2.3 History - Detail
• 1996 – Enlightenment development started.
• 1997 - E1 release
• 1997 – Imaging layer split off into Imlib and Fnlib.
• 1997 – Imlib adds GTK+/GDK support.
• 1999 – Imlib2 combines images, fonts, alpha channels etc.
• 2000 - E16 release
• 2000 - E17 development started?
• 2001 – Evas (using Imlib2 and OpenGL) first appears.
• 2004 - E17 development restarted?
40 40
2.3 History - Detail
• And then EFL really began as more libs were added:
•Ecore, Ebits (later replaced by Edje), Edb (deprecated in favor of Eet), Eina, Embryo, Efreet, EDbus, Ethumb, Emotion, Elementary, Epdf, Eeze.
• 2008 – Elementary hit the trunk.
• 2011.01.29 – 1.0 Release of core EFL.
• 2012.03.24 - 1.0/1.2/1.6 Release of EFL
•elementary 1.0
• 2012.08.30 - 1.7 Release of EFL
• 2012.12.21 - E17 Release
• 2013.01.04 - 1.7.5 Stable Release of EFL
• 2013.01.31 - E17.1 Bug fix release, E18 Snapshot(83478)
• 2013.02 - SVN -> GIT Migration
41 41
2.3 History - Detail
What the World expected was…
2012.12.21
42 42
2.3 History - Detail
43 43
2.3 History - Detail
E17 was released!
44 44
2.4 Carsten Haitzler • A founder of Enlightenment
• A.K.A Rasterman or Raster
• http://en.wikipedia.org/wiki/Carsten_Haitzler
• http://www.rasterman.com/
< Carsten Haitzler >
45 45
2.5 EFL Libraries – Block Diagram
Application / Library
Bindings
Base Operating System / display etc.
Edje
Elementary
EFL
Efreet Eeze Eio Ethumb EDbus
Embryo
Eina
Eet
Evas
Ecore
Emotion
46 46
2.5 EFL Libraries - EINA
Eina is a library for
data types and some useful tools.
47 47
2.5 EFL Libraries - EVAS
E + canVAS
A highly optimized
canvas/rendering library
48 48
2.5 EFL Libraries - ECORE
Ecore is a clean and tiny
event loop library
with many convenience modules.
(E + Core)
49 49
2.5 EFL Libraries - EDJE
Edje is a complex graphical design & layout library.
50 50
2.5 EFL Libraries - ELEMENTARY
• Fast, Finger friendly, Scalable, Themeable, ...
• 80 widgets
•Containers - Box, Conformant, Grid, Layout, Panes, Scroller, Table, …
•Non-Containers - Bg, Button, Check, Entry, Label, List, Icon, Win, ...
• Widget Inheritance
< Scaled and resized relative to the screen> < Same view but different themes>
51 51
2.5 EFL Libraries - ELEMENTARY
clock
colorselector
entry
frame
flipselector check
diskselector
actionslider
bg
index
map
menu photo, photocam
panel
toolbar
radio
bubble
slider
ctxpopup
notify
separator
segment control
multibuttonentry panes
glview
fileselector
Label
thumb
52 52
2.5 EFL Libraries - EMOTION
• Video/Audio Playback library
• Play a video using external plug-ins such as Gstreamer, Xine, VLC
• Integrated with Evas Object
53 53
2.5 EFL Libraries – EPHYSICS
• Physics simulation integration and visual effects.
54 54
2.5 EFL Libraries – ETC.
● Data codec and storage (Eet)
● Bytecode VM (Embryo)
● Freedesktop.org standards support (Efreet)
● Dbus integration and wrapping (Edbus)
● Asynchronous I/O (Eio)
● Video playback glue (Emotion)
● Udev hardware detection (Eeze)
● Thumbnailer & cacher (Ethumb)
● V8 Javascript base runtime (Elev8)
55 55
2.6 EFL Characteristic • Performance
• Small memory footprint
• Various back-end engine
• GUI, Logic separation
• Themeable
• Scalable
• Animations
• Language bindings
• H/W acceleration
• Flexible
• Too flexible
• Entrance barrier
• No many tutorials
56 56
2.6 EFL Characteristic - Performance
• Why is EFL being used as opposed to GTK+ or Qt or
something else?
•Speed
•Samsung used GTK+, X11 and DirectFB (in combinations) and
once EFL was tried, it soundly beat these hands-down in
performance
•Very fast software rendering (for all occasions)
•Solid Accelerated OpenGL and OpenGL-ES2.0 support for many
years
•60fps+ on common smart phones equaling android with higher
quality
57 57
2.6 EFL Characteristic - Memory
• Why is EFL being used as opposed to GTK+ or Qt or
something else?
•Memory (Ubuntu 11.04) beyond base X11 “failsafe” session
•Unity – 168Mb
•Enlightenment 0.17 – 65Mb
●Numbers based on “free” minus disk cache and buffers –
Base 199Mb
•Both Unity and Enlightenment have roughly similar features and
setup
•Compositor (OpenGL), fullscreen wallpaper, launcher, icons,
filemanager, etc.
58 58
2.6 EFL Characteristic - Memory
• Mobile devices ship with limited memory
•128Mb, 256Mb, maybe 512Mb
• These devices almost never use swap
•Flash has limited writes, so swap can hurt device lifespan
• Lower end devices may not have GPU's
•Require decent software rendering to make up for it
• OpenGL has overhead that may not be worth it for all
situations
•Textures keeps speed, but lose memory & more
59 59
2.6 EFL Characteristic - Backend
• X11 (OpenGL, Xlib & XCB)
• Wayland (OpenGL & SHM)
• Direct Framebuffer
• Memory buffers
• PS3 Native
• Windows (D3D, GDI & DirectDraw)
• ETC
60 60
2.6 EFL Characteristic – GUI/Logic Separation
61 61
2.6 EFL Characteristic – Themeable
•Theme is a preset package containing graphical
appearance details.
62 62
2.6 EFL Characteristic – Scalable
63 63
2.6 EFL Characteristic – Animation
• Animations supported by various layers
•evas
•edje
•elementary
•efx
64 64
2.6 EFL Characteristic - Bindings
• Javascript
• C++
• Python
• Ruby
• Vala
• Perl
• …
65 65
2.6 EFL Characteristic – H/W Accel
• OpenGL, OpenGL-ES
• Uses SIMD vector such as MMX, Neon
66 66
2.6 EFL Characteristic – Flexible
• Many libraries
• Many features
• Runs on various environment.
• Modularized
67 67
2.6 EFL Characteristic – Flexible
• Too flexible
• Too many libraries
• Too many features
• Runs on various environment. -> Test!
• Entrance barrier
• Application developers should consider many things.
• -> Spend much time
• -> Recommend to be consulted by EFL open source or HQ EFL team.
68 68
2.7 EFL Open Source Community • Official Website
http://www.enlightenment.org
Mailing List
http://lists.sourceforge.net/lists/listinfo/enlightenment-devel
http://lists.sourceforge.net/lists/listinfo/enlightenment-announce
http://lists.sourceforge.net/lists/listinfo/enlightenment-users
IRC
irc.freenode.net/6667
#e, #edevelop, #e.kr
GIT
$ git clone http://git.enlightenment.org/core/efl.git
SVN
$ svn checkout http://svn.enlightenment.org/svn/e
69 69
2.7 EFL Open Source Community World-Wide Developers
65 Committers
12 committers are working for Samsung
70 70
2.8 EFL Open Source Contribution • http://phab.enlightenment.org
71 71
2.8 EFL References • Official Website
•http://www.enlightenment.org/
• EFL Korean Group
•http://efl.or.kr
• S-KMS EFL Development Forum
•http://kms.sec.samsung.net/club/efl.club
• Elm Demo Tizen Sample Application
• 마이크로소프트웨어 2012.7 ~ 11
72 72
2.8 EFL References • http://docs.enlightenment.org
73 73
2.8 EFL References • http://git.enlightenment.org/core/efl.git/tree/src/examples
74 74
2.8 EFL References • elementary_test
• Source
•elementary/src/bin/test*.c
• run
•$ elementary_test
75 75
2.8 EFL References • elementary_config
76 76
2.9 EFL in Tizen
• Graphics and UI consist of the system graphic and UI stacks, which includes the EFL (Enlightenment Foundation Libraries), an X11-based window management system, input methods, and OpenGL® ES*.
• The heart of the Graphics component, the EFL, is a suite of libraries. It is for creating rich graphics with ease, for all UI resolutions. The libraries build UIs in layers, allowing for 3D transformations and more. The EFL includes the Evas canvas API library and the elementary widget library.
Applications
Applications
Application
Framework Graphics & UI Multimedia Web Messaging Location
Security System Base Connectivity Telephony PIM
Kernel
Linux Kernel & device drivers
Core
Thank you.