GSoC ’17: Wrapping Things Up

Hey folks!

So we’ve reached the conclusion of Google Summer Of Code 2017. I’m in the process of submitting the final report as I write this post.

The Journey

My GSoC project on GNOME Calendar was full of ups and downs (more ups of course). ¬† As this was my first GSoC project I was practically new to this workflow. Having weekly meetings, pushing code on a timely basis, discussing ideas regularly with my mentor etc. made things all the more intense. There were weeks were I made more progress than expected and then there were weeks where we headed nowhere (due to lack of knowledge regarding recurrences). The reason for this was using the sparsely documented library, ‘libical‘ and deciphering the cryptic code of ‘evolution calendar‘. But in the end everything came out just fine. ūüėÄ

A video demo of my work

 

NOTE: Since the making of this video, layout changes have been made to make the UI cleaner but no functionality has been changed.

Where’s the code at?

All the code has been pushed to the master branch. My commits are here and the official project page is here. (also contains the GSoC final report)

Acknowledgements

First of all I would like to thank GNOME for giving me the opportunity to work for them in GSoC 2017. This was truly a rewarding learning experience for me.

I’ve thanked my mentor, Georges endless (pun-intended) number of times but he deserves every single one of those thanks. He has been an absolute solid mentor. I still don’t know how his work output is exceptionally high day-in, day-out but most magicians don’t reveal their secrets, do they?

I’d also like to thank Milan Crha (the maintainer of EDS). He’s gotten me out of some pretty sticky situations (potential roadblocks) from time to time. Without his experience with recurrences it’d not have been possible for me to make such great progress during the course of this project.

All in all I loved Google Summer of Code ’17 and would be delighted to be back next summer. I’ll continue contributing to GNOME as always, and will fix some bugs that couldn’t be fixed during the course of my project.

Until next time!

Advertisements

My first (and definitely not the last) GUADEC!

Hey folks!

I recently attended GNOME Users and Developers European Conference (GUADEC) 2017 held in Manchester, UK. It was my first time in the UK and my first time at a conference and needless to say, I had a wonderful time.

Core Conference Days

The core conference days were held at the Brooks Building in Manchester Metropolitan University. I attended a lot of great talks. Some of the talks I found helpful were-

  • History of GNOME by Jonathan Blandford
  • GNOME Build Strategies and BuildStream by Tristan Van Berkom
  • On mice, touchpads and other rodents by Peter Hutterer

I gave a lighting intern talk presenting my GSoC project РAdding recurring events support to GNOME Calendar. My talk was accompanied by a live demonstration too!

IMG_20170729_142019.jpg

Unconference Days

The Unconference days were held at the Shed (MMU). There I took part in various workshops and Birds of Feather (BoF) sessions. I had a sit-down with my mentor, Georges Stavacras, and we discovered and fixed (not all) quite a lot of bugs in GNOME Calendar.

Social Events

20170729_204433.jpg

Lots of social events and fun activities were organised. The GNOME 20th Anniversary party was one of the best parties I’ve been to yet. The decorations and ambiance were one of a kind. The newcomers dinner was also very engaging. We also played indoor football at the MMU sports hall and lots of other fun games. And let’s not forget all the local pubs we visited throughout the conference. We also had a¬†walking tour of Manchester which was very informative.

 

IMG_20170802_161648.jpg

IMG_20170802_171646.jpg

The Peak District Hike was an altogether different experience. We went on a 9km Trek on Loose Hill. The trek was so scenic and beautiful! I sincerely thank Allan Day for organizing and leading that awesome trek.

 

IMG_20170801_205906.jpg

I was also a part of the volunteering team and made lots of friends on the team. The ‘hosts’ from Codethink were a very friendly bunch of people with whom I had a great time. Kudos to Sam Thursfield who took me rock climbing to the Manchester Climbing Centre.

 

It was really exciting to finally meet the GNOME contributors that I had previously chatted with online. Meeting my mentor Georges was really fun. I thank him for the work he’s put in mentoring my GSoC project.

I would like to thank the GNOME Foundation for sponsoring me to attend GUADEC. It would not have been possible for me to attend the event without the financial aid provided by the GUADEC travel committee.¬† Thank you all the organisers, volunteers and attendees for making this year’s GUADEC successful. See you next year at Almeria!

sponsored-badge-simple.png

GNOME Calendar is now capable of creating/editing recurring events

Hey Folks!

I’m glad to announce that GNOME Calendar now supports creation of recurring events. Now you can easily create recurring events with the help of the modified edit-dialog.

Here you can adjust the two main features that define your recurrence –

  • How often should the event repeat?
  • Until what date etc. should the event repeat?

For the first feature, you get the following options –

  • Daily
  • Monday to Friday
  • Weekly
  • Monthly
  • Yearly

Similarly, for the second feature, you get the following options –

  • Should the event repeat forever?
  • Should it repeat a fixed number of times?
  • Should it repeat until a certain date?

 

With these customizations, users can now easily create recurring events in GNOME Calendar.

Below is a video demonstration, showing how easy it is to create/edit recurring events with the help of this modified edit-dialog.

 

I’ve come to Manchester to attend GUADEC ’17!

If you are here too, feel free to say hi.

Until next time.

 

 

 

GNOME Calendar to support creation of recurring events very soon

