Name
Ankush A. Mishra
Project
Add the ability to sync events from CalDAV to Apache OpenMeetings Calendar
Organization
Apache Openmeetings
Mentors
- Maxim Solodovnik <solomax666@gmail.com>
- Sebastian Wagner <sebawagner@gmail.com>
Commit List
- https://github.com/theantimist/openmeetings/commits/3.2.x?author=theantimist
- https://github.com/caldav4j/caldav4j/commits/jcr-dev?author=TheAntimist
Bug Tracker
Known Issues
Right now the AJAX, refreshing on the Google Calendars, after adding a new Google Calendar does not work.
Pull Request
Merge CalDAV branch 3.2.x into master [Completed]
Description
OpenMeetings provides video conferencing, instant messaging, white board, collaborative document editing and other groupware tools using API functions of the Red5 Streaming Server for Remoting and Streaming.
The project goal was to add the ability to sync events from OpenMeetings Calendar and CalDAV Protocol. Along with this, the ability to export and import iCal to and from the Calendar. Prior to this, there was no other way of doing it. This includes the implementation of the following RFC: 4791, and 6578
Overview of the Project
My project was mostly divided into three stages:
- Work on the CalDAV backend code
- Integration into Openmeetings
- Work on the Wicket part of the code.
Work on the CalDAV Backend
This stage required me to find a suitable library or create one if needed. During my proposal I had chosen, *CalDAV4j* project, as the library.
Caldav4j is a library which provides a High Level API to CalDAV methods. But before the Caldav4j library, could be integrated into OpenMeetings, there was a need to migrate the dependent libraries in the project, as it was using the deprecated Apache Jakarta Slide, to Apache Jackrabbit-WebDAV.
Most of my work done during the migration, has been assimilated into the development branch of CalDAV4j, and this is being used in OpenMeetings, currently. The development branch can be found here: https://github.com/caldav4j/caldav4j/tree/jcr-dev
Integration into OpenMeetings
This mostly consisted on making classes which handles syncing, creation and deletion of events through the CalDAV4j API's.
We have a generic CalendarHandler interface, which implements the different types of Syncing, creation and Updation of events. The main class, called AppointmentManager, class the appropriate CalendarHandler's when needed. This is shown in the class diagram below:
Working on the Wicket part of things
This included bringing in the Backend code, to work with the View and Controller aspect, which was handled by Wicket.
Conclusion
It was a wonderful experience as whole, working with Sebastian and Maxim. I learnt a lot from the whole, and feel that because of GSoC, I was introduced, to new frontiers.
Thanks
Thanks, to the following people:
- Apache, for letting me work on the project itself.
- Both my mentors, Sebastian and Maxim, who provided valuable input.
- Roberto Polli, maintainer of CalDav4j, who helped in the migration.
- Evert Pot, of SabreDav, for helping me out on the CalDAV clarifications.
- The Google Summer of Code Team, who managed the whole thing very well.