Re: [Evolution-hackers] Developing a new protected message complement

2014-04-03 Thread Christian Hilberg
Am Mittwoch 02 April 2014, um 19:00:33 schrieb Matthew Barnes:
> On Tue, 2014-04-01 at 11:02 -0430, BECERRA Silvana M SIDOR wrote:
> [...] 
> > However, to try to clarify a bit, what we mean by "protected Email" is
> > that when reply/forward (inline mode) a "protected message" we're
> > allow to write our response but we should not be able to modify the
> > text of none of the old messages. Additionally, although not commented
> > before, the message should also include custom field in the header
> > that consolidates date, from, to, of all old messages in an orderly
> > manner.
> 
> For that kind of "protection" to have any real meaning, all messages
> should be cryptographically signed by their author and attached in full
> to all replies and forwards.  An Evolution extension could conceivably
> enforce that.
> [...] 
> Cryptographically signing each message with a public key or a trusted
> certificate is really the only way to ensure previous messages are not
> altered.

Might be obvoius: When replying to a message protected that way,
the signature for that message should include all attached messages
which came with the message replied to. That way, some verifyable "signing
chain" would be created. In case of multiple replies to a single
message, i.e. a thread, the signature chain becomes a tree (which is
verifyable nonetheless).

2 cent,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-11
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Move IMAPX back to a module library for 3.12

2013-09-12 Thread Christian Hilberg
Hi all,

Am Montag 19 August 2013, um 17:47:07 schrieb Srinivasa Ragavan:
> On Mon, Aug 19, 2013 at 9:03 PM, Matthew Barnes  wrote:
> > The IMAPX classes were moved into Camel's public API to serve as base
> > classes for evolution-kolab.  But since Christian has parted ways with
> > us it would appear the evolution-kolab project is no longer active.

Sorry for being silent for so long. I was hoping to catch up on schedule
with evolution-kolab again, but so far, I have not managed to do so because
of being highly loaded with other projects (and evolution-kolab being a
spare time project at present, with, alas, no more funding, and very low
spare time anyway).

As far as Kolab goes, the Kolab people have released a new major version 3,
which has the XML storage format changed over the Kolab format version 2,
which evolution-kolab currently supports.
This would mean to implement a new storage format conversion library for
evolution-kolab, which we had planned, but due to budget issues, were not
able to implement.

> > I'm planning a good deal of API changes to IMAPX over the next few
> > months as I work toward completing IMAP NOTIFY support, and I would
> > prefer these changes not be seen as breaking Camel's public API so I
> > have sufficient freedom to change what needs changed.

The IMAPX had been exposed so it could be subclassed and enhanced
by evolution-kolab for IMAP-ANNOTATE (Kolab3 uses IMAP-METADATA).
In 3.4 times, we had an IMAPX code copy within the evolution-kolab
code base, which we got rid of by making IMAPX a Camel public API,
so we could subclass it.

> > Therefore I plan to move the IMAPX classes back to a runtime-loadable
> > module library after the 3.10 release.  If the evolution-kolab project
> > is resurrected at some point in the future then we can renegotiate this.

If by that time, upstream IMAPX can be extended with the aforementioned
IMAP extensions, then no need to publicly expose IMAPX again, I guess.

> > Any objections?

*sigh* Honestly, I cannot really object here, since I do not know when
(or even, if) I will be able to resurrect evolution-kolab. From what I can
tell reading through the Kolab3 devel list posts, this version of this
groupware server seems to catch on better than the previous version did,
since they *finally* decided to drop the old OpenPKG distribution format
alltogether with Kolab3 and started packaging for distributions. There is,
also, still a great need for Kolab clients, although I have not been approached
in that regard after evolution-kolab went on a hiatus.

> I still dont accept it under Camel. Since we are fixing it, Im fine.
> -Srini.

Srini, do I get you right in that you do not accept a certain IMAP 
implementation
(IMAPX in this case) being exposed by Camel? I do agree that it somewhat breaks
the idea of Camel, that the actual IMAP implementation which gets used should be
hidden.

When it comes to IMAP extensions, then this concept is somewhat difficult
in that it restricts what a certain IMAP implementation can expose feature-wise,
and there are some IMAP extensions (like ANNOTATION or, more recently, 
METADATA),
which may make sense to be implemented by, say, IMAPX, but maybe not in any 
other
IMAP code within Camel.

evolution-kolab could always resort back to keeping around its own copy of
IMAPX, although this would be a nightmare to keep up-to-date.

Cheers! I hope to be around more often again in future.

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-11
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] gnome-3-8 branches created

2013-03-25 Thread Christian Hilberg
Am Montag 25 März 2013, um 10:59:01 schrieb Milan Crha:
> On Sun, 2013-03-17 at 08:47 -0400, Matthew Barnes wrote:
> > The master branches are now for 3.9 development.  Have at it!
> > 
> > The gnome-3-8 branches are under a code freeze until the 3.8.0 release
> > on March 25.
> 
>   Hi,
> ditto for evolution-mapi.
>   Bye,
>   Milan

Same holds true for evolution-kolab. Thanks mbarnes for
creating the branch.

(Bye)^2,
Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-11
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] API considerations for avoiding data loss in race conditions

2012-12-06 Thread Christian Hilberg
Am Donnerstag 06 Dezember 2012, um 16:13:59 schrieb Christian Hilberg:
> Hi all!
> 
> Thanks Tristan for bringing an issue up again which is critical for
> PIM software, especially when dealing with groupware servers.
> 
> Am Donnerstag 06 Dezember 2012, um 15:27:49 schrieb Tristan Van Berkom:
> > Hello all,
> > I'd like to raise this issue on the list for feedback regarding this
> > bug: https://bugzilla.gnome.org/show_bug.cgi?id=686684
> > 
> > First let's start with the basic problem statement:
> > ~~
> > 
> > It can happen that two clients modify the same contact simultaneously,
> > or... that one client loads a number of contacts into memory and then
> > commits that contact to the addressbook without refreshing the contact
> > first, this will result in lost data for the given contact.
> > [...]
> 
> Very short note:
> 
> * This issue is not limited to contacts, but can as well hit
>   calendar (event, task, todo) entries.
> 
> * This issue is also not limited to the EClient<->E-D-S case,
>   but can occur in the E-D-S<->GroupwareServer case as well
>   in very much the same way (even without E-D-S offline
>   capability - the "one has it open for editing while the
>   other opens, edits, and stores"-case applies also in
>   online mode if we deal with shared PIM folders).
> 
> To me, this calls for a general approach of how to deal
> with PIM synchronization conflicts.

Oh, and talking about locks/transactions, please consider
this:

* EClient starts transaction / acquires lock on PIM
  entry

* E-D-S records transaction start / gives away the PIM
  entry lock to the EClient requesting

* EClient dies for any reason

* Started transaction / aquired PIM lock persists in
  E-D-S

What now? Timeout after some time? Welcome back to possible
raciness (-->does not truly solve our problem).

That same scenario is - again - not limited to EClient<->E-D-S,
but can also hit E-D-S<->GroupwareServer.

Just 2 cent,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] API considerations for avoiding data loss in race conditions

2012-12-06 Thread Christian Hilberg
Hi all!

Thanks Tristan for bringing an issue up again which is critical for
PIM software, especially when dealing with groupware servers.

Am Donnerstag 06 Dezember 2012, um 15:27:49 schrieb Tristan Van Berkom:
> Hello all,
> I'd like to raise this issue on the list for feedback regarding this
> bug: https://bugzilla.gnome.org/show_bug.cgi?id=686684
> 
> First let's start with the basic problem statement:
> ~~
> 
> It can happen that two clients modify the same contact simultaneously,
> or... that one client loads a number of contacts into memory and then
> commits that contact to the addressbook without refreshing the contact
> first, this will result in lost data for the given contact.
> [...]

Very short note:

* This issue is not limited to contacts, but can as well hit
  calendar (event, task, todo) entries.

* This issue is also not limited to the EClient<->E-D-S case,
  but can occur in the E-D-S<->GroupwareServer case as well
  in very much the same way (even without E-D-S offline
  capability - the "one has it open for editing while the
  other opens, edits, and stores"-case applies also in
  online mode if we deal with shared PIM folders).

To me, this calls for a general approach of how to deal
with PIM synchronization conflicts.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] UI interaction from book/calendar backends

2012-11-26 Thread Christian Hilberg
Hi everyone,

Am Donnerstag 22 November 2012, um 09:13:16 schrieb Milan Crha:
>   Hi,
> the book/calendar backends are currently designed to not have any direct
> UI interaction with user, they basically serve for data only. While it
> works, it has its caveats, like when user tries to access server using
> SSL with self-signed certificate. This should be done like in Camel,
> where user is asked what to do, instead of, currently implemented,
> checkbox in account preferences for "Ignore invalid certificates".
> Another usecase for direct UI interaction is, as xtian suggested some
> time ago, when synchronizing offline data to the server, with discovered
> conflicts. There might be found more usecases for sure.
> [...]

Thanks Milan for bringing that up again. Yes, some infrastructure to
request for user input from within the backends would be very helpful.
We have a dialog ready [0] in evolution-kolab to ask for a user selection
from several options they have to solve the conflict. However, this
dialog is currently unused in evolution-kolab for the reasons you outlined
(and the options set per folder without a possibility for the user to
decide on a per-incident-basis how to resolve the conflict).

Please see the dialog screenshot to get an idea of what would be needed
(I've linked to the dialog screenshot to illustrate the use case). Basically
this is
* an informative text, with some background highlighting
* a number of options for the user to choose from
  (the id of which to be returned to the backend),
  the conflict resolution strategy in our case
  (NB: this could be changed for a radio button list
  and the typical OK/Cancel buttons)
* some setting to be applied to the folder configuration
  (whether to ask again for the next conflict or to keep
  the current user selection for the folder and not ask
  again)

Maybe this helps ironing out the requirements for a requester
infrastructure. Input fields may also be needed in some cases,
although PIN entry is already handled (not sure what else would
require text input).

Kind regards,

Christian


[0] 
http://git.gnome.org/browse/evolution-kolab/plain/docs/dialogs/evo-kolab_pim-sync-conflict-dialog.png

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] [evolution-kolab] using a TPM for SSL/TLS client certs, reloaded

2012-11-13 Thread Christian Hilberg
Hi,

Am Dienstag 13 November 2012, um 11:18:07 schrieb Christian Hilberg:
> Hi everyone.
> [...]
> GnuTLS, as a replacement for NSS, adds another layer of complication
> to the matter. Aside from the TPM user PIN, it requires the higher
> level software to locate the correct client certificate for the
> connection to be established inside the TPM (or a software emulation
> thereof) via so-called "PKCS #11 URIs" in an explicit manner. There
This [9] is how that is supposed to work in the latest GnuTLS (support
in the 2.12.x series works much the same).

Kind regards,

Christian


> [0] https://live.gnome.org/Evolution/Kolab
> [1] https://mail.gnome.org/archives/evolution-hackers/2010-July/msg00076.html
> [2] 
> http://sourceforge.net/projects/evolution-kolab/files/Usage_of_software_security_devices_for_client_authentication.pdf/download
> [3] http://sourceforge.net/projects/opencryptoki/
> [4] http://trousers.sourceforge.net/
> [5] http://www.openldap.org/
> [6] http://www.gnu.org/software/gnutls/gnutls.html
> [7] https://tools.ietf.org/html/draft-pechanec-pkcs11uri-06
> [8] http://www.openldap.org/lists/openldap-technical/201009/msg00350.html
[9] 
http://www.gnu.org/software/gnutls/manual/gnutls.html#Trusted-Platform-Module

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] [evolution-kolab] using a TPM for SSL/TLS client certs, reloaded

2012-11-13 Thread Christian Hilberg
Hi everyone.

During the initial implementation of evolution-kolab [0] back
in 2.30 days, we evaluated [1] the chances to secure the protocols
used to talk to the Kolab server (IMAP, SMTP, HTTP, LDAP) via
TLS and having the server request the client to authenticate
itself via a client certificate which is retrieved from a
trusted platform module (TPM) or a software emulation of
a TPM.

We got this working for the IMAP, SMTP and HTTP protocols [2],
involving the Mozilla NSS library and a PKCS #11 software
stack (opencryptroki [3] and trousers [4]).

However, we ultimately failed back then to secure the LDAP
connection that way. The OpenLDAP [5] protocol library as used
in Evolution relies on GnuTLS [6] for transport layer security.
In contrast to NSS, GnuTLS requires the library on top of it
(OpenLDAP in our case) or the application using both (Evolution
in our case) to deal with security details.

In order to access a TPM, a user PIN needs to be provided
via a callback function. This is all NSS requires, as it handles
locating the certificate in an opened TPM all by itself, depending
on the connection type and peer. OpenLDAP up to and including
version 2.4.25 (and newer 2.4 series, I believe, since this is a
stable series) does not support this, and we did not succeed to
build OpenLDAP with NSS support proper.

GnuTLS, as a replacement for NSS, adds another layer of complication
to the matter. Aside from the TPM user PIN, it requires the higher
level software to locate the correct client certificate for the
connection to be established inside the TPM (or a software emulation
thereof) via so-called "PKCS #11 URIs" in an explicit manner. There
does not exist an RFC for these URIs, but a draft only, the latest
of which [7] expired in September 2012. NSS hides these details,
but the OpenLDAP people did not seem to be keen on supporting NSS
for transport layer security when we inquired back in 2010 [8].
AFAICT, there has not been a change in that regard so far.


My question now (for documenting the status quo) is whether anyone
is currently working on getting certificate-based client authentication
utilizing a TPM flying in Evolution for OpenLDAP+GnuTLS at present
or whether there are any plans to support this use case in the
near future.

Kind regards, and looking forward to receiving your thoughts on
the matter,

Christian


[0] https://live.gnome.org/Evolution/Kolab
[1] https://mail.gnome.org/archives/evolution-hackers/2010-July/msg00076.html
[2] 
http://sourceforge.net/projects/evolution-kolab/files/Usage_of_software_security_devices_for_client_authentication.pdf/download
[3] http://sourceforge.net/projects/opencryptoki/
[4] http://trousers.sourceforge.net/
[5] http://www.openldap.org/
[6] http://www.gnu.org/software/gnutls/gnutls.html
[7] https://tools.ietf.org/html/draft-pechanec-pkcs11uri-06
[8] http://www.openldap.org/lists/openldap-technical/201009/msg00350.html

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Master branch is now 3.7.1

2012-09-17 Thread Christian Hilberg
Hi Matt,

Am Sonntag 16 September 2012, um 17:27:15 schrieb Matthew Barnes:
> I released Evolution 3.5.92 and co. over the weekend and created
> gnome-3-6 branches for the following modules:
> 
> gtkhtml
> evolution
> evolution-data-server
> evolution-ews
> 
> So 3.7 development is now open on these modules.  Evolution 3.6.0 and
> co. will be released from the gnome-3-6 branch.

Thanks.

> I defer to Milan and Christian to branch evo-mapi and evo-kolab
> respectively when they're ready.

The evolution-kolab master branch will stick with 3.6 for a while since
there's a lot of work to be done which needs to go into both, 3.6 and 3.8.
I have sent a heads-up to the doc/i18n/... lists that evolution-kolab cannot
keep up with the string/UI/code freezes this time, and there has not been a
negative reply so far. I'm contracted to bring a number of new features into
3.6, which are not finished yet since it took much longer than expected in
this cycle just to get the porting done. However, I'm happy that with 3.6.0,
we will have a working evolution-kolab(*). :)
  Thanks to Matt for helping with the porting!

> Just a reminder that Milan and I will both be taking personal time off
> for the rest of the month starting this week.
> 
> I'll still be somewhat reachable on IRC this Monday and Tuesday but
> won't be on the clock, and thereafter reachable by email only until
> Monday, October 8th.

Matt, I guess it'll be you pushing 3.6.0 out the door, right? (It's just
a matter of when to expect 3.6.0 to be out so I can wrap up evolution-kolab
for that release).

Kind regards,

Christian


(*) This is, once I get the folder type setting right when creating new PIM
folders, which is just a day or two away. Apart from that, new eko is already
usable. :)

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Evolution 3.8 Planning

2012-09-05 Thread Christian Hilberg
Hi Matt,

Am Dienstag 04 September 2012, um 17:05:36 schrieb Matthew Barnes:
> Few quick announcements:
> 
> I started a new planning page on the wiki for Evolution 3.8 and seeded
> it with a few items.  Would appreciate seeing it fleshed out a bit more.
> 
> https://live.gnome.org/Evolution/Planning38

Thanks for the heads-up. I remember you mention some sort of API restructuring /
rework concerning E-D-S, D-Bus and EClients you had in mind for 3.7/3.8 cycle.
Do you have anything cooking in this regard already? Might be worth putting
on that page.

> Milan and I discussed gnome-3-6 branches today.  I'm ready to branch and
> begin 3.7 development now, but for the sake of translators we'll hold
> off until September 17 when GNOME 3.5.92 enters its hard code freeze.

Sounds good to me.

> Also I'll be taking personal time off the latter half of this month, as
> will Milan I believe.  So you may be hearing crickets in #evolution for
> couple weeks.  I'll still have email and will get the 3.6.0 release out
> on time.  Returning the first week of October.

That's some valuable bits of information, thanks.

> Matthew Barnes

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] New ECollectionBackend methods

2012-08-06 Thread Christian Hilberg
Hi Matt,

Am Samstag 04 August 2012, um 13:17:18 schrieb Matthew Barnes:
> I finally have the basic framework in place for creating and deleting
> folders on a remote server, with a working reference implementation in
> Evolution-EWS.
> 
> The new APIs are documented here:
> http://mbarnes.fedorapeople.org/account-mgmt/docs/
> 
> I'll just give a brief overview.
> [...]

Sounds good, although I do not have much of an overview over this whole
infrastructure yet.

> [...]
> With Evolution-EWS working, I'll be moving on to help Christian again
> with Evolution-Kolab next week.
> [...]

That'll be great. Much appreciated.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Subclassable and extendable IMAPX

2012-07-03 Thread Christian Hilberg
Hi,

Am Mittwoch 20 Juni 2012, um 15:32:18 schrieb Matthew Barnes:
> On Wed, 2012-06-20 at 11:03 +0200, Christian Hilberg wrote:
> > The result of my work lives in the 'imapx-extensible' branch of
> > E-D-S. It is still work in progress (the IMAP capabilities flags
> > need to be made extensible, too), but it is already working and
> > imapx_untagged() lost most of its amazements.
> > 
> > All (IMAPX) devs interested in what has been done so far are
> > welcome to check out 'imapx-extensible' and have a look around
> > in CamelIMAPXServer and friends.
> 
> Thanks for your efforts on this!  I still haven't reviewed it closely,
> though we've discussed it a bit on IRC.  I hope to find time to do so
> soon.

Thanks to Matt's courage, the changes from 'imapx-extensible' have
already made it into E-D-S 'master'. So far, all seems to behave well.
The API for registering new handlers for untagged responses, for
registering new capability flags and for sending custom IMAP commands
from derivative classes has been implemented but not yet tested. The
evolution-kolab plugin will be the first to use this, but it needs
to be ported for the E-D-S 'account-mgmt' changes first, which Matt
is working on. As soon as this is done, I'll be getting the new
IMAPX API live. Any bugfixes needed there should not affect other users
of IMAPX.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] out of source tree build issue and then installation fails with undefined references in git head

2012-06-21 Thread Christian Hilberg
Am Donnerstag 21 Juni 2012, um 15:54:07 schrieb Reid Thompson:
> On Thu, 2012-06-21 at 10:27 +0200, Christian Hilberg wrote:
> > 
> > E-D-S commit 4bc0fd235298a75bd055f0954fb48748d8dcbdc8 resolves the issue.
> 
> I still am getting the install failure...

Did you re-run autogen.sh?

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] out of source tree build issue and then installation fails with undefined references in git head

2012-06-21 Thread Christian Hilberg
Hi,

