Page MenuHomePhabricator

Develop 'browse' feature in the Wikimedia Commons app
Closed, DeclinedPublic


Profile Information

Name: Grigoletto Riccardo
IRC nickname on Freenode: Riccardogrigo
Web Profile: LinkedIn , GitHub
Resume (optional): resume
Location (country or state): Italy
Typical working hours (include your timezone): 9 AM to 12 AM and 14PM to 17PM (UTC +1:00)


I am really interested in this project for different reasons. First of all, as a Wikimedia foundation donor, I strongly believe in the importance of the goal that this organisation is pursuing and in the projects that is currently developing. Secondly, I have acquired both theoretical knowledge and practical experience in Android app development and I really like to build apps. Furthermore, I have already worked (collaborated) with the Wikimedia commons app as described in the third chapter. Moreover, I would like to connect and keep in touch with developers and IT passionates all over the world and GSoC is a good network to do so. Finally, I am looking for a summer job in between the end of the Bachelor’s degree and the beginning of the Master’s courses, later on next September.

This project’s purpose is to develop a new feature of the Wikimedia Commons app. This feature will let users browse images uploaded in Wikimedia Commons, as suggested by some users. In order to do so, a project schedule has been proposed by the mentors and it is described in the next chapter, along with a calendar of the work I am going to implement. I have already started to familiarize myself with the source code as well as with libraries and APIs which have been used in this project. Furthermore, I have started to engineer the new feature using a use case and I have already developed a “browse” list as described in the “past experience” chapter. I have reused some classes and I have built new ones using the same criterias to gain readability and reliability.

I am already in contact with the mentors of this project: Vivek Maskara, Neslihan Turan and Nicolas Raoul.


Project schedule
The Project schedule proposed by the mentors:

  1. Get familiar with the scrolling list of recently featured images, test it and fix any bug
  2. Add search button
  3. Use the Mediawiki API to make the search button list results
  4. Restrict the search results to images, or make sure no crash happen when opening exotic formats such as SVGs or sounds
  5. Release (at least in alpha), write documentation, test, fix bugs
  6. Modify the search button to also search for categories
  7. In the same results list, also show categories
  8. Implement the category activity, which shows the sub-categories and the images present in that category
  9. Release (at least in alpha), write documentation, test, fix bugs
  10. Bonus if time allows: modify the category activity to show the best images first. Ideally it should be recursive, so that the activity for Category:Butterflies shows good images in subcategories (images that have not been moved to a sub-category are usually not great images). To do that we could possibly query FastCCI if we can find a way to make it work reliably.

Legend: PRS stays for the Project schedule mentioned above.

23th AprilStudent Projects Announced
23th April - 14th MayCommunity Bonding. Connect to and stay in touch with mentors, read documentation and gain fluency of Mediawiki APIs and libraries used in the app, such as ButterKnife, Renderers, Dagger etc. in order to build code that will be well-integrated and well-structured. Design UI for the browse activity and media cards for the browse list, design the class diagram for the browse feature. Create and populate milestones board and calendar events (we can use Trello and/or Google calendar).
14th May - 6th August (cluster)Coding.
14th May - 27th May (2 weeks)Coding. (PRS: 1) Implementation of the UI and the scrolling bar of the feature images. Test and debug this part.
28th May - 3rd June (1 week)Coding. (PRS: 2 and 3) Add the search button for the scrolling list and make it filter the list and obtain the right results from the Wikimedia APIs
4th June - 17th June (2 weeks)Coding. (PRS: 4 and 5) Test and eventually build of the handler for exotic formats of media. Test the new feature and prepare a release for the next step.
11th June - 9th July (cluster)Evaluations. Mentors and students submit their evaluations of one another. These evaluations are a required step of the program.
18th June - 1st July (2 weeks)Coding. (PRS: 6 and 7) Extend the search results to categories and UI.
2nd July - 15th July (2 weeks)Coding. (PRS: 8) Mockup and Implementation of the category activity
16th July - 22th July (1 week)Coding. (PRS: 9) Test and debug for the second release.
22th July - 5th August (2 weeks)Coding. Extra time to set up the possible workload left behind or implementing the PRS 10.
6th August - 14th AugustStudents Submit Code and Final Evaluations.
14th August - 21th AugustMentors Submit Final Evaluations.
22th AugustResults Announced.


I am planning to communicate progress and managing milestones by using a virtual card board and other tools available in Phabricator. Alternatively, we can use Trello or others web platforms. Each significative upload in the board will be notified to mentors that will be able to view, comment and modify cards.
I have already forked the source-code repository from GitHub, I can write new code in there and then make a pull request (PR) in the official repository at the end of any “release” period.
Working on forked repository enables me to commit upgrades and push them with useful notations and messages attached, moreover mentors will be able to view my code and where necessary modify it or directly collaborate with me.

About Me

