Tuesday, November 12, 2013

Evolution EWS: Notification Operations (only for Exchange Servers 2010 SP1 or newer)

The news:
Notification Operations are now pushed to evolution-ews git and will be available on 3.12 release.

Small demos:
You can have a good idea about what I'm talking about taking a look on these videos, where you can see:
- On the right side of my screen you can see the Outlook Web Access from where I'm playing with my account.
- On the left side, you can see my EWS account on Evolution, receiving notifications and updating the content (to reflect with the changes made on the right side) almost in real time. :-)

How can I enable it?
In your EWS account's preferences, go to "Receiving Options" tab and enable "Listen for server change notifications".
If you want to listen for notification in all folders, also enable "Check for new messages in all folders", otherwise only your Inbox will be updated.

Limitations (Please, read it, this is the most important part!):
- It only works for Exchange Server 2010 SP1 or newer.
- However our API has full support to subscribe any folder you want to listen the notifications for, for now it is only Inbox or Everything. I would like to avoid big UI changes for this cycle.

Microsoft documentation about this feature:

Thursday, October 10, 2013

Evolution EWS: Testing EEwsConnection's API


EEwsConnection's API has a new test framework.
We only cover folder operations for now (Create, Delete, Move)
Please, help us! :-)

I'm glad to announce that we are adding low level tests to cover EEwsConnection's API. It is and will be a continuous work until we have the (almost) full coverage done.

How are we doing this?
It's simple. We are mocking the EWS server, collecting the traces (what means, we are testing against a real server) and then we have the possibility to test our changes offline (against the traces collected). For this, we are using a library written by Philip Withnall, announced during GUADEC, named uhttpmock.

How is the coverage for now?
As I wrote it as a proof-of-conception, for now we are barely covering folder operations (Create, Copy, Move), but the idea is add support while we are touching in another parts to fix bugs/add new features.

Which EWS versions are being covered?
For now, Exchange2007_SP1 and Exchange2010_SP2. I only have access to these servers (actually, we also have access to an Exchange2013 server, but we only will have support to send requests with this specific version when we have a more complete coverage and then track the breakages before commit this new support. Ah, so EWS doesn't have support for Exchange2013? False! We do, but we do the requests as an Exchange2010_SP2 server). So, if you have access to servers with different versions, please, feel free to send us patches to help us to improve the quality of our tests.

How could I help?
If you have access to an EWS server, please, take a look in our tests (they are really simple to add) and start to create new tests in the area of your interest. We would be really happy with some help. We need some help :-)

That's all folks!

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: https://wiki.gnome.org/Apps/Evolution/EWS_OperationsFeaturesParityMatrix

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!

Tuesday, February 19, 2013

Brno - First impressions!

I just arrived in Brno 2 days ago (17.02.2013) and I think this is a good opportunity to share what I found here.

Public transportation:
Differently from Brazil, it really works here, at least the lines I've trying to use until now.
There is a really easy connection between city center and the Red Hat office. It's something about 20 minutes inside a tram, but usually you can find a seat to sit and the frequency of the trams is something really impressive, 5 minutes between one and another, during the "work hour" (until 19:00). After this the frequency is decreased a bit, something about 10 minutes between each tram and it is decreasing until the midnight, when you can get a tram each hour. The price is really cheap, mainly if you can buy a 3 months ticket (actually, I still don't bought this one, need to take a picture and bla bla bla). But it is really better and cheaper than in Brazil.

It's good, but it's heavy.
Actually I just have had 2 dinners and 1 lunch, all of them eating pork (usually with potatoes). The food is also cheaper than in Brazil. Yesterday, with Bruno Gonçalves and Rui Matos, we ate some ribs in a typical (?) Czech restaurant. All meals here, at least in the dinner, can serve easily a couple (at least if you're a brazilian and are not so big/fat than me). A weird stuff here is that, before the lunch, they usually serve soup. Makes sense, the weather contributes with this, but it is a bit unusual in my country. :-)

Okay, here is the place!

Actually I just did a quick visit to the Red Hat office and the office looks really nice. Good chairs, big monitors (yay!), good computers. There are some snacks in the office, I think it is public (if not, sorry, I just ate someone's snack) :-).
Looks like will be really easy to fell "in home".

Actually I just met Rui Matos, Bruno Gonçalves, Christian Schaller, Florian, the HR people and another Red Hat guys (this list was being increased while i was writing the post)  that I really don't remember the name (sorry about that) for a lunch. They look nice and friendly! :-)
Hope I can meet the rest of the team soon :-)

I've already moved to a flat (thanks Bruno Gonçalves for this), bought a Czech mobile number, asked for internet, opened a bank account  ... fortunately to do all this stuff I found English speakers in: the phone store, real agency and, for internet, Foreigners (brno.foreigners.cz) took care about this (thanks Liduska!)

Yeah, there are some restaurants (the most part, maybe?) where they don't speak English. And Czech, ah, this language is a kind of different than everything I heard before. It'll be really hard to learn but let's do the things go.

Cold, really cold!

Yeah, summarizing, looks like I'm going to live in a really nice and cold place :-)