GSoC/GUADEC: Wrapping Things Up

The Google Summer of Code is slowly but surely coming to an end and it’s time to start wrapping thing up for the final evaluation. The documentation cards have been officially pushed to the master of the GNOME Builder and last couple of days were spent just tweaking the feature and going through the code reviews.

I would also like to take a quick look back at the amazing GUADEC that was held in Manchester this summer and share some of my photos. I was so glad I could attend and connect the faces with the people I have only met online.

1DSC_5859

GUADEC kicked of at MMU’s Birley Campus with series of talks varying from technical updates of tools to strengthening the community and the principles which it stands for.

4DSC_5869

The social calendar was packed as well, making it very easy to meet and get to know a bit all the amazing people who have been part of the for years. Including, for me the highpoint of the events, the GNOME’s 20th birthday celebration held in Museum of Science and Industry. If you haven’t yet, don’t forget to checkout the GNOME’s birthday page.

The last days in Manchester were spent in nearby Shed providing space to discuss and work on ideas surrounding GNOME.

Hope to see you all next year!

asponsored-badge-simple.png

GSoC: Reworking the Structure behind Documentation Cards

Another couple of weeks have gone by and since finalizing the design of the documentation cards, I have focused more about the underlying structure and testing.

There has been a lot of work put in the gathering and parsing of the information from devhelp so it make sense to make it accessible not just to documentation cards. So documentation provider IdeDocumentation was created to provide the information to any plug in that can make use of it. Now it only gets information from Devhelp but in future it will make it easy to append any other provider of documentation. There is now no reason for the Documentation cards to be part of the Devhelp plugin anymore and it can be plugin on it’s own using the IdeDocumentation to get the information. So generally the new additions to the code made it more open for extensions and accessible to other plugins through

IdeDocumentationInfo *
documentation_get_info (IdeDocumentation         *doc,
                        gchar                     *input,
                        IdeDocumentationContext *context);

where the structure IdeDocumentationInfo contains all the information it managed to get from the providers.

In preparation of getting the new feature integrated, I’ve spent some time on testing of the feature. Making sure it works for different types of documentation and you know doesn’t crash. Hope it will be ready to added to main soon and will be available for everyone to try out.

GSoC: Readable Redesign, Documentation Cards

Following the previously devised plan, I worked on the design of the documentation card, making it more readable. The main concept stayed the same, using the GtkPopover to display the small card with input and output types of the function on hover.

Screen Shot 2017-07-12 at 18.30.03

If needed giving more information about the function by clicking “Show more”.

Screen Shot 2017-07-12 at 18.29.50

Screen Shot 2017-07-12 at 18.29.57

The styling is done by using the Pango text markup language, since it can be inserted in GtkLabel using function gtk_label_set_markup (). Also you can notice direct access to the documentation on the bottom of the card.

The current implementation of documentation can be found here. Any feedback will be appreciated.

So what next? Next task at hand is making the support of providing documentation open for extension by making Devhelp just one of the possible provider of information.  By detaching the documentation support from Devhelp more features will be able to use the information (such as autocomplete) and in the future more provider of documentation information can be added.

GSoC: Show Me More

Last time we spoke the documentation was temporarily implemented using the GtkTooltip, making it simple to show the snippet of the documentation but imposible to make it interactive. That’s where the GtkPopover came in.

This widget provides options to mimic the behavior of the tool tip yet provides interface to customize the content to accommodate all the planned features. Now we can add more information from the documentation without taking up the entire screen.

Screen Shot 2017-06-25 at 15.29.04

Screen Shot 2017-06-25 at 15.29.07

The design aspect of the card is still bit lacking since I have still not committed to how the XML file with the documentation is going to be parsed. Balancing the fact that there is no need to analyze the entire file, yet some more knowledge of the structure would help with better ability to style the text.

The current implementation of documentation can be found here. Any feedback will be appreciated.