The first phase of my GSoC project is over, and I have passed the evaluation for the same. Honestly speaking, it has been quite a difficult start for me. Given that I had to deal with ‘libical’, which is sparsely documented, and also evolution-calendar code, which is hard to understand, I have finally found the flow that was needed for this project.

For the last 2 weeks I have been working on a modification in edit-dialog that allows the user to create recurring events. The creation part has been taken care of successfully but the editing part (editing recurrence-rules of already recurring events) is not complete.

Here’s a short video demonstrating my patch which is WIP.

(All thanks to our friends at WOGUE, who made a pretty solid demonstration of my patch)

 

With that being said, I can safely say that you can expect a working patch to land next week  that will allow the users to create recurring events.

This is a big step towards our goal of making GNOME Calendar recurrence friendly.

Stay tuned, an awesome new feature coming next week.

Until next time.

 

GNOME Calendar: The much awaited recurrence-dialog is finally here!

Hey folks!

It’s been quite a while since I last posted here and there’s a reason behind it. Lesson learnt: implementing ‘Evolution Data Server’ API correctly requires lot of effort and also some amount of experimentation. So finally, after a lot of hard work, ‘Editing recurrent events’ is now possible in GNOME Calendar.

The idea behind the recurrence-dialog (screenshot below) is simple. Whenever you edit a recurrent event, the recurrence-dialog pops up asking you about the set of events you want to modify.

Screenshot from 2017-06-15 23-51-16

Then you choose the appropriate option.

Here is a short demo where I changed the name of a recurrent event named ‘Guitar Lessons’ to ‘CHANGED’ and chose the ‘Subsequent Events’ option.

guitar-subseq.webm

Notice that only those instances which occur on and after 18th June were modified. That’s desired behavior.

And that’s not it. We have also integrated the ‘drag-and-drop’ functionality with recurrent events. Whenever you drag and drop a recurrent event the same recurrence-dialog pops up.

Here is a demo showing just that.

football-dnd.webm

I simply dragged and dropped the ‘Football practice’ event to the next date. Then the recurrence dialog popped up and I chose ‘All events’ option. The effect of this was that all the instances of this event were shifted forward by 1 day. The events earlier used to occur on dates – 1,4,7…. but after modification occur on 2,5,8….. dates.

If you want to check out the related patches, you can find them here.

You can check out the official project page here.

Feel free to comment/say hi to me regarding my ongoing project.

Until next time.

We can now detect recurrent events in GNOME Calendar

Yes! We cleared the first hurdle in adding recurrence support to GNOME Calendar.

Now GNOME Calendar is smart enough to detect if an event has recurrences or not.

We added a new property – ‘has-recurrence‘ – to GcalEvent. Evolution API took most of the load off our shoulders as it already had a function ‘e_cal_component_has_recurrences()‘ which served our purpose.

The property ‘has-recurrence is a gboolean (or boolean, in general) and is assigned TRUE when an event has recurrence property, otherwise FALSE. This is the simplest of properties with more complex ones yet to come.

To test out this newly added patch, I decided to import a recurrent event from Google Calendar to GNOME Calendar. To my benefit, our weekly GSoC meeting was already a recurrent event and therefore served as a perfect test case. So after successfully importing that event in GNOME Calendar, I used GtkInspector to enlist the properties of the event.

And Voilà! As you can see below, the has-recurrence property was automatically set to TRUE.

aaNQTnM

You can find more about GtkInspector here.

For those of you who are new to GObject. Here are the relevant links.

You can check out my patch here.

Feel free to say hi or drop suggestions.

GSoC ’17 project on GNOME Calendar

I am extremely happy to announce that I have been selected as a student in Google Summer of Code ’17 in¬†GNOME. This would not have been possible without the constant guidance and support of my mentor Georges Stavracas and also the immensely helpful GNOME community. I would also like to thank my mate¬†Rohit Kaushik who kept me motivated all the time and himself got selected for GSoC in GNOME To Do. You can find Rohit’s work here.

Now let’s dive right into what my project is about.

The goal of the project is to add support to recurrent events in GNOME Calendar.

Support for recurrent events already exists in Evolution calendar but it is lacking in GNOME Calendar. For example, right now, for a weekly repeating event, users have to manually add that event every week which is very inconvenient and time consuming.

  • Recurrence property will be added to GcalEvent in Calendar. A new GcalRecurrence¬†structure will be introduced which will handle the recurrence part in GcalEvent using Evolution‚Äôs API.
  • The first major task would be to ‘detect recurrent events’.
  • Then, the Edit-dialog will be modified accordingly. Here’s a design sample of what the Edit-dialog would look like-

0bt7of8 - Imgur

You can check out the full mockup here.

  • The next major part of the project is to handle the editing/deletion of recurrent events. The options available to the user regarding that are given in the mockup below.

dfKCgvs - Imgur

I will regularly update this blog and provide a step-by-step documentation so that it may help fellow developers and also some enthusiastic users who want to dive into the world of GNOME development (or Open-source development in general).

You can find the official project page here with a detailed list of deliverables.

Evolution is a calendar and a mailing client. Learn more about Evolution here.

Feel free to say hi or drop suggestions.

Stay tuned, there is plenty more to come!

Create a free website or blog at WordPress.com.

Up ↑