Thursday, October 25, 2007

Healthcare CIO pats Evolution/Exchange 2.12.0

Skip Paul, a Novell mate working for the Open Platform Services (OPS) Sales for the East Coast of United States, forwarded me a message from one of our pilot customers, John Halamka - CIO of Caregroup. John, in his mail said:
Could you pass this along to your developers -

Today I installed Evolution 2.12.0 as part of the Ubuntu Gusty release.

Every issue I have had with Evolution is now resolved. Performance is spectacular, caching is perfect and I no longer have to use OWA to ensure reliability.

John has been piloting various operating systems for more than a year now and when he tried SLED 10, he quoted saying:
My concern is that Evolution/Exchange connector is such a negative experience that it threatens the success of the entire SLED platform.
He shared the same in a CIO.com article, saying:
The Evolution e-mail client presented the biggest problem. Every time he launched the application, he had to wait five minutes to use it, until it synced with CareGroup’s Microsoft Exchange server. If he deleted an e-mail before the entire store of deleted e-mails had synced, or if he tried sending an e-mail before all stored e-mails had synced, the application would crash.
As Evolution-Exchange maintainer, I teamed up with Skip and provided him various levels of optimization fixes and all of it were released as part of Evolution/Exchange 2.12.0. Skip front ended the efforts by ensuring timely delivery of patches and his feedbacks both ways. As mentioned in my blog, the performance was greatly improved by these patches and the same is appreciated by John in his recent blog, saying:
Congrats to the folks at Canonical who maintain Ubuntu and to the folks at Novell who have significantly upgraded their Evolution email client to meet the needs of Microsoft Exchange users.
It feels great to see your efforts/work gets directly appreciated by the users.

John: Thank you for your honest reviews and Skip - for the wonderful support provided both ways.

Update: Fixed some font weirdness.

Tuesday, October 23, 2007

Moved from Evolution/Exchange

After the release of Evolution/Exchange 2.12, I moved to one of the highly motivated, determined and focussed teams that extends the cutting edge technologies from other platforms to Linux.

using System;

class HelloWorld
{
public static void Main()
{
Console.WriteLine("Hello World !!!");
}
}
Yes, I am a proud Mono hacker now and will be working in ADO.NET. Presently, I am just finding my ways to understand the requirements and roadmaps of the component with the help of, my mentor and the maintainer of ADO.NET, Nagappan.

I will continue to be available in #evolution channel and answer any Evolution/Exchange related queries. Thanks to everyone that supported me during the development of Evolution/Exchange 2.12.0.

Monday, September 24, 2007

Exchange Connector & Evolution 2.12

Another milestone in the journey of Evolution mail client - 2.12 is released. This is srag's (Srinivasa Ragavan - Hope I got your name right, this time - Srini) maiden release and it rocks. Good job, Srini. A preview of what it provides is here.

This release is special, personally, as:

This is the best release made after the initial 1.x days of Ximian Connector. It all started from the days of SLED Betas - getting Beta customers to test and report issues, fix and provide packages to reverify. Exchange connector has become quite stable and just like other softwares, with some bugs. Connector has a better summary support, optimized n/w bandwidth usage, majorly rewritten folder loading/refreshing techniques, on-demand-public folder loading and newly implemented mail/calendar delegation feature that enables your colleague to handle your mail/appointments when you are away from office .

Thanks to all the customers/community users who provided test accounts to debug complex issues that are otherwise not possible to debug and fix. Remarkable improvement has gone into Connector in this release, especially in a state where people started recommending to use IMAP to access their Exchange mails instead of Connector.

Special thanks to Dan Winship for his time and help in answering my libsoup and connector related questions.

Okay. I haven't yet mentioned why this is a special release to me. ;-) This is my maiden release as Exchange Connector Maintainer. I took up the task with solving performance and stability issues as number-one-priorty than adding features and with much pride I declare this to be one of the best releases of Exchange Connector.

Some of the performance work that has gone into this release, for your joy.
[1] - Folder loading optimization
[2] - On demand loading of folders (esp. public folders)
Watch out for more optimization work to be done in Exchange connector module.

Onething, I tried hard to accomplish is the Exchange 2007 support - which will be a part of 2.14 release of Evolution.

Monday, July 02, 2007

Hack week

Last week was Hack week at Novell. At the beginning of the week, I started working on my idea of a out-of-the-box backup/restore/archive manager application for Evolution. Due to some family occasion, I was out of station and hack-week, for three days. When I came back, I took up another idea - a continuation of my Evolution Exchange Performance work. Evolution exchange starts up in just 3 seconds (approx.) now. Patch is in nascent stage and more to come in another couple of days. Stay tuned!

Thursday, June 28, 2007

Evolution Exchange Performance Series - Chapter 3 - Folder loading from 480 secs to < 1 sec

Close to a month now, have been working on squeezing Connector to save some time while it loads the folders. Remember Chapter-1 of my Evolution Exchange Performance Series blog - Yes, I based my optimization work from it. In the attached image, as you can see most of the folder loading time is spent in camel_exchange_folder_construct(). Construction of exchange folder objects does two major things:
  • Scanning the entire folder for any changes since last evolution session and
  • Fetch messages to keep things in sync
