From OpenStreetMap Wiki
Jump to navigation Jump to search


My name is Bogdans and I am currently acquiring a computer science degree in Eindhoven Technical University. I am taking part in Google Summer of Code 2017 working on the project JOSM: UI enhancements and Main menu refactoring the main purpose of which is to refactor the core modules of JOSM and improve UI of the application. Feel free to contact me - if there is a need ;>

GSoC 2017

This section is devoted to sections listing the weekly progress during the Google Summer of Code 2017.

30.05 - 08.06

The first week was spent mainly on reading and analyzing the code of JOSM. Sounds silly, I know, but the application exists for quite a while and internals are not always so intuitive and obvious to start submitting patches immediately. The idea of GSoC is not about blindly submitting the code, but about improving the project and submitting the code that will certainly work. Because of that I spent most of my time playing with JOSM, tracking the list of open issues, reading the OSM documentation and so on. Despite that I managed to submit my first patch on improving the search dialog of JOSM which was pretty messy at that time. This task is definitely trivial, but it was the first step. Despite that, I also continued working on enhancing the search dialog by extending the language it supports, namely I expect to support for searching presets. The search functionality of JOSM is very powerful and is used often by the users of JOSM. But functionality related to searching for the presets is very limited. For example, the user cannot append resulting OSM objects to the current selected set of objects, the user cannot search for objects of several presets at the same time and so on. The idea is to add this functionality, since most of the code already exists. What is more, I also reacted on the ticket on adding user defined queries which is still not defined properly.

To summarize:

  • Diving into the JOSM codebase.
  • Refactoring the search dialog.
  • Working on extending the query language of the search dialog.
  • Proposing functionality for snippets

09.06 - 16.06

During this week I was mainly focused on extending the search compiler of JOSM to allow the users to search for object by presets. Also, spend some time on testing the feature to ensure that it behaves as expected. According to the pull request on GitHub, there is not much code, but it is worth noting that exploring the code of the search compiler was challenging in some sense ;) The feature seems to be working and the progress can be viewed here.

UPD: It turned out that searching for presets by their 'simple' name is not a good idea, since these can overlap and confuse the users of JOSM. For example, one of the standard JOSM presets has simple name 'Rental' and there are several types :

  • 'Transport/Bicycle/Rental'
  • 'Transport/Car/Rental'

In case of using just a simple name ('Rental') wrong primitives can be matched. To avoid this issue, I am currently working on refactoring the code to use strictly complete names and extend the search dialog with a list of available presets and let users choose them.

17.06 - 23.06

During this period I was mainly focused on finishing the issue explained in the previous part. Here is the pull request that fixes the problem and also adds an additional feature, namely it allows the users to search for objects using two types of queries.

  • Regular query matching objects only of one preset : preset:"Craft/Blacksmith"
  • Query with the wildcard that matches all objects that belong to a certain group of the presets: preset:"Craft/*"

Also added a new GUI component to the dialog that presents all standard/custom presets that are available in an easy, good-looking form. The component allows users to search for presets, by simply typing the presets name in the text field with autocompletion and history of previously typed strings.

24.06 - 01.07

Exam week

02.07 - 09.07

Finally submitted the last version of the preset search functionality. From now regular and generic queries are supported.

Started working on merging the 'Download from OSM' and 'Download from Overpass API' dialogs, as well refactoring the latter in order to make it more useful.

10.07 - 17.07

This week I expected to mainly focus on merging two download dialogs, but it appeared that the 'Download from Overpass API...' dialog is very messy and completely not user friendly. It was decided to focus on it, clean it, refactor a bit, and make easier to work with it. In addition, I have also found out that the full of power of the Overpass Turbo Query Wizard cannot be used completely, since some modules of JOSM were not designed to support it. Some queries cannot be processed, some of them require the users to perform unnecessary actions to make things work properly.

Here is related pull request.

18.07 - 25.07

This week I was mainly focused on finishing and adding final touches to the component, which displays history of all Overpass queries executed by the user. The following ticket is the result of this. Besides that, the community proposed to support the newest feature of overpass-turbo in the component. Namely, synchronizing the queries from Overpass to JOSM. This enhancement is described in this ticket.

26.07 - 02.08

During this week I decided to focus on some minor issues and improvements in order to do not waste time while waiting for the previous patch to be applied and continue working on it. Here is one of the pull requests that disables items on the main menu when all of their actions are disabled.

At the moment of writing this, the audio menu in JOSM is always available, even if no audio samples are present. In some cases usage of this menu can cause JOSM to crash, for example, when at least a single data layer is loaded and the 'Back' action is executed. Solution to this issue is present in this pull request. Tickets :

03.08 - 10.08

Spent some time refactoring the item from the previous week, namely the one disabling the menu's without active items in it.

This week I started working on merging two download dialogs as already mentioned earlier. The progress can be seen in this commit list.

Also, some discussions araised devoted to my snippet list patch. The JOSM users proposed adding some additional functionality to it. The result can be seen in this pull request.

11.08 - 22.08

Finally submitted the last version of refactored download dialog, this can be found here.


This section contains a concise list of my contributions during the GSoC 2017 and the corresponding links. For each item in the list I provide links to the josm website with explanation of the fix/enhancement, the code and the pull request on github if present. It is worth noting, that I was mainly working using git, while the source code for JOSM uses svn, so none of my pull requests were merged on GitHub, but it is shown in the ticket whether the code was merged. Also, submitted code and merged code might be different, simply because mentors/contributors sometimes refactor the code a bit according to some tooling.

  • New GUI for the search dialog. Structured all items in the dialog. MERGED.
  • Extension for the search compiler to search for presets with tests and new component for listing presets in the search dialog. MERGED.
  • Created new dialog for the Overpass Query Wizard tool, refactored the download dialog, added new component to save executed and user saved queries. MERGED
  • Disable the audio menu when no audio file is present. MERGED
  • Disable menu items without enabled items. NOT MERGED
  • Completely refactored download dialog, gui and design. The new design allows to add new download sources easily, for example now plugins can custom download sources. MERGED.