KEP-0014.txt

Georg Greve greve at kolabsys.com
Wed Aug 31 20:06:02 CEST 2011


 KEP-0014.txt |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 111 insertions(+)

New commits:
commit d8a00828ad24a3eb9b64f4eefa28660d27a8b6ad
Author: Georg Greve <greve at kolabsys.com>
Date:   Wed Aug 31 20:05:39 2011 +0200

    Very first draft... let's see what the reaction is

diff --git a/KEP-0014.txt b/KEP-0014.txt
new file mode 100644
index 0000000..d941d7b
--- /dev/null
+++ b/KEP-0014.txt
@@ -0,0 +1,111 @@
+{{kep
+ |number=
+ |ticketnumber=
+ |title=Non-conflicting edits of RFC5228/Sieve scripts by multiple editors
+ |author=Georg Greve
+ |author_email=greve at kolabsys.com
+ |status=draft
+ |type=design
+ |creation_date=
+ |obsoleted_by=
+ |related=
+}}
+
+
+== Abstract ==
+
+This Kolab Enhancement Proposal (KEP) <ref name="kep">[[KEP:1]] Bootstrapping the KEP process</ref> defines the conventions and application behaviour to enable non-conflicting edits of {{rfc|5228}}<ref name="sieve">{{rfc|5228|title=Sieve: An Email Filtering Language}}</ref> Sieve scripts on the server by multiple editors. It follows the basic ideas outlined in an email to the Kolab development mailing list in May 2011.<ref name="multisieve">Georg Greve: [http://kolab.org/pipermail/kolab-devel/2011-May/012846.html Enabling multiple sieve editors on Kolab installation]</ref>
+
+== Non-Conflicting Sieve Editing ==
+
+In order to enable Non-Conflicting Sieve Editing according to this KEP, a [[#MASTER.siv|MASTER.siv]] file '''MUST''' be defined for all users during integration and adapted during deployment. This [[#MASTER.siv|MASTER.siv]] '''SHALL''' then be considered authoritative for that deployment. It '''SHALL''' be automatically deployed and activated for all users in that system that are to make use of the Non-Conflicting Sieve Editing.
+
+=== Sieve Editor Requirements ===
+
+To be compliant with this KEP, Sieve editors '''MUST''' check for the presence of the [[#MASTER.siv|MASTER.siv]] file, and, if present, '''MUST''' do the following:
+* hide the [[#MASTER.siv|MASTER.siv]] script and all other [[#Protected Names|Protected Names]] from user selection;
+* protect the [[#Protected Names|Protected Names]] by choosing one of the following paths:
+** default to the editors' script '''ONLY''' and '''NOT''' allow users to have multiple scripts, '''--- OR ---''';
+** prevent the user from assigning any of the [[#Protected Names|Protected Names]]. Ways in which this '''MAY''' be achieved are through renaming or simply by informing the user that a certain script name is unavailable. Activating any given script '''MUST''' be done by '''copying''' it to carry the protected name assigned to this editor;
+* ensure that after finishing its modification(s), the [[#MASTER.siv|MASTER.siv]] is active.
+
+At the choice of its author, a Sieve editor '''MAY''' visualize scripts that are executed before or after the script edited by the user. How this is implemented is largely up to the individual editors, but it should ensure that
+* it is made clear to the user these rules cannot be edited within this editor, e.g. through graying out;
+* the user is given some indication as to where these rules can be edited, e.g. in the management console.
+
+If there is no [[#MASTER.siv|MASTER.siv]] file in the users list of Sieve scripts, editors '''MAY''' behave as they see fit, but '''SHALL''' always ensure its users do not use [[#Protected Names|Protected Names]] and '''MUST''' always ensure that users do not create a [[#MASTER.siv|MASTER.siv]] which would trigger the functionality according to this KEP.
+
+=== Integration Requirements ===
+
+Integrators and Kolab Certified Professionals responsible for the deployment '''SHALL''' ensure that if the platform or deployment intends to make use of this feature, users which are supposed to make use of this feature will have their [[#MASTER.siv|MASTER.siv]] file created and activated upon account creation. 
+
+This can be in the form of adding this to the default behaviour for all users, by tying this to some role or group in LDAP, or whichever other approach the platform takes on configuration.
+
+Sieve editors '''MUST''' be able to rely on the proper creation of the [[#MASTER.siv|MASTER.siv]] script before they are called for the first time. It is the responsibility of the platform integrator or deployment engineer to ensure this is done properly.
+
+=== MASTER.siv ===
+
+This is an example of the MASTER.siv script, which can act as a template and '''SHALL''' be modified during integration and deployment as required for the particular installation:
+
+ #
+ # MASTER.siv
+ # 
+ # This file is automatically generated and MUST BE the ACTIVE script.
+ #
+ # Altering it by hand is likely to BREAK YOUR INSTALLATION!
+ # 
+ # For more information, see http://wiki.kolab.org/KEP:14
+ #
+ 
+ require ["include"];
+ 
+ # Some global include for all users in the installation
+ # include :global "all-users.siv";
+ 
+ # The script maintained by the general management system
+ # include :personal "<MANAGEMENT>.siv";
+ 
+ # The script(s) maintained by one or more editors available to the user
+ # include :personal "<EDITOR>.siv";
+
+<MANAGEMENT> and <EDITOR> '''SHALL BE''' placeholders for the actual names of the platform and/or editor.
+
+<MANAGEMENT>.siv is the script written by the management system of the platform and there can be one or more <EDITOR>.siv scripts used by the canonical set of defined Sieve editors for users of the system. Because these editors will generally '''not''' see each other's rules, it is strongly recommended to use just one user-facing editor.
+
+=== Protected Names ===
+
+The convention is that platform / management scripts '''SHALL BE''' using names all in upper-case, similar to the '''MASTER.siv''' script, while user-facing editors '''SHALL BE''' using names all in lower-case.
+
+Protected names under this KEP '''SHALL BE'''
+* 'MASTER.siv' for the primary script, which '''SHALL''' be defined at integration stage authoritatively for all users and kept active for each user at all times;
+* 'BCS.siv' for the script written out by the Bynari Collaboration Suite<ref name="bcs">[http://www.bynari.net/bynari.php?page=collaboration Bynari Collaboration Suite]</ref>;
+* 'COREBIZ.siv' for the script written out by the CoreBiz Groupware Management Console<ref name="cb">[http://www.linux-ag.com/produkte/cb-groupware/ CoreBiz Groupware]</ref>;
+* 'UCS.siv' for the script written out by the Univention Management Console on the Univention Corporate Server (UCS)<ref name="UCS" />;
+* 'WEBADMIN.siv' for the script written out by the standard Kolab webadmin of the Kolab Groupware Server<ref name="webadmin">[http://kolab.org Kolab] Server Webadmin</ref>;
+* 'ingo.siv' for the script written out by the Horde<ref name="ingo">[http://www.horde.org/apps/ingo/ Horde: Ingo]</ref> Sieve editor 'Ingo';
+* 'kontact.siv' for the script written out by the KDE Kontact<ref name="kontact">[http://community.kde.org/KDE_PIM KDE Kontact]</ref> Sieve editor;
+* 'rc.siv' for the Roundcube<ref name="rc">[http://roundcube.net/ Roundcube]</ref> Sieve management plugin.
+
+== Upgrade Path ==
+
+This KEP introduces new conventions. 
+
+Older clients must be expected to ignore these conventions, consequently breaking the functionality in ways that will be undesirable to the user, but should normally not result in data loss.
+
+== Rationale ==
+
+The Kolab Groupware Server often finds itself integrated into existing products such as Univention Corporate Server<ref name="UCS">Univention: [http://www.univention.de/produkte/ucs/ UCS]</ref> which provide their own user and system administration infrastructure. This infrastructure typically also involves some level of vacation notice and/or spam management which may be the preferred way for customers to make use of such functionality. 
+
+Simultaneously, users should be able to filter their mail into mailboxes with server-side Sieve (RFC 5228) scripts.
+
+Because there can typically only be one sieve script active at any point in time, different editors for these scripts typically invalidate each other, as editing another editor's script is generally unsafe and a recipe for desaster, and thus an editor edits its own script and activates it, consequently deactivating the script of another editor.
+
+Providing conventions that will allow to avoid these mutually invalidating scenarios is the purpose of this KEP.
+
+== References ==
+
+{{Reflist}}
+
+== Copyright ==
+
+This document has been placed in the public domain.





More information about the commits mailing list