I am graduating in Computer Science at the end of March at the University of Trento. The Bachelor’s degree I am attending is a 3-years academic program whose goal is to train people to get to know the basic theoretical and practical tools of computer science.
I am an IT passionate, tireless coder and curious traveler. I like building software in teamwork and participating to open-source projects. In my GitHub profile there are many repositories in which I collaborated with several University colleagues.
In the future I would like to work as a software developer in a multinational company offering innovative IT products associated with autonomous systems, green economy and cloud computing. In my spare time I took part to hackathons, I like reading novels and I am really keen on mountain activities like hiking, snowboarding and climbing.

GSoC is well-known my University and outstanding students are encouraged to participate. As a result, every year there is at least one student who is accepted at GSoC.
This project for GSoC 2018 edition is particularly appealing to me because I am a Wikipedia enthusiast and a Wikimedia Foundation donor. Firstly, participating in this project will enhance a lot my personal career because I will work in a international work environment, I will get in touch with IT passionates from all over the world and I will learn advanced (mobile) programming and (refine) software engineering skills (of mobile programming).
Secondly, I will have the opportunity to put into practice all the theoretical principles I have studied during the university courses and also to gain experience in Android development.
Finally, I am currently looking for a work experience for the next summer because I am graduating by the end of March and the Master schools I am going to apply for will begin in September 2018. Starting from the Community Bonding period I will have the possibility to work full-time in the project.
For those reasons the participation in this project means a lot to me and I perceive this as a great personal success as well as an important step towards my dream career.

Past Experience

Wikimedia commons app - browse media

First of all, I got in touch with the mentor Mr. Vivek Maskara to get further information about this project and the other Wikimedia Commons app project, then I decided to build a prototype of the browse list to show my skills in Android programming (the prototype video is available here). This work was approved with enthusiasm by Mr. Maskara and by the other mentors. Then I proposed some tools and solutions for the project in the GitHub issue #1221. After that, I created and have started working on a class diagram available in the next chapter. As you can see I tried to use the same structure and similar classes and functions names in order to enhance readability for contributors and developers as well as reliability for users. Please, find out more in the GitHub issue comments #1221. In the meanwhile, I found a small bug in the “nearby” list. I fixed it and made a pull request #1293.


I attended a Mobile and Tablet Programming Lab last year at University; during this course we used Android as operating system and the exam was about building and presenting an app in teamwork of maximum 3 members. I lead a group of 3 students. We developed an android application to help students to manage their study schedule. The app shows an overview of the courses the user is attending as well as the right amount of time the user should spend on them. StudyTracker automatically creates study sessions in Google Calendar App and comes with a timer that helps with the time management. We also developed a module for wearable devices. Code and screenshots can be found here and a video of the app and a use case here (in Italian). A complete report of the work done is available in Italian.
In order to build this App, we have followed a classical software engineering procedure. We have started by brainstorming the key ideas and the sketches. Then, we gathered user requirements (questionnaire filled out by more than 800 students and analysis of the results using a Python 2 program we developed), after that we started to mockup the various activities according to the user requirements and designed the database (Google Cloud Firestore) and in the end we implemented the app.
We used different tools of Google Firebase and external libraries. The app got 27/30 grade, higher than the average mark. We used Trello for cards board and GitHub for the VCS. Please find attached some screenshots of the app in the last chapter of this document.
I attended courses that can be useful for the project I am applying for such, as Human-computer interaction (HCI), Object Oriented Programming (OOP) using Java and Database using PostgreSQL. You can find a complete list of courses I attended in my LinkedIn profile.

Job experience

Doing 3 months internship is part of the educational goals set by University of Trento and is mandatory for my Bachelor’s Degree. Therefore, last spring I have started working for a web agency in Trento for about four months; at the end of this experience, I have been hired by that web agency and I have worked there for the following six months. Unfortunately, I had to quit that job in order to successfully and quickly obtain my bachelor’s degree.
During this job experience I achieved different goals such as: active participation in teamwork; development of commercial softwares; advanced study of web programming methodologies and technologies; analysis, redesign and implementation of responsive web pages and I developed some skills such as: teamwork, ability to meet deadlines, organization and proactive mindset.
I gained advanced experience in web portals and CMS development. I used different languages and framework such as: JavaScript, AngularJS 1, jQuery, Bootstrap, HTML, CSS, ASP, VB, MySQL and others.

Open source projects and github personal repositories
This is a project made by seven University colleagues and me for the Web Programming exam. The goal was implementing a tripadvisor-like website for restaurants. The website provides different services for users and restaurant owners such as: upload of restaurants, update of them, visualization of restaurants by grids and lists, the position of them can be changed by position, category and price range, you can search restaurants with an autocomplete text field.
This is a program in C made for the practical side of the final exam for the OSs course. This program aims is to look for text pattern in a text file using system calls.
These repositories contain code snippet of my work experience as web developer.
This is the project I developed for my Bachelor thesis, it is an open source JavaScript library for web analytics.

I debugged an open source library for
and opened an Issue:

Any Other Info

Wikimedia commons app - Browse feature class diagram (incomplete)

Wikimedia commons app - Browse feature class diagram.png (628×871 px, 67 KB)

Wikimedia commons app - Browse list prototype

You can find the video at this link:

Study tracker screenshots

3.png (1×1 px, 123 KB)
4.png (1×1 px, 122 KB)
7PNG.PNG (251×252 px, 14 KB)