GNOME hacking in Guadalajara :)

Great news everybody!

I finished some hours ago to give my first GNOME talk at my University :) The talk was called “GNOME Hacking in Guadalajara” for no specific reason other than “GNOME Hacking in Florence” seemed to be less cool. And for some hours, I have been Cosimo Garcia Lopez, a mexican uber-cool hacker ;) The event was organized by LILiK, a stuednt free software lab I am member of.

Alessandro made an introduction about what GNOME is, and I talked about the cool libraries we have inside our platform, writing in about an hour as example, a little app that plays with libempathy and GIO to get Jabber messages and downloading http uris we receive, opening them with the default application. I ended the talk promoting bugzilla and encouraging people to spread the (GNOME-)love and start writing patches now!

The room wasn’t much crowded, but the people there were really interested and made me a lot of questions about GTK+ and GObject. I am quite proud of this little achievment…if someone an year ago told me I was going to hold a talk about developing GTK+ applications I would have laughed at him :)

guadalajara

== Summer of Code ==

In other news, I’ve made some more progress on the filtering API for MediaManager, but haven’t had the time (due to the talk) to write any tests yet. More about this on the next weekly report.

MediaManager, week 2

Hey, so the second week is over, and I managed to complete all the tasks I set for this time! :)

== Work done this week ==

Until friday I’ve finished the first implementations of MMHitCollection, MMHit and MMFilter (though the last two do not do anything interesting yet). Also, I’ve spent quite some time setting up all the autofoo needs for the project, generating libmmanager.so.

Then, I’ve written a simple applications to test the backend side of the API and another simple one to query the results, and after a bit of struggling everything seems to work fine.

Starting from today, I’m working on the implementation of the filter side.  I tried to think a clever and extendible API for queryable attributes: so we have an extensible MMAttributeManager interface, which inside the library is implemented by MMAttributeBaseManager, MMAttributePhotoManager and so on, but it can provide any kind of attribute details, so it would be easy to write implementations for other kind of things. Its duty is to list and create all the possible attributes for a speficic media type. The atributes created by the manager should only contain a type, a name and a description.

So, a MMFilterParam is created, with a MMAttribute, an operator (equal, greater, less, …) and a value. By setting one or multiple MMFilterParams on a MMFilter you can actually query the application database to obtain your hit collection. Finally, a MMHit will contain an hash table of the MMAttributes with actual values relative to the object.

All of this is not yet implemented, though I started coding it today and some things are already there (untested).

== Plan for this third week ==

- Finish the filtering part.

- Code some “real-life” tests for the filtering API.

- (optional) Start investigating the D-Bus API.

I’d really like to finish the backend + D-Bus part until the end of June, to have the time to discuss it with someone at GUADEC and then have a full month for the GTK+ part and to iron out what’s wrong.

That’s all for now :)

Hello Planet :)

Hi everyone, this is my first post ever on Planet GNOME!

First, I’d like to introduce myself: I’m Cosimo Cecchi, I am 22 and I am from Florence, Italy. I am in the third year of Computer Engineering at the University of Florence. I already contributed to some GNOME modules during the last year, and I really enjoyed it! So I decided to try the Google SoC under the GNOME flag. I am glad I have been accepted for my GtkMediaManager idea [1], and I really look forward to accomplish it.

Here’s a report of my first week of work for MediaManager.

After some time spent on designing a good architecture for my project,
some days ago I started the actual coding, which is being done in a
public git repo [2]. Nothing is working/compiling yet, but I feel the
project is shaping up quite nicely.

Also, I spent some time contacting my mentor, Nicolas Trangez, to hear
his opinions on the design I made, before start coding, and he gave me
some nice ideas that I am looking forward to implement :)

== Brief overview of the architecture ==

Among the two choices I had in my project description (Xesam vs
application provided plugins) I went for the plugins way, but I am
trying to design it in a way that the manager could be easily extented
to support a Xesam plugin too.
So, applications can ideally implement the manager interface in two
ways: installing a .so in a well-known place and letting GModule do the
magic, or installing a .desktop file and using a D-Bus activated
service. This is to make it easy for applications written e.g. in Python
or C# to use the interface provided by the library. I am currently
implementing the GModule part, the D-Bus interface will come a bit later
(when I have the GModule implementation up and running).

On top of this, the manager library is about Applications, Categories
and Hits. A Manager object keeps track of the available applications,
and an application has mainly the following methods:
- GDesktopAppInfo getInfo ()
- GList getCategories ()

A Category is a subset of the content managed by the application (e.g. a
playlist, “Last Roll”, …) and each application has at least one
category (the whole library). They are provided by the application and
they can be queried to retrieve the “real stuff”. A category should have
the following methods:
- GIcon getIcon ()
- char getName ()
- HitCollection getHits (Filter f)

Hits are the “real stuff”, as they resemble the real content managed by
the system. A Hit have some generic methods like
- getName ()
- getUri ()
and the most important GFile getFile (), which I think will be
implemented in a separate subclass (HitFile) as it can be useful to
decouple the Hit from the GFile for some use cases.

Filters instead are objects on which you can set the attributes that the
application has to query on. The library will provide specialized
filters for a specific type i.e. PhotoFilter, MusicFilter,
VideoFilter, …, which will contain all the possible attributes for
that media type.

On top of this, I will eventually write libmmanager-gtk, which will
contain widgets for data provided by libmmanager.

== Weekly Status ==

As I already said, nothing is working or compiling yet, but I am quite
happy of how the project is coming up.
I have written (but not tested) a GTypeModule subclass to handle .so
files, a manager for modules, the providers to interact with the modules
and some code to handle Applications and the global manager.

Next week I plan to finish a rough implementation of Categories, Hits
and HitCollections, to make all this compile and then to write a test
program to drive further development and to test whether the API I
designed is really worth.

[1] http://code.google.com/soc/2008/gnome/appinfo.html?csaid=15C2B5BC19A9276A

[2] http://repo.or.cz/w/mmediamanager.git

Summer of Code 2008

I’ve ever resisted the temptation to open a blog, but the fact that I’ve been accepted for Google Summer Of Code 2008 is just too cool and deserves some blogging :)

A little but about myself: my name is Cosimo Cecchi, I am 22 and I live and study in Florence (third year in Computer Engineering). I’ve been doing some work across various GNOME modules in the last year (Epiphany and Nautilus mainly) and really had good time doing it and knowing some people from the community. So when I saw Calum’s post about media integration in the GNOME desktop, I thought that was a good job to work on for a Summer Of Code project so I applied for it, and guess what, I was accepted :)

I’ll blog about the details of my project later, now I’d like to thank some cool people for the support and the ideas they gave me and also I’d like to wish a good luck to everyone involved in GSoC this year!