My final report for GSoC 2018

The Google Summer of Code 2018 is coming to an end for me, so it means that it’s time for the final report!

The tasks

The tasks that I’ve actually done are quite different from my initial proposal, the reason of this is because Julian (the other GSoC student working on Fractal) and I applied for the same project and we were both accepted for it. However, there were some different tasks we were proposing (we respectively have done these tasks) and our mentor reassigned for us the tasks we had in common. Especially for me as he proposed me to do many other tasks so I may have ended up doing even more than what I initially planned to do! So I haven’t done all the tasks I proposed but the tasks I haven’t done was done by Julian and I still have done a lot of other improvements. All of my merge requests has been merged into the branch master of the Fractal repository. So now, let’s talk about the tasks in more details.

Localization support

My first task was to bring the internationalization for Fractal. I completed this task during the first week of the working period: I’ve implemented the localization support, written a first French translation and written some blogposts about how to use gettext in a Rust program.

The code used for the internationalization of Fractal has been also used in GNOME Podcasts.

Here are my merge requests related to this task:

The redesign of the room directory

Then I’ve moved on working on the redesign of the room directory. For this task, I had to improve the layout of the room directory by moving the search bar to the header bar, revamping the layout of the search result and implementing the ability of searching rooms on arbitrary homeservers.

There is only one thing left to do: enclosing the GtkListBox into a column whose width varies according to the width of the window. It couldn’t be implemented as this feature will use a custom GTK+ widget that is still being developed in libhandy (HdyColumn).

Here is what the new room directory looks like:

Capture du 2018-08-08 12-13-24.png

Here are my merge requests related to this task:

The media viewer

I’ve created a media (although for now it only works with pictures) viewer for Fractal. Its purpose is to easily have a better view of the images within a room, to be able to zoom in and out of them, to navigate between the different images of the room in the chronological order, to enter in a full screen mode and to save a copy of the media in the filesystem. I made a first implementation and then had to do a lot of other improvements. I’ve spent about a month working on it.

There is still the need to improve the zoom of the media viewer as the pictures are a little bit blurred and it’s not possible to zoom beyond 100%. There are optimizations to do as the application becomes very slow when trying to zoom beyond 100% on large pictures.

Here is what the media viewer looks like:

Capture du 2018-08-08 12-27-31.png

Here are my merge requests related to this task:

Improve the behavior of the “New Messages” divider

For this task, I couldn’t completely implement the behavior of the divider as Julian was working (and has been until the end of GSoC) on a big refactoring of the message history and it would have been useless to do it before the completion of the refactoring. There was also no complete design for it. However, I could work on fixing its behavior (it was marking the user’s own messages as new and could not appear at all sometimes) and add the ability to refresh the last viewed message at each start up.

What is left to do with it is to define how and when the divider should disappear and what should be done when entering a room with new messages (should we jump to the first new message? ask for the user if they want to do that? do as if nothing happened?).

Here is what this divider looks like:

Capture du 2018-07-13 10-47-30

Here are my merge requests related to this task:

Multiline message input

The message input area was using a GtkEntry before but this widget wasn’t good if we wanted to have multiple lines in our message. So I’ve replaced it with a GtkSourceView in order to be able to insert new lines with Shift+Enter and to have syntax highlight when Markdown is enabled.

Here is what the new message input with Markdown highlight looks like:

Capture du 2018-07-23 19-09-39

Here are my merge requests related to this task:

Message context menu

This is one of the two last tasks I’ve worked on, I had to implement a context menu for the messages which would be opened by a secondary click. There would be many options (for quoting, copying text, deleting a message or viewing the JSON source of it) in the menu. I’ve worked on many fixes after the first version of it.

There is still some work to do like making the context menu aware of when we are clicking above a link (so that a user can copy this link) or hiding the “Delete Message” option when the user doesn’t have the right to do so.

Here is what the popover looks like:

Capture du 2018-08-06 17-07-30

Here is what the “Message Source” window looks like:

Capture du 2018-08-06 17-08-46

Here are my merge requests related to this task:

Improve the styling of quotes

My last task for GSoC was to improve the styling of quotes in the message history by making the text of quotes dimmed, with a 6px left marge, a 2px blue border and with a vertical space between quotes.

Here is what it looks like:

Capture du 2018-08-01 19-09-36

And finally, here are my merge requests related to this task:

Conclusion

This experience has been really rewarding for me. I could discover the GNOME community, know how much people put a thoughtful work into building and making GNOME progressing. They are very welcoming and inclusive and that’s something that I really liked. The Fractal community is great too. I want to thank my mentor, Daniel García Moreno for his guidance. I’ve never thought that I could be able to do this much and I’m proud of being currently one of the three main contributors on the Fractal repository! Julian and I could deliver many improvements for Fractal during this time.

GSoC has also allowed me to greatly improve my general programming skills, my knowledge about git, GTK+ and doing real world programming. And I am way better at witting Rust programs now!

Mid-September, I will start my class again for the first year of my master degree (software engineering) at Sorbonne Université so I will have less free time but I will definitely do my best to continue my contribution to Fractal and write some blogposts. I will apply to become a GNOME Foundation member in some mouths. I would also really like to continue to work on my library rlife and then create a new GNOME application for cellular automata with it.

Advertisements

2 thoughts on “My final report for GSoC 2018

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s