]> code.citadel.org Git - citadel.git/blob - citadel/techdoc/roadmap.txt
* cleanup
[citadel.git] / citadel / techdoc / roadmap.txt
1 This isn't an official list of plans.  It's basically just some notes on where
2 we want to be going.  It's something to consult when sitting down to write
3 some code and deciding what to work on.
4
5
6  Recent goals achieved (finished in 7.00)
7  ----------------------------------------
8
9 * GroupDAV and "webcal" (icalendar over dav) support
10 * Updated schema for publishing Citadel address book data into an
11   external LDAP directory
12 * Internationalization (WebCit is now available in several languages.)
13 * Per-user auto-handling of inbound mail.  (Sieve + rules editor)
14
15
16  Immediate projects to tackle after 7.00
17  ---------------------------------------
18
19 * Apply the patches that Matt has queued up.  (DONE)
20
21 * Multiple room aides per room (use a RoomAccess flag bit)
22
23 * File libraries (upload/download) support in WebCit.  Users are demanding it.
24
25 * Performance improvements for use cases involving huge mailboxes (rooms
26   containing thousands of messages).  Our QA group continues to complain
27   mercilessly about this so we have to address it.  Specifically:
28
29   1. AdjRefCount() operations must be deferred.  This is the only portion
30      of bulk move/copy/delete operations which is still consuming a large
31      amount of wall clock time.  AdjRefCount() could write its instructions
32      into an in-memory queue to be processed during the next housekeeping
33      loop, *or* it could write its instructions into a flat file to be
34      processed during the next auto-purger run.    (DONE)
35
36   2. WebCit slows down significantly (or so claims our QA group) when one
37      of the above-mentioned mega-mailboxes is opened in mailbox view mode.
38      We may need to introduce a reduced (paginated) view which activates
39      when this condition is detected (more than 500 msgs?  1000 msgs?)
40
41
42  Goals to achieve during the 7.xx cycle
43  --------------------------------------
44
45 * CalDAV support (Eventually.  Since both the protocol itself and the people
46   designing it are incredibly ugly, it keeps changing, and implementations
47   keep breaking.  When the spec is finalized, we will implement enough of
48   CalDAV to provide compatibility with any major client packages which use
49   it.)
50
51 * Integration of CMS and social software features (more on this later).
52
53 * Further internationalization (for example, in the citserver).
54
55 * Address books: build dialogs to integrate personal address books into
56   mail recipient boxes, auto-completion, etc.  Use AJAX for this.
57
58 * Better UI presentation for delegated access to mailboxes.  (In IMAP this
59   will be easy because of "other users namespace" support.)
60
61
62  Miscellaneous "wish list" items
63  -------------------------------
64
65 * Smart callback hook mechanism reducing traffic between citadel and the Database
66   to do things like:
67   * Alarms. Trigger popups etc. for users via the chat-keepalive
68   * Chat. don't query the db on and on for this. 
69   * Modify a list of rooms with new items for the logged in users to do things like:
70     * Print the number of new mails onto the Webcit menu
71     * change the roomlist / treeview according to new unread messages in the rooms
72
73 * bright new world to the tui too!
74   * Calendar mechanism
75   * vcards...
76
77 * more persistant css usage in webcit
78
79 * backtraces in the log in case of panics, etc.
80
81 * auto-login should move from compile to installtime.(done)
82
83 * scheduled restarts there should be a way to notify all users 
84    (whether via imap or webcit) that citadel is going to be unavailable.
85    
86 * there should be a way to set a 'service unavailable because of' message, 
87   for people connecting via webcit, so they can see this is a scheduled 
88   downtime (so they don't take further actions like anoying the admin
89   (you) via phone or restart citadel...
90
91 * there should be a way to keep citadel from starting while you're db recovering etc.
92   (perhaps something like the pre-shutdown state would be cool, with a 
93    message? so you tell it "sysadmin is reworking the database" as param
94    to the server, it will close the db, but keep open the port, and 
95    print out your message as error message. this should last until citserver
96    receives a kill signal, and then terminates.)
97
98 * citserver should bypass some bdb errors and symptoms. it should remember 
99   the actual berkeley db version in its state file, and in case of an up/downgrade
100   moan this to the user / logfile. bdb upgrades should trigger a mail to aide.
101
102 * easy management of external room access. there should be a gui way for room aliases.
103
104 * backcheck of aliases. citadel must check, if on save of the aliases there will be a 
105   race between other users / users aliases. 
106   -> citadel must check while saving the aliases, if the mail delivers yet to another 
107      person than the one just saving the aliases. if yes, it should do something like 
108      mail to foo@bar.org is already delivered to joeblow@bar.org
109
110 * uid to name in webcit / imap; citadel shouldn't display something like uid.room
111   to other users, if they share it to others. it should do something like username/room
112   where username should be a floor.
113
114 * webcit should be made more resistant to html injections, especialy the chat window.