Interview with three OpenChange project developers
LWN: Can you tell us about OpenChange and what the current library is capable of?
This release is a very important step in the project roadmap. It is the first time that we've provided code which can be used in stand-alone applications and which is generic enough to perform most of the messaging operations that final users would deal with, such as:
- fetch emails (including those with attachments)
- send emails (including those with attachments
- delete emails
- set multiple recipients to, cc, bcc
- UTF8, Unicode and HTML content support
- folder creation/deletion
- fetch/create calendar events for appointment/meetings screenshot 1, screenshot 2
- fetch/create contacts screenshot
- fetch/create tasks screenshot
- fetch/create sticky notes
These features will be included in the next library release, planned for early June 2007.
LWN: Who are the key people and organizations involved? What are their backgrounds, and what is their role in the project?
- Ali Mdidech: Network and System Administrator
- Pauline Khun and Fabien Lementec: Core Developers
- Remi L'Ecolier, Jean-Baptiste Arnoult Clement Jamot and Thomas Chalmel: Evolution plugin
We are also tightly linked with the Samba team who contribute to the project on a daily basis.
OpenChange SARL was created in 2006 for several reasons:
- 1. Provides services, support and consulting when OpenChange 1.0 is out
- 2. Support full time developers (for the moment, only me)
- 3. Support parts of the project: server renting, communication material and so on.
Do you see the future of OpenChange as primarily a client library, or as a server replacement for Exchange, or both?
1. If we want interoperability, we need to supply material so people can replace either their Outlook clients or their Exchange servers.
2. Developing the MAPI library is the best way to understand MAPI internals and how the server should handle data depending on clients requests.
We have already started the server development and have a working Exchange Message Store Address Book Provider (EMSABP). This part of the server is used by Outlook to perform name resolution and Exchange account setup. Our implementation works on top of Samba4 and deals with Samba4 Active Directory.
We plan to have a server "hacking preview" release in late June 2007.
How do you see the OpenChange MAPI library being used?
So far, we have started the implementation of command line tools so we could validate libmapi ability to get used in stand-alone applications:
- openchangeclient: MAPI command line messaging tool designed to send/receive mails
- exchange2mbox: convert an Exchange mailbox to a mbox file, support attachment and mime types.
At the same time, part of the team has been working on a evolution plugin using libmapi. The current implementation provides:
- account creation wizard
- Exchange name resolution
- fetching emails with/without attachments
- sending emails with/without attachments to Exchange users
- deleting emails
- flag management: attachment, important, and date
Last but not least, libmapi provides a development environment for the OpenChange server test cases.
OpenChange depends on Samba 4. Can you tell us about the relationship between the Samba project and OpenChange projects, and about how Openchange code relates to samba4?
OpenChange soon became a Samba4 fork and we had quite some troubles maintaining the code between Samba4 which was alpha and changing all the time and our own code.
One of the most important step in OpenChange development has been the amazing work Andrew Bartlet and Jelmer Vernooij did in adding dynamic library support to Samba4. At this point we have been able to move from a nice fork to a Samba4 independent plugin and push OpenChange code on its own repository.
We are working on a daily basis with most of the team:
- Jelmer Vernooij who is actively contributing to OpenChange, its build system and Debian packaging.
- Simo Sorce when we have LDB/TDB databases related questions,
- Andrew Bartlet and Stefan Metzmacher who give us valuable advice based on their Samba development experience.
As you may imagine, OpenChange is strongly relying on Samba4:
- Transport and network layers
- Storage layers and Active Directory
- Authentication
- Memory Allocation
Can you tell us a bit more about how OpenChange works?
MAPI is a RPC (Remote Procedure Call) protocol which means any operation is performed on the server and results are sent back to the clients. Exchange is using objects and tables (like a spreadsheet), which means that the client can either ask for a new or existing Exchange object or opens a MAPI view (columns and rows) with the results it expects. All the communication on a given object is then done using its handle as a reference. What we have tried to do in OpenChange is to provide a sufficient layer of abstraction so any of these objects could be handled with an opaque structure and be used in any of the MAPI library public functions.
OpenChange also provides MAPI profile support, so developers don't have to deal with credentials or any other "offline" information that would be needed during Exchange communication.
For the server side and its existing implementation (the EMSABP provider) OpenChange is fetching information from Samba4 Active Directory and sending information back to the client with the MAPI transport layer.
How did you develop the code?
The OpenChange tools include:
- rpcextract: built on tshark (Wireshark command line tool), rpcextract splits a communication file in ndrdump file we can next process with ndrdump or mapitrace.
- rpcsniff: a windows tool designed to understand MAPI calls over the wire.
- mapitrace: an experimental Perl tool that parses ndrdump output. It provides a way to analyze MAPI communications, generates GraphViz graphs, has a basic error report and also a statistics module. It offers a more convenient way to see how much of a given scenario we are able to decode and how MAPI calls are linked one to the other with a graphical or console view.
- The KBPortal. This is a Web portal designed to help development. It can store scenarios, share knowledge, adding comments, generate PDF reports. Due to a lack of maintainers, we decided to stop supporting it. The problem is that the code is far from being maintainable, and we would need several developers to rework it from scratch so we can use it again properly and plan extensions. The tool has been developed over 3 years and I think it's a shame we had to stop using it.
What do you think have been the most interesting parts of the project?
Now we start to have some MAPI and Exchange protocols background, we can focus on many tasks we could not consider before.
Fabien Lementec: Opensource community interaction is the very interesting part. Network analysis and protocol understanding are challenging tasks, given the fact there is very few documentation about the protocols used.
What do you think have been the most difficult parts of the project?
In the meantime, I think we have not yet started the most difficult parts! The Message Store on the server side is really the most challenging part of the project. It will rely on Samba4's Active Directory and offer abstraction layers so people can link it with their existing messaging server (such as Postfix or sendmail).
Can you tell us about the plans for future releases?
First we have to remove MAILOOK release limitations and particularly ensure that we can send emails to external recipients. There is the notifications issue that is quite interesting and I would like libmapi to support for next release. Last but not least, internationalization and Unicode support will be key to making libmapi generic.
We will certainly soon provide an intermediate release with new Exchange items support (calendar, tasks, contacts, notes) and MAILOOK limitations fixes.
We will next work on a simple MAPI API for high level programming which will make abstraction of most of MAPI internals, but this process can only be successful if other open source communities get involved and share with us their needs and expectations.
We do need beta testers with different Exchange servers, so we can identify the numerous limitations libmapi still encounter. We also need people to help on the project documentation, maintaining a FAQ, review the existing documentation and make it sound "more English".
Ali Mdidech: Another aspect of making MAILOOK available for everyone is to provide a release under most common platforms. Having a port on FreeBSD, a package for *BSD, an RPM for Linux, a Solaris version and much more should be a real opportunity for having testers. But this requires a lot of work and we would be really happy if some folks want to get involved in it.
Finally, we are really interested in providing bindings for other languages, but we have limited human resources. If people are interested in developing PHP, Python or Perl bindings, they are truly welcome!
| Index entries for this article | |
|---|---|
| GuestArticles | Hards, Brad |