If the card doesn’t want to show up, you might want to check the right panel if you actually have the documentation. I haven’t found a centralized system for all the documentation but if you install a package *-doc the specific library it will be automatically added to your Builder through Devhelp, for instance:

  • gtk3-devel-doc
    • GTK+ 3 Reference Manual
    • GAIL Reference Manual
    • GDK 3 Reference Manual
  • glib2-doc
    • GLib Reference Manual
    • GIO Reference Manual
    • GObject Reference Manual
  • webkitgtk3-doc
    • WebKitGTK+ Reference Manual

GSoC: ToolTip Guidance

After first couple of days I’m starting to get an inkling of the outcome of the project. The basic thought is to provide in convenient way all the information about methods one has to constantly Google. It doesn’t get much more straightforward than being able to hover over the method you are writing and getting a little clue, similarly to the Visual Studio Code.

Screen Shot 2017-06-07 at 16.44.03

We need two things to make this happen, source where to find the information and an object to present it in. One place to get the infromation is throught the documentation that is already accesable throught GNOME Builder in the right panel. The URIs to the individual documentation pages and their keywords (such as the name of the methods) are already imported thanks to Devhelp. For a simple way to then get a text on hover is using the GtkToolTip.

Screen Shot 2017-06-07 at 16.42.42

The styling of the tool tip is very limited and so far the presented information can get bit messy especially when the description doesn’t fit on one line.

Screen Shot 2017-06-07 at 16.44.52

The styling is not the main limit, the tool tip is also not clickable because of the simple reason it disappears when you move the cursor. My vision is to make the documentation card bit more interactive. Due to getting information from the documentation we have a lot more information about the methods than just the input and output types.

Screen Shot 2017-06-08 at 11.19.55

Showing all the information just on hover might be bit too much so the card could have a expand button to show more to user and if even that is not enough of information refer the user to the documentation itself. So for the next part of the implementation I would like to work on hover provider that would be more inclined to customisation and could be used later by more features.

The implementation of this simple documentation card can be found here, even though it’s in it beginning stages I already found it quite practical. If the card doesn’t want to show up, you might want to check the right panel if you actually have the documentation. I haven’t found a centralized system for all the documentation but if you install a package *-doc the specific library it will be automatically added to your Builder through Devhelp, for instance:

  • gtk3-devel-doc
    • GTK+ 3 Reference Manual
    • GAIL Reference Manual
    • GDK 3 Reference Manual
  • glib2-doc
    • GLib Reference Manual
    • GIO Reference Manual
    • GObject Reference Manual
  • webkitgtk3-doc
    • WebKitGTK+ Reference Manual

GSoC: Initiation

It’s official, I got accepted to Google Summer of Code 2017 and it’s been awhile since I felt so excited and yet terrified at the same time. But primarily excited…I think. Since I was eligible for both GSoC and Outreachy I made a proposal for both, ended up getting selected for GSoC with my Outreachy proposal, goes to show how intertwined these programs are.

I honestly haven’t heard about the project until Carlos Soriano gave a talk about it at my university couple of months ago. “Be proactive” was the main phrase popping up throughout the presentation, so I did just that. I found my mentor Christian Hergert and started figuring out the ins and out of the GNOME Builder. Keep in mind I was quite new to the FOSS in general so the amount of information I was getting through seemed endless. While I was going down the rabbit hole I realized that I found myself working on a Builder as a form of procrastination while studying for my exams.

As result of my preparation for the application process my two more significant bug fixes/ feature were the addition of the retab, which is an option in the context menu to convert white spaces to either tabs or spaces. And the little pop up notification that signifies that the build has finished when your window is out of focus.

So now to the main part of the GSoC, the actual project I will be working on. The Documentation Cards for GNOME Builder. This neat feature will enable quick look up in the documentation especially for the newcomers. By clicking on the code the user will access a card shoving the relevant parts of documentation. Looking back this would probably save me a lot of time going back and forth between the browser. I had couple of ideas what more to add to the cards that could be useful to the user such as adding contact on the author (most likely a person that will know a lot about it) or being able to add cards as favorites. If you would like to suggest something you would find handy don’t hesitate to write it in the comments.

I honestly can’t wait for the summer when I can stop juggling my school and devote my full concentration to GNOME. I will update soon with progress.