Skip to content →

GSoC 2018 Final Report

Summary/Overview

Cavabunga designed as modular calendar server and implemented with Java(Spring framework -springboot-) There are many calendar servers out there doing stuff pretty good but main difference that im trying to create is support for different calendar storing options. These days REST api and json is the main data transfer technology. Main part of Cavabunga (which is cavabunga-server) has RESTapi endpoints to retrieve and send calendar information.  Because of being common data transfer method, REST api can use for exchanging of calendar information. Which means, all cavabunga components have to have ability to convert their calendar information to RESTapi request. Which points out that there have to be an common object model accross to all components. The component cavabunga-lib created for that purpose. Every cavabunga module have to include cavabunga-lib library. Yes, even cavabunga-server. For that object model, I references the iCal data model (https://tools.ietf.org/html/rfc5545) which states that calendars are build top on components(which are events, journals, todo and alarm). Components have properties like DTSTART(time that event begins) or LOCATION(where event is happening)  etc. All theese elements have implemented as objects in cavabunga-lib

Other calendar resources can intercept with cavabunga-server via implemented modules like cavabunga-caldav or cavabunga-collector-lwn-calendar. In addition to that, after running cavabunga-server other modules will talk server via RESTapi and there is needing for rest api client to connect server. Thats why i create cavabunga-lib. All cavabunga-X modules have to include that module. Basically modules either convert Caldav protocol(i mention before in previous posts what the caldav is) or parse web content to cavabunga-lib objects and send them to cavabunga-server via cavabunga-client.

Previous Works and Reports

https://web.itu.edu.tr/celikd/2018/07/11/gsoc-2018-what-then/
https://web.itu.edu.tr/celikd/2018/07/11/gsoc-2018-caldav-proxy/
https://web.itu.edu.tr/celikd/2018/07/11/gsoc-2018-maven-repo-and-some-enhancement/
https://web.itu.edu.tr/celikd/2018/06/11/gsoc-2018-first-collector-core-object-implementation/
https://web.itu.edu.tr/celikd/2018/05/26/gsoc-2018-about-deliverables-of-project/
https://web.itu.edu.tr/celikd/2018/05/26/gsoc-2018-about-calendaring-technical-details/
https://web.itu.edu.tr/celikd/2018/05/26/gsoc-about-calendaring/

Commits and Repositories

There multiple git repositories that i worked on:

https://github.com/ITUBIDB/cavabunga-server
https://github.com/ITUBIDB/cavabunga-lib
https://github.com/ITUBIDB/cavabunga-client
https://github.com/ITUBIDB/cavabunga-caldav
https://salsa.debian.org/dogukan-guest/cavabunga-collector-lwn-calendar
https://salsa.debian.org/dogukan-guest/gsoc-2018-calendar-collector

Here are my commits after 14 May -GSoC offical start date-:

https://github.com/ITUBIDB/cavabunga-server/commit/ae7df01bfc6df0ceebc1affa815525896e5d80a2
https://github.com/ITUBIDB/cavabunga-server/commit/90bbed27716c1d4c57ef7a58e7728e33071dd7af
https://github.com/ITUBIDB/cavabunga-server/commit/72a04b4e24e6a3e19b16217649475295764c3bbc
https://github.com/ITUBIDB/cavabunga-server/commit/d25dfa6ce110fe111a1633093172deff5ba720e5
https://github.com/ITUBIDB/cavabunga-server/commit/490406bece8582965469a2842bd38dd468f0b25e
https://github.com/ITUBIDB/cavabunga-server/commit/7e74024a4d7b0d495e9314ee4ed74b708a39cb87
https://github.com/ITUBIDB/cavabunga-server/commit/0961ca8fc09c1cd361fc72c5603088703ce0142f
https://github.com/ITUBIDB/cavabunga-server/commit/ec6f9173625ffc284953118fc7eb69a6195f7b90
https://github.com/ITUBIDB/cavabunga-server/commit/a4d1e479d8c168213e2c41be967137ae32ace83f
https://github.com/ITUBIDB/cavabunga-server/commit/24d5c9d1cdc26dcf5f7ceb0fbd15313b87d3b40d
https://github.com/ITUBIDB/cavabunga-server/commit/16363855bfff58d6af21b15890c6a524e784912c
https://github.com/ITUBIDB/cavabunga-server/commit/57f93ce7d7e17cb51c67c6ed2fa7ec3d4b107cf8
https://github.com/ITUBIDB/cavabunga-server/commit/1ea1c20329a1422098cd5be27cc0821ea4ed46f0
https://github.com/ITUBIDB/cavabunga-server/commit/569034c1fd48bc907e994d1027b02b951157159b
https://github.com/ITUBIDB/cavabunga-server/commit/eef669101191bc44f09316fca1d7bb0f9139b005
https://github.com/ITUBIDB/cavabunga-server/commit/57b071521ab0e67f3d9957a43fe945219d41cbd5
https://github.com/ITUBIDB/cavabunga-server/commit/fcd13225ba24d7a8c4a460381f413580d16b7f55
https://github.com/ITUBIDB/cavabunga-server/commit/82fcda302e4dd9d70831e6f43e3739a59538ce55
https://github.com/ITUBIDB/cavabunga-server/commit/fa3d84a9928abfe8d7ec2325bb2eb0042c5ab7f1

https://github.com/ITUBIDB/cavabunga-caldav/commit/e76c2fbee59dad06c5a16a3b9580542ab6102930
https://github.com/ITUBIDB/cavabunga-caldav/commit/2570559886f4fc1dcce68b6fd857fe1f8d1e05bb
https://github.com/ITUBIDB/cavabunga-caldav/commit/8665a42c02e838c178f98aba68c0e4581b352aa2
https://github.com/ITUBIDB/cavabunga-caldav/commit/a55483997dcf4f26559ba6b2b918c59ac4302432
https://github.com/ITUBIDB/cavabunga-caldav/commit/c1062530ef9bdde6c67b4ad96174adc56fe9a32c
https://github.com/ITUBIDB/cavabunga-caldav/commit/af6a03f4f5873a52d8017fd49eb47f16fba3de66
https://github.com/ITUBIDB/cavabunga-caldav/commit/dda57a6f77a75721e8022da1799827461eba8de8
https://github.com/ITUBIDB/cavabunga-caldav/commit/90384fa28b0193a37c6bf6ddef1b8ec7cfc2336e
https://github.com/ITUBIDB/cavabunga-caldav/commit/64cd07700f92b11683ac36fce19af25368db7172
https://github.com/ITUBIDB/cavabunga-caldav/commit/2116201fb763426e74ae8f152f92d929d38e3640
https://github.com/ITUBIDB/cavabunga-caldav/commit/7f7936baeb069d5cc77b15bac98596d278d357f4
https://github.com/ITUBIDB/cavabunga-caldav/commit/70545d1cf2a1a9e87618603162435298a9c096c4

https://github.com/ITUBIDB/cavabunga-client-java/commit/4eb1a432dd27fbf7103dbdc1350c6412909ebd94
https://github.com/ITUBIDB/cavabunga-client-java/commit/4b02da503b7295d8c6b9a70faaf79b2d7e6c576f
https://github.com/ITUBIDB/cavabunga-client-java/commit/3d442c534e429f044076c62e48e8b6189f5fdb56
https://github.com/ITUBIDB/cavabunga-client-java/commit/d5bfb2a1a66ad4e762de227ede74ac57ee04e435
https://github.com/ITUBIDB/cavabunga-client-java/commit/0e41e682f0eac1a98bf06582c88029b3539e570f
https://github.com/ITUBIDB/cavabunga-client-java/commit/3e0cb23150694243d7b8ee8ed13392e2528cd617
https://github.com/ITUBIDB/cavabunga-client-java/commit/6d0677a0cdd328e522f53e850526f024a512eace
https://github.com/ITUBIDB/cavabunga-client-java/commit/a8a30d3e7408ecfe0147242ebe17f256621ac51c
https://github.com/ITUBIDB/cavabunga-client-java/commit/29039cab932ed3d26d3d9df60774c61b30366f97
https://github.com/ITUBIDB/cavabunga-client-java/commit/5e45cd5497a19db95471aad88b1926f185eca700
https://github.com/ITUBIDB/cavabunga-client-java/commit/8a204c171b222ce0be40348c51f40bb9037c84ab
https://github.com/ITUBIDB/cavabunga-client-java/commit/5c7e4a07c1a737dc76777ef572a2ac11e521d416
https://github.com/ITUBIDB/cavabunga-client-java/commit/f381d3b0d28043aebd7bd43c6b6d7c47d0f1b3f5
https://github.com/ITUBIDB/cavabunga-client-java/commit/eccc4d1f8532a9c0e008b1a4b8fd83b024877745
https://github.com/ITUBIDB/cavabunga-client-java/commit/f6db5b4861191d84546684c40f4aa0bee19f1c37
https://github.com/ITUBIDB/cavabunga-client-java/commit/63587e0de4ca36b227e9137dcb7b687edd6c99ae
https://github.com/ITUBIDB/cavabunga-client-java/commit/1de9b8cc79828f779175a8da3284135dc9dbb37e

https://github.com/ITUBIDB/cavabunga-lib/commit/c6515ca52db885c40aa35e8f5efa8d1686592045
https://github.com/ITUBIDB/cavabunga-lib/commit/dc7cb6e1be3797be6d91089c1fa98736fcd4b0aa
https://github.com/ITUBIDB/cavabunga-lib/commit/4dfb7bcd3c9f521e3000866dc4dded99e6548304
https://github.com/ITUBIDB/cavabunga-lib/commit/ed07401d424c373886cc161d6863926da5f726e4
https://github.com/ITUBIDB/cavabunga-lib/commit/ca8150fc017b2cce3fa7f78125bc539d916d59ac
https://github.com/ITUBIDB/cavabunga-lib/commit/c77e635fed36fca5f9b653c8d0dc2d4251a95465
https://github.com/ITUBIDB/cavabunga-lib/commit/0479dbccec3b440c09eb187dd63a44f75b66bafc
https://github.com/ITUBIDB/cavabunga-lib/commit/3dbc209d3cd588a5a9ee7759adb652c11c29cbc1
https://github.com/ITUBIDB/cavabunga-lib/commit/c67c19d8a1a0de6fda845170fe32c3223e493f9d
https://github.com/ITUBIDB/cavabunga-lib/commit/1b6080090439c372afffcd26e0e5c946ea593309

https://salsa.debian.org/dogukan-guest/cavabunga-collector-lwn-calendar/commit/24f519ae80e371a40fcbcfb892e0888ca16a5d37
https://salsa.debian.org/dogukan-guest/cavabunga-collector-lwn-calendar/commit/6073adf0a4bf1544bcbb52d2f1ceae44c5b60734
https://salsa.debian.org/dogukan-guest/cavabunga-collector-lwn-calendar/commit/1067ed157d8a8a52e571173b16b676803e087c7a
https://salsa.debian.org/dogukan-guest/cavabunga-collector-lwn-calendar/commit/dc7b2a75022ec64c1945ce1103a339289928f975
https://salsa.debian.org/dogukan-guest/cavabunga-collector-lwn-calendar/commit/dd283bf021410b2beeec4cf1e0b15532939bfb88
https://salsa.debian.org/dogukan-guest/cavabunga-collector-lwn-calendar/commit/c40cebba7b641d60090738228be2ae80e10384b0
https://salsa.debian.org/dogukan-guest/cavabunga-collector-lwn-calendar/commit/b4c1dedd96f1f7775dc3e25365f4c8138af31f60

https://salsa.debian.org/dogukan-guest/gsoc-2018-calendar-collector/commit/0fcdf21da1ad65b5f0364afe221f5f68265c61f7
https://salsa.debian.org/dogukan-guest/gsoc-2018-calendar-collector/commit/b5f7a24a67e6004428438643f97a28a92baca415
https://salsa.debian.org/dogukan-guest/gsoc-2018-calendar-collector/commit/645d4d92629849fa3bdf74f54d0077d4ef96716b

Pull Requests / Pending Pull Requests

https://github.com/ITUBIDB/cavabunga-server/pull/40 – PENDING
https://github.com/ITUBIDB/cavabunga-server/pulls?q=is%3Apr+is%3Aclosed
https://github.com/ITUBIDB/cavabunga-client-java/pulls?q=is%3Apr+is%3Aclosed
https://github.com/ITUBIDB/cavabunga-lib/pulls?q=is%3Apr+is%3Aclosed
https://github.com/ITUBIDB/cavabunga-caldav/pulls?q=is%3Apr+is%3Aclosed

Current Status and Future Work

IMHO %90 percent of project completed. Main functionalities are implemented. But there few of them i wanna implement:
1- cavabunga-web: will connect cavabunga-server and view every calendar collected via modules. And this web interface will allow users to search, share and manipulete calendars
2-  Share and Search end points: adding those endpoints to server will make cavabunga really usefull
3-  Builder: Ok, i admit it. Building project is little bit confusing and complicated. There have to be a script -bash or python- to help install and configure all cavabunga enviroment and its modules
4- cavabunga-android or cavabunga-ios: there are implementations for Caldav or calendar applications. But those implentations will help users to use cavabunga specific properties: like sharing and collecting calendars on web
5- There is a swagger api documentation on cavabunga-server but it should be more advance then it is now.

Problems

1- Im sure that there are bugs in code i couldnt see. So, unit and integration test have to be implemented
2- There are problems about iOS devices caldav client. I couldnt achive to connect properly cavabunga-caldav to iOS devices.
3-  The repository that created (maven.test.itu.edu.tr) is problematic. Cause i dont have any management permission on the server. Therefore, all depencies have to move to maven central repositories.
4- Building can be annoying, it have be automated.

Source Codes and Builds

cavabunga-caldav-1.0.0.tar
cavabunga-client-java-1.0.1.tar
cavabunga-client-java-1.0.1
cavabunga-lib-1.0.3.tar
cavabunga-server-development
gsoc-2018-calendar-collector-master.tar

build jar archive: cavabunga-builds.tar

Final Words, Google Summer of Code

Lots of things i experience this summer. It was pretty scary for me to thinking that “working with Debian” 🙂 But i overcome pretty quickly. Not just codding, i also experience about how to communicate with commutiy/people or  how managing the time. And im still nerves and exited while im writing this report 🙂 It was fun, thnx eveybody!

 

 

 

 

 

Published in GSoC 2018

Comments

Leave a Reply