Monday, August 26, 2013

Evolution EWS: Planning the 3.12

After a release cycle more focused on bug fixes, now is time to sit and plan what I will do want to do for 3.12.

tl;dr version:
  • Notifications operations
  • EmptyFolder operation
  • (improve) FindItem operation
  • GetRooms and GetRoomLists operations
  • Time zone operation
  • Sharing operations
  • Unit testing
To check what those operations mean, take a look into:

Okay, now in a (kind of) verbose mode:
  • Notifications operations: I have this feature half-implemented, still with some bugs related to the subscription timeout, mainly when the connection is somehow cancelled (or evolution is turned to work in offline mode, or the server is down). It involves a big work on addressbook, calendar and mail (camel) parts to apply all received events about changes; a dozen of APIs in the server communication part to subscribe/unsubscribe to listen those notifications, parse the received events and provide them to all backends that want to listen for notifications; some code refactoring in the *_start_sync backends methods; and, finally, some simple modifications in the UI, to enable/disable this feature.
  • EmptyFolder operation: We already support a folder deletion in Evolution EWS, so this is more like a good improvement in the way to do the deletion than a super-duper feature.
  • (improve) FindItem operation: We have a first implementation of this, what allows us to use the server to do some searches for us and then we only handle the result. Hope we can, at least, fix this bug improving this operation, let's see.
  • GetRooms and GetRoomLists operations: Yeah, we are missing these ones. Basically we can get the rooms that are available within the Exchange organization
  • Time zone operation: We have our own way to handle the time zones in Evolution, but it is useful mainly to check if we are not trying to set an invalid time zone for the EWS server. Ah, taking advantage that I'll be working with the time zone operation, I would like to do a small code refactoring the calendar backend to use our server calls based on the server version, that is already done by the another backends but get stucked to fix it for calendar, since the time zone operations are quite different from one version to another (thanks little Bill).
  • Sharing operations: We already have an implementation for this. On the one hand it is not using the operations introduced by EWS 2010. On the other hand, it works with an older version (EWS 2007), what means that we doesn't have Discovery neither Accept for sharing invitation working. What I want to have here are the "new" operations working properly with newer and older severs without mess with the whole EWS 2007 support.
  • Unit testing: This one deserves another blog post, coming soon. :-)
And that is it for now!