ELC2009 – Canola – Application and Framework
Speaker
Gustavo Sverzut Barbieri
Links
http://talks.gustavobarbieri.com.br/elc/europe-2009 http://code.openbossa.org http://profusion.mobi/
Introduction
Gustavo’s talk was presented on Friday 16th October 2009 to a crowd of about 50-60 attendees. In it he talked about his involvement in the development of Canonola, the history and evolution of Canola and how he now continues to use Canonla with the new company he founded, Profusion.
Main points
- Canola is based on EFL using a MVC and plugin like architecture.
- It is open source as of this year.
- It has large following as was demonstrated at the talk. Some of the audience discussed their companies using it for their products which ranged from Internet Radio’s to Home Automation products.
- It is very centered around the UI with finger friendlyness being a high priority.
- It is easy to extend with the use of plugins.
Background
Gustavo started off by explaining how Canola came about. Whilst at Instituto Nokia de Tecnologia (INdT) Gustavo was part of a team to bring a finger friendly, media front end to the Nokia 770 device. What they produced was Canola 1, a project written in C using technologies such as SDL, psedu-object orientation, introspection, callbacks, manual reference counting, it even had a Zope-like plugin system.
This project was highly commended in the community but unfortunately it was closed source. When the idea to produce Canola 2 came to fruition, Canola 1 was end-of-lifed (EOL).
Canola 2
The requirements for the second version of Canola were:
- More animations
- More features
- 3rd part extensible
- All to be done in 4 months
The technologies chosen were:
- Python
- evas for drawing to the canvas
- edje theming system for the UI
- seperating out helper processes to avoid UI slow down but to also avoid legal issues (decoding could be done in a seperate process not distributable by INtD)
- Model View Controller (MVC) architecture.
- plugin architecture similar to Canola 1’s
Components
Canola is made of up the following components:
- atabase for media playback
- download manages for all downloads
- canola-thumbnailer for generating all thumbnails
- canolad to maintain the media database and rescan the file system for new media
- canola – the UI
Canola
Canola, the front end, is just a pretty UI that is capable of loading and
executing terra-plugins. Each plug-in utilises the MVC approach with a model
which has a controller which in turn loads the view. This way the Canola process
acts like a mini OS kernel, loading tasks and executing them only to return on
task exit.
A design decision was made to off load any time consuming, resource heavy of
potentially blocking task to a separate component so as to not block the UI.
Terra
Terra is a framework to help construction of extensible MVC-based applications.
It is built on top of EFL and supports applications in Python.
It is made up of 3 parts, the core, the UI and utils.
The core has a MVC base, a plug-in loader and task manager. The UI implements
many common ‘widgets’ such as lists, grids and screens. Finally, utils is a
collection of helpers that did not fit anywhere else.
Future
It was emphasised that Canola is ‘mostly ready’. There is code re-factoring to do
and some features need a little work (notification area). It must also be noted
that there is little documentation outside of the code itself.
GSOC
Canola was given 5 Google Summer of Code slots this year. All GSOC students chose to develop a plugin with a twitter, bittorrent, picasa, instant messenger and remember the milk being produced to varying degree’s of success.