Am Mittwoch 20 Juni 2012, um 18:54:26 schrieb Christian Hilberg:
> Am Dienstag 19 Juni 2012, um 19:55:36 schrieb Reid Thompson:
> > out of tree build requires the following manual intervention...
> > 
> > 15001  cp evolution-data-server/libedataserver/*.h 
> > obj/evolution-data-server/libedataserver/
> > 15002  cp evolution-data-server/camel/*.h obj/evolution-data-server/camel/
> > 
> > build will then complete, but installation fails with
> > [...]
> 
> Same here at E-D-S commit e5c4f3f000d68c3381e0844e50d7e737ae49113f

E-D-S commit 4bc0fd235298a75bd055f0954fb48748d8dcbdc8 resolves the issue.


Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-06-21 Thread Christian Hilberg
Hi Milan,

Am Mittwoch 20 Juni 2012, um 19:36:19 schrieb Milan Crha:
> On Wed, 2012-06-20 at 11:08 +0200, Christian Hilberg wrote:
> > Has someone been working on this thing yet?
> 
>   Hi,
> I do not know about anyone (current "fires" about account-management
> branch merge got higher priority than this, plus I have couple other
> bugs pending in my todo before I get free for this thing). I do not know
> how much in hurry you are with this.
>   Bye,
>   Milan

Thanks Milan for the status update, this was the main intent of my asking.
Since evolution-kolab *has* as working PIM offline cache, I'm not in
a hurry with this (other fires, you know ;-), but if there was some
effort going on, I would have liked to participate as much as my
own pending todos would allow for.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] out of source tree build issue and then installation fails with undefined references in git head

2012-06-20 Thread Christian Hilberg
Hi all,

Am Dienstag 19 Juni 2012, um 19:55:36 schrieb Reid Thompson:
> out of tree build requires the following manual intervention...
> 
> 15001  cp evolution-data-server/libedataserver/*.h 
> obj/evolution-data-server/libedataserver/
> 15002  cp evolution-data-server/camel/*.h obj/evolution-data-server/camel/
> 
> build will then complete, but installation fails with
> [...]

Same here at E-D-S commit e5c4f3f000d68c3381e0844e50d7e737ae49113f

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-06-20 Thread Christian Hilberg
Hi,

Am Mittwoch 09 Mai 2012, um 09:28:53 schrieb Milan Crha:
> On Tue, 2012-05-08 at 10:56 +0200, Christian Hilberg wrote:
> > @Milan: Do you think you could post your API work here at e-h list?
> > That would give us something to base our discussion on. Even if no
> > GSoC student picks up the topic, your work should not be lost.
> 
>   Hi,
> sure, the initial draft is attached. I'm not attaching our conversation
> around it, as it was long, even it might clarify certain things. As a
> starter, let's call it EBackendOfflineCache, not as the initial draft
> calls the base structure EBackendCache.
> 
> As far as I can tell, it is capable to satisfy all needs from Kolab, I
> tried to draft it in an extendable way.

Has someone been working on this thing yet?

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Subclassable and extendable IMAPX

2012-06-20 Thread Christian Hilberg
Hi all,

Am Dienstag 08 Mai 2012, um 11:52:00 schrieb Christian Hilberg:
> It has been a while [0] since the idea of making IMAPX
> subclassable / extendable for backends to use. Time to
> bring the topic back into the public again. :-)
> 
> There is a bugzilla entry [1] now for the topic, and Chen
> bravely started out with preparations to make IMAPX extendable.
> [...]

While trying to make use of Chen's initial approach to making
IMAPX extensible, it has shown that this approach is a little
bit too basic and does not lead to the structural improvements
inside IMAPX which we've been hoping for. There are some other
issues with this approach, too, so we had to rethink the whole
thing.

As I had made a local copy of IMAPX extensible for evolution-kolab
back in 2.30 era using a function table for untagged response handlers,
I decided to implement this for upstream IMAPX (while evading some
issues I had in 2.30 - live and learn ;-).

The result of my work lives in the 'imapx-extensible' branch of
E-D-S. It is still work in progress (the IMAP capabilities flags
need to be made extensible, too), but it is already working and
imapx_untagged() lost most of its amazements.

All (IMAPX) devs interested in what has been done so far are
welcome to check out 'imapx-extensible' and have a look around
in CamelIMAPXServer and friends.

Kind regards,

Christian


> [0] 
> http://mail.gnome.org/archives/evolution-hackers/2010-September/msg00012.html
> [1] https://bugzilla.gnome.org/show_bug.cgi?id=674310

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-06-20 Thread Christian Hilberg
Hi again,

Am Dienstag 03 April 2012, um 10:52:00 schrieb Christian Hilberg:
> While porting evolution-kolab from Evolution 2.30 to 3.4.x (and on
> to 3.5 later on), I have been stumbling upon an issue regarding
> groupware server synchronzation.
> [...]
> Effectively, I am lacking a mechanism which tells my backend that the user
> wants to synchronize the local cache (evolution-kolab implements a full 
> offline
> cache with offline-editing support) with the Kolab server side.
> [...]

In our lengthy discussion about that topic, we found that a synchronize()
method is desired for the backends and EClient would expose this in its
API. How exactly the various E-D-S clients will represent this functionality
in their GUI needs to be discussed, but I think this detail is secondary
to the former (i.e. the communications infrastructure which makes it possible
to send a synchronization request to the backends, which they can then handle
in their very own fashion).

Have there been steps taken already towards implementing this infrastructure?

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] Updating http://projects.gnome.org/evolution/download.shtml

2012-06-11 Thread Christian Hilberg
Hi everyone.

Each time we release a new version of Evolution, E-D-S and the
plugins, http://projects.gnome.org/evolution/download.shtml requires
a manual update. New plugins, like evolution-kolab, are easily
missed in the process. As for the 3.5 line of evolution-kolab, Matt
had even added an entry for evolution-kolab 3.5.1, but commented out,
since the porting of the plugin was done only by the time of 3.5.2.
By that time, updating of the download page for evolution-kolab got
forgotten - again. Even by myself. =)

Would not it be better to come up with some workflow which is hooked
to e.g. the FTP server where new releases trickle in? The process of
updating the download page could even be made automatic - whenever
a new release manifests itself on the primary FTP server, the version
information is pulled from there and the download page updated. No
need to hide Evo's capabilities! :)

What do you think?

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Let's set the date for 3.4.3 release

2012-06-04 Thread Christian Hilberg
Hi,

Am Montag 04 Juni 2012, um 11:35:14 schrieb Milan Crha:
>   Hi,
> it's after 3.5.2 and I guess we can set the date for 3.4.3 release now.
> It'll be the last planned release in 3.4.x cycle, and the sources
> contain few fixes for it already (in various core products). The 3.4.2
> happened on May 14th, thus I'm proposing June 18th for 3.4.3, just a
> week before 3.5.3. There are still two weeks for changes, in case of
> sever bug(s) being found in the stable release.
> 
> Does it work for others?

Fine for eko, it is one among the ones with fixes since 3.4.2.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Subclassable and extendable IMAPX

2012-05-24 Thread Christian Hilberg
Am Dienstag 22 Mai 2012, um 16:38:20 schrieb Christian Hilberg:
> [...]
> Seems the solution which is now in Git master solves only part
> of what is needed (or I am missing something, in which case I
> will happily accept correction).

Okay, there's another bit missing in current CamelIMAPXServer
for it to be generally usable inside CamelIMAPXStore derivatives.

Extending the handler for untagged responses in CamelIMAPXServer
is half of the deal.

Having CamelIMAPXServer expose an API for sending custom IMAP
commands from within a subclassed CamelIMAPXStore is the other.

In the older evolution-kolab code I've changed CamelIMAXServer
to expose imapx_server_command_run_sync(), which was enough for
me to send my custom annotation CamelIMAPXCommands for querying
and setting IMAP folder annotations.

However, this may not be The Right Thing(TM) to do, telling from
the code comments in imapx_server_command_run_sync(). We may need
to be able to queue CamelIMAPXJobs and wait for their completion.

The imapx_server_command_run_sync() approach was simple and
sufficient for my few annotation commands, but it may not be
good enough for general use.

Chen, you know IMAPX a whole lot better than I do, so I'll ask
you to expose the right functions for sending custom IMAP
commands.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Subclassable and extendable IMAPX

2012-05-23 Thread Christian Hilberg
And again...

Am Mittwoch 23 Mai 2012, um 18:40:34 schrieb Christian Hilberg:
> Hi again,
> 
> Am Mittwoch 23 Mai 2012, um 18:05:29 schrieb Christian Hilberg:
> > Passing in the user payload data showed to be specifically tricky.
> 
> As dwmw2 just pointed out on IRC, it really isn't.
> The data structures which the derivative untagged handlers
> need to access can/should best be bound to the derivative
> CamelIMAPXServer. In fact, that is exactly the way it works
> in my 2.30 approach, only the data structures were not bound
> to a derivative, but to the original CamelIMAPXServer. Binding
> to the subclass would be the only change needed here.

...which would mean subclassing CamelIMAPXServer.

In the currently implemented scheme, CamelIMAPXServer would not
be subclassed, but only a handler function registered (which indeed
would have trouble accessing the userdata).

If we want to subclass CamelIMAPXServer, we also need to modify
the connection manager, so instead of the stock CamelIMAPXServer,
the derivative class is instantiated and returned when the derivative
store object requires a new connection.

A working implementation of this can be found in the gnome-3.4 branch [0]
of evolution-kolab, though things are somewhat complicated there
(CamelIMAPXServer and CamelIMAPXConnManager do not use virtualized functions
there, so subclassing meant to re-build the code paths in question -
that should be possible in a simpler way with the current 3.5 line of E-D-S).

Kind regards,

Christian

[0] 
http://git.gnome.org/browse/evolution-kolab/tree/src/camel/providers/imapx?h=gnome-3-4

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Subclassable and extendable IMAPX

2012-05-23 Thread Christian Hilberg
Hi again,

Am Mittwoch 23 Mai 2012, um 18:05:29 schrieb Christian Hilberg:
> Passing in the user payload data showed to be specifically tricky.

As dwmw2 just pointed out on IRC, it really isn't.
The data structures which the derivative untagged handlers
need to access can/should best be bound to the derivative
CamelIMAPXServer. In fact, that is exactly the way it works
in my 2.30 approach, only the data structures were not bound
to a derivative, but to the original CamelIMAPXServer. Binding
to the subclass would be the only change needed here.

> Binding the user data to a given CamelIMAPXJob
> is also not an option, since it has already been pointed out that
> matching the currently active job inside an untagged handler is
> problematic (see [0] and [1]).

Received correction on IRC. Let that be "should be avoided, if possible",
instead of "is not an option".
Moreover, as pointed out above, at least for my case, it is not even
needed.

One issue solved. :)

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Subclassable and extendable IMAPX

2012-05-23 Thread Christian Hilberg
Hi everyone,

had a chat with Chen on IRC today about the topic. Since he had
to leave, I'll try to sum up our findings here, for the record
and for review, please see the inline comments.

Am Mittwoch 23 Mai 2012, um 10:00:27 schrieb Christian Hilberg:
> Am Dienstag 22 Mai 2012, um 16:38:20 schrieb Christian Hilberg:
> > Hi again,
> > [...]
> > Seems the solution which is now in Git master solves only part
> > of what is needed (or I am missing something, in which case I
> > will happily accept correction).
> 
> Let me just drop a short summary of what we've come up with so far:
> 
> * The IMAPX tokenizer is not extensible with the current gperf
>   implementation. New tokens will need to be added for untagged
>   responses and for server capabilities at least.
> 
> * We need a way to extend the server capabilities flags, so they
>   will be set according to what the server advertises (for now
>   it will be ANNOTATEMORE, METADATA and ACL, maybe more)
> 
> * The current *IMAPXExtUntaggedResponseHander (should not this
>   be "Handler" instead?) function pointer prototype lacks a
>   possiblilty to pass in and out some user payload data.
>   [...]
>
> * The current *IMAPXExtUntaggedResponseHander does not have
>   a token parameter for me to tell exactly which token has
>   been read from the stream so I can decide my action

It turned out in our discussion that if we followed the current
implementation (that of an additional response handler the way
CamelIMAPXServer now implements it) would suffer from the above
mentioned issues.

Passing in the user payload data showed to be specifically tricky.
Since the current handler function would need to be able to care
for more than one untagged response, passing in the placeholder
pointers to payload data (e.g. folder annotation data, which gets
processed by the handler function and needs to be put somewhere)
would become tricky. Binding the user data to a given CamelIMAPXJob
is also not an option, since it has already been pointed out that
matching the currently active job inside an untagged handler is
problematic (see [0] and [1]).

A different approach to making the CamelIMAPXServer extensible
and which provides a way to solve all of the issues mentioned above,
IMHO is a table based approach for the untagged handler. Each untagged
response would be associated a certain handler function (pointer),
and these be held in a hash table or somesuch (I guess there are
faster ways to do this). The handler functions would then be indexed
by the untagged response token ID.

A working implementation for this exists in the old (2.30) evolution-kolab
version of CamelIMAPXServer, see [2]. It is all there, waiting to be
cannibalized and used upstream.

This implementation, however, has not been done with extensibility
in mind, so that part would have to be tweaked. It would also mean
to ditch the gperf approach for generating the token hash tables,
since the gperf thing is not extensible. Given a table of function
pointers would exist in CamelIMAPXServer, and a function to add
more functions, this would solve the extensibility in a neat way. Also,
along with added untagged response tokens, there may come added
server capabilities (ANNOTATEMORE/METADATA for me, ACL being another
candidate, and more out there in the IMAP RFCs), so I would need
to be able to register these and have a way to check whether the
server advertised the capability or not.

Chen asked me for a week's worth of time to look into this. I am
convinced that the idea outlined above would be a nice solution,
as in the old code, it collapsed the imapx_untagged() function to
almost nothing.

I would be happy for input - if you see any flaws or if you have
good ideas for solving the missing pieces (like, how to pass in
and out userdata locations in the handlers in a sane way), please
let us know.

Kind regards,

Christian


[0] https://bugzilla.gnome.org/show_bug.cgi?id=676548
[1] https://bugzilla.gnome.org/show_bug.cgi?id=667725
[2] 
http://git.gnome.org/browse/evolution-kolab/tree/src/camel/providers/imapx/camel-imapx-server.c?h=gnome-2-30#n1363

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Subclassable and extendable IMAPX

2012-05-23 Thread Christian Hilberg
Am Dienstag 22 Mai 2012, um 16:38:20 schrieb Christian Hilberg:
> Hi again,
> [...]
> Seems the solution which is now in Git master solves only part
> of what is needed (or I am missing something, in which case I
> will happily accept correction).

Let me just drop a short summary of what we've come up with so far:

* The IMAPX tokenizer is not extensible with the current gperf
  implementation. New tokens will need to be added for untagged
  responses and for server capabilities at least.

* We need a way to extend the server capabilities flags, so they
  will be set according to what the server advertises (for now
  it will be ANNOTATEMORE, METADATA and ACL, maybe more)

* The current *IMAPXExtUntaggedResponseHander (should not this
  be "Handler" instead?) function pointer prototype lacks a
  possiblilty to pass in and out some user payload data. In
  evo-kolab, for instance, the ANNOTATION untagged response
  carries folder annotation data, which I need to insert into
  a hash table. That means, I would need to pass in a pointer
  to that hash table. Given the fact that I can only register
  *one* handler function, which means that in the same handler
  function I need to process a number of tokens (ANNOTATEMORE
  and METADATA in my case), which may not share a common data
  structure to put the payload data into, things will become
  complicated in the current approach. I would need to pass
  in a struct, which will be extended with new payload data
  location pointers each time a new token is added to my
  handler function

* The current *IMAPXExtUntaggedResponseHander does not have
  a token parameter for me to tell exactly which token has
  been read from the stream so I can decide my action

Seems to me that an extensible table of registered handler
functions would not be that much more of an overhead, and as a
side effect, it would nicely cut down that nightmare switch
statement called "imapx_untagged". :-)

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Subclassable and extendable IMAPX

2012-05-22 Thread Christian Hilberg
Hi folks,

Am Dienstag 22 Mai 2012, um 19:04:45 schrieb Matthew Barnes:
> On Tue, 2012-05-22 at 16:38 +0200, Christian Hilberg wrote:
> > camel-imapx-tokens.txt is the file which is fed to gperf, and the
> > resulting structs are used by the IMAPX tokenizer.
> > The tokenizer is called inside imapx_untagged, and its result is
> > switch()ed on, and the extended untagged handler function, which can
> > be registered, is called in the default: block of that same switch
> > statement.
> 
> At this point I would advocate ditching gperf and just building an
> internal hash table of known tokens which subclasses can extend.

I'd second that.

> The
> tokens could be internalized with g_intern_string() to save a few string
> comparisons, but I can't imagine that's a huge performance hit in the
> face of network I/O.

It would mean one build requirement less, too.

> I haven't really looked closely as how gperf is used within the parser,
> so this is admittedly hand-wavy.  But clearly a static hash function
> built from a text file is not going to be extensible the way we need.

I had a short look at the gperf docs, and it apparently cannot be fed
with several files. Moreover, for gperf being able to build perfect hash
tables, it would need to read all of them (the original IMAPX one and all
extending ones) at once. Given the IMAPX extensions live in separate modules,
this approach would not be maintainable.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Subclassable and extendable IMAPX

2012-05-22 Thread Christian Hilberg
Hi again,

finally got my hands on that piece of code now, but see below.

Am Donnerstag 10 Mai 2012, um 12:26:51 schrieb Chenthill:
> I hope you had sent the mail just before our irc discussion. To
> summarize, 
> https://bugzilla.gnome.org/show_bug.cgi?id=674310#c9 has the fixes. We
> now have a hook in imapx_untagged which would allow the subclasses to
> handle the responses that are not handled in IMAP (imapx provider). I
> did not find a case where a sub-classed imap provider would be
> interested in tags which are already processed by the parent imap
> provider, so i have provided a simple hook to handle, unhandled tags. I
> hope this would be sufficient to support all the above needs.
> 
> Please let me know if you need anything more..

Seems the solution which is now in Git master solves only part
of what is needed (or I am missing something, in which case I
will happily accept correction).

There are at least these issues I see:

camel-imapx-tokens.txt is the file which is fed to gperf, and the
resulting structs are used by the IMAPX tokenizer.
The tokenizer is called inside imapx_untagged, and its result is
switch()ed on, and the extended untagged handler function, which can
be registered, is called in the default: block of that same switch
statement.

To make the IMAPX tokenizer aware of new IMAP tokens, these need to be
added to camel-imapx-tokens.txt AFAICS. This I did for the 2.30 and 3.4
lines of evolution-kolab, and it worked. I can't see how I should add
new tokens to the tokenizer now.

The to-be-registered untagged handler function is called after the
tokenizer has already run, but without knowing the new tokens this
extended handler cares for. What does happen now? Is the new token
still sitting there in the CamelIMAPXStream, waiting to be tokenized?
Does that mean I need to write my own tokenizer, or duplicate the one
already existing in the CamelIMAPXServer?
  If it was planned that the tokenizer be extended in some way,
then the signature of the extended handler is missing the token
that the tokenizer has found, so the registered response handler can
decide what to do.

Next, the tokens I need to care for in the evolution-kolab case are
associated with certain server capabilities. Again, for the 2.30 and 3.4
lines of evolution-kolab, I've added new capability flags to the server
so I can check that in my own handler function. While that check could,
in theory, be omitted, I need it to decide the protocol type for
metadata (ANNOTATEMORE or METADATA (planned for)). The same will hold
true for IMAP ACL, which will need to implement later on.

Unless we can resolve these issues, I am stuck with porting from 3,4
to 3.5, and I've already missed 3.5.1 release (and would not want to
miss 3.5.2 as well). This thing is rather urgent.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Subclassable and extendable IMAPX

2012-05-10 Thread Christian Hilberg
Hi,

Am Donnerstag 10 Mai 2012, um 12:26:51 schrieb Chenthill:
> On Tue, 2012-05-08 at 11:52 +0200, Christian Hilberg wrote:
> > Hi everyone!
> > 
> > It has been a while [0] since the idea of making IMAPX
> > subclassable / extendable for backends to use. Time to
> > bring the topic back into the public again. :-)
> >
> > There is a bugzilla entry [1] now for the topic, and Chen
> > bravely started out with preparations to make IMAPX extendable.
> [...] 
> I hope you had sent the mail just before our irc discussion. To
> summarize, 

True. :)

> https://bugzilla.gnome.org/show_bug.cgi?id=674310#c9 has the fixes. We
> now have a hook in imapx_untagged which would allow the subclasses to
> handle the responses that are not handled in IMAP (imapx provider). I
> did not find a case where a sub-classed imap provider would be
> interested in tags which are already processed by the parent imap
> provider,

Regarding behavioural consistency, I believe it could even be evil to
allow for a subclass to override parent's already-defined behaviour.
Not allowing that IMHO is a good thing.

> so i have provided a simple hook to handle, unhandled tags. I
> hope this would be sufficient to support all the above needs.
> 
> Please let me know if you need anything more..
> 
> Thanks, Chenthill.

I should start playing with that right after the 3.4.2 release.
Once I get my hands on the code, I will be able to tell. :-)
@Chen: Thanks a lot for your efforts, much appreciated.

Kind regards,

Christian


-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-05-08 Thread Christian Hilberg
Hi Matt,

Am Montag 07 Mai 2012, um 18:17:05 schrieb Matthew Barnes:
> On Mon, 2012-05-07 at 17:17 +0200, Christian Hilberg wrote:
> >   It has already been agreed upon (see previous posts in this thread) that
> > such a synchronize() function is needed and that it can be triggered
> > from the EClients in a sensible way. Question is, how and when will it
> > be implemented so we can test the migrated evolution-kolab parts waiting
> > for that.
> 
> Probably someone just has to do it.  Unfortunately I'm under heavy
> pressure from Red Hat to finish my branch ASAP, so I'm booked solid
> until probably early to mid-June.
> 
> Maybe this is something Milan can take up, or even you yourself could
> start on the E-D-S side if you're not too busy.  Roughing in the new
> D-Bus method should be a fairly simple first step.

Given that DBus method was implemented, so I could place my sync points
there (i.e. call the existing evolution-kolab functions), how could that
function be triggered? AFAIK, we do not have an idea as yet how to make
that functionality available to the user via GUI.

IMHO, a dedicated sync button a user can press in any E-D-S frontend is
even more important for typical groupware backends (and the typical use
cases they see) than an automated detection of network availability and
an online/offline state deduced from that (which is more complicated to
implement I think, and it may be hard to keep the user informed of which
things are happening in the background).

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] Subclassable and extendable IMAPX

2012-05-08 Thread Christian Hilberg
Hi everyone!

It has been a while [0] since the idea of making IMAPX
subclassable / extendable for backends to use. Time to
bring the topic back into the public again. :-)

There is a bugzilla entry [1] now for the topic, and Chen
bravely started out with preparations to make IMAPX extendable.

We've been staring at the imapx_untagged() function in IMAPX
for a while. This is the handler function which takes care of
processing the untagged responses from the IMAP server, and it
is the point where IMAP protocol extension code will want to
start hooking into. There may be other hooks needed.

evolution-kolab uses IMAPX outside Evolution. Back in 2.30 era,
IMAPX was not extendable. We thus had the IMAPX code duped and
extended the hard way. Since I was overwhelmed by a single
function imapx_untagged(), approaching 1k LOC in length, I tore
it into pieces (one per untagged response) and added these into
a function table. This collapsed imapx_untagged() to almost nothing,
looking far more maintainable (and making the function extendable).
For those interested in the approach, see [2].

When porting evolution-kolab from 2.30 to 3.4, I decided to try
and subclass IMAPX in a clean way, since the 2.30 approach of
directly hacking my code into an IMAPX dupe would turn it into
a maintenance nightmare in the long run.

There are two kinds of extensions to IMAPX I'm doing in evolution-kolab:

* IMAP extensions (ANNOTATEMORE, METADATA (planned for),
  IMAP ACL (planned for))

* Kolab extensions

While the latter is Kolab specific, the former is not at all Kolab
specific, but holds IMAP extensions as per RFC. It therefore makes
sense to strive for integration of these extensions into upstream
IMAPX in order to have all users of IMAPX benefit from it. In the
evolution-kolab source tree, the former resides in

  src/camel/providers/imapx

while the latter resides in

  src/camel

to make the distinction clear. There are a number of CamelIMAPXExtd*
classes I've added to src/camel/providers/imapx which hold my
extensions over the upstream IMAPX (the upstream files are duped with
just minor changes, mostly exposing internal API for me to hook into).
Please see [3] for the stretches I needed to make to subclass IMAPX.
Main problem was that imapx_untagged() was not exposed, so I had to
re-implement all code paths to that function inside my own extended
classes. To ensure I would get my extended object types in the right
places, I had to override the CamelIMAPXConnManager classes with my
own, mainly because the IMAPX internal classes were not using virtualized
functions (which made it impossible for me to just inject my types here
and there - I had to make sure the right code paths were followed).
The classes in src/camel (thr Kolab-specific ones) look somewhat alike,
for that same reason, see [4].

I've not been diving into Chen's proposals very deeply yet. Allowing
subclasses to override imapx_untagged() seems like the first step. I've
not yet grokked all of the proposals, so I have a question: Will the
current proposal (see [1]) allow for a subclassed IMAPX to be subclassed
again? Subclassing IMAPX twice is what I'm doing in evolution-kolab.
Of course, the first subclassing (for adding support for folder metadata
and ACL) can just be dropped, once these extensions make it into
upstream subclassable IMAPX.

Then, there's my table-based approach to imapx_untagged(). I've been
having a chat with Matt about that (and back in the days when I did the
implementation for 2.30, with David), which both liked the idea. Of course,
my 2.30 implementation was not done with truly subclassing IMAPX in mind,
so it would need some tweaking. I'll try to gather more thoughts as I'm 
rovelling through the code of the proposal at BZ.

What do you think?

I would invite everyone who is hacking IMAPX to participate in this
discussion.


[0] 
http://mail.gnome.org/archives/evolution-hackers/2010-September/msg00012.html
[1] https://bugzilla.gnome.org/show_bug.cgi?id=674310
[2] 
http://git.gnome.org/browse/evolution-kolab/tree/src/camel/providers/imapx/camel-imapx-server.c?h=gnome-2-30#n1363
[3] http://git.gnome.org/browse/evolution-kolab/tree/src/camel/providers/imapx
[4] http://git.gnome.org/browse/evolution-kolab/tree/src/camel/

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-05-08 Thread Christian Hilberg
Hi all,

Am Dienstag 08 Mai 2012, um 01:11:50 schrieb Philip Withnall:
> On Mon, 2012-05-07 at 17:17 +0200, Christian Hilberg wrote:
> > Moreover, there's a GSoC project (see 
> > https://live.gnome.org/SummerOfCode2012/Ideas)
> > for a backend cache infrastructure (the Ideas page still outlines
> > a Contact cache - is this up-to-date?).
> [...]
> Unfortunately, there are no GSoC students working on that idea — none of
> them showed any interest. :-(
> 
> Milan did some design work on an API for the cache, though I've
> misplaced it at the moment. I don't know how this fits in with Kolab's
> current cache API, but code reuse is always good.

@Milan: Do you think you could post your API work here at e-h list?
That would give us something to base our discussion on. Even if no
GSoC student picks up the topic, your work should not be lost.

> I will hopefully have some time to work on this in a month or two, if
> nobody else has done so by then. My time is really limited up until
> mid-June though.

Same here, all the more reason not to do double efforts. :)

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-05-07 Thread Christian Hilberg
Hi everyone,

being back in the office and having cleaned up my desk,
let's heat up this topic again, so it hopefully will
get us somewhere.

Am Dienstag 03 April 2012, um 10:52:00 schrieb Christian Hilberg:
> Hi everyone.
> [...]
> Back in version 2.30, Evolution has not had a dedicated "synchronize"
> button, but there has been the online/offline button, which, when toggled,
> resulted in a synchronize() function being called in the cal/book backends.
> [...] 
> In version 3.4 of Evolution, this functionality is no longer existing.

Backends other than evolution-kolab may not miss that right now, since
(IIRC) none of them implements offline write operations, but all go into
read-only mode when offline (please correct me if I'm mistaken).

evolution-kolab does miss that, since it already implements full offline
write support, which was working in 2.30, but now, the existing functionality
cannot be used as before.

The following is involved:

* CamelIMAPX inside KolabMailImapClient
  (implements the read-only disk cache for us)

* KolabMailSideCache
  (implements an offline write cache which holds locally
  changed objects in offline mode and acts as a write-through
  cache in online mode for PIM objects)

* KolabMailSynchronizer
  (implements collision detection and resolution for PIM
  objects, used when changing online state as well as in
  online mode)

Unless there is a dedicated synchronize() function with which
we can tell the backend to do the synchronization, most of this
already-existing infrastructure is not usable in evolution-kolab,
but is sitting idle.
  It has already been agreed upon (see previous posts in this thread) that
such a synchronize() function is needed and that it can be triggered
from the EClients in a sensible way. Question is, how and when will it
be implemented so we can test the migrated evolution-kolab parts waiting
for that.

Moreover, there's a GSoC project (see 
https://live.gnome.org/SummerOfCode2012/Ideas)
for a backend cache infrastructure (the Ideas page still outlines
a Contact cache - is this up-to-date?).
Via
KolabMailSideCache
and
KolabMailInfoDb,
evolution-kolab already implements an offline cache for both, contacts
and calendar types. Albeit being somewhat Kolab-centric at present,
this is a working offline cache infrastructure already existing, which
could be generalized and/or cannibalized for a new cache usable by all
backends (including evolution-kolab). I'd be happy to use a generalized
backend cache in evolution-kolab, rather than having each backend implement
its own cache, provided evolution-kolab's needs (like being able to store
binary blobs) are satisfied. Feel free to ask questions - I'm
here to answer them as much as I can.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-04-13 Thread Christian Hilberg
Hi,

Am Freitag 13 April 2012, um 11:54:51 schrieb David Woodhouse:
> On Tue, 2012-04-10 at 21:51 +0200, Patrick Ohly wrote:
> > On Wed, 2012-04-04 at 13:32 +0200, Christian Hilberg wrote:
> > > Which is the long-term vision for Evolution in this regard?
> > 
> > Lack of proper offline support has been my main motivation for
> > developing SyncEvolution. I know from others that they, too, would love
> > to see this supported natively in EDS+Evolution, without the need for an
> > external application.
> > 
> > If there is sufficient interest, then I would be open for discussions
> > about how SyncEvolution could be integrated seamlessly into Evolution.
> > This would bring offline support for CalDAV, CardDAV, ActiveSync and
> > might even add support for SyncML peers (client or server).
> 
> I think this could be a really interesting way forward.
> 
> The protocol-specific back ends in Evolution all lack proper
> synchronisation support. Their offline operation is read-only, or if
> there's offline write support then its capacity for reconciling changes
> when it syncs up with the server is very limited.
> 
> We'd definitely want to offer a generic capability within Evolution, for
> the various back ends to use to support an offline-writeable mode and
> resolve conflicts correctly.

Exactly how to detect a sync conflict, and how to act upon one, once detected,
is highly specific to the groupware server you talk to. I do not believe a
truly generic approach which fits all kinds of groupware servers could ever be
finished. ;-) Having a generic mechanism around for dealing with the common 
aspects
of synchronization, however, would do much good. Without having seen 
SyncEvolution's
code base, I guess there are common parts as well as server/protocol specific 
parts
- the latter of which would need to be implemented by the backends, while the
common parts (including a mechanism to ask for user interaction while syncing) 
would
need to be implemented only once. But, you may want to bear in mind, that the 
choices
you have in resolving conflicts are dependent on the server you talk to as well.

> So, why *not* use SyncEvolution for that, since it can already do it and
> it's a *lot* of work to get it right if we were to reimplement it all?

Should be fine for the protocols SyncEvolution already supports, at least.

> Imagine we ditch Evolution's protocol-specific back ends, and replace
> them with something which is basically a local file back end and uses
> SyncEvolution (or a derivative/subset of it) to actually communicate
> with the server.

The different groupware servers do follow their very own paths in how they
want to be dealt with. The backends, as I see them now, are mere protocol
implementations (or transformers), with offline capabilities attached to them
(or not). The groupware server protocols need to be implemented somewhere...
not sure whether you could really replace the backends as they are now.
Turning SyncEvolution into a common infrastructure which can be used by the
backends seems like a more straightforward way to me.

> Obviously you'd want changes to be made directly when you're online,

"Online" in the sense of "service can be connected to" or "online" as
in "client state"? :-)

> so
> that errors like 'storage full' would be shown immediately. And you'd
> want to propagate the storage restrictions (only one mobile number in a
> vCard, no ThisAndPrior recurrence exceptions, etc.) to the capabilities
> of the particular store. And one or two other details, but I think as a
> whole it could work out extremely well.
> 
> I really wouldn't want to see us reinventing the wheel and trying to do
> full sync and conflict resolution in Evolution — not in a generic way
> for all Evo back ends to use, and *especially* not over and over again

That would be very nice, indeed. Still, I have doubts whether you can have
a fully generic way of dealing with that, without being forced to make 
compromises
which make it impossible for certain backends to support their respective
server capabilities in full.

Still meditating on that...

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-04-13 Thread Christian Hilberg
Hi,

Am Mittwoch 04 April 2012, um 15:09:36 schrieb Milan Crha:
> > On Wed, 2012-04-04 at 13:32 +0200, Christian Hilberg wrote: 
> [...] 
> > As for evolution-kolab, sadly, there is no good way to do a "quick check" 
> > for
> > changes, at least I do not have an idea how one could implement one, since 
> > the
> > server does not do any kind of bookkeeping for the clients. One can check 
> > IMAP
> > UIDs, any change on them in a PIM folder indicates that a sync is needed, 
> > but
> > you do have to search for the changed objects then. It could slow down the
> > open() operation for a cal or book dramatically if the sync was done there,
> > that's why I did not put a sync point there for evo-kolab (though it could
> > easily be done, but it may create the impression that the cal/book itself
> > hangs... and is opening the cal/book cancellable? I don't think so).
> 
> Yes, the whole opening phase is cancellable, and is fully asynchronous
> (signal-driven), thus the client says "open me", and it receives
> confirmation "your request begun as operation X", then it is waiting for
> a confirmation for "I'm (not) opened now", which can come anytime.
> Authenticating against the server (asking for a password) is part of the
> opening phase. This is there since EClient, thus not for a long time.
> You've right having it part of the open itself is too much, that's why
> current builtin backends initiate a "delta thread", which takes care of
> regular updates (based on the 'refresh' interval) and also possible
> upload of changes. Because it runs in its own thread, then there is no
> slowdown during the opening phase. Of course, current builtin backends
> do not use real offline handling, as far as I know. That's the subject
> to change.

This approach can be done in async backends, for sync backends it is harder
to do. Some behaviour I see in the sync backend classes, to me, creates  the
impression that sync backends are being phased out and the async ones are
the preferred ones. It is true that the async approach has its beauty, but
e.g. evolution-kolab is not yet there. It would need to remain a sync backend
for some time, there still is internal stuff to be straightened out (I'm trying
to do that presently), and evolution-kolab be changed to async only after that
(fixing the existing bugs first, then introducing the new ones ;-).

Especially for offline-capable backends, the open() operation could return
really quickly (using the local cache). Imagine you open() a backend mistakenly
(you wanted the other one, really), and the one you mistakenly opened starts
its syncing run. Maybe not so nice.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-04-05 Thread Christian Hilberg
Hi,

...also re-posting here instead of our more private thread, in order
to get these things into public, for the record and for discussion:


Am Donnerstag 05 April 2012, um 11:09:37 schrieb Milan Crha:
>   Hi,
> just an out-of-thread idea (initially opened in another discussion):
> 
> Thinking of it, dealing with conflicts while writing changes into the
> server when in online mode is simple, the backend just returns an error
> and doesn't try to resolve anything. Am I right? It should eventually
> update the local object, the only question is when and how (if you
> notify clients about change, then the editor will notify user about that
> change too - he/she can reject editor update, probably because he/she
> wants to use his/her changes and write them to the server, thus still
> using the old object).

Currently, the evo-kolab backend does conflict detection as well as conflict
resolution. The latter mainly since there has not been an infrastructure in
E-D-S to request user interaction back in 2.30 era. When configuring a Kolab
folder in Evo for PIM use, the user can, basically, select from the following
options for sync conflict resolution, which are applied whenever an object is
being written onto the server, be it in online mode or while synchronizing
after an offline session:

* Take newest (relies on the multiple client's clocks to be in sync, since
  the Kolab server does not help us with that - it just stores mails, and
  the time when an object is stored onto the server is not necessarily the
  time when it has been modified - the modicifation could have taken place
  hours before, while in offline mode, so we need to use the object's modtime
  here)

* Take remote (server side object wins)

* Take local (locally modified object wins)

* Create dupe (the result is having two distinct objects, local one is assigned
  a new, collision-free object UID)

As soon as the evo-kolab infrastructure for requesting user interaction is ready
(will be a temporary solution I think), the above list will contain one more
entry:

* Always ask (which will pop up a dialog for each sync conflict, in which
  the user can choose one of the aforementioned four options for resovling
  the conflict at hand)

That's it, basically.

For anyone who is interested to have a look at the evolution-kolab sources
and the implementation there:

The actual cache-implementing object KolabMailSideCache does not
have to do anything with all of that, it is on the KolabMailSynchonizer object 
to
decide which object wins and whether a locally cached object will just be
dropped and replaced by that of the server, or whether the locally cached
one will be written onto the server and after succeeding with that being
deleted from the cache. The KolabMailSideCache does not even have a facility
to ask what has changed, the bookkeeping for that is done in a KolabMailInfoDb
instance. These are all part of the main engine object, KolabMailAccess, and
located in the libekolab/ directory in the evolution-kolab source tree.


Kind regards,

Christian


-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-04-05 Thread Christian Hilberg
Hi there,

Am Mittwoch 04 April 2012, um 19:11:46 schrieb Matthew Barnes:
> On Tue, 2012-04-03 at 19:10 +0200, Christian Hilberg wrote:
> > How about the "service-available" to be set much like the to-be
> > "network-available", through GNetworkMonitor, as an EBackend property,
> > which, when changed, emits a signal?
> > 
> > Just rough thinking, nothing elaborate as yet - I'll be meditating
> > this. :)
> 
> We discussed this briefly on IRC, but just to follow up more formally.
> 
> Having stewed on this overnight I think we're coming at the problem
> wrong.  The question boils down to "can the backend operate on its data
> set or not?"  That status is as much as we need to expose to clients, I
> think.  Network availability and remote server availability factor into
> the answer but clients need not care.  If a backend is offline-capable,
> then the answer -- as far as the client is concerned -- is always "yes".

This is pretty much how evolution-kolab behaves. From a technical point of
view, if the (E)Client knows the backend in question can operate on the
given data set, that is simple, sound, and enough for the client to know.

What comes to mind is the non-technical, more user-oriented view.

Say, a group of users share a common calendar, which, as I outlined before,
is a much common use case for Kolab (more common even than private ones),
and I guess it is the use case a "groupware" server is all about.

Now, if a user edits and saves an event, and my backend says "yes, I can
operate on the data" -- what is it the user expects? What she will *see*
is, with the above model, that the newly created or changed event got saved.
If she is not keenly watching her networking status, she will assume that
the event got stored on the server, visible for the others in the group.
If the backend, instead, finds, it cannot reach the server, the event will
be stored locally and not be visible on the server. The user will proceed
with her daily work, assuming the new or changed event is visible to the
others in the group, while, actually, it is not.

If the backend has no notion of a dedicated "offline" state, and such is not
visible in Evolution or any other client, how does the backend tell whether to
report an error that the object could not be stored on the server and has been
saved locally only, awaiting synchronization? For the backend to be on the safe
side, this error would always need to be reported.

Say, the user has purposefully disconnected from the network. She will then
know that the objects cannot be stored on the server. And she will also know
that, once she reconnects, she will need to trigger a synchronization run.
On the other hand, while being disconnected (e.g. for a couple of hours or
even a few days), she will find it much annoying to be told each time she
stores an object that it could not be stored onto the server - "Yes, I know
it cannot be stored, as I AM OFFLINE!".

This is why I propose a dedicated offline state, which is not dependent on
network availability, and which is visible to the user by being displayed
in each client that connects to E-D-S. Such a state makes it very clear to
both, user and backends, how to act and what to expect during the workflow
(for instance, there cannot be any sync conflicts while working in offline
mode - the user just plainly does not expect to see any in this case).
It also seems that online or offline is not a state the E-D-S clients need
to maintain, but it is rather a status E-D-S itself maintains (and tells it
to its backends as well as to any client that connects and has the capability
to display E-D-S's current status). Once a client requests E-D-S to change
online/offline operational mode, the change request can be propagated to
both, all backends which do implement a notion of online/offline operational
mode, as well as to any client connected to E-D-S which has the capability
of showing E-D-S state.


Kind regards,

Christian


-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-04-04 Thread Christian Hilberg
Hi Milan,

thanks a lot for joining us and for writing the nice summary!
This is much appreciated. If the mail thread becomes too long
and overly complicated, it may make sense to drop the findings
into a wiki page and work it out from there.

First of all, no, the things discussed here are not going to be
easy, and it raises the question what Evolution actually wants
to be. Does it want to be a fully offline-capable PIM/groupware
client? That means, does it want to support backends which are or
strive to be?

Which is the long-term vision for Evolution in this regard?


Am Mittwoch 04 April 2012, um 12:24:58 schrieb Milan Crha:
> On Tue, 2012-04-03 at 13:33 -0400, Matthew Barnes wrote:
> > On Tue, 2012-04-03 at 19:10 +0200, Christian Hilberg wrote:
> > > Just rough thinking, nothing elaborate as yet - I'll be meditating
> > > this. :)
> > 
> > Rough thinking here too.  I'll let it simmer.
> 
>   Hi,
> this thread is getting quite complicated, and I confess I'm rather lost
> here (the final outcome should be clear, right). But to summarize which
> things are discussed here a bit (or better those I understood):
> 
> a) Add an explicit method to synchronize local changes into the server
> b) Add some mechanism to ask user for conflict resolution during a)
> c) Tell backend to work in "offline mode" - do no network operations
> d) Notify client about current "offline mode" being used by the backend

That pretty much sums it up.

> --
> 
> ad a) There is agreed about the method addition, and I agree too. Maybe
> a different method prototype would be used (more parameters, see below).
> I suppose, you still tries to write the changes to the server as soon as
> possible, when in online mode, right? It makes sense, I'm only checking.

Trying to bulk-sync as soon as network comes back online may interfere
with the user's planned workflow (just reading latest mails on a shaky
line), so I would suggest to either leave that to the user (by pressing
the sync button), or to provide a config option. The latter could also
be done on a per-backend basis.

> --
> 
> ad b) This is quite complicated, the backend cannot rely on gtk+,
> because it would bring the dependency on the factory and the factory may
> not depend on the gtk+, it should be runnable without live desktop, only
> from a terminal. Correct me if I'm wrong. The idea of "another process
> taking care of the user interaction" is, apart of quite complicated,
> also not easy to do, what if you run the server without live desktop, or
> if you run on thin clients, or ... I'm afraid there can be many ways how
> to break this approach. Thus, what about adding a DBus signal on the
> backend for conflict resolution, something like:
>void resolve_sync_conflict (
>   guint sync_op_id,
>   const gchar *server_object,
>   const gchar *local_object);
> which backend will throw and the client side should response through
> something like this method:
>void sync_conflict_resolved (
>   guint sync_op_id,
>   ESyncConflictResolution resolution);
> where ESyncConflictResolution will contain values like:
>   Unknown
>   ServerWins
>   LocalWins
>   ... (maybe more, Christian may advise better)
> Of course, the client part should implement this, which is basically
> undoable for all of them (and some even do not use gtk or any user
> interaction at all), thus I would add one parameter to the "synchronize"
> method, the ESyncConflictResolution value, which will pick the desired
> strategy. If it is "Unknown", then the backend can use the signal and
> wait for the method to resolve conflicts (better name from "Unknown"
> would be "Ask"). Of course, clients without user interface will not call
> the "synchronize" method, most likely.
> 
> The resolve_sync_conflict() uses strings for objects, and based on the
> EClient type it's either ECalComponent or EVCard as string.

You are right, it is too easy to forget that E-D-S better not depend
on UI. As for evolution-kolab, if there is no client connected, then
no synchronize() action would be triggered, hence no sync conflict would
occur. Only if there is a client actually requesting objects or a server
synchronization, then the backend would become active and actually *do*
something. Otherwise it would be sitting idle and not be trying to keep
up with server changes (object changed on server -- backend pulls --
object is changed back on server -- backend pulls --- ... I think a lazy
approach would be

Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-04-03 Thread Christian Hilberg
Am Dienstag 03 April 2012, um 18:05:33 schrieb Matthew Barnes:
> On Tue, 2012-04-03 at 17:29 +0200, Christian Hilberg wrote:
> > Seems to me that opening a connection in order to find out whether I could
> > open a connection is more than evo-kolab would need. Unless the 
> > "service-available"
> > check would be really cheap, it seems to me that "host-reachable" would
> > suffice. Once I actually try to connect and fail, I know that I cannot
> > connect. Nothing lost. ;-) (What's more, if "service-available" was TRUE 
> > half
> > an hour ago, when the check was made, that does not automatically mean that
> > it is still TRUE when I want to actually *use* the connection half an hour
> > later - so, not sure whether a "service-available" check would help much).
> 
> Perhaps then simply rename the "online" property to "host-reachable" to
> clarify it's meaning as a first step?  "Online" seems like too nebulous
> a term in this context anyway.

That may be worth it, especially since it is GNetworkMonitor setting this
flag and it is networking-related.

> Beyond that you can probably tell I'm flailing around for a coherent
> story.  What I had in mind for "service-available" was a way to notify
> the client app to just disable certain actions for that account to avoid
> repeated "Service Unavailable" error messages.

Sure, if my backend already knows that the service in question is
not reachable, then no need to try to connect - it could act as if
in "offline" state and just store the PIM object in the local offline
cache. That's all.

> But then two questions spring to mind:
> 
> 1) If a backend can queue up changes offline to be synchronized with
>a remote server later when it's available again, does that imply its
>"service-available" flag should remain TRUE always?

Not necessarily - the only bit the backend needs to know is whether it is
*supposed* to queue up changes and not try to spool them up onto the server 
(this
exactly comprises an "offline" mode, though networking may still be available).

If "network-available" is FALSE, this implies "service-available" to be FALSE -
unless, of course, the service is local, but I do not think you will run a
groupware server on your local client machine with networking down...

If "network-available" changes from FALSE to TRUE, then I think 
"service-available"
needs to be re-checked and the flag set accordingly.

> 2) If a backend CANNOT queue up changes offline, how then should it
>determine when the remote server becomes available again?  Poll?
>Allow the user to say "try again"?
> 
> I think I'm lacking insight here, so advice is appreciated.

How about the "service-available" to be set much like the to-be 
"network-available",
through GNetworkMonitor, as an EBackend property, which, when changed, emits a 
signal?

Just rough thinking, nothing elaborate as yet - I'll be meditating this. :)


Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Memory corruption in timezone handling

2012-04-03 Thread Christian Hilberg
Hi,

Am Sonntag 01 April 2012, um 11:13:00 schrieb Robie Basak:
> Hi freeassociation-devel,
> 
> I think I've tracked down a segfault in evolution to a bug in libical.
> 
> In icaltimezone.c:icaltimezone_get_builtin_timezone,
> icalarray_append(builtin_timezones, ...) is called. This can cause
> icalarray_expand() to be called, moving the entire builtin_timezones
> array and thus invalidating any previous pointers into the array.
> [...] 

A  follow-up on the freeassociation-devel list asks whether Evo/E-D-S
still use a local fork of libical or whether they're using upstream
libical. From what the sources and configure.ac tell me, it is the latter.

I guess we should communicate this to freeassociation-devel?


Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-04-03 Thread Christian Hilberg
Hi Matt,

Am Dienstag 03 April 2012, um 17:11:56 schrieb Matthew Barnes:
> On Tue, 2012-04-03 at 10:40 -0400, Matthew Barnes wrote:
> > g_network_monitor_can_reach() takes a GSocketConnectable -- which is
> > just an interface that's implemented by several concrete classes like
> > GNetworkAddress (based on host name and port number) and GNetworkService
> > (based on SRV records), so I assume service will be taken into account
> > when possible in determining the boolean result that would feed into
> > EBackend's "online" state.
> 
> Seems I'm assuming too much.
> 
> Dan Winship advises me that g_network_monitor_can_reach() merely checks
> if there's a route to the host, but doesn't actually connect.
> 
> Would it make sense to split the "online" state into two flags, perhaps
> "host-reachable" and "service-available"?  The latter would reflect the
> result of actually trying to connect to the service to see if something
> answers, obviously only attempted if "host-reachable" is set.
> 
> These could both be class methods in EBackend so backends can tailor
> them as needed.  For example, an HTTP server may well respond alright,
> but with a "501 Service Unavailable" which should interpreted as FALSE.
> 
> Would this distinction be useful to backends?

I can only speak for evo-kolab, but that much I will do.

Seems to me that opening a connection in order to find out whether I could
open a connection is more than evo-kolab would need. Unless the 
"service-available"
check would be really cheap, it seems to me that "host-reachable" would
suffice. Once I actually try to connect and fail, I know that I cannot
connect. Nothing lost. ;-) (What's more, if "service-available" was TRUE half
an hour ago, when the check was made, that does not automatically mean that
it is still TRUE when I want to actually *use* the connection half an hour
later - so, not sure whether a "service-available" check would help much).


Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-04-03 Thread Christian Hilberg
Hi Matt,

thanks a lot for picking up this topic, as it is quite essential for us.
Maybe others can join in as well in order to iron out what would be needed
here.

Am Dienstag 03 April 2012, um 14:14:52 schrieb Matthew Barnes:
> On Tue, 2012-04-03 at 10:52 +0200, Christian Hilberg wrote:
> > Next part is, that I think network (un)availability and Evolution/E-D-S
> > online/offline state are two separate things, which got mixed in the
> > current implementation. Network unavailability means I cannot write my
> > objects onto the server. In evolution-kolab, whenever a PIM object is
> > saved, it is first stored in the local write cache. If in "online"
> > state (as in Evo 2.30 semantics), evo-kolab would then try to push the
> > object onto the server, which may fail due to a multitude of reasons -
> > server down, network line shaky (connection dropouts),
> > firewall-of-the-day is active or whatsoever. The PIM object then simply
> > stays in the offline cache, waiting for a later successful sync with
> > the server.
> 
> Still not sure how synchronization should be triggered in the UI, but I
> like the idea of a synchronize() method for EClient.  I think being able
> to explicitly say "synchronize my changes now" is an important use case
> that we're lacking at the moment.

Apart from being rather simple as far as the implementation goes, as I tried
to outline in my lengthy posting, there is also a psychological aspect to
a dedicated synchronization event triggered by the user:

* no surprise if things take time and CPU/network gets hogged, since
  the operation was explicitly requested by the user
* no surprise if sync conflict dialogs pop up
* no guessing needed by the backends as to when to trigger a sync
  run, cals/books stay responsive, no need for possibly quirky workarounds

> Conflict resolution is a tricky case that to my knowledge we've not
> really dealt with before.

In evolution-kolab, we do. We have to, since shared cals/books are
common use case (even more common than personal, non-shared ones).
We therefore examine our IMAPX cache (all PIM objects are stored as
emails in Kolab world) - this is "the server state as it was before".
Next, we have our write cache, which - after offline store operations,
like creating new objects and changing existing ones - may contain
potentially conflicting local changes, and finally the server side,
which may contain potentially conflicting remote changes.

> I don't think a UI for conflict resolution
> necessarily has to be programmed into Evolution.  In fact I'd prefer it
> isn't since it would leave other E-D-S clients out in the cold.  Instead
> the backend itself could spawn off some specialized GTK+ process that
> pops up a conflict resolution window.  Then we wouldn't have to worry
> about stuffing conflict resolution methods into the client-facing APIs.
> It would be automatic as far as E-D-S clients are concerned.

As it is the backend which needs to deal with the conflict resolution,
and since it is the backend which needs to actually acquire the user
input regarding how to act on the conflict at hand, leaving out Evolution
from all this seems to be a good way to do it. I could imagine some
service process for this, which backends can use to request user input,
in order not to make Evo special among the E-D-S clients. Once the conflict
is resolved, the backend can notify interested clients about the change,
that's it.
  Let me once again underline that the current implementation in evolution-kolab
with the sync conflict resolution strategy preconfigured per folder
(take newer object, take server object, take local object, create duplicate)
is a result from the lack of exactly this infrastructure, that a backend
cannot request user input in a generalized manner. In real life, these 
preconfigured
resolution strategies will fail to accomodate for what the user really needs
(which is a from-case-to-case UI dialog). It is just a mere workaround.

> As for Evolution's forced offline mode feature: at present it only
> applies to mail since mail is still in Evolution's exclusive domain.
> Once mail joins address books and calendars as a desktop-wide service
> with potentially multiple apps acting as clients, I plan to remove
> Evolution's forced offline mode entirely since it won't be applicable
> anymore.  This is part of my campaign for one E-D-S client to not get
> special privileges over other E-D-S clients.  We need to forget about
> the 'E' in E-D-S.

Make that 'E' an 'Extensible' or 'Elaborate' or whatever, and it will
fit again. ;-)
 
> That said, EBackend's online detection is too simplistic at present.
> I'd like to make each EBackend determine its own online/offline 

Re: [Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-04-03 Thread Christian Hilberg
Am Dienstag 03 April 2012, um 10:52:00 schrieb Christian Hilberg:
> Hi everyone.
> [...]
> Effectively, I am lacking a mechanism which tells my backend that the user
> wants to synchronize the local cache (evolution implements a full offline
^-- evolution-kolab
> cache with offline-editing support) with the Kolab server side. If the network
> is unavailable and then becomes available, it is debatable whether this would
> be a good time to start a synchronization run.

> [...]

> Kolab server synchronization can become quite bulky, since the Kolab server 
> does
> not have some notion of per-client changesets. It is a mere storage, and
> synchronization means to grovel through folders in search of emails. This can
> take quite some time, depending on how many objects are stored in a given 
> folder,
> and it can be heavy on CPU usage as well as network bandwidth usage. If that 
> starts
> grovelling just the moment some network becomes available, that can be much 
> annoying to the unexpecting user.

Searching for synchronization conflicts can even involve the necessity to 
download and
unpack MIME mails and parse the Kolab XML part therein, to find out whether a 
sync conflict
actually happened - the server does not help us much with this, it is all on 
the client.
That's one reason why the synchronization with a Kolab server can be bulky. If 
a sync run
gets cancelled or otherwise interrupted, there is nothing we can do but to 
start over
and re-do from start.

> [...]


Kind regards,

Christian


-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] PIM server synchronization and Evolution online/offline state

2012-04-03 Thread Christian Hilberg
Hi everyone.

While porting evolution-kolab from Evolution 2.30 to 3.4.x (and on
to 3.5 later on), I have been stumbling upon an issue regarding
groupware server synchronzation.

Back in version 2.30, Evolution has not had a dedicated "synchronize"
button, but there has been the online/offline button, which, when toggled,
resulted in a synchronize() function being called in the cal/book backends.
Evo's online/offline state was independent of network availability back then.
From a user's point of view, it was okay to have the backend synchronize
with the groupware server when Evo online/offline state was toggled.

In version 3.4 of Evolution, this functionality is no longer existing. As I
learned on IRC yesterday, at least as of GLib version 2.32, the "online"
EBackend property is not even toggled by Evolution itself, but by 
GNetworkMonitor,
depending on network (un)availability. If the network is available, the
EBackend "online" property is set to TRUE by GNetworkMonitor (via the backend
factory), and is set to FALSE once the network becomes unavailable.

Effectively, I am lacking a mechanism which tells my backend that the user
wants to synchronize the local cache (evolution implements a full offline
cache with offline-editing support) with the Kolab server side. If the network
is unavailable and then becomes available, it is debatable whether this would
be a good time to start a synchronization run. However, if GNetworkMonitor 
signals
network is unavailable, obviously, it is too late to try to synchronize with
the server.

It has been proposed to use an asynchronous backend thread to synchronize with
the server. While it could be done, it has the drawback that during sync, sync
conflicts can occur. evolution-kolab presently implements a pre-configurable
sync conflict resolution strategy which does not need user interaction during
sync, but this was a simplification done in 2.30 since we did not have the
capability to ask for user interaction from E-D-S back then. Years of experience
with Kolab (and other groupwares) have shown that automatic conflict resolution
cannot get it right in many cases and user interaction (manual conflict 
resolution
via a dialog) is needed. Implementation for this has started in evolution-kolab.
Back to the topic: A synchronization background thread will run into a sync 
conflict
sooner or later, and a dialog will pop up asking for user interaction. This will
inevitably happen while the user is occupied with something else, like composing
an email, and it will then disturb her workflow, since she was not expecting
some sync conflict dialog to pop up (the principle of least surprise will be
violated), let alone the fact that an async synchronization thread introduces
a nice extra level of complexity.

Kolab server synchronization can become quite bulky, since the Kolab server does
not have some notion of per-client changesets. It is a mere storage, and
synchronization means to grovel through folders in search of emails. This can
take quite some time, depending on how many objects are stored in a given 
folder,
and it can be heavy on CPU usage as well as network bandwidth usage. If that 
starts
grovelling just the moment some network becomes available, that can be much 
annoying to the unexpecting user.

IMHO, you it is a plain impossibility to "guess" the correct time for a server
synchronization. As a backend, I do not know what the user wants to do next. 
Network
may be available, but it may be awfully slow (e.g. some hotel room), and the 
user would
prefer to just check some mails and do the heavy groupware server 
synchronization when
back in the office. Some users prefer to work in offline mode, even when 
networking is
available, and do some bulk sync when the time seems right for them.

This means that the most simple, most straight-forward and least-surprising 
(for the
user) thing to do would be to invent a dedicated sync button, with which the 
user can
direct the backends to do the server synchronization *now*. Once this button is 
pressed,
it is clear to the user that now, things can take their time and she will be 
willing to
wait for as long as the sync run takes. Depending on network availability, this 
sync
button can even be grayed out - it surely makes sense to deactivate that button 
if
there is no network available (maybe some tooltip could show information why 
the sync
button is deactivated). If networking is available, then the sync button can be 
pressed.
The sync, due to multiple reasons, can still fail, but this is something for the
backends to handle.

My proposal would be an EBackend virtual function, which the backends can 
choose to
implement and which is called when the user does a dedicated UI action, like 
pressing a
sync button:


EBackend::synchronize (EBackend *backend, EDataCal *cal, GCancellable 
*cancellable, GError *error);


That would be one part of the issue.


Next part is, that I think network (un)availability and Evolution/E-D-S 

Re: [Evolution-hackers] Memory corruption in timezone handling

2012-04-02 Thread Christian Hilberg
Hi,

Am Sonntag 01 April 2012, um 11:13:00 schrieb Robie Basak:
> Hi freeassociation-devel,
> 
> I think I've tracked down a segfault in evolution to a bug in libical.
> [...]
> Additional notes here, including backtraces of the crash and a valgrind
> log catching the access to freed memory red handed:
> https://bugs.launchpad.net/ubuntu/+source/evolution/+bug/956843
> http://mail.gnome.org/archives/evolution-hackers/2012-March/msg00028.html

FWIW: This might be an issue the evolution-kolab plugin also suffers from [0].


Kind regards,

Christian


[0] https://bugzilla.gnome.org/show_bug.cgi?id=673197

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Start your engines for Evolution 3.5.1

2012-03-26 Thread Christian Hilberg
Hi everyone,

Am Montag 26 März 2012, um 05:03:14 schrieb Matthew Barnes:
> You may have noticed Evolution 3.4.0 and co. has been released and I've
> created 'gnome-3-4' branches for all modules except 'evolution-mapi' and
> 'evolution-kolab' (but I assume Milan and Christian will take care of
> those shortly).
> [...]

As for evolution-kolab, I have a good number of tasks scheduled that would
best be done on the current code base (i.e., 3.4), before starting out with
new work for the 3.5/3.6 cycle. I'm afraid I painfully lack the resources
to cope with both, porting to 3.5 and fixing things in 3.4 (towards 3.4.1),
or even merge my work on a 3.4 branch with conflicting fixes which have
been done on master in the meantime.
  I would therefore kindly ask that I branch off gnome-3-4 a little later,
providing me with some time to catch up with the fixing and cleanup necessary
on the current code base and only after that branching off gnome-3-4. I do not
want to keep anyone's hands off of evolution-kolab, thing is, I'll get into
trouble if branching will be done early (for 3.5/3.6 cycle I would therefore
prefer a late branching for evolution-kolab, "porting" to 3.5 somewhen after
3.4.1).

Any thoughts on the topic are welcome.


Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] [evolution-kolab] IMAPX code dependency

2012-02-03 Thread Christian Hilberg
Hi Matt,

Am Freitag 03 Februar 2012, um 16:46:50 schrieb Matthew Barnes:
> On Fri, 2012-02-03 at 15:53 +0100, Christian Hilberg wrote: 
> > I need to replicate some code paths of IMAPX (e.g. all paths that
> > lead from the Store to imapx_untagged, so I can extend this one
> > for ANNOTATEMORE and later IMAP ACL). Hence, there is some IMAPX
> > code duplication I cannot avoid at present.
> > 
> > This means that for every (major) change in upstream IMAPX,
> > I need to pull the changes in and check whether I need to
> > fix something in my code dupes.
> 
> Would it help you much to turn imapx_untagged() and similar functions
> into virtual class methods in CamelIMAPXServerClass?  Then you could
> override the method in your subclass, and have it chain up first and
> then do other custom stuff.

That would definitively make things easier. As far as the CamelIMAPXServer
goes, extending imapx_untagged is the main objective. In fact, for 2.30,
I've added a few more switch cases to imapx_untagged and did no more than
calling one of my own functions there. (I did a little more - we've talked
about that table based approach where I turned almost all of that giant
switch statement into a function table, leaving only a few case's
to be handled - it is all there in evo-kolab's gnome-2-30 branch, but has
never gone upstream).

> Or does the logic not allow you to break things out that cleanly at
> present?  (wouldn't surprise me)

I don't think that my own logic would get into the way here. Now that you've
mentioned it - we were thinking and talking on IRC how to change imapx_untagged
for a table-based approach (a function table that is, with one handler function
per untagged response and its index being the untagged response code). For that,
I think you mentioned a vtable bound to the object (class?), to make the whole
thing extendable.
  I see the imapx_untagged-upcall you mentioned above fit into this scheme.
Extend the vtable, and in your local implementation of imapx_untagged, call
the parent object's imapx_untagged first, then check whether the response has
already been handled (in which case you're done and return), or whether
parent's imapx_untagged tells you that there is a response pending and still
unhandled, so you, the derived class, may have a handler for it. You check, and
yes, you have an entry in your extended vtable for the particular response
code (means, the list of known response codes also needs to be extendable,
that could be a tricky part with the current gperf thing for generating that),
and you call your handler. That is, with the untagged response code, index into
the vtable, get the function pointer and make your call.
  imapx_untagged would be required to set a specific error if the untagged
response could not (yet) be handled. As the implementor of a subclass, after
upchaining to the parent handler, this would allow me to decide whether there
may be work left to do and I can check whether I have a handler for it. If I
do _not_ have a handler, I do propagate that error, so either a subclass of mine
would know that there may be work left to do, or the original caller would know
whether there was no handler for the response code in the inheritance chain.
  Whether or nor a parent's existing handler for a specific untagged response
could be sensibly overridden with this construction might be worth discussing
(or whether it should even be possible - might not be a wise idea to make
that possible).

Dumping a few bits,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] [evolution-kolab] IMAPX code dependency

2012-02-03 Thread Christian Hilberg
Hi everyone.

In evolution-kolab [1], we use an IMAPX derivative for accessing
the Kolab groupware server via IMAP.

Since

(a) Camel does not expose IMAPX directly and
(b) IMAPX is not yet cleanly subclassable in all aspects and

I need to keep a copy of upstream IMAPX in the evolution-kolab
source tree.


I need to replicate some code paths of IMAPX (e.g. all paths that
lead from the Store to imapx_untagged, so I can extend this one
for ANNOTATEMORE and later IMAP ACL). Hence, there is some IMAPX
code duplication I cannot avoid at present.

This means that for every (major) change in upstream IMAPX,
I need to pull the changes in and check whether I need to
fix something in my code dupes.

I would therefore be very grateful if anyone who does a major
change or an important fix to IMAPX could give me an advance
warning before pushing into E-D-S master, especially if for any
reason the commit message is not / cannot be prefixed with e.g.
IMAPX: to signify that the change touches IMAPX.
This is especially important to me when (pre)release dates draw
nearer since I would like to keep evolution-kolab IMAPX in sync
with upstream IMAPX for (pre)releases, if at all possible.

Thanks in advance,

Christian


PS.:The changes I do to IMAPX locally at present are not
specific to Kolab (these parts are kepts in yet another
level of subclassing). It is IMAP extensions that I'm
doing, so I'm confident that these extensions will be
pulled upstream one day. Once that happens, and once
IMAPX is exported from Camel for subclassing, I will
happily drop my local copy and the dupes, these will
just no longer be necessary by then.


[1] http://live.gnome.org/Evolution/Kolab

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] [evolution-kolab] new mailing list

2011-12-07 Thread Christian Hilberg
Hi David,

Am Dienstag 06 Dezember 2011, um 22:29:46 schrieb David Woodhouse:
> On Tue, 2011-12-06 at 17:03 +0100, Christian Hilberg wrote:
> > the evolution-kolab plugin now has a mailing list, please see [1].
> > Everyone who is interested in following the discussions there is
> > invited to subscribe. I estimate this list to be a low-traffic one,
> > at least for some time. :)
> 
> Hm, for EWS I deliberately *didn't* set up a new list; likewise
> ActiveSync. I'd rather see it on evo-hackers.

When setting up the new list, I had been thinking about this as well.

The primary objective is to decommission the SourceForge infrastructure
we are still using. This means that we may eventually entirely shut down
the old mailing list, archives included, since the archives have been
moved to the GNOME.org list as well. A dead mailing list at SF may look
like a dead project, that's why I moved it in the first place.
  I can understand your concern that there may be discussions going
astray at evolution-kolab-devel-list, unattended by the rest of the
evolution-hackers. This concern is indeed a valid one. I think we can
counter this by discussing vital things at evolution-hackers and posting
the link into the e-h archive on evolution-kolab-devel-list. What's more,
all evolution-kolab devs should be hanging out at #evolution anyway.

Kind regards,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] [evolution-kolab] new mailing list

2011-12-06 Thread Christian Hilberg
Hi,

the evolution-kolab plugin now has a mailing list, please see [1].
Everyone who is interested in following the discussions there is
invited to subscribe. I estimate this list to be a low-traffic one,
at least for some time. :)

I'll post links into the archive of the evolution-kolab-devel-list
to evolution-hackers in case of relevant issues being discussed there.

Kind regards,

Christian


[1] http://mail.gnome.org/mailman/listinfo/evolution-kolab-devel-list/

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] UID in vCard

2011-11-18 Thread Christian Hilberg
Hi,

Am Freitag 18 November 2011, um 16:53:38 schrieb Patrick Ohly:
> On Fri, 2011-11-18 at 11:23 +0100, Christian Hilberg wrote:
> [...] 
> > While the E-D-S client (like Evo) might not be interested whether it is
> > a Kolab backend being used, there is still one thing you may wish to 
> > consider here.
> > We could of course map between Kolab PIM object UIDs and E-D-S UUIDs in our
> > backend.
> 
> That should never be necessary. As you said, having such two different
> ids doesn't buy the user much. Only a radical step away from "do what
> you want with UID" to "UID must be UUID and preserved" will - not
> realistic anytime soon, but at least a proof-of-concept would be nice.

Writing UIDs as UUIDs only would definitely be a good thing to start with.

> > > That is the whole point of this mail thread: a vCard UID may have a
> > > meaning outside of the storage in which it currently exists. EDS cannot
> > > know whether that is the case. Currently it assumes that the UID has no
> > > meaning and throws it away when adding contacts.
> > 
> > Not globally true. The file backend may do so, but it is the backend 
> > implementation
> > deciding whether re-writing a UID or not. E-D-S cannot decide that, since 
> > it does
> > not know what a given backend is dealing with.
> 
> What I meant is the Evolution/EDS API expectation that adding a contact
> will never fail because of a UID conflict. Whether the backend
> implements that by always overwriting the UID (as the file backend does)
> or by keep it when possible and overwriting otherwise (as in the Kolab
> backend) is indeed a backend implementation detail.

From evolution-kolab's point of view, it would be simple to return a
"*mp* UID already exists, try again"-error to E-D-S in that case,
provided the E-D-S API for that existed.

> But it has the same effect: a libebook user cannot reliably detect an
> add<->add UID conflict. It can check for a contact with the UID first
> (by assuming that ID in the libebook API == UID in vCard), but then
> there's still a race condition between that check and creating that
> contact.

Again, in Kolab context, the user of the calendar lib or addressbook lib
would still get a vague indication only. The race condition could still
occur, since there is (a) no transactional system provided by the Kolab server
for PIM object creation and (b) any Kolab client is required to fully work
in offline mode. While offline, we can check in our local cache whether
a UID collision was about to occur and return the corresponding error message
to E-D-S. Assume there was no UID collision in offline mode, it may well
show up when we're going online again some time later. Imagine, while in
offline mode, the PIM object in question has been exported already, carrying
the believed-to-be-unique ID, while the object in the offline cache faces a UID
collision when being spooled onto the server. Even if we fail to spool that
object onto the server since we detected an add<->add collision there,
and ask the user for some interaction, we may already have the exported-
in-offline-mode-object circulate elsewhere, e.g. by sending it via email,
playing funny tricks on us when we try to rely on its "U"UID.

As you can see, we can play this game back and forth. AFAICS, the following
may be a good start:
* have E-D-S generate good UUIDs
* give the backends the chance to report if a UUID already exists
  (if the error does not pop up instantly, it does not mean everything
  is well, but *if* it does, certainly E-D-S can try again and generate
  another UID, and notify the user)
* encourage all backend implementors not to overwrite existing UIDs,
  if at all possible

Just 2 cents,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] UID in vCard

2011-11-18 Thread Christian Hilberg
Hi Patrick,

Am Mittwoch 16 November 2011, um 15:55:54 schrieb Patrick Ohly:
> Hello!
> [...]
> On Di, 2011-11-15 at 15:01 +0100, Christian Hilberg wrote:
> > If a new UID is to be created, it is the responsibility of the Kolab client 
> > to
> > assign one. The Kolab server itself is unaware to object UIDs and will not 
> > touch
> > them (no read/write/anything).
> With "client", I meant an EDS client here (= the application using
> libebook). That there is a Kolab client and server involved is of course
> important for you, but not so much for a user of the abstract libebook
> API ;-)

While the E-D-S client (like Evo) might not be interested whether it is
a Kolab backend being used, there is still one thing you may wish to consider 
here.
We could of course map between Kolab PIM object UIDs and E-D-S UUIDs in our
backend. The E-D-S client (like Evo) would then see UUIDs and be happy with it.
Now imagine someone in Evo exports a PIM object which originates from a Kolab
server. Evo would write the E-D-S UUID into that PIM object. Now, by some nice
round-trip, this exported PIM object would reach a user of the Kolab server
it originated from. By importing the object into the Kolab server, we would then
generate a dupe, since the Kolab UID for a PIM object *is* the iCal/vCard UID
of an object stored. While this would have the potential of being a self-healing
process over time (a PIM object duplication is detected, the one with the UID 
which
is not UUID is deleted), it would take a very long time for the healing to be
completed, and only then you could really rely on the assents a UUID makes.
  To give you a hint about the numbers we're talking about, it is not uncommon 
for
a Kolab deployment to host thousands of contacts and incident types, potentially
shared among hundreds of users with various clients.
  Implementing UUIDs in our backend, as I said, is not an issue. The issue is
more like "what to you gain if you cannot rely on the UID you see to be really
globally unique". In Kolab context (that's why I'm talking about it here), a 
mapping
between Kolab-UID and E-D-S-UUID would not help you in PIM data exchange and 
sync
interplay.

> > > How does the backend work at the moment? Does it always overwrite an
> > > existing UID like the file backend does or does it already work as I
> > > proposed?
> > 
> > Existing UIDs are (and must be) preserved. This is a requirement for Kolab 
> > client
> > interop, since they all rely on the object's UID to reference it 
> > (especially regarding
> > changes to the contents of the PIM object). In Kolab, there is no way to
> > correctly reference an object other than using its UID.
> > 
> > > If it does, do you throw a
> > > E_BOOK_ERROR_CONTACT_ID_ALREADY_EXISTS when the existing UID is not
> > > unique?
> > 
> > Eeewww. :-) evolution-kolab presently sits on Evo/EDS 2.30.3 (which some 
> > like
> > to call "just plain old" here =). No error message in that case. If the UID
> > already exists, it gets rewritten. It was a tradeoff here - an existing 
> > Kolab
> > object and its UID superseedes a new one. Imported objects are regarded as
> > "new" (being assigned a new UID), should the UID they carry already exist in
> > the given PIM folder. The original UID would do no good in the Kolab context
> > if another object with that same UID already exists, since other groupware
> > clients do have an idea about the object this UID refers to already. Trying
> > to find out whether the imported object could actually be an update for an
> > already existing one seemed too complex and out-of-scope for the initial
> > evolution-kolab implementation. We're now porting to current Evo/EDS git 
> > master,
> > but I would still keep the current implementation unchanged when it comes
> > to how to interpret UIDs of imported objects.
> 
> That is the whole point of this mail thread: a vCard UID may have a
> meaning outside of the storage in which it currently exists. EDS cannot
> know whether that is the case. Currently it assumes that the UID has no
> meaning and throws it away when adding contacts.

Not globally true. The file backend may do so, but it is the backend 
implementation
deciding whether re-writing a UID or not. E-D-S cannot decide that, since it 
does
not know what a given backend is dealing with. For the evolution-kolab backend,
only those UIDs are rewritten which do already exist on the Kolab server. UUIDs
would, as a matter of fact, be helpful here. There is *some* risk, however, that
by chance you generate a UUID for a PIM object, and may find that even this one
exists on the server, because out of full randomness, a UUID-unaware 

Re: [Evolution-hackers] Camel no longer depends on libedataserver

2011-11-18 Thread Christian Hilberg
Hi everyone.

Am Mittwoch 16 November 2011, um 21:38:59 schrieb Matthew Barnes:
> On Mon, 2011-11-14 at 23:33 -0500, Matthew Barnes wrote: 
> > There is no longer any _technical_ reason why Camel needs to be bundled
> > in the evolution-data-server module.  I DO intend to split Camel off at
> > some point, but not yet.  Parts of its API are still a complete mess and
> > I'd like to give them some attention and also reach some semblance of
> > API stability for the library as a whole.  We're not there yet.
> 
> Chen asked me in the IRC meeting today [1] to clarify my position on
> splitting off Camel.
> 
> My vision for Camel is simply for it to be a nicely crafted, reusable,
> well-documented mail client library with tight GIO integration.  I do
> believe that's in line with what it was intended for all along.
> [...]

Thanks Matt for detailing your plans. Let me add some lines about what
little experience I have with Camel and what we were facing when initially
implementing evolution-kolab.
  Back then (2.30 era), we found we needed an IMAP implementation for use in 
our backend
to talk to a Kolab server. Instead of arbitrarily using some random
implementation, naturally, we looked at Camel, since it was provided in E-D-S.
  When consulting with the people on #evolution, we were instantly pointed to
IMAPX, and my thought was "why not".
  We were, say, surprised when looking at the code. Camel (and IMAPX) sources
were located in E-D-S, but used in Evolution, not E-D-S (we did not have a
look at other groupware backends at that time). This was some sort of a funny
finding to us.
  Next thing which bit us was the fact that we needed to extend on the existing
IMAPX implementation for Kolab specifics. Alas, we found ourselves unable to 
subclass
the Camel IMAP implementation. The reason was clear to us: Camel wanted to hide
implementation details, just request your provider for a given protocol and then
use it in a unified way. Unfortunately, this did not help us much. We were then
forced to duplicate IMAPX in our backend so we have it handy for extension and
subsequent subclassing.
  We did the following: First, extend the IMAPX implementation with the 
ANNOTATEMORE
IMAP extension. It would have been difficult (and the wrong place) to do that
in an IMAPX derivative, since this extension is at protocol level. After 
extending
our IMAPX copy that way, we subclassed it to create our own 'kolab2' provider,
which has some Kolab-specific extensions above IMAP level (so these extensions
are kept outside the actual IMAPX extension). Most notably, the 'kolab2' 
provider
now knows about Kolab folder type annotations, and hides the PIM folders when
run in Evo for Kolab email access. When run in the backends, it hides the email
folders and the folders the given backend type (cal/book) does not need to care 
about.

So far, so good.

Now, we're about to port evolution-kolab to the current 'git master' of Evo and 
E-D-S.
The situation for IMAPX has not changed, so we will need to dupe IMAPX *again*, 
from
current sources, re-implant our extensions into IMAPX (we have not had the time
to push them upstream, but will this time, hopefully), and start over. Not 
during the
initial porting, but later on, we will need to extend IMAPX even further, this 
time
with the IMAP ACL support (as far as needed for Kolab, that is).
  That said, we would not have been able to benefit from Camel being a separate 
lib,
unless it would have exported IMAPX as a subclassable GObject, and we would 
still have
faced the problem that we had to get the IMAP extensions done in time, which we 
were
able to do in our own dupe, but getting the stuff upstream (and doing it 
really, really
Right), would have taken more time than we actually had. The same will hold 
true for the
IMAP ACL extension we have planned.
  While our code dupe may be a good place to breed some ideas, and let the code 
mature
somewhat, we would be happy of course to see these extensions being moved to 
IMAPX itself,
once the implementation has evolved far enough. We could then get rid of our 
IMAPX code
dupe, ripping it out from evolution-kolab, provided Camel would export the 
CamelIMAPX*
classes as subclassable ones, so we still can derive our CamelKolabIMAPX* 
classes from
them and keep in evolution-kolab only what is truly Kolab specific (like the 
handling
of Kolab folder types).

We *would* benifit from Camel being a separate lib, however, in that there be a 
well-
defined and stable API for Camel users. Less API churn, once it has been 
stabilized,
and less effort for Camel users to keep their stuff working. Creating a good 
and stable
Camel API may be a p.i.t.a. initially, but I believe that it will clarify 
issues that
need to be adressed in overall Camel use, which may in turn ease more things in 
E-D-S
and Evo in the long term.

I'm not sure how this all would fit together with the planned-for email factory 
later
on, but it might be possible to further freeing evolutio

Re: [Evolution-hackers] UID in vCard

2011-11-15 Thread Christian Hilberg
Am Dienstag 15 November 2011, um 15:01:54 schrieb Christian Hilberg:
> Am Dienstag 15 November 2011, um 11:03:24 schrieb Patrick Ohly:
> [...] 
> > What happens during syncing? Do you resolve the add<->add conflict by
> > duplicating the item, merging them or discarding one copy?
> 
> This is a configuration option the user has. Kontact, as a reference client 
> for Kolab,
> will ask you in all events of synchronization conflicts. In Evo/EDS 2.30, we 
> did not
> have the infrastructure needed to query Kolab-specific user input from Evo, 
> so the whole
> thing is non-interactive. For each PIM folder, you can configure the backends 
> to use
> one of the following strategies:
> * use the "newer" PIM object (relies on timestamps - since these are set by 
> the clients,
>   not the Kolab server, it only works if the client's clocks are synced)
> * use the client's object (overwrites the one on the server)
> * use the server's object (discards the client's changes)
> * create a duplicate

Adding some more bits: The evolution-kolab user manual has some more info on
the current behaviour of the plugin in "3.4.2 Conflict solving strategies",
see [1].

Kind regards,

Christian


[1] 
http://sourceforge.net/projects/evolution-kolab/files/evolution-kolab_user-manual_v1.3.pdf/download

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] UID in vCard

2011-11-15 Thread Christian Hilberg
Hi there,

Am Dienstag 15 November 2011, um 11:03:24 schrieb Patrick Ohly:
> On Di, 2011-11-15 at 10:50 +0100, Christian Hilberg wrote:
> [...] 
> > Just adding a few bits on how the situation is for the Kolab groupware 
> > server.
> > 
> > The evolution-kolab backend cannot ask the Kolab server for a UID (since 
> > there
> > is no API for that) nor does the server enforce certain UIDs on a PIM 
> > object (but,
> > of course, that there be one). The only requirement is that the PIM 
> > object's UID
> > be unique in a given PIM folder. If the UID is globally unique, all the 
> > better.
> 
> That's the same situation as with the file backend then: a client could
> decide to set a UID in the vCard before creating the contact, and the
> Kolab backend+server would use that UID instead of creating their own.
> Good :-)

If a new UID is to be created, it is the responsibility of the Kolab client to
assign one. The Kolab server itself is unaware to object UIDs and will not touch
them (no read/write/anything).

> How does the backend work at the moment? Does it always overwrite an
> existing UID like the file backend does or does it already work as I
> proposed?

Existing UIDs are (and must be) preserved. This is a requirement for Kolab 
client
interop, since they all rely on the object's UID to reference it (especially 
regarding
changes to the contents of the PIM object). In Kolab, there is no way to
correctly reference an object other than using its UID.

> If it does, do you throw a
> E_BOOK_ERROR_CONTACT_ID_ALREADY_EXISTS when the existing UID is not
> unique?

Eeewww. :-) evolution-kolab presently sits on Evo/EDS 2.30.3 (which some like
to call "just plain old" here =). No error message in that case. If the UID
already exists, it gets rewritten. It was a tradeoff here - an existing Kolab
object and its UID superseedes a new one. Imported objects are regarded as
"new" (being assigned a new UID), should the UID they carry already exist in
the given PIM folder. The original UID would do no good in the Kolab context
if another object with that same UID already exists, since other groupware
clients do have an idea about the object this UID refers to already. Trying
to find out whether the imported object could actually be an update for an
already existing one seemed too complex and out-of-scope for the initial
evolution-kolab implementation. We're now porting to current Evo/EDS git master,
but I would still keep the current implementation unchanged when it comes
to how to interpret UIDs of imported objects.

> > PIM objects already residing on the Kolab server do carry a UID, created by 
> > the
> > client which created the object (evolution-kolab, Kontact, Horde, Outlook 
> > with
> > a Kolab connector, Thunderbird via Lightning/SyncKolab, ...).
> 
> Do you attempt to make the UID globally unique, for example by using a
> UUID?

In our current implementation, the UID will be unique to the Kolab server at 
hand.
Since the Kolab server does not impose specific restrictions on the format of 
the
UID, evolution-kolab could change the UID generation code (we currently use 
E-D-S
infrastructure for this) to generate UUIDs. However, other Kolab clients are 
free
to follow their very own scheme of UID formatting (they may well decide that 
UIDs
unique for a given folder only are unique enough). I'm not clear whether the new
Kolab format specification, which is in the makings right now, would enforce a
UID to be globally unique. Older clients would not follow that scheme, so if you
cannot rely on the UID of being globally unique, you do not gain anything. The
Kolab philosophy is to offload almost everything to the clients for maximum
scalability and minimum server load, accepting the fact that the server cannot
really enforce anything. The Kolab server itself is, as I said, fully unaware of
the PIM data. It stores all PIM objects as emails in IMAP folders. Hence, it 
will
happily accept a client writing multiple PIM emails onto the server and into one
PIM folder, all carrying the same UID. It is really all in the hands of the 
clients.
If a new Kolab server will not enforce UIDs to be UUIDs (and it very certainly 
won't),
then your gain is zero if you implement UUIDs in one client only.

> > When it comes to importing a PIM object, it is not possible to retain its
> > UID in the cases where the same UID exists on the server already for 
> > another PIM
> > object (unlikely, but possible, since Kolab object UIDs are not required to 
> > be
> > globally unique). As long as we're in offline mode, we may at first succeed 
> > retaining
> > the object's UID, but when going online any syncing with the server, find 
> > that
> > a new UID must be set on th

Re: [Evolution-hackers] UID in vCard

2011-11-15 Thread Christian Hilberg
Hi everyone,

Am Montag 14 November 2011, um 11:22:57 schrieb Milan Crha:
> On Mon, 2011-11-14 at 10:00 +0100, Patrick Ohly wrote:
> > So I suggest to pursue the first approach instead. I think it is
> > possible for the file backend.
> > 
> > Is it also possible for other backends? Or are some unable to store
> > the UID and look up contacts (efficiently) by it? In that case we will
> > have to relax the semantic of the API and accept that some backends
> > still use their own local ID. "Supports UID" should be defined as a
> > capability of the backend so that clients can take it into account.
> 
>   Hi,
> I wouldn't call it "local UID", it's rather "backend's UID" and mostly
> not, this is not doable for groupware backends which are using
> server-supplied unique identifiers for contacts/calendars, like message
> IDs in evolution-mapi, which talks to Exchange servers. It's easier, and
> makes sense, to use server-side IDs, which are meant to be unique.
> It's also a reason, from my point of view, why
> e_data_book_respond_create_contacts() passes UIDs of newly created
> objects back to the client.
> [...]

Just adding a few bits on how the situation is for the Kolab groupware server.

The evolution-kolab backend cannot ask the Kolab server for a UID (since there
is no API for that) nor does the server enforce certain UIDs on a PIM object 
(but,
of course, that there be one). The only requirement is that the PIM object's UID
be unique in a given PIM folder. If the UID is globally unique, all the better.

PIM objects already residing on the Kolab server do carry a UID, created by the
client which created the object (evolution-kolab, Kontact, Horde, Outlook with
a Kolab connector, Thunderbird via Lightning/SyncKolab, ...). An existing UID of
a PIM object must be retained, of course. Every Kolab client will follow its own
approach creating UIDs. Possible clashes need to be handled by the clients. When
creating a new PIM object, the Kolab client needs to create a UID for it. Kolab
objects are referenced by folder/UID in evolution-kolab. While mapping between
a "E-D-S backend UID" and the "Kolab UID" would be certainly possible, it would
require another level of lookups, which has the potential for being inefficient.

When it comes to importing a PIM object, it is not possible to retain its
UID in the cases where the same UID exists on the server already for another PIM
object (unlikely, but possible, since Kolab object UIDs are not required to be
globally unique). As long as we're in offline mode, we may at first succeed 
retaining
the object's UID, but when going online any syncing with the server, find that
a new UID must be set on the object.

No final statement here, just a dump of what came to mind. :-)

So here's my 2 cents,

Christian

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] [evolution-kolab] Version 0.30.0 released, moved to gnome.org

2011-11-08 Thread Christian Hilberg
Hi everyone!

The evolution-kolab team gladly announces the availability of version 0.30.0
of the evolution-kolab plugin for the Evolution PIM suite.

The major improvements over our previous release (Version 0.2.1) include overall
speedup fixes to most operations as well as a good number of memory leak
fixes and internal rework to improve on the user experience. No new 
functionality
has been added. The version number 0.30.0 documents that this is our first true
release for GNOME 2.30.

Source code, user manual and some supplemental files can be found on the 
project's old website, located at SourceForge:

http://evolution-kolab.sourceforge.net/

The full release announcement can be found at [1].

With this release, active development has been moved away from SourceForge and
under the hood of the GNOME project. Thanks to everyone helping with the
migration and thanks for the warm welcome at gnome.org.

While the migration to gnome.org is still in progress, the Git repository can
already be found at

http://git.gnome.org/browse/evolution-kolab

and a Bugzilla project is being set up. There is a new wiki page

https://live.gnome.org/Evolution/Kolab

which is to become the new primary source of information for the
evolution-kolab project. The current project status and a collection
of links to documentation and supplemental stuff are already there,
along with some thoughts on the porting of evolution-kolab to the
current development branches of Evo and E-D-S, which is now in the
makings.

Kind regards,

Christian


[1] https://sourceforge.net/mailarchive/message.php?msg_id=28363963

-- 
kernel concepts GmbH   Tel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] [Reminder] Evolution community meeting at #evolution-meet channel - Oct 18 - 3:30 PM UTC

2011-10-18 Thread Christian Hilberg
Hi Chen,

Am Dienstag 18 Oktober 2011, um 12:13:04 schrieb Chenthill:
> Hi,
>   The meeting goes as follows,
> [...]

You sure the meeting is *today*, not tomorrow (i.e. Wednesday),
as usual? Just asking. :-)


(Bye)^2,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Camel Authentication Changes

2011-10-18 Thread Christian Hilberg
Hi Matthew,

Am Montag 17 Oktober 2011, um 23:48:01 schrieb Matthew Barnes:
> On Mon, 2011-10-17 at 15:21 +0200, Christian Hilberg wrote: 
> > Fair enough, thanks for clarifying. If that's the current status, then
> > nothing is lost if we keep the implementation as-is for now and try it
> > again later on.
> 
> Still not sure how this whole security puzzle fits together yet, but
> this sounds like a piece of it:
> 
> http://stef.thewalter.net/2011/10/redesigning-seahorse-experience.html
> 
> Seahorse (or the library stack that Seahorse is built on) is supposedly
> adding support for NSS certificates by GNOME 3.4.

This reads interesting, for sure.

> That means we should soon be able to plug into Seahorse for certificate
> management instead of talking to NSS directly some time next year.  At
> least that's my hope.

The email (backend) factory which is in the makings for carving out email
handling from the Evo frontend would surely need a way to be fed with passwords,
be it standard user auth or any more advanced thing like opening a security
token with a PIN and reading authentication data (like client certificates)
from there. Once configured in seahorse, Evo might not need to do more than
presenting a dialogue for the general seahorse (stack) password, and everything 
is set
from there on, since the email factory, and possibly other factories as well,
will be granted access to the passwords or other authentication data they need,
all handled by a service which is controlled/configured via seahorse.
  Maybe this is a perspective for solving that whole security puzzle?

> I highly encourage you to contact Stef about your smart card issue, as
> he can certainly paint a clearer picture than I can.

I will do so. I've seen his posts on gnutls-devel regarding the PKCS#11
stuff, and it really seems things start working out in this area.
  I'm presently having the issue that OpenLDAP won't use a client certificate,
since it builds against GnuTLS, and the security token handling is not 
transparent
there for a lib like OpenLDAP. Instead, the application needs to handle all
details by itself. My hope would be that this whole seahorse effort will solve
most of the trouble... :)

Thanks for the hint and kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Camel Authentication Changes

2011-10-17 Thread Christian Hilberg
Hi there,

Am Montag 17 Oktober 2011, um 14:51:08 schrieb Matthew Barnes:
> On Mon, 2011-10-17 at 11:44 +0200, Christian Hilberg wrote: 
> > I take it this new password API deals with  service
> > passwords _only_, i.e. service user authentication?
> 
> Correct.  I don't have a good answer for you on the security token PIN
> use case at the moment.

Fair enough, thanks for clarifying. If that's the current status, then
nothing is lost if we keep the implementation as-is for now and try it
again later on.

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Camel Authentication Changes

2011-10-17 Thread Christian Hilberg
Hi Matthew,

Am Samstag 15 Oktober 2011, um 17:18:27 schrieb Matthew Barnes:
> Just a heads up that I've changed Camel's authentication API to factor
> out the password loop that each and every provider currently replicates
> for themselves.  Turns out they all have the same basic logic flow.
> [...]

I take it this new password API deals with  service
passwords _only_, i.e. service user authentication?
  I'm asking to be sure about this, since I'm still thinking about the
passing in of e.g. a security token PIN, be it a CamelService running
inside Evolution (for which a PIN dialog implementation exists) or a
CamelService running in our evolution-kolab backend (for which we found
no clean way when implementing it half a year back).
  I still do not have grokked enough of the current Evo/EDS implementation
and the design plans for the near future to come up with a better solution
than the demonstrator we currently have ... which is, to pass the PIN from
Evo to the backend via an account configuration detail (which gets stored
on disk and therefore is not a solid implementation, but no more than our small,
dirty hack around our lack of a better idea at the time we implemented it).

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] A little E-D-S code reorganization

2011-10-05 Thread Christian Hilberg
Hi there,

Am Donnerstag 29 September 2011, um 17:35:04 schrieb Matthew Barnes:
> On Thu, 2011-09-29 at 09:13 +0200, Milan Crha wrote: 
> > I think I mentioned it earlier, and maybe this is the right time, what
> > about replacing "e-" prefix with "evolution-" prefix for process names?
> > There was a discussion about it some time ago, Chen suggested it, and I
> > think it's a good idea. It has a benefit of searching for running
> > evolution-related process with one ps command only. I know it's more
> > system wide, not only for evolution itself, but because it comes from
> > evolution-data-server, then the change makes sense anyway.
> 
> 
> Okay, okay, you talked me into it.  :)
> 
> The "services" directory is in "master" now, with names changed as
> suggested.  Let me know if you encounter any build problems.

Yes, I've encountered them. :) Neither E-D-S nor Evo would build due to missing
CFLAGS and LDFLAGS here and there.
FYKI and to avoid double work: thanks to Milan, I was able to fix E-D-S (fixes
are in master already), work for Evo is underway.

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] [evolution-kolab] On porting and extending the plugin

2011-09-14 Thread Christian Hilberg
Hi all,

thanks to Matt, here are another two which I initially missed (since I was much
clear that Camel would move to GObject/GError/GIO...):

--

Thread:
http://mail.gnome.org/archives/evolution-hackers/2009-November/msg00019.html
"[Evolution-hackers] Camel Manifesto"
http://mail.gnome.org/archives/evolution-hackers/2010-May/msg0.html
"Re: [Evolution-hackers] Camel Manifesto (update)"

Objective:
* Camel moving from CamelObject to GObject
* the former Camel type system is removed
* introducing Camel async API
* ...

evolution-kolab affected classes:
* CamelIMAPX*
* CamelKolabIMAPX*
* KolabMailImapClient
* (potentially) KolabMailMimeBuilder

--

Thread:
http://mail.gnome.org/archives/evolution-hackers/2010-July/msg00025.html
"[Evolution-hackers] Heads Up: More Camel API breakage in 2.31"

Objective:
* Camel moving from CamelException to GError
* G_IO_ERROR for failable disk/net Camel operations

evolution-kolab affected classes:
* CamelIMAPX*
* CamelKolabIMAPX*
* KolabMailImapClient
* (potentially) KolabMailMimeBuilder

--

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] [evolution-kolab] On porting and extending the plugin

2011-09-14 Thread Christian Hilberg
Hi all.

Am Dienstag 13 September 2011, um 15:56:00 schrieb Christian Hilberg:
> The evolution-kolab team is currently planning to port the evolution-kolab
> plugin to the recent developer version of Evo/E-D-S. I have had a discussion
> [...]

In order to get a clearer picture of the changes in Evo and E-D-S since version
2.30, I have been groveling through the list postings in search for major 
changes
which will affect the porting (and later extending) of evolution-kolab. I have
condensed my findings into a text file which I found might be helpful for others
as well, so I'm posting it here. It is evolution-kolab centric of course, and it
leaves out all changes which do not affect an E-D-S plugin, also it may not be
exhaustive. But hey, you get it free of charge. ;-)

Here it is, have fun:



evolution-kolab - major Evo/EDS changes since 2.30

created:    2011-09-13 Christian Hilberg
changed:    2011-09-14 Christian Hilberg




Camel

--

Thread:
http://mail.gnome.org/archives/evolution-hackers/2010-September/msg00037.html
"Re: [Evolution-hackers] Camel Manifesto (update)"

Objective:
* Redefinition of CamelOperation
* Rename blocking methods
* Asynchronous Methods (new asynchronous API)
* CamelStream API change

evolution-kolab affected classes:
* KolabMailImapClient
* everything using CamelStreamMem

--

Thread:
http://mail.gnome.org/archives/evolution-hackers/2011-April/msg00093.html
"[Evolution-hackers] CamelService changes"

Objectives:
* new Camel XDG file system layout
* CamelService, CamelSession API changes

evolution-kolab affected classes:
* CamelKolabSession
* CamelKolabStore
* KolabMailImapClient

--

Thread:
http://mail.gnome.org/archives/evolution-hackers/2011-June/msg00016.html
"[Evolution-hackers] Rethinking Camel settings"

Objectives:
* introduction of CamelSettings class
* settings propagation through Camel classes
* plans for "binding mail account settings to ESourceExtensions"

evolution-kolab affected classes:
* CamelIMAPX*
* CamelKolab*

--


Evo / EDS (non-Camel)

--

Thread:
http://mail.gnome.org/archives/evolution-hackers/2010-November/msg00013.html
"[Evolution-hackers] Rethinking account management"

Objective:
* move from GConf to key files (details key file layout)
* establish ESourceRegistry (monitoring of config changes)
* rewrite of ESource*, API change
* connect backend-discovered sources with account

evolution-kolab affected classes:
* ECalBackendKolab
* EBookBackendKolab

--

Thread:
http://mail.gnome.org/archives/evolution-hackers/2010-November/msg00054.html
"[Evolution-hackers] Account management and keyrings"

Objective:
* integration of GNOME keyring with the new account management handling
* password handling and storing in ESource / EAccount
* ESource password API for frontend/backend use

evolution-kolab affected classes:
* ECalBackendKolab
* EBookBackendKolab

--

Thread:
http://mail.gnome.org/archives/evolution-hackers/2011-January/msg4.html
"[Evolution-hackers] Install E-D-S backends into separate directories?"

Objective:
* separate installation directories for calendar and address book backends
* issues with GTypeModule and backend type registering
* ESource interferences with GTypeModule (and solving strategy)

evolution-kolab affected classes:
* ECalBackendKolab
* EBookBackendKolab

--

Thread:
http://mail.gnome.org/archives/evolution-hackers/2011-March/msg00064.html
"[Evolution-hackers] Front-end header files for E-D-S libraries"

Objective:
* create toplevel header files for each E-D-S library
* deprecate inclusion of individual lower-level headers

evolution-kolab affected classes:
* potentially all

--

Thread:
http://mail.gnome.org/archives/evolution-hackers/2011-March/msg00075.html
"[Evolution-hackers] Backend requesting arbitrary user input from frontend"

Objective:
* how to allow backends to ask for user data
* case at hand: user PIN (cannot be stored)
* signaling from backend to frontend to request for data

evolution-kolab affected classes:
* ECalBackendKolab
* EBookBackendKolab
* KolabMailImapClient


Re: [Evolution-hackers] CamelService changes

2011-09-14 Thread Christian Hilberg
Hi there,

I know it is muc hlate for input, but anyway, here we go:

Am Donnerstag 21 April 2011, um 18:43:27 schrieb Matthew Barnes:
> To help smooth the way for the account-mgmt I've made a few improvements
> to the CamelSession and CamelService APIs in 3.1.  It's not necessarily
> the *final* APIs that will wind up in 3.2, but more like the first round
> of changes leading up to 3.2.
> [...]
> * The file storage location for CamelServices (really only CamelStores)
>   has changed.  It is now simply:
> 
>   $(XDG_DATA_HOME)/evolution/mail/$(UID)
> 
>   rather than:
> 
>   $(XDG_DATA_HOME)/evolution/mail/$(PROVIDER_NAME)/$(URL)
> 
>   That means each CamelService has a permanent location for files that
>   doesn't change if the user tweaks server settings or even changes the
>   provider.
> [...] 

I recall that when I tried to find my way into Camel when using it from
within the backend processes for evolution-kolab, I screwed up my provider
directory (named 'kolab2' in 2.30) now and then because of wrong Camel use.
It was then very easy to recover from the error by just killing my own
provider's subdirectory, which was easy to identify (let alone all of the
downsides the historic approach may have). Please forgive me for not reading
the Camel code here - can one guess from the UID to which account it may
belong?

What's more, in the current evolution-kolab design for 2.30, we have

$(XDG_DATA_HOME)/evolution/mail/$(PROVIDER_NAME)/$(URL)
$(XDG_DATA_HOME)/evolution/calendar/$(PROVIDER_NAME)/$(URL)
$(XDG_DATA_HOME)/evolution/addressbook/$(PROVIDER_NAME)/$(URL)

since we're using CamelStore also in the backends. Hope this will not prove
a broken design with the new situation for Camel.

Moreover, our pimped IMAPX derivative uses further SQLite databases in
addition to the folders.db Camel creates. These are for Kolab metadata
and for an offline write cache for Kolab PIM data. The PIM data cache
is used in backend context only, while the Kolab folder metadata DB is
used by the kolab2 provider run in Evo as well. I hope that changing forth
and back the providers for an account will not mess with that. (The Kolab
metadata DB is re-created and re-populated in case it is missing, so it
should not be problematic during migration.)

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Rethinking account management

2011-09-14 Thread Christian Hilberg
Hi,

Am Dienstag 18 Januar 2011, um 20:32:44 schrieb Matthew Barnes:
> [...] 
> Now I'll let you in on my master plan:
> 
> Either in the 3.2 or 3.4 time frame, after the branch is merged and has
> some time to settle in and stabilize, I want to move these configuration
> dialogs to Evolution-Data-Server and also write some simple command-line
> tools to run the dialogs.
> 
> Doing his will finally make it possible to configure address books and
> calendars for E-D-S independently of Evolution.  With that in place, we
> can start adding some nice desktop integration.

Has there already been a manifestation of that Evo-independent backend
configuration?

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] [evolution-kolab] On porting and extending the plugin

2011-09-14 Thread Christian Hilberg
Hi Milan,

Am Mittwoch 14 September 2011, um 08:25:20 schrieb Milan Crha:
> On Tue, 2011-09-13 at 15:56 +0200, Christian Hilberg wrote:
> > * IMAP ACL management. A new tab (or something alike) when
> >   right-clicking an IMAP folder in the Evo folder tree to view and
> >   edit IMAP access control lists as defined in RFC 4314 [4]. The IMAP
> >   ACL functionality will be implemented on a new branch based on A-B
> >   (see "Phase I, (1)"), much the same way ANNOTATEMORE has been
> >   implemented, to the extend needed for Kolab. This will lead to an
> >   API extension (like there already is in evolution-kolab-IMAPX).
> >   There will be the need to extend Evolution as well, as to make it
> >   use this API extension. It is currently not yet planned exactly how
> >   this can be done without littering Evolution with "the tacking on of
> >   arbitrary features" (MBarnes, [3])
> >   (Kolab specific: no)
> 
>   Hi,
> see how evolution-exchange provides the same functionality of Folder
> Permissions, it just adds a popup menu item and servers all what is
> needed without any special modification on evolution side. The same
> should apply for the folder type annotation editing - no change on
> evolution should be needed.

I'll check that. The less change needed on Evo side the better. I'm not
sure yet exactly how we will be able to solve it. I do not have knowledge
about how folders are handled in Exchange, but for Kolab, it is IMAP - so
we need the capability for IMAP ACL, which, unless I'm mistaken, IMAPX does
not yet provide. This part will be done (for now) in our IMAPX derivative,
and Evo will need to make use of this functionality one way or another. ACL
management is not limited to the evolution-kolab backends and is needed for
the Kolab email folders (which are plain IMAP folders) as well. Maybe
we can do this in an EExtension, I'll check with evolution-exchange. If
the UI extension evolution-exchange provides is fine for the Evo community
(which I think it is), then we could try to mimick the layout in order to
try for a consistent user experience. To that respect, maybe it will be
possible to iron out some common approach for the groupware plugins that way,
which I think is what Matt has in mind.

> With respect of creating a new folder on the kolab server other than
> mail: when you do File->New->Calendar and select the Kolab group, is it
> able to create a new folder and annotate it accordingly to the source
> group? Evolution-mapi provides a short folder list with folders of the
> certain type from which user can choose and under this is created the
> new calendar (or address book). Again, no change on evo side is needed
> for this.

As far as creating new PIM folders goes, this is correct. This can be done
entirely in the backends, provided we can re-use existing account information
(which in current Evo/E-D-S should be possible).
  Things are different when you need to change or set the type of an existing
folder manually. This is for error recovery mainly, but has been described by
our sponsor as a real life scenario which from time to time happens to occur
(due to server failure or client error). To do this, it will be made possible
to display the PIM folders in the email folder tree (though these folder's
contents will not be accessible), so you can right-click the folder and edit
the annotation it carries by selecting a type from a drop down list. This is
the typical way Kolab clients will provide this functionality for the user.
There are a number of issues related to this, e.g. the kolab backends need to
be notified of the change do they can sort of "drop" a folder they are no longer
supposed to care for ... whether or not we can sanely implement this remains to
be seen. The goal behind this is to enable Evolution to act as a complete Kolab
client, removing the need to resort to different clients to get all tasks done.

Kind regards and thanks for the hints,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] [evolution-kolab] On porting and extending the plugin

2011-09-13 Thread Christian Hilberg
Hi again,

one more thought:

It would be nice from my developer's point of view if it was possible to do the
UI extensions via some extension mechanism like EExtension, which would speed up
the implementation process for me. However, Matt has a point when he says (in 
[3])
that he does not want Evo to decline into some "tacking on of arbitrary 
features" kind
of user experience. The question here is whether such an UI extension could 
still
be done as an EExtension or should it rather be implemented in Evo itself.

Kind regards,

Christian


Am Dienstag 13 September 2011, um 15:56:00 schrieb Christian Hilberg:
> [...]
> [3] 
> http://mail.gnome.org/archives/evolution-hackers/2011-September/msg00030.html

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] [evolution-kolab] On porting and extending the plugin

2011-09-13 Thread Christian Hilberg
Hi everyone.

The evolution-kolab team is currently planning to port the evolution-kolab
plugin to the recent developer version of Evo/E-D-S. I have had a discussion
on IRC with Matt, David and Milan about some aspects of the current developments
in Evo and E-D-S, and how they may impact the porting and extending of
evolution-kolab. Your input on my thoughts is much welcome.
  Our resources are pretty much limited - again - and I will need to keep
a keen eye on the time I can spend on the different work packages. This will
result in suboptimal design decisions here and there, much as with the initial
project. That's most of a pity, but there is nothing I can change about it
presently. We will, however, try to align our design decisions as much closely
as possible with upcoming upstream changes.

So far, I have identified two main phases of this undertaking:

Phase I: Porting evolution-kolab from Evo/E-D-S version 2.30 to the current
git master. No functional extending will take place here, the effort will be
to just get things working the way they do under 2.30. For the whole porting
process, I will not be able to spend more than the one mythical man month.

Phase II: Extending the evolution-kolab functionality in conjuction with
some Evolution UI extensions and use of the currently-developed new
infrastructure components in Evo and E-D-S. This part has not yet been fully
thought through, but everything I see so far here depends on the first
phase having been completed successfully.

The following is planned for the two phases:


Phase I: Porting

* Create a new 'evolution-kolab' git repo on git.gnome.org, alongside the
  other E-D-S groupware plugins (preparations for doing so are completed)
* Transfer the contents of the current SourceForge evolution-kolab repo
  to git.gnome.org. The SourceForge repo will be kept for bugfixing the
  2.30 version, but no further development there
* Start off with the porting work on the git.gnome.org repo

  The porting itself will be done in the following steps:

(1) Adapt the Camel IMAPX provider used for evolution-kolab to the upstream
  version. This basically means to
  * Create a clean branch (say, A) into which to commit upstream IMAPX
  * Branch off of A (creates branch A-B), and re-implement the draft IMAP
ANNOTATEMORE [1] extension (RFC 5464 [2] is what the ANNOTATEMORE
draft finally evolved into, but current Kolab 2 servers use version
05 of ANNOTATEMORE) as it was done for 2.30, but using clean branches.
In case of upstream IMAPX fixes, these will be applied onto A and A-B
rebased, so a clean patchset can be generated with these two branches
  * The really clean way, i.e. doing this upstream directly, cannot be pursued
right now since Camel does not export IMAPX, and evolution-kolab needs
to subclass the extended version of IMAPX for the Kolab-specific parts
(changing Camel to export IMAPX will be taking too much time for this
project to do it ourselves - same problem we had when initially
implementing evolution-kolab)

(2) Subclass the locally extended IMAPX provider to add the Kolab-specific bits 
to it
  * For the curious, see the src/camel/ directory of evolution-kolab
and how it relates to src/camel/providers/imapx/)
  * Once done, the new 'kolab2' provider can be tested with Evolution frontend

(3) Adapt the backends glue code to the new E-D-S infrastructure
  * This will most likely include switching to a fully asynchronous 
implementation
for evolution-kolab (which is presently a synchronous backend but uses
notifications here and there anyhow)

(4) Port the existing EPlugin account setup and Kolab folder configuration 
dialogs
  * As Matt suggested in [3], we will be sticking with EPlugin for the account
stuff for time being
  * Since evolution-kolab needs Camel configuration details in the backends,
we're not sure how this will fit with the new ECredentials framework or
the account management infrastructure Matt is working on


Phase II: Extending functionality

This phase has not yet been planned fully. Phase I needs to be concluded 
successfully
before this phase can start. The following is planned, more may follow:

* Tooltip extension of the free/busy dialog. Kolab2 supports extended free/busy
  lists, which evolution-kolab can already retrieve. If extended f/b information
  is available (typically, this is the event subject) for a certain user, 
moving the
  mouse pointer over a time slot marked as busy, the extended information will 
be
  displayed as a tooltip window
  (Kolab specific: no, but needs extended free/busy information (XFB))

* Group meeting attendee busy warning. When scheduling a group meeting and 
free-busy
  information is available, the user can opt to receive a warning if any 
attendee of
  the meeting is busy during the time the new meeting is going to be scheduled 
for
  (this is, when trying to submit the new meeting entry). It will be possible 
to ignore
  t

Re: [Evolution-hackers] Evo/E-D-S security (libs) long-term plans

2011-09-13 Thread Christian Hilberg
Hi Milan,

Am Dienstag 13 September 2011, um 15:30:20 schrieb Milan Crha:
> [...] 
>   Hi,
> ECredentials is used with "authenticate-user" callbacks now. Check its
> usage in ECalBackend/EBookBackend sources, with the comments there. I
> [...]

Thanks for the pointer, will check that.

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Moving EExtension to libedataserver

2011-09-13 Thread Christian Hilberg
Hi Matthew,

Am Montag 12 September 2011, um 16:04:23 schrieb Matthew Barnes:
> [...] 
> To answer your second question, menus and dialogs _can_ be extended via
> EConfig without relying on XML files, but it's a little more cumbersome.

Probably we should not head down the EConfig route, since in [1] you say
that, "The new dialog windows will [...] NOT use EConfig. Not using EConfig
is a *feature*. Means we're a step closer to killing it."

Seems EConfig would not be that much of a stable ground anyone should
settle on. :-)

Kind regards,

Christian


[1] http://mail.gnome.org/archives/evolution-hackers/2011-January/msg00013.html

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Evo/E-D-S security (libs) long-term plans

2011-09-13 Thread Christian Hilberg
Hi Milan,

Am Dienstag 13 September 2011, um 07:33:31 schrieb Milan Crha:
> On Mon, 2011-09-12 at 13:16 +0200, Christian Hilberg wrote:
> >   We succeeded doing so for the following protocols: HTTPS, IMAPS, SMTPS.
> > 
> > These are protocols handled by Camel and the underlying NSS library. In
> > order to access the crypto token, we needed to supply a token PIN, which
> > we were not able to pass from Evo to E-D-S in version 2.30 as "live"
> > data (pass-and- forget). So we had to use a fake implementation: we
> > store the user PIN along the rest of the account data and reading it in
> > the backend via ESource. Clearly, this violates security (and we are
> > saying to in our user manual), but it demonstrates that in principle,
> > things are working. To get this thing right, we would need a means to
> > ask for a security pin from within the backend, presenting a dialog to
> > the user
> 
>   Hi,
> with the current eds (upcoming 3.2.0) you can pass parameters via
> ECredentials, same as you do with e_passwords_ask_password, thus yes,
> this is doable from book/cal backends now too.

Hum, is ECredentials something a backend can actively request? With NSS, we 
need to register an NSS callback function in our backend, which is called by 
NSS when NSS tries to open the token for the first time in the session. Since 
the token PIN should not be stored anywhere (and removed from memory once the 
token is opened), the callback function will be the one triggering a user 
dialog to be opened, the PIN entered, passed to the callback function and set 
in NSS. After that, the whole dialog stuff will be closed and gone. At least, 
that would be the right way of doing it. It's not a hard requirement for us 
now (politics have changed a little), but there may be similar requirements 
coming from other backends, so I thought of bringing this issue up. And if we 
get the functionality for little money, we can make use of it.

> >   However, there is one protocol, for which we failed to implement any
> > demonstrator for client-certificate-based authentication using a hardware
> > crypto device: LDAPS. The implementation in Evo uses the OpenLDAP lib as
> > a protocol implementation, which in turn uses GnuTLS for security
> > (version 2.1x < 2.12 at that time).
> 
> The OpenLDAP 2.12 is kinda old. And if I recall correctly, they moved to
> NSS as well, at least 2.4.23 seems to use NSS based on their changelog.
> Thus, I would say, when you move to current eds, then you can be pretty
> sure that the used OpenLDAP will be the one with NSS. Or you can add a
> dependency to evolution-kolab on the OpenLDAP which fits you best.

Oops, sorry -- I missed to clarify this better. The LDAP access (for 
addresses) I was talking about is the one implemented in Evo itself, not the 
backend variant. There, we hit the aforementioned problem.
  Maybe the new OpenLDAP with NSS support will enable us to do what we need, 
since Evo already provides infrastructure for requesting security PINs. Thanks 
for the hint!

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Further thoughts on ESources

2011-09-12 Thread Christian Hilberg
Hi all,

Am Donnerstag 25 August 2011, um 18:46:15 schrieb Matthew Barnes:
> [...] 
> Proposal:
> 
> I think the key file management needs to be centralized in a new D-Bus
> service, tentatively called "e-source-registry".  The ESourceRegistry
> singleton class in client programs would then be a proxy for the D-Bus
> service.  So we'd have a bit of a D-Bus hierarchy:
> 
> 
>evolution and other e-d-s clients
> 
> e-addressbook-factory   |   e-calendar-factory
>   \ | /
> e-source-registry

Are there plans for any sort of "live service" implemented by this (or yet 
another component), so that e.g. a backend implementation can query for user 
input when it needs it?
  The use case I have in mind originates from the problem we are facing in 
evolution-kolab backend processes, that we cannot ask for a security PIN 
(which should not be stored anywhere, but be used-and-forgotten) when opening 
a security hardware device for a session. If you see Evolution as any one of 
possibly multiple clients to E-D-S, then it probably makes no sense to pop-up 
any *Evo* dialogue to ask for the PIN. This would make Evo an even more 
privileged E-D-S client than it currently is, while my understanding of the 
current development seems to be to rid Evo of it's privileged status and turn 
it more into a yet-another E-D-S client.
  For the problem at hand, we would most probably need some dumb input dialog 
to pop up, requesting the token PIN, and be gone again - the way security 
tokens should be used mandates their PIN not be stored *anywhere*, not even in 
a gnome-keyring or services like that... so I'm curious which plans may exist 
here (or may need thought-smithing ;-).

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] Evo/E-D-S security (libs) long-term plans

2011-09-12 Thread Christian Hilberg
Hi all.

During the initial implementation of the evolution-kolab plugin, we were 
concerned with using hardware crypto devices (TPM, trusted platform module) as 
a means to store and retrieve client certificates for securing TLS connections 
to a Kolab server (by configuring the Kolab server to require certificates for 
client authentication).

  We succeeded doing so for the following protocols: HTTPS, IMAPS, SMTPS. 
These are protocols handled by Camel and the underlying NSS library. In order 
to access the crypto token, we needed to supply a token PIN, which we were not 
able to pass from Evo to E-D-S in version 2.30 as "live" data (pass-and-
forget). So we had to use a fake implementation: we store the user PIN along 
the rest of the account data and reading it in the backend via ESource. 
Clearly, this violates security (and we are saying to in our user manual), but 
it demonstrates that in principle, things are working. To get this thing 
right, we would need a means to ask for a security pin from within the 
backend, presenting a dialog to the user (not necessariy via Evo, maybe the 
new ESources and account management stuff Matt is working on could help with 
that). We've succeeded here _only_ since Camel uses the Mozilla NSS lib for 
securing connections.

  However, there is one protocol, for which we failed to implement any 
demonstrator for client-certificate-based authentication using a hardware 
crypto device: LDAPS. The implementation in Evo uses the OpenLDAP lib as a 
protocol implementation, which in turn uses GnuTLS for security (version 2.1x 
< 2.12 at that time). The combination of OpenLDAP and GnuTLS did not allow us 
to get things flying regarding the use of hardware crypto devices via the PKCS 
#11 interface. Where NSS only needs a token PIN and figures out either 
automatically or via external configuration files which of the possibly 
multiple client certificates to use, GnuTLS needs an URI which fully 
determines exactly which location inside the token to read the client 
certificate from, no automatisms here. While this allows for the application 
to control which cert to use (and not relying on any automatism, which may or 
may not work as needed), it requires the application to do it. Now, if on top 
of GnuTLS sits some protocol library like OpenLDAP, which rightfully denies to 
be bothered with security details of the underlying transport lib, we've got a 
problem: we must break the strict top-down layer approach and configure GnuTLS 
first, then use the protocol lib like OpenLDAP. We would have needed to hack 
around this directly in Evo to solve this, which clearly was (and probably is) 
out-of-scope for the evolution-kolab project.

My question now is, how are the plans for Evo and E-D-S to handle these 
things, mid-term and long-term? Are there plans to favor any single one 
security lib, or will there be a multitude of different libs be used? GnuTLS 
is sort of home-made, while NSS is alien but works for the issue described 
above (which, admittedly, is a little esoteric, but *maybe* symptomatic?). In 
GnuTLS, I've seen much progress with PKCS #11 (like the integration of p11-
kit), but it requires more details to be handled by the application itself.

I'm looking forward to reading your input,
Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Moving EExtension to libedataserver

2011-09-12 Thread Christian Hilberg
Hi,

I hope I've got the reference right...

Am Mittwoch 07 September 2011, um 19:07:20 schrieb Matthew Barnes:
> [...] 
> I'm going to need EExtension for the new D-Bus service I talked about
> recently [1] anyway, so it makes sense to get this part merged early.

Kind regards,

Christian


[1] http://mail.gnome.org/archives/evolution-hackers/2011-August/msg00025.html

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Moving EExtension to libedataserver

2011-09-12 Thread Christian Hilberg
Hi again,

Am Mittwoch 07 September 2011, um 19:07:20 schrieb Matthew Barnes:
> [...] 
> The API
> is already fully documented and our wiki has usage instructions for it:
> 
> http://live.gnome.org/Evolution/Extensions

Is the list of EExtensible-tagged classes listed at the end of the wiki page 
up-to-date (and exhaustive) for the current dev version of Evo/E-D-S?

I had a glance at the page since I'm trying to figure out whether or not the 
account setup stuff we're currently doing via EPlugin in evolution-kolab could 
instead be based on EExtensions (bearing in mind that EPlugin is going away 
sooner or later anyway).
  What's more, there are some Evolution UI extensions which we would like to 
implement for evolution-kolab, and since some of them are Kolab-specific, it 
seemed a better way to do it as an EExtension, rather than trying to hack 
Evolution directly.
  The questions at hand now are, do you see EExtension fit as an EPlugin 
replacement for account setup already, and can UI extensions (like additional 
entries in context menus or functional extensions of UI dialogs) already be 
done via EExtensions?

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Moving EExtension to libedataserver

2011-09-12 Thread Christian Hilberg
Hi there,

just one bit of nitpicking:

Am Mittwoch 07 September 2011, um 19:07:20 schrieb Matthew Barnes:
>  [...]
> The EExtension framework was introduced in Evolution 2.30 as part of the
   

Shouldn't that read 2.32? At least, the wiki page says so.

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Moving EExtension to libedataserver

2011-09-12 Thread Christian Hilberg
Hi all,

Am Montag 12 September 2011, um 09:57:26 schrieb Milan Crha:
> On Fri, 2011-09-09 at 22:18 -0400, Matthew Barnes wrote:
> > I got this working today.  Would anyone object if I create the
> > gnome-3-2 branch early next week so I can commit this for 3.3.1 and
> > then rebase my account-mgmt branch on it?
> 
>   Hi,
> I wouldn't do that, as it doubles work for translators, because it's
> their time now. Does it make that large difference to "wait" for next
> two weeks? You can always do those things locally and branch&commit
> later anyway.
>   Bye,
>   Milan

Regarding the current plannings for porting evolution-kolab to a current dev 
version of Evo/E-D-S, it could prove very helpful to have this infrastructure 
available for basing our work on. We'd appreciate it much if the merge could 
be done as soon as the translator's window is closed and the merge can be done 
without foreseeable extra work for the release currently under preparation.

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] [evolution-kolab] towards Upstream-Integration

2011-07-15 Thread Christian Hilberg
Hi,

On Friday, 15 July 2011, Matthew Barnes wrote:
> Sorry for the delayed response...

NP at all, thanks for your input!

> [...] 
> The process really isn't as formal as the wiki makes it out to be.
> Because you're an extension module for an application that has already
> met these requirements, and because you're using a compatible license, I
> think for the most part you're grandfathered in.

Sounds fine. Just wanted to make sure we don't miss something important.
 
> > From there, I took the hop to http://live.gnome.org/CopyrightAssignment
> > and found myself puzzled again. :) Of how much relevance are the details
> > listed there for an Evolution plugin? Our source is LGPL v2.1+, the user
> > docs and stuff are CC BY-SA ... so, are any details of that copyright
> > stuff applicable to us?
> 
> Obviously IANAL, but I believe as long as you're not engaged in such
> nefarious activities as requiring outside evolution-kolab contributors
> to hand over copyrights of their own code to you or your organization,
> or are holding or seeking patents on parts of the evolution-kolab code,
> there shouldn't be anything to worry about.

Honest LGPL v2.1+, no tricks, no pitfalls. We're not evil(tm).  ;-)

> [...] 
> Translations will come when the project is added to Damned Lies
> (http://l10n.gnome.org/).  Long as the software is set up to receive
> translations using gettext and intltool, which you said below it is,
> you're fine.

Yep. The gettext/intltool infrastructure needs some "love" still, but that 
should cause no harm.

> > From there, the hop was to
> > http://live.gnome.org/ReleasePlanning/ModuleProposing and the following
> > questions arose:
> > * does evolution-kolab as an Evo plugin need to go through the module
> > proposal cycle?
> [...] 
> > * "Judgement Criteria" ... can I deduce from what is listed there, that
> > evolution-kolab
> [...] 
> Again, because you're an extension module for an application that has
> already passed this process, I think you're pretty much grandfathered
> in.  Maybe check with the release team about jhbuild, but otherwise I
> see no need for evolution-kolab to undergo this process.  Just start
> uploading release tarballs when you're ready.

Very well. jhbuild will be waiting for us somewhere farther down the road 
then.

Thanks for the insights. We should be fine to continue from here.
Kind regards,

Christian

PS.:I'll be on leave for a month, so I'll be able to continue with
this topic only after returning from vacation and and being back
inside my cubicle. Most likely, there will be some bugs and issues
waiting for me to fix them, so I can just as well fix them first
and push upstream next.

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] [evolution-kolab] towards Upstream-Integration

2011-07-12 Thread Christian Hilberg
Hi everyone,

On Thursday 07 July 2011, Matthew Barnes wrote:
> On Fri, 2011-07-01 at 23:33 +0200, Christian Hilberg wrote: 
> > The first step could be to create an evolution-kolab git repository at 
> > gnome.org, at least this is what came to my mind instantly. In order to get 
> > the prerequisites right, I have applied for a GNOME account with git 
> > access. 
> > This has been vouched for by the Evolution team (thanks, Matt), and I have 
> > received confirmation from the GNOME account management team today.
> > 
> > Since neither my kernel concepts evolution-kolab team mates nor myself have 
> > done upstream integration for an Evolution plugin yet, I would like to know 
> > how we should best proceed from here. If there is any reading we should 
> > have 
> > done prior to further acting, we'll gladly accept pointers to the relevant 
> > documents. David (or anyone else involved there), I heard that you did the 
> > same with your EWS team recently, so if there are any lessons-learned which 
> > we 
> > should heed to, we will also be happy to know. Long story short, we will 
> > just 
> > be happy for any directing through this process so we can get through it 
> > smoothly.
>
> First of all, welcome to the family!  It's great to have more developers
> supporting new backends for Evolution.

Thanks for the welcome.

Reading through the available documentation and Matt's braindump, a few 
questions
remained open, so I'll post them here (a) for my own education and (b) for the
record:

> I agree that getting the code into git.gnome.org is the first step.
> Chen already pointed you in the right direction:
> 
> http://live.gnome.org/Git/NewRepository

...this leads to http://live.gnome.org/ProjectPrerequisites where a list of
prerequisites is presented. I think we do match all of these (see my follow-up
to Chen's mail).

  However, it states there, that "To satisfy these requirements, particularly
number 3, please send us any relevant URLs such as project homepage, list 
archives, ..."
-- who is "we" in the case of evolution-kolab? The Evolution team? GNOME people?
I'm not sure whom to contact for the paperwork. :)

From there, I took the hop to http://live.gnome.org/CopyrightAssignment and 
found
myself puzzled again. :) Of how much relevance are the details listed there for
an Evolution plugin? Our source is LGPL v2.1+, the user docs and stuff are CC 
BY-SA
... so, are any details of that copyright stuff applicable to us?

My traceback algorithm next pointed to
http://live.gnome.org/ReleasePlanning/ModuleRequirements, where there is much 
about
"modules", and the following (among other things) was not instantly clear to me:
* Which will be the status for evolution-kolab? Will it be a "module" in
  the sense presented on the ModuleRequirements page?
* We do have UI strings (in EPlugin), but no translation as yet - how about 
this?

From there, the hop was to http://live.gnome.org/ReleasePlanning/ModuleProposing
and the following questions arose:
* does evolution-kolab as an Evo plugin need to go through the module proposal
  cycle?
* (from here, loop back to ModuleRequirements and the question whether
  evolution-kolab is a "module" in that sense, if you like... :-)
* is the email to the desktop-devel mailing list needed?
* (from here, loop back to ProjectPrerequisites and the question whom
  to contact for the paperwork in case of evolution-kolab, if you like... :-)
* 3.0 readiness: (void). We're 2.30(.3), porting to 3.x pending. How to
  deal with that?
* Build testing: no jhbuild as yet -- only relevant once a new release from
  within the GNOME git is planned for?
* "Judgement Criteria" ... can I deduce from what is listed there, that 
evolution-kolab
  is _not_ a module in the sense of ModuleRequirements? I frankly do not know
  what to make out of this stuff in evolution-kolab context... does this fall
  under the "don't care (yet)"-clauses?

> When you're ready to start accepting bug reports, you'll also want to
> get evolution-kolab added to bugzilla.gnome.org as a new project.  The
> steps for that are here:
> 
> 
> http://live.gnome.org/Bugsquad/ForMaintainers#To_add_a_project_to_the_bugzilla_database

Okay with that, should be fine. I guess I should mention the current
(i.e. SourceForge) website in the bug report requesting a tracker for
evolution-kolab? And is there a sensible way to migrate bugs from SF
to bugzilla, or will we need to start anew?

> Assuming evolution-kolab includes translatable strings, you'll want to
> make sure the project is properly set up for localization using gettext
> and intltool.  This is kind of a broad topic, but there's lots of
> documentation a

Re: [Evolution-hackers] [evolution-kolab] towards Upstream-Integration

2011-07-07 Thread Christian Hilberg
Hi,

On Thu 07 July 2011, Chenthill wrote:
> On Fri, 2011-07-01 at 23:33 +0200, Christian Hilberg wrote:
> > Since neither my kernel concepts evolution-kolab team mates nor myself
> > have done upstream integration for an Evolution plugin yet, I would like
> > to know how we should best proceed from here. If there is any reading we
> > should have done prior to further acting, we'll gladly accept pointers
> > to the relevant documents. David (or anyone else involved there), I
> > heard that you did the same with your EWS team recently, so if there are
> > any lessons-learned which we should heed to, we will also be happy to
> > know. Long story short, we will just be happy for any directing through
> > this process so we can get through it smoothly.
> You could create a package naming eg: evolution-kolab and create a new
> repository in git.gnome.org. http://live.gnome.org/Git/NewRepository
> has all the details required.

Let's see what http://live.gnome.org/ProjectPrerequisites says:

   1. The project must be free/open source software.
   2. It must use GTK+/GNOME technologies.
   3. It must be maintained, and already have had at least one public release.
   4. To the best of your knowledge, it must not infringe on patents (most
  gnome.org servers are in the US).
   5. If copyright assignment is required, please first read our policy on
  copyright assignments; it's simpler to not have any copyright
  assignment.

For evolution-kolab:

1. [ok] we're all LGPL
2. [ok] it is an Evo/EDS plugin
3. [ok] see http://evolution-kolab.sf.net/
4. [ok] we're confident about that
5. [ok] should be no trouble, we're LGPL, no other copyright assignments apply

I will thus proceed and create an evolution-kolab Git repo at gnome.org.

Thanks,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] [evolution-kolab] towards Upstream-Integration

2011-07-01 Thread Christian Hilberg
Hi everyone.

Since the last announcement of the evolution-kolab team here on the list, our 
source code (hosted at http://evolution-kolab.sourceforge.net/) has seen some 
more polishing and now compiles on Debian/Squeeze in addition to Ubuntu/Lucid. 
We will make available a (source) release 0.0.13 soon, which contains the 
fixes for Squeeze.
  Next week will see some performance improvements over the current state, and 
by the end of next week, I am planning to have the post-0.0.13 release ready.

The code base has received quite some testing (under Ubuntu/Lucid) already, 
mainly in the area of Kolab inter-client compatibility. Online and offline 
operational modes are working, including conflict resolution. More testing is 
always welcome, of course.

The evolution-kolab team now feels that we have reached a state where we can 
begin working towards upstream integration. During the planning and coding 
phases so far, we aligned all of our project decisions with the Evolution team 
as closely as our time schedule and resources permitted. This was done in 
order to promote for an easy upstream integration process. We would like to 
thank everyone here who helped us in the various aspects of creating a new 
Evolution plugin.

We would very much like to be hosted at gnome.org with our project. 
SourceForge is a nice breeding platform, but we feel it is a little too far 
away from GNOME, and since we are a true GNOME project, we think it would be 
nice to add evolution-kolab directly to the Evolution project at its GNOME 
site.

The first step could be to create an evolution-kolab git repository at 
gnome.org, at least this is what came to my mind instantly. In order to get 
the prerequisites right, I have applied for a GNOME account with git access. 
This has been vouched for by the Evolution team (thanks, Matt), and I have 
received confirmation from the GNOME account management team today.

Since neither my kernel concepts evolution-kolab team mates nor myself have 
done upstream integration for an Evolution plugin yet, I would like to know 
how we should best proceed from here. If there is any reading we should have 
done prior to further acting, we'll gladly accept pointers to the relevant 
documents. David (or anyone else involved there), I heard that you did the 
same with your EWS team recently, so if there are any lessons-learned which we 
should heed to, we will also be happy to know. Long story short, we will just 
be happy for any directing through this process so we can get through it 
smoothly.

Thanks a lot in advance,
Kind regards,

Christian


-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] [evolution-kolab] Vital signs from the project

2011-06-21 Thread Christian Hilberg
Hi everyone.

After a prolonged silence and a period of much work, the evolution-kolab team 
gladly announces what you could call a first release candidate of the Kolab 
plugin for Evolution (in fact, it is, only it has not officially been tagged 
as one).
  Source code, packages, user manual and some supplemental files can be found 
on the project's website, located at SourceForge:

http://evolution-kolab.sourceforge.net/

We've made a more detailed announcement on the project's SF mailing list:

https://sourceforge.net/mailarchive/message.php?msg_id=27679445

We're looking forward to receiving your feedback on the project, preferrably 
via the project mailing list or the project's bug tracker.

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Calendar PIM objects with inlined attachments

2011-04-08 Thread Christian Hilberg
On Friday 08 April 2011 Milan Crha wrote:
> [...] 
> With respect of "fetch on demand", it'll be tricky to achieve, to make
> this done right on each operation which deals with the calendar
> component in a certain way (operations like copy, move, send and so on).
> But there is some API function, probably meant for something like that,
> already, the e_cal_backend_get_attachment_list, used by
> e_cal_get_attachments_for_comp.

If at all we can support attachments in some way, and we want to be ready to 
work offline at any time, we'll have the actual data available as 
CamelMultipart message mime part anyways, so not much gain in trying the more 
complex "fetch on demand" ... as the attachments to Kolab PIM objects reside 
in the same email the actual PIM entry is in (as email attachments). I don't 
think 2.30 IMAPX can fetch just some mime part of an email and leave out 
another (is that even possible with IMAP?), and it is not dictated exactly 
which of the possibly multiple mime parts will be the Kolab XML file carrying 
the calendar data.
  To that end, we presumably cannot take any shortcuts or delay data fetch.

(Bye)^2,

Christian


-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Calendar PIM objects with inlined attachments

2011-04-08 Thread Christian Hilberg
Hi everyone,

thanks for the input so far.

On Friday 08 April 2011 David Woodhouse wrote:
> On Fri, 2011-04-08 at 10:35 +0200, Milan Crha wrote:
> > On Fri, 2011-04-08 at 10:04 +0200, Christian Hilberg wrote:
> > > We could use Evolution's file-link attachment mechanism by writing into
> > > Evos file cache from the backend and placing the file paths into the
> [...] 
> That's what we're doing in EWS, too. We store the attachments into the
> backend's cache directory as obtained by e_cal_backend_get_cache_dir(),

Just on a very short note:

There's no e_cal_backend_get_cache_dir() in Evo2.30 (which is the one we're 
sitting on presently). That means we cannot maintain a backend-private file 
cache with this version, since we cannot inform Evo about it ... is that 
correct?

(Bye)^2,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] Calendar PIM objects with inlined attachments

2011-04-08 Thread Christian Hilberg
Hi everyone.

While working on the evolution-kolab plugin, we found that there is no direct 
support in ECalComponent for attachments inlined into calendar objects. Thus, 
so far, we can cope with attachments inlined into Kolab calendar objects by 
hiding them in private ical fields. That way, we can preserve the attachment 
when writing back some calendar object to the Kolab server which has one 
attached. The drawback, however, is that we can access this (ical-private) 
attachment data via ECalComponent neither for reading nor for writing - it 
will just be invisible to the evolution-kolab plugin user, and they will get 
no indication that an object carries attachment data (they might just wonder 
why it takes much time retrieving and storing the object).

We could use Evolution's file-link attachment mechanism by writing into Evos 
file cache from the backend and placing the file paths into the ECalComponent 
when reading calendar objects from the Kolab server, and read attachment file 
data from this same cache when creating a new object with attached files. We 
found a whole lot of issues with this approach (at least for Evo2.30), which I 
can detail if anyone is interested.

Before trying anything with the at-least-problematic file cache approach, I 
thought I'll go ahead and see whether there is anything in the plannings 
regarding supporting inlined file attachments directly with ECalComponent in 
latest Evo versions. So far, I did not find anything related on the plannings 
pages. I'm not clear whether this has been discussed before or whether there 
are any current plans of extending ECalComponent to support inlined 
attachments directly (in which case a rather simple change to Evo would allow 
for supporing inlined attachments in a clean way).

I'd like to know your opinions / ideas / ... on that matter.

Greetings,

Christian

PS.:For those who followed the short discussion of the issue on
#evolution yesterday, I thought it would be better to record
the discussion on the list, so please feel free to paste your
thoughts here again - just for the record :)

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Backend requesting arbitrary user input from frontend

2011-03-30 Thread Christian Hilberg
Hi Milan,

On Wed 30 March 2011 Milan Crha wrote:
> On Wed, 2011-03-23 at 19:04 +0100, Christian Hilberg wrote:
> > Of course, this is going to be fun - how to tell which of the possibly
> > multiple EDS-frontends should receive the request? Ideally, the backends
> > should be unaware of EDS-frontends... trouble galore! :)
> 
>   Hi,
> Matt suggested in his Account management that the server will ask for
> credentials with an information for which "source" this request is made,
> so the "auth_required" signal may contain this information. I'll add a
> strv parameter to that, just for being ready even for more expansion.
> 
> What kind of information will be known in this parameter depends on the
> receiver for the signal. Let's have it opened for now, but I believe
> this may cover your issue too.

As long as there is *any* sensible way to pass some data (a PIN string in our 
case) to the backend if the backend so requests, that will help us much. 
Thanks in advance for taking this into account.

(Bye)^2,
Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Backend requesting arbitrary user input from frontend

2011-03-23 Thread Christian Hilberg
Hi again,

Am Mittwoch 23 März 2011, um 18:03:32 schrieb Christian Hilberg:
> Hi all.
> [...]
> Maybe this is a more general thing than just having a backend requesting a
> user PIN. I can imagine other scenarios where a backend might need to
> request any user interaction, input, whatsoever, which is specific to this
> backend and cannot be taken care of in the existing general EDS API (which
> is limited to the typical things all backends need to do).
> [...]

Of course, this is going to be fun - how to tell which of the possibly 
multiple EDS-frontends should receive the request? Ideally, the backends 
should be unaware of EDS-frontends... trouble galore! :)

(Bye)^2,
Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] Backend requesting arbitrary user input from frontend

2011-03-23 Thread Christian Hilberg
Hi all.

Part of the overall evolution-kolab project is to make it possible for 
Evolution (as a Kolab client) to use TPM [1] infrastructure. In short, it's 
all about certificate based client authentication, where clients can be forced 
to authenticate themselves against a server when establishing an SSL 
connection. It's the SSL server certificate based auth the other way around - 
first, the server will identify itself by sending a signed (and therefore, 
hopefully, trusted server certificate), then, the client will authenticate 
itself to the server by sending a signed client certificate. Only after the 
client sent a known, signed and trusted certificate, the server will ask for 
service authentication (username/password). If the client cannot authenticate, 
the server will terminate the SSL connection.

Using a TPM means that the client certificate is stored within a hardware 
crypto token, the "Trusted Platform Module". To open and use the crypto token, 
the user needs to supply a user PIN (much like a password). Then only the 
crypto token will be accessible and will reveal the client certificate (or 
other data) it was asked for.

Via the PKCS#11 stack (implemented through opencryptoki [2] and trousers [3]), 
it is possible to use this under Linux. It is working for Camel (via NSS) 
already. Given the proper setup, the Evolution frontend will pop up a PIN 
requester where the user can enter his/her crypto token PIN, and the crypto 
token reveals the client certificate to NSS for use in certificate-based 
client auth. This means that Camel can also use it. It works for us, there is 
a draft installation and setup guide available in the evolution-kolab project 
on SourceForge [4], namely 
Usage_of_software_security_devices_for_client_authentication.pdf (check out 
the "Files" section). We can secure e.g. an Evo IMAP connection that way.

Now, we're using Camel (to be more specific: IMAPX) in our evolution-kolab 
backend, since all Kolab PIM data is stored in emails accessible via IMAP. We 
would like to use the TPM crypto device there as well, but we're lacking a 
possibility how we can request a user PIN from within the backend process 
through the frontend, since there is no API which would allow us to open a 
requester in the frontend (like, displaying some explanatory text, and having 
a field to enter some text, and an ok/cancel button, the entered text being 
handed back to the backend). This lack is there at least in 2.30, for which  
evolution-kolab is currently being developed (porting to newer versions is in 
the plannings, once we're done with the initial 2.30 release).

Maybe this is a more general thing than just having a backend requesting a 
user PIN. I can imagine other scenarios where a backend might need to request 
any user interaction, input, whatsoever, which is specific to this backend and 
cannot be taken care of in the existing general EDS API (which is limited to 
the typical things all backends need to do).

I'd like to know your thoughts on this, and maybe other backend implementors 
already had a similar need to request some user data which is not readily 
available through the standard EDS backend API.


Kind regards,

Christian


[1] http://en.wikipedia.org/wiki/Trusted_Platform_Module
[2] http://sourceforge.net/projects/opencryptoki/
[3] http://trousers.sourceforge.net/
[4] https://sourceforge.net/projects/evolution-kolab/

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Evolution 2.28 obsolete?

2011-01-27 Thread Christian Hilberg
Hi Matt,

On Thu 27 January 2011 Matt Davey wrote:
> I'm not sure this is the right list, as this is more of a policy
> question than a dev question.
> 
> I recently logged a bug (#639970) that crops up every now and again for
> me, and it was closed as OBSOLETE because I raised it against Evolution
> 2.28.  This surprised me, because this 2.28 is the current shipping
> version for Ubuntu 10.04 LTS (Long Term Support).
> [...]

For the unpleasant but real truth, see Pauls answer.

As a quick workaround, however, if your own/company/whatever policy permits, 
you could try and install Evo 2.30.3 from the PPA

https://launchpad.net/~jacob/+archive/evo230

and see whether it solves your problem.

But be aware, that
- Evo 2.30 is as obsolete as 2.28 is
- while Jacob does a nice job providing Evo 2.30 for Ubuntu 10.04,
  this version is neither supported by Upstream, nor by Ubuntu,
  so no more fixes will go into currently provided 2.30.3, unless there
  would be a 2.30.4 release by the Evo maintainers (chances are as
  close to zero as you can imagine).

Just 2 cent,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] Account management and keyrings

2011-01-20 Thread Christian Hilberg
Hi,

On Thu 20 January 2011 Matthew Barnes wrote:
> On Thu, 2011-01-20 at 18:24 +0100, Milan Crha wrote:
> > Nope, go for it. It may also fix an issue with Birthday&Anniversaries
> > calendar, when using authenticated addressbook, as right now there is no
> > easy way to ask for a stored password for that book. Of course, there
> > will be needed new API for book/cal backends to be able to ask for any
> > password (on any ESource), not only during its "authenticate" signals.
> > Even it's another story, please consider these things too.
> 
> Right, that was my intention with the new API.  Backends could look up
> passwords for themselves and only emit "auth-required" signals if they
> need input from the user.

++ from the evolution-kolab team. Any idea on how to handle exactly this right 
now (we'll be implementing that soon on a totally obsolete Evo version, i.e. 
2.30 ;-)? Since we did not yet implement this part, we can do so in a way 
which will avoid complications when porting to a recent Evo version later on.

Greetings,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] evolution-kolab: public Git repo online

2010-09-17 Thread Christian Hilberg
On Friday 17 September 2010 Christian Hilberg wrote:
> [...] 
> There is a mailing list which should become acessible over the weekend.

It's there now.

(Bye)^2,
Christian


-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] evolution-kolab: public Git repo online

2010-09-17 Thread Christian Hilberg
Hi everyone.

JFYKI: There is a public Git repo online now with some sources for the 
evolution-kolab plugin. If you like, check out

http://sourceforge.net/projects/evolution-kolab/

The repo is not open for public commits, though.

Please be aware that this code is very much pre-alpha and not at all in any 
working state (though some parts are working already).

Suggestions and other helpful comments are welcome. There is a mailing list 
which should become acessible over the weekend.

This list will be: evolution-kolab-de...@lists.sourceforge.net

Your mailing list info will be at:
http://lists.sourceforge.net/mailman/listinfo/evolution-kolab-devel

We'll be glad to meet you there.

Best regards, and have a nice weekend,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] evolution-kolab: on (Unit) testing again

2010-09-16 Thread Christian Hilberg
Hi,

On Friday 16 Juli 2010 Matthew Barnes wrote:
> On Fri, 2010-07-16 at 15:54 +0200, Christian Hilberg wrote:
> > Within our project it has been brought up that POSIX shell scripts might
> > be a good choice in order to keep a low profile depencency-wise.
> > Personally, I would prefer a higher-level scripting language which will
> > offer more facility (esp. when it comes to mocking certain services or
> > other complex things which will be a little bit painful to do in shell
> > scripts). Nonetheless, I can perfectly understand the reasons if one
> > prefers POSIX shell or something the like.
> 
> I think Python would be the most palatable choice for GNOME software.
> And you should be able to rig up a mock service pretty easily with the
> libraries it provides.

python has been accepted as the one single language for scripting within the 
evolution-kolab project, with an if-ever-needed-fallback, which is POSIX shell 
script (which we will try to avoid since python should be even more portable 
today than POSIX shell scripts are).

Best regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] evolution-kolab: Subclassing and extending IMAPX

2010-09-15 Thread Christian Hilberg
Hi,

On Thursday 09 September 2010 Christian Hilberg wrote:
> [...]
> ANNOTATEMORE and METADATA differ in the syntax they use and they have some 
> minor semantic differences.
> [...]

Just for your reference:


"RFC5464 - The IMAP METADATA Extension"
http://www.faqs.org/rfcs/rfc5464.html

"IMAP ANNOTATEMORE Extension"
(version 05 as implemented by Cyrus imapd)
http://tools.ietf.org/html/draft-daboo-imap-annotatemore-05


So long,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] evolution-kolab: Subclassing and extending IMAPX

2010-09-14 Thread Christian Hilberg
Hi again,

On Thursday 09 September 2010 Christian Hilberg wrote:
> [...]
> PS.:  I will have to check with git-submodule whether we can track just
>   some part of the E-D-S git with that (i.e. IMAPX) ... if we can
>   track the full E-D-S git only, then I will have to think up something
>   else.

Hum, neither submodule nore subtree merging seem to fit the purpose here, 
since in neither case I can refer to a certain part of a git repo but only to 
a complete one (would be evolution-data-server in this case, which does not 
make sense).

New thought: Add a new branch to my project and include camel/providers/imapx 
sources there (a camel/ folder does exist anyway). Alas, in addition to the 
IMAPX headers, I need to duplicate the implementation files as well, since 
neither libcamel nor libcamel-provider do export IMAPX symbols (which is ok).

I'm then able to #include  as if I was 
part of evolution-data-server, and linking against the installed e-d-s (libs) 
works. In my own camel/ tree I will keep the extended functions for IMAPX ... 
not very pretty indeed but maybe good enough for now.

In the event of a new upstream release, I copy the new upstream IMAPX sources 
to the camel-imapx-sources-branch and merge it over into my own development 
branches again. Should not be too much work, but would not be fully automated 
either.

(Bye)^2,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] evolution-kolab: IMAPX licensing

2010-09-13 Thread Christian Hilberg
Hello again.

While working through the IMAPX sources, I noticed that there are three kinds 
of licenses in the headers for the *.[hc] files of the IMAPX implementation:

* GPLv2
* LGPLv2
* {nil}

The COPYING file in the E-D-S toplevel directory states LGPLv2, this is what 
we checked initially.

Are the IMAPX file headers going to be fixed in near future regarding 
licensing information? And if so, which will be the license they're going to 
be placed under? This will have a major impact on licensing considerations for 
our evolution-kolab plugin (which we planned to release under LGPLv2.1+).

Thanks in advance for any helpful information.

Best regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] evolution-kolab: Subclassing and extending IMAPX

2010-09-09 Thread Christian Hilberg
Hi everyone.

After some time working on different places within our Plugin, I'm back to our 
IMAPX part.



We would like to use the IMAPX implementation for our backends as well as for 
the Evolution Email part when Kolab access is configured.

Thing is, we cannot just use the plain IMAPX implementation since we need to 
support the IMAP ANNOTATEMORE draft to access Kolab's (i.e. Cyrus') folder 
annotations to tell the different folder types apart. Distinguishing between 
the different folder types is vital because it lets us know which entries the 
respective folders hold (Email, Contacts, TODOs, Calendar entries, ...). 
Depending on the folder type, each of our IMAP-Providers (Email in Evolution, 
Address and Calendar in the backends) will care for a given folder type or a 
set of folder types. When in Email context - i.e. within Evolution - our IMAPX 
derivative would not display Address folders or Calendar folders. The Address 
provider will only care for contact folder types, and the Calendar provider 
will take care of TODOs, notes, appointments etc. (in short: all Calendar 
data).

Now, we have several issues here. Presently, this whole folder annotation 
stuff which is implemented in the Cyrus imapd (which is what the Kolab people 
use) is based on version 05(!) of the IMAP ANNOTATEMORE draft and it will stay 
this way for some time. The IMAP ANNOTATEMORE draft is what eventually turned 
into RFC5464 "The IMAP METADATA Extension", but RFC5464 is not what Cyrus 
currently implements. There are efforts to incorporate RFC5464 into a future 
release of Cyrus (its in the plannings for 2.4, current stable is 2.3). It 
will be quite a while, maybe years, before this will happen, and in the 
meantime we will be stuck with this early version of the ANNOTATEMORE draft. 
Up to version 07 of the draft, the old ANNOTATEMORE syntax and semantics are 
used and Cyrus advertises this in it's CAPABILITY response. This was changed 
afterwards and turned into METADATA before the final draft version 10 (the 
intermediate ANNOTATEMORE2 has never been implemented anywhere, AFAIK). 
ANNOTATEMORE and METADATA differ in the syntax they use and they have some 
minor semantic differences.

Why am I writing this: IMAPX supports neither ANNOTATEMORE nor METADATA. My 
initial thought of patching IMAPX directly IMHO does not make too much sense 
presently because there is no imapd as yet which supports RFC5464 (true??) and 
ANNOTATEMORE is a draft and it's already been obsoleted by RFC5464 (so 
littering the IMAPX code with ANNOTATEMORE would not be too nice).
  This made me think whether we could extend IMAPX within our plugin and the 
ANNOTATEMORE (and METADATA) extensions could prove their ground there first, 
before finally being pulled upstream, if the Evolution maintainers would wish 
for that.

Apart from the ANNOTATEMORE/METADATA extensions, which are upstream 
candidates, there are some Kolab-specific extensions, which most probably do 
not make sense upstream. These could be kept within the plugin code, even if 
the ANNOTATEMORE/METADATA should get pulled upstream and subsequently removed 
from our plugin code some day. The Kolab extensions include an API extension 
to IMAPX which enables us to configure a "context" into IMAPX. The "context" 
would be defined by the set of folder type a certain IMAPX instance should 
care for. By default, it would be "every folder but the known Kolab PIM 
folders". This default would be used within Evolution, so Evolution does not 
need to know about an extended API and use the provider as-is (it would then 
not present Kolab PIM folders to the Email frontend). From within our backend 
code, we could re-configure the respective provider instances via the extended 
API as to care for contact folders (EBookBackend) and for calendar data 
(ECalBackend) only. This way, we would still have multiple access to the IMAP 
server, but each mailbox would only be accessed by one IMAPX provider instance 
at a time (left alone the "delete mailbox" part, for which we will have to 
think up a good solution, still). The folder annotations can be retrieved 
without actually SELECTing a mailbox. Each provider instance would keep it's 
own cache, but would cache it's own folder types only. This way, there should 
not occure any duplicate caching.

Does this sound "sound" to you? :-)

IF it does, then the next question would be how to do that technically. From 
within our plugin code, we cannot directly access IMAPX headers, since (for 
good reason) they are not installed (and we would like to be able to link 
against installed Evo and E-D-S libs for user convenience). Still, I would 
like to avoid duplicating all of IMAPX within our plugin, but instead use the 
existing code wherever possible and just redefine the single functions which 
we need to extend or change. This would keep a patchset as small as possible 
while not really diverting from upstream.
  Due to time constraints we cannot currently car

Re: [Evolution-hackers] evolution-kolab: IMAPX RFC2086/RFC4314 (IMAP4 ACL) compliance

2010-08-26 Thread Christian Hilberg
On Wednesday 25 August 2010 David Woodhouse wrote:
> ∄ ACL support in imapx.

Thanks for the information (though I was hoping for a different one :-).

(Bye)^2,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


[Evolution-hackers] evolution-kolab: IMAPX RFC2086/RFC4314 (IMAP4 ACL) compliance

2010-08-25 Thread Christian Hilberg
Hi everyone,

searching Evolution lists, docs and source, I found that supporting IMAP4 ACLs 
has been discussed now and then, but I could not deduce from what I've read 
that the IMAP/IMAPX providers actually do support ACLs.

Support for IMAP ACLs would be very useful when dealing with a Kolab server 
(which uses Cyrus imapd with ACL support), so I'm interested in getting to 
know about the current status of ACL support within IMAPX.

Kind regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


  1   2   >