Summer of Code with LibreOffice

Google Summer of Code 2017 is almost over. This summer has without any doubt been my most productive time in college. Here is a glimpse of what i have been working on in the past few months.

Motivation

I am a third-year undergraduate student at IIIT Allahabad specializing in Information Technology; my courses are closely related to computer science and software development in general.

Already two years into college and the closest I ever came to developing software/applications was making small web apps, some plug-ins and contributing to websites of my college festivals. Thus, I strongly wanted to get a taste of real software development. 
Inspired by an open source introductory sessions by Vishnu Ks, I realised that I wouldn’t have any better opportunity and time to work on an actual project than this GSoC 😄.
So, I went through the list of organisations, their projects and finalized on LibreOffice online. The prerequisites were in the intersection with the small set of skills that I had. I was in awe of the scale and technical aspects of the application and the best part, that really excited me was contributing to an open source alternative of applications that most of us use on daily basis.

Project Introduction

Since the past 3 months I have been working on LibreOffice Online, the online/cloud based version of the LibreOffice office suite. It is an open source alternative to popular online office suites, Office 365 and Google Docs. LibreOffice Online is a relatively young project(in development since 2015 only) and thus does not support all the features as in the desktop version yet. The primary Aim of my project was to implement the horizontal ruler and set up client side support for the ‘Save-as’ functionality.

Significant Achievements

Phase 1
We started with small features and bugs, in order to bring up my pace and slowly get the feel of actual software development.

  • Compression on startup for faster and secure file serving.
  • Find and Replace functionality.
  • Graph in admin console to monitor CPU load.
  • Graph in admin console to monitor Network activity.
  • Follow a certain user, while collaborative editing.
  • Auto detect and follow document editor.

Phase 2
This phase, being limited for only one big task, that being the addition of the interactive horizontal ruler in writer. This task also meant my first interaction with LibreOffice core, the code behind the desktop version and the engine for LibreOffice online. It wouldn’t be wrong to say that for the first week or so, I was very intimidated by the size and scale of the project. With very little idea about how to implement this feature, I spent more than a week writing no code and rather just setting breakpoints, trying to get a grasp of how things work and what needs to go where. I really thank my mentor for the constant help during this phase. After the initial week, things got much easier and the feature started taking shape smoothly.
This is how it looks.

Phase 3
The last phase, involved extending the current WOPI implementation to support the ‘Save-as’ functionality. I was able to complete this feature much before time and spent the rest of the period working on the follow ups/bug solving related to previously added patches.

Stuff left to do

  • The ruler, though functional enough is not complete and has some bugs. Bug report for further work filed here.
  • The WOPI extension part is complete on the client(LibreOffice) side but can only be tested once the WOPI hosts are configured appropriately.

You can find all my patches here

Review of code and related discussions

Thank You!

Google Summer of Code has been a great experience. I’ve had an exciting time working with LibreOffice, ever since I started in March 2017. Google definitely made this time more profitable 😛 and fun. 
I wholeheartedly thank LibreOffice for selecting me for this opportunity and my mentor Pranav Kant for being an excellent guide and helping me through out this project.