These two operations contributed to a big level in connector folder loading time. Fix doesn't refresh if summary is available and scanning for changes, since last evolution session, is moved to a separate thread with appropriate threading-etiquettes.

Here comes the supporting fact for my blog: :)



(2.11.x timing may vary depending upon production servers - response from my test servers are quite quick)

With this fix, Exchange Connector catches up with Microsoft Outlook w.r.t folder loading time. Outlook users will love Evolution 2.11.5 - watch out for more performance hacks. This fixes 442186, part of 341214 and 421091.

Wednesday, April 04, 2007

EDS + Hibernate = 100% CPU

There has been issues reported by GW users that Evolution hangs/suspends for a while when composing mails. We weren't able to reproduce the issue and respective gdb traces didn't give enough information. Lately, I started hibernating my laptop and when I resume from hibernation, I noticed that EDS started taking 100% CPU and when gdb is attached to the process... voila!!!.. EDS was running with 264 threads and most of it are waiting to update GW addressbook and rest are waiting to update GW calendars.

A little further investigation revealed that it was because of the combination of g_timeout_add()+hibernation. GLib stores the last processed time for g_timeout_add and when hibernated, the memory image is stored and restored, when resumed from hibernation. When restored, callbacks registered with g_timeout_add() gets called - as the difference in time during hibernation and resume satisfies the g_timeout_add() timeout value and that too in multiples of 100. Harinath (of Mono fame) helped me understand the GLib part and the fixes have gone in for GW and webcal provider.

Wednesday, March 14, 2007

Microsoft ISA server support

Today I came across a E2K_DEBUG trace forwarded to me from a Beta customer that had OWA url like http://www.example.com/CookieAuth.dll?Logon and after some googling found out that, when a Mailbox server is behind a Microsoft ISA proxy server, the OWA url gets redirected to the above link. Evolution-exchange now will support Microsoft ISA server as well.

Saturday, February 10, 2007

Microsoft (in)compatibility

Microsoft is known for introducing incompatibilities, whenever they release any updates or new version of their software. Latest in town is Microsoft Exchange 2007, which has changed a lot from its predecessor - MS Exchange 2003. MS Exchange 2007 has replaced the FE and BE server roles with something called CAS and Mailbox roles. CAS is more than its 2000/2003 counterpart, FE, where it handles both the business logic and renders OWA UI. With this change, MS Exchange 2007 introduced a new default OWA interface called "OWA" - that defines some new interface other than webDAV interface. This has currently broken Evolution Exchange connector from operating with MS Exchange 2007 servers.

Interesting and challenging days ahead!

Monday, January 29, 2007

Proxy support in Evolution

One of the key features that is expected out of any application that communicates over a network is talking over a proxy connection. Evolution has been lacking this feature for quite some time and I implemented a quick support around SLED10 release with a limitation that "Authenticated Proxy" configurations are not supported. Now, its time to do something about it and I came up with something called a Network Preferences option in Evolution that looks similar to that of gnome-network-preferences capplet. I had to take this approach as a lot of Evolution-KDE users complained proxy not working as the respective gconf entries were missing.

Following is the screenshot of the Network preferences window in Evolution:

It uses libsoup for resolving hostnames and other SOCKADDR related processing.

Saturday, January 06, 2007

Evolution Exchange Performance Series - Chapter 2 - Public Folder Loading

Around a month back started working on issues surrounding Exchange Public folders from subscribing to accessing/using them. A tracker bug was already present in BGO and the most famous among them are 268412, 347811 and 346728. As I just took over the responsibility of Evolution Exchange connector around August 2006 and then had a month-long sick leave because of Chikungunya, it was a slow start for me - reading through code, docs, MS articles, webDAV references etc. After a week of analysis, found out the issue in Setting up folder hierarchies - which is done during the startup and it goes into a recursive loop setting up hierarchies for all folders, including public folders. When an organization has quite a lot of nested-public-folders, Evolution will take a minimum of 30 mins to start.

The complete fix was done in two-phases.
Phase-1:
--------
Do not scan public-folders recursively during startup.
Phase-2:
--------
Load folders on demand. This enabled us to achieve the maximum performance during subscribing to Public folders.
Any performance work needs to provide supporting data and here it is: (My test server has close to 250 public folders with a maximum depth of 21 subfolders)
S.NoDescription of Test/taskPatch
(Sec)
<=2.9.4
(Sec)
1Configure an exchange account
Restart Evolution
765
2Folder->Subscriptions
Selectthe configured Exchange account
Note time taken to show the“All Public Folders”
34
3Expand “All PublicFolders”
Note time taken to display folder list
< 1 168
4Time taken totraverse to maximum depth folder8330

Memory consumption:
Before expanding a folder (in the folder->subscriptions dialog)

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory152.8154.6
RSS13.415.1
Shared9.1 9.2

After expanding a folder:

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory152.8201.6
RSS13.462
Shared9.1 9.2

Actual memory consumption:

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory047
RSS046.9
Shared0 0

Note: Memory consumption data is taken using gnome-system-monitor and thus difference in Bytes are not shown above. Columns showing 0 would definitely have a difference at least in bytes.
Memory consumption to traverse to the maximum depth folder:

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory152.8246.9
RSS13.4107.4
Shared9.1 9.2

The fix also improved the overall folder loading performance.