imip-agent

docs/wiki/FuturePlans

1019:e81fe95cfbd6
2015-11-06 Paul Boddie Added mail client integration notes.
     1 = Future Plans =     2      3 The intention is to continuously improve imip-agent to fix known problems     4 and to support missing features. Where it makes sense to do so, omissions     5 in the [[../CalendaringSupport|calendaring support]] should be addressed     6 as a matter of priority.     7      8 Various other areas of improvement are described in the     9 [[../UseCases|use cases guide]], and the functionality of imip-agent should    10 be expanded to address such use cases. The intention is that imip-agent go    11 beyond supporting the manual scheduling of events by providing functionality    12 to automate scheduling and provisioning, employing readily-adopted tools and    13 techniques that are adaptable to existing standards-based infrastructure.    14     15 See the [[../Developing|development guide]] for more information on    16 improving imip-agent.    17     18 == Specific Plans ==    19     20 The following topics are likely to be addressed first:    21     22 === Event Properties ===    23     24 The [[../CalendarManager|management interface]] does not expose the full    25 range of event properties, nor does it allow recurring events to be defined.    26 Support could be expanded for such properties.    27     28 === Event Limits ===    29     30 Being able to specify a frequently-recurring event that has many periods    31 could cause excessive amounts of free/busy data and make perusal of calendars    32 very difficult. Certain policies could be supported to avoid this:    33     34  * Reject indefinitely-recurring events    35     36  * Permit certain frequency levels only (for example: hours, days, weeks,    37  months, years, but not minutes or seconds)    38     39  * Permit only a certain number of periods per interval (for example: an    40  indicated number of periods in a day)    41     42 Such limits are orthogonal to quotas because they would apply to all events    43 created for a user.    44     45 === Quotas ===    46     47 To prevent excessive booking of resources and the resulting denial of those    48 resources, quotas could be introduced. In their most basic form, quotas    49 would resemble the restrictions imposed by event limits, but would differ    50 from event limits by imposing such restrictions on a per-user (or other)    51 basis. Some examples:    52     53   * Permit certain frequency levels depending on the organiser for a    54   resource    55     56   * Permit only a certain number of periods per interval depending on the    57   organiser (or other property derived from the organiser) for a resource    58   or for collections of resources    59     60   * Impose a total limit on the number of active events made by an    61   organiser (or other property) for a resource or for collections of    62   resources    63     64 Where quotas must be coordinated between resources, perhaps on the basis    65 of groups of users, an external mechanism might need integrating to manage    66 the activity. Such a mechanism might also support things like billing or    67 accounting for resources, although this is beyond the scope of imip-agent    68 itself.    69     70 === Combining Scheduling Functions ===    71     72 Extend the resource scheduling support to provide chains of scheduling    73 functions, as opposed to a single function. Thus, different activities could    74 be combined. For example, to suggest alternative periods whilst enforcing    75 booking quotas, there would be two functions indicated in the    76 `scheduling_function` setting for a resource:    77     78 {{{    79 schedule_next_available_in_freebusy    80 enforce_quota    81 }}}    82     83 Each function would consider the current state of the event, and the chain    84 would be terminated if a function decided to decline the participation of    85 the resource. Otherwise, each function in turn would be able to refine the    86 event and decide upon the resource's participation.    87     88 == Other Ideas ==    89     90 Some more ideas that would be worth pursuing...    91     92 === Mail Client Integration ===    93     94 Although the original focus of imip-agent was to produce mail handling    95 programs that would be [[../MailIntegration|integrated with mail systems]],    96 some effort has been directed towards making libraries and components that    97 can be reused in other kinds of programs. Indeed, the    98 [[../CalendarManager|management interface]] employs the libraries in a    99 different way from that of the [[../AgentPrograms|agent programs]] and acts   100 as a kind of calendar client that just happens to use the same   101 [[../FilesystemUsage|filesystem structures]] to store information and   102 control the software's behaviour.   103    104 It would therefore be interesting to use the `imiptools` package, possibly   105 with some modifications, in projects like [[https://mailpile.is/|Mailpile]]   106 and other Python-based mail clients. And a process-based method of   107 integration, similar to that employed by the [[../Testing|test suite]],   108 could benefit even non-Python programs, with imip-agent-based programs   109 being run to perform certain tasks and to update schedule records that   110 would then be interpreted independently by the calling programs.   111    112 Where end-to-end encryption is being used for mail communications, such   113 client integration would be essential for imip-agent to be useful: the   114 [[../AgentPrograms|agent programs]] are unable to inspect messages without   115 access to the recipient's secret keys, and unless a recipient is willing   116 to run their own MTA on their own computer and grant access to various   117 keys so that the MTA or imip-agent can perform decryption, the only way   118 that imip-agent might see the actual content would be as part of the   119 recipient's mail client.