Summer of Code 2013 – Progress Report #2

Things are going pretty well since my first progress report: route synchronization feature is almost complete! Marble users can store their routes on ownCloud easily now. All they have to do is to click to “upload to cloud” button when viewing a route. But first they need to tell Marble which server it will use for synchronization purposes. Users can use Marble’s own configuration dialog to do that:


By the way, adding KWallet support is on my to-do list.

Users can use “cloud routes” dialog to manage their cloud routes.

Cloud Routes Dialog

The first route is a route which is on the cloud and ready to use offline. The second route is already saved to user’s device, but isn’t on the cloud. For example routes which are created when offline will be in that situation. Users can upload those kind of routes manually by clicking to “upload to cloud” button. After I implement bookmark synchronization, I will also enhance route synchronization so Marble will upload those routes when there is a network available. The third route is on the cloud but not saved to the device. Users can download those routes to their device by simply clicking to “load” button. Also, when I enhance route synchronization those routes will be downloaded automatically by Marble. Don’t worry though, I will add an option to settings dialog so users can disable those automatic actions to preserve their precious data plans.

You can test the things I mentioned above yourself (and see how awesome they are :P) by cloning Marble’s master git branch. You can get the 3rd party ownCloud application that you need to install from Andrei Duma’s GitHub repository. We plan to setup a demo server with the Marble ownCloud application later as well.

That’s all for this update. Stay tuned.

Summer of Code 2013 – Progress Report #1

My Google Summer of Code project, “Codename: Marblecloud”, will help Marble users synchronize their routes and bookmarks between their devices using ownCloud. Sounds cool, right? It will also pave the ground to synchronize all user data in the future when it is complete. To accomplish this breathtaking mission, a 3rd party ownCloud application which provides an API needs to be created along with necessary classes and interfaces for Marble. Andrei Duma, another Summer of Code participant, is developing Marble’s ownCloud application while I develop the client side.

You can follow Andrei’s work on GitHub.

We first started implementing route synchronization. It is easier than bookmark sync, because bookmark sync requires merging and conflict handling. So far Marble can upload routes to cloud, display a list of cloud enabled routes and download routes from cloud.

Routing Widget with new buttons

Routing widget with its shiny new cloud related buttons (icons are not final).

You can see Marble’s new cloud buttons residing right next to the save button. The one on the left uploads the route currently displayed to cloud while the other one brings up cloud routes dialog.

Cloud Routes Dialog

A new dialog which displays a list of cloud enabled routes.

This new dialog lets users view routes on their cloud. Users can download the ones they like or uninstall routes from their devices by simply clicking to “remove from cache”. If they want to get rid of the route completely, they must press to “remove from cloud” button after removing the route from cache.

The next step will be implementing an ownCloud account manager. For now Marble communicates with a dummy API but after the creation of account manager, testing will be made with the real API which Andrei develops.

Stay tuned.

Around You

Good news, your favourite virtual globe Marble now is your virtual explorer!

In parallel with the world domination plan, Dennis is porting Marble to Plasma Active and as my Season of KDE project, I am trying to help him as much as I can. To help users to find the places around them, I created Explore activity, an activity that displays popular places on the map and allows you to get additional information about these places. It uses Foursquare’s rich venue data powered by its users. Here is a screencast about it:

You can test it out by downloading and compiling Marble’s git branch sok-2012-plasma-active. Any suggestions? Write a comment below.

My Kindhearted Assassin

Not a long time ago, when I was surfing through my spam box, I saw the most interesting spam mail sent to me. Here it is:

Good Day,

I want you to read this message very carefully and keep the secret with you till further notice. You have no need of knowing who i am, where am from, till i make out a space for us to see, i have being paid $25,000.00 in advance to terminate you with some reasons listed to me by my employer, it’s one i believe you call a friend, i have followed you closely for one week and three days now and have seen that you are innocent of the accusation. Do not contact the police or F.B.I or try to send a copy of this to them because if you do i will know, and might be pushed to do what i have being paid to do, beside this is the first time i turned out to be a betrayer in my job.

Now listen, i will arrange for us to see face to face but before that i need the amount of $50,000.00 and you will have nothing to be afraid of. I will be coming to see you in your office or home determine where you wish we meet, do not set any camera to cover us or set up any tape to record our conversation, my employer is in my control now. You will need to pay $20,000.00 to the account i will provide for you, before we will set our first meeting after you have make the first advance payment to the account, i will give you the tape that contains his request for me to terminate you, which will be enough evidence for you to take him to court (if you wish to), then the balance will be paid later.

You don’t need my phone contact for now till am assured you are ready to comply good.

Lucky You.
Andrew Hell Sniper.
International Assassin!

Google Code-in, Marble and I

Tomorrow, Google Code-in will end. I spent nearly all of my month by participating to it and it has been one of my great experiences. Thanks to the contest, I’ve learnt a lot of things, met with people from different projects and communities and became a KDE developer.

At the moment, I have completed 21 tasks and 20 of them is Marble’s, my favorite virtual globe. I have created two online service plugins, a map creation wizard and DGML tag writers for it. And in case you wonder, my other task was a Plasma task, I’ve created three activity templates and improved an existing one.

The online service plugins which I have created are earthquake and OpenDesktop community plugins. Earthquake plugin shows recent earthquakes and their magnitudes on the globe. Each magnitude range is shown in different colors.

Earthquake Plugin in Action

Earthquake Plugin in action

And OpenDesktop Community plugin shows OpenDesktop community members’ avatars on the map.

OpenDesktop plugin showing users

The wizard which I mentioned helps users to create new maps easily. It can create three kinds of maps,

  1. Static image map (a bitmap of whole world)
  2. Static URL map (maps like OpenStreetMap and Google Maps)
  3. WMS maps (maps of Web Map Service providers)
Step 1

Step 1: Map provider selection

Wizard Step 2

Step 2: Map provider's details

Step 3

Step 3: Your map's information (name, desc. etc.)

Being part of Marble community was a great adventure for me; getting help from people when I stuck, showing off my work, commiting my code to KDE’s SVN repositories and more.

If you want to get involved and contribute, visit Marble’s webpage. You can get involved with coding, documentation, artwork and promotion of Marble.

Lots of helping hands have contributed to Marble... join us!

Special thanks to Torsten Rahn, Dennis Nienhüser, Thibaut Gridel and Bernhard Beschow I couldn’t do anything without your help.