In the The Final Piece post we announced the completion of our GSoC project i.e. Porting Nautilus Properties Dialog to use GtkBuilder, now like any other craft this too needs finishing, and polishing, so that the advantages of the project could be felt by the end-user using it and the developer working on it, who perhaps might improve this even more.
Aha! Let’s improve so that we can improve again!
The Finishing Touches:-
Clean up tasks involve removing the functions that lost their UI-building role to GtkBuilder. The instance struct members which are not used anymore are removed. The code which sets properties that are not used not anymore is also removed.
- Commit f28b86e5 removes all the dead functions.
- Commits 8ad4e876, e5db0923, and 61eeb04f remove the lines of code which set data which is not used anymore.
- Commit 99e0f7cf
removes the unused struct members from
- Commit 1d2ce945 removes unused macros from
GNOME HIG: GNOME Human Interface Guidelines contain everything that’s needed to design effective applications using GTK+. They cover design principles for GNOME 3, common guidelines such as how to write text and use images and icons, as well as a library of design patterns that can be used in applications.
- Commit 34393a2d sets valign property of the contents field so that the multiline message it displays is aligned to the first line.
- Commit 33486e37 drops ‘:’ symbol from all title labels, aligns them to the right and sets label styling to
- Commit ffd4270b applies
viewstyle class to the outermost GtkBox to improve readability and contrast
- Commit 96d317a6 repositions the icon in the basic page, to a position above the grid
- Commit bf722018 makes use of top-widget margin instead of empty labels to apply spacing between widget groups.
This task deals not with introducing new features, or with making a better UI but it most certainly deals with making the code beautiful.
Here we make use of autoclean-up memory management mechanisms offered by GTK to handle memory for our local variables. It’s time for memory-leaks and double free errors to be gone for good from our terminals.
g_autofree, this is memory management on steroids!
g_autoptr: The variable is cleaned up in a way appropriate to its type when the variable goes out of scope.
g_autofree : The variable is cleaned up with
g_free() when the variable goes out of scope.
- Commit 69d974bc
makes use of autoclean-up variables to eliminate manual calls to
- Commit 120c32ee makes use of
"self"as symbol name for the NautilusPropertiesWindow* instance in methods and signal handlers.
HHUH…!!! That’s where the finishing ends! Yay!! This finishes our project, like cherry-on-the-top finished …! Also, all the work which was carried out has been merged into the master branch (Yipeee..!), so you can checkout the master branch, do a build and have a first-hand look at the new properties dialog yourself.
My take Aways from GSoC !
GSoC has been a great experience for me, It was something I had only dreamt of in the early days of my college. I use to have this blog back then as well but the only reader apparently use to be me! (HA..HA…!) I had always aspired to become an open-source contributor and got my first genuine opportunity with GNOME which also eventually became my GSoC project. I have been using GNOME ever since I have been using Linux. I had never imagined I would be contributing to the file manager(Nautilus) I had been using every-day without appreciating the fact that it was made up of blood, sweat, and tears of the community and contributors, and maintainers who daily work on it voluntarily, to keep the project going, keeping it bug-free, and of course, maintaining its awesomeness . . ! I got to work on the properties-dialog and like I said my work has been accepted into the master branch as well, I can only imagine the subtle sense of satisfaction and joy which I would feel when I fire up nautilus on a normal day, look at the properties-dialog only to realize I had worked on it some time ago, even years from now (..apoos_maximus has goosebumps as he types this). (of course, I am impatiently waiting for distros to start packaging the latest version ..!) I only hope the work I did enhances the user experience of the people using it and the developer experience of the hardworking contributors working on it!
During all this time I have grown closer to the community as well and made amazing friends, and connections, I feel these three months were by far the most amazing and productive months of my life. And GUADEC (.. about which I have already spoken, was a total blast ! I loved it !)I was able to build myself a new computer with the stipend I received so that now it won’t freeze on me when I try to apply a Cage Transform in GIMP or try to follow Blender tutorials on Youtube. Everything has been so nice that I can’t express enough how happy I feel! This project has ended but I am going to stick around and make more contributions, as to me, this place feels like home on the internet! So, thank you GNOME, and lots of love from me to the whole community who makes it awesome.
Now, before we end it we have got something to say-
I would love to thank my mentor Antonio Fernandes, whose iron-clad support has been with me since the day I posted my first message on #nautilus, This incredible experience wouldn’t have been possible without him. Also, he is the coolest person I have ever met- medical profession by day, GNOME hacker by night – that to me is a superhero !!– Apoorv
Reaching the end of the road[map] within the planned time was so satisfying! And looking back, it was full of surprises and discoveries that the original plan didn’t anticipate, yet Apoorv delivered as planned! Sharing this journey with him was very fun and I got to witness his growth into a fine GNOME hacker through honest dedication. We made friends and work as a team!– Antonio
Well this is where it ends peeps ! Thank You !
3 thoughts on “Celebration is in Order”
The comic actually comes from https://xkcd.com/371/
Ohh thanks a ton for mentioning, I had to search a lot for credits !!!
Pingback: GSoC final project report – cocoon