miércoles, 3 de septiembre de 2014

GSoC Final Report: Tying up loose ends

So this is the end of the second most exciting project I ever made after the SDL pong game I made when I started to learn programming (those youth projects were welding in my heart, they are hard to overcome :D ). And of course that doesn't mean that this is the end of my GNOME contributions, hopefully I graduate this year and I won't be eligible to GSoC next year but that doesn't mean that my contributions will stop here, moreover with the pending tasks that I already have for 3.16.

GNOME Maps received a lot of love this year, three students including myself was working hard to add some neat features to Maps. Sadly, not everything of this work will be able to 3.14. We actually needed to request a feature freeze exception to include some of GSoC features:

Actually, the Via points feature was merged while I was writing this post :), we worked hard together with Jonas and Dario these last days to get this feature pushed.

The GSoC features may not be present in 3.14 are:

  • Points of Interest, Rishi afforded some technical difficulties during the development of this feature, he needed to make a big refactorization these last days on the POI caching code, you can get more information in this Rishi's post.
  • GNOME Online Accounts Foursquare provider, is very sad to not get this merged this in time because it was in a very pushable state, but The Three Stooges Syndrome affected my communication with GNOME members to create the GNOME app in Foursquare, and that delayed the merging.
  • Check-In feature in Maps, this one was very pushable too, maybe some nits to be solved, also, the delay in the Foursquare provider inclusion affected the inclusion of this feature.
  • Friends check-ins, this one wasn't completed, I dare to say that is 60% completed, some discussion with designers must happen to continue with this.

We hope to have everything mentioned and more for 3.16!

Thank you!

I want to thank to Google and GNOME for give the opportunity to get involved into this wonderful project, it was a really nice experience and I learned a lot. Thanks a lot to GNOME members involved in this project: Jonas Danielsson, Mattias Bengtsson, Zeeshan Ali, Andreas Nilsson. Special thanks to Jonas for his unbreakable patience during the review of my code and constant involvement. Thanks to my GSoC partners: Dario and Rishi, for the inspiring effort they put in their projects and the good willing to work together.

Thank you all!

jueves, 24 de julio de 2014

GSoC Report 4: Stalking your friends with GNOME

More than one month without a GSoC report? Luckily my mentors are so kind to get angry with me ;) . The truth is that I was really busy getting ready for some final exams, but that stuff is finished and I am really motivated to continue.

What was done?

Stalking your friend with GNOME

I started to like the word stalk since I started to play GTA V and got known about the Lifeinvader in-game social network, now this word is coming to GNOME Maps. I was working in a feature to display check-ins from user friends and from the user him/herself. This feature is going to be available only for Foursquare users that have a Foursquare account configured in GNOME Online Accounts. Since I was mostly working in the non-GUI part of the feature I don't have much to show you, just one screenshot:

No! I'm not using maximize and minimize buttons in my environment! that's happening to me with the latest version of Gtk+, dunno why :)

These are markers that Maps will show to represent a check-in (for the current user or for the user itself), obviously, if you press on that marker, a bubble with more information about the check-in will appear, I'm working with Andreas to get a nice mockup for that bubble. Maybe some GNOMErs remember me asking for help in IRC to get a photo with a circle shape, that was what I was trying to do :) .

Maybe you want to get involved in this feature since a have some usability worries that I explain in this Bugzilla comment, any feedback related to this will be appreciated.

Reviews, reviews and more reviews

Now I'm starting to getting some nice feedback from Dario and Rishi (GSoC students working on Maps) about the markers and bubbles I'm coding.

I hope when everything get merged, we will have a really nice maps app for GNOME.

What's next?

Showing check-ins in Maps is the last goal for my GSoC project, so the next tasks is to finish this and work hard to get everything merged before 3.14.


Sadly, I am not going to be in Strasbourg this weekend, not because I couldn't get sponsorship, but due personal stuff. I hope next year to be different, because I really wanted to be there, hacking with you :(

jueves, 12 de junio de 2014

GSoC Report 3: Check-In GUI, markers and bubbles

First of all, sorry for the delay of this report, I was a little busy with non-GSoC stuff. Now I'm back, ready for code and make GNOME better!

In my previous report I told you that I was hopping to have some screenshots for the Check-In GUI that is going to be present in GNOME Maps 3.14, if you got excited after read that (because you got excited, right!!??), you are on luck, I have your screenshots :)

Let's start!

What was done?

Check-In GUI for GNOME Maps

Let's start with some screenshots

If you remember my previous report, I told you the idea of how Check-In is going to work, this is the result. The first and second step are susceptible to don't appear at all. For the first step, if you use just one account for Maps, this step is ommited. For the second step, if we can find the selected POI for check-in in the social service database, we also omit this step, if not, we give a list of found places so the user can select the appropiate place to check-in. The second step emergence depends too much on how similar is Overpass API POI compared to the social network POI (mainly name and nearness)

We discussed with Zeeshan, Andreas and Mattias about using directly the social network API as a POI provider for Maps. This actually will solve the problem of the 2nd Check-In step, but we will keep it simple for 3.14 and discuss if we can do it for a next iteration

In the 3rd step there is a More options expander, this shows options for the check-in like visibility (for Foursquare and Facebook) and Facebook/Twitter broadcasting (only for Foursquare).

You cannot use this dialog directly at this moment because I need some of the Rishi code to get it working (when you click a POI in Maps, a bubble will be shown with the "Check-In" button on it).

You can get more information in Bugzilla ticket #731113.

New markers and bubbles

Do you rembember how current user position marker and bubble looks? Well, it looks like this

Now, I'm refactoring the markers and bubbles code to use GtkPopover based bubbles

Please note that I'm not lost in the middle of the Sahara Desert, this is just an example :)

Actually, this is not the final appereance of the marker, this is work in progress. We will add some buttons in the bubble to perform some actions related to the location. GNOME designers had crafted some mockups some time ago related to the markers and bubbles

Also, I only ported the current user location marker, others markers present in Maps need to be refactored as well.

You can get more information in Bugzilla ticket #722871.

Some progress in GOA Foursquare provider

Now we have an official GNOME application in Foursquare and the review of the GOA Foursquare provider is happening.

You can get more information in Bugzilla ticket #729837.

What's next?

While I wait for more reviews from Gnomers, I'm going to make more progress in the new markers and bubbles, adding the missing new markers and helping Dario and Rishi to port their respective markers to the new code.

If you have any suggestion or criticism on the current progress, this is perfect moment to speak! :D

viernes, 16 de mayo de 2014

GSoC Report 2: Foursquare in GNOME

I know, I know, you just can not wait to read another wonderful post from this blog (sorry, bad joke). Either way, here I am, with another GSoC 2014 progress report.

If you have read my previous post, you'll remember that the next step for this project is to start working with the Foursquare API to implement its backend in GNOME Online Accounts and then, code some examples to perform check-ins in Foursquare.

What was done?

New Foursquare backend in GNOME Online Accounts

As you can see, we have now the Foursquare backend working in GNOME Online Accounts. Fortunately and unexpectedly for me (since I am a ignorant in GObject in C and even more in Autotools), was relatively easy, through existent backend codebase like Facebook and Pocket backends.

This progress is in review process at GNOME Bugzilla and I hope this should be part of GNOME in a matter of days. You can check the ticket #729847 to get more information.

Foursquare Check-In examples

A lot of progress has been made in the check-in code examples, now the code is more service-agnostic and the service-specific code is well separated. During the development of these examples, I've been able to get a more suitable code to be used directly in GNOME Maps

As I hope you remember, this code is available here

Check-In GUI Discussion

Mattias Bengtsson, Andreas Nilsson and I were discussing at IRC about the future GUI in GNOME Maps, we benefit a lot from this discussion since there were certain aspects of social services that should be taken into account during the design.

Broadly, the Check-In will work as follows:

  1. User selects a Point Of Interest (POI) or maybe his/her current location in the Map.
  2. A popover shows with information about POI, a "Check-In" button is showed in that popover
  3. User press the button
  4. An account selector dialog is showed so the user can select the account under which to perform the check-in. If the user has only one account, this dialog is ommited.
  5. Based on the POI information, Maps search a related place page in the social service (Facebook or Foursquare) so we can perform the check-in in that place.
  6. If the social service return to us results with ambiguity (i.e. the POI has more than one related page in Facebook), a place selector dialog is showed so the user can select the correct place. If there is not ambiguity, that dialog is ommited
  7. A dialog is showed to inform the user where he/she is going to perform the check-in and with which account, and also a text entry to associate a message to the check-in. We don't have discussed this yet, but maybe we can add some check-in privacy configuration or other extra options.

Hacking libgfbgraph

During the development of the example code, I've detected some issues in the libgfbgraph library (the glib based library to use Facebook API) related to the OAuth2 Access Token handling. Basically, the library does not use the Access Token provided by GOA, so the applications are forced to reload the Access Token at startup regardless of whether or not the token is expired.

I've discussed this with the library author, Álvaro Peña and we agreed that this must be changed.

What's next?

The next step is to start to code the Check-In GUI that will be used in Maps, so I hope to show you some screenshots for the next report :) .

Stay tuned!

domingo, 4 de mayo de 2014

GSoC Report 1: Checking-in at Facebook with Gjs

Ladies and gentlemen, this is my first GSoC progress report, I hope you enjoy it. As you should remember, my GSoC project aims to integrate GNOME Maps with Facebook and Foursquare. Technically speaking, the project consists in the following modification in GNOME.

  • Add a new Feature called Check-In to GNOME Online Accounts (GOA) (in the vocabulary of GOA, a feature is something like Chat, Photos, Printers, Files, etc.)
  • Add the Check-In feature to the Facebook backend.
  • Implements the Foursquare backend with the Check-In feature.
  • Implements some sort of libraries that holds the API calls logic (there is actually one for Facebook called libgfbraph). Actually, maybe this is not going to be part of the GSoC project for the moment and the logic would be implemented in GNOME Maps source code, but in the future, this should be changed!
  • Add the Check-In related features to GNOME Maps

During the last weeks, I deeply entered to the GOA and Gjs world, my goals for that period was to implement the two first items mentioned above (that is, finish the Facebook backend modifications) and then implements some example scripts that performs Check-In using the Online Accounts configured in the system, plus, some code to be reused GNOME Maps should start to be crafted at this point.

What was done?

Facebook backend modification

The first thing that I did was to implements the modifications to the Facebook GOA backend. Since this backend is already implemented, this task was relatively easy but it helped me a lot to better understand technologies like D-Bus and GObject C programming.

The result? roughly, this fully functional switch (inside the red rectangle) :P

You can check this progress at my GOA development repository, wip-checkin branch

Two example scripts

There are also two example scripts that shows how to perform a Check-In, those scripts only use the Facebook backend since as of today the Foursquare backend is not implemented. One of the scripts, called listFacebookPlaces.js just lists Facebook Places Pages information from geo coordinates and distance parameters, this is necessary since Facebook needs a Place Page ID to associate a user post to a location. The other script, called performCheckIn.js performs a Check-In in Facebook using the message and place passed by parameter.

Both examples uses common code (basically checkIn.js) that will be candidate to be part of GNOME Maps codebase

You can check those and future examples in this repository

What's next?

I think that the next step is to enter to the Foursquare world and its API. The first thing to do is to implement the Foursquare backend in GOA and then, write the examples, as I did with Facebook. This also will help us to understand the particularities of each service so we can design a better GUI to the users of those services. For example, when a was working with the Facebook examples, I had no idea beforehand that I was going to need a list of Facebook Places to get a Place ID, this give us a clue of the existance of a Combo Box or something like that in the future GUI design to allow user to select the place to Check-In, something that would not have imagined beforehand. I expect that something similar will happen with Foursquare.

Stay tuned for more reports!

martes, 22 de abril de 2014

Hello World!

It finally happened! My personal blog is online!

I feel that some of my friends know that this blog should be online 5 years ago when I said "I need to create a blog, right now!", but... you know... I'm too lazy.

Being accepted at Google Summer of Code 2014 for working in the GNOME Project is the main motivation to create it once and for all. I want to thank Google and GNOME to give the opportunity to participate in this amazing project.

In this summer (winter in my case), at GNOME, I'll be responsible for helping to improve GNOME Maps to create the map application that GNOME deserves. My main task would be integrate Foursquare and Facebook social check-in features in GNOME Maps, that means strong work not only on GNOME Maps but in GNOME Online Accounts. Also, I'm going to put strong effort in refactor location markers to use the new GtkPopover widget and open the path to create a more content rich app.

You can get more information about my project in the GNOME Wiki and of course, about all GSoC projects this year in GNOME (the page is a work in progress).

Again, thank you GNOME for give me this opportunity!