<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nikai</id>
	<title>MozillaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nikai"/>
	<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/Special:Contributions/Nikai"/>
	<updated>2026-04-07T06:04:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SeaMonkey:Project_Organization&amp;diff=38321</id>
		<title>SeaMonkey:Project Organization</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SeaMonkey:Project_Organization&amp;diff=38321"/>
		<updated>2006-10-18T21:11:04Z</updated>

		<summary type="html">&lt;p&gt;Nikai: /* SeaMonkey Council */ sp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SeaMonkey-Resources}}&lt;br /&gt;
&lt;br /&gt;
This page describes the structure of the SeaMonkey project. For now, only drivers are listed, but it will be updated with the structure for the rest of the project as soon as we have figured it out.&lt;br /&gt;
&lt;br /&gt;
==SeaMonkey Council==&lt;br /&gt;
&lt;br /&gt;
The SeaMonkey Council is the team responsible for project and release management, and can be contacted via the email address [mailto:seamonkey-council@mozilla.org seamonkey-council@mozilla.org].&lt;br /&gt;
&lt;br /&gt;
===Christian Biesinger (biesi)===&lt;br /&gt;
Christian has been working on Mozilla for a few years; he mostly works in Gecko code, but also does UI patches occasionally. He wrote the image decoders for BMP and XBM files. He also wrote a [http://wiki.mozilla.org/wiki/User:Biesi Plan to make SeaMonkey use the &amp;quot;new toolkit&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
===Robert Kaiser (KaiRo)===&lt;br /&gt;
KaiRo is the head of MLP staff (Mozilla Localization Project) and has worked on localizing SeaMonkey since late 1999 (M11/M12). He&#039;s also doing the EarlyBlue and LCARStrek themes and has done some work on making some parts of the product localizeable and themable. See also http://wiki.mozilla.org/wiki/User:KaiRo and http://mozilla.kairo.at/&lt;br /&gt;
&lt;br /&gt;
===Ian Neal (IanN)===&lt;br /&gt;
Ian does work on XUL/JS stuff (mainly UI but also some backend) with a little bit of simple C++ stuff thrown in. He peer reviews on help and has been actively involved in Seamonkey development for about two years.&lt;br /&gt;
&lt;br /&gt;
===Neil Rashbrook (Neil)===&lt;br /&gt;
Neil is the &amp;quot;module owner&amp;quot; of XPFE (most of the SeaMonkey-specific code), and a super-reviewer focussed on XPFE and MailNews.  He has been very involved in all SeaMonkey related development for years.&lt;br /&gt;
&lt;br /&gt;
===Christopher Thomas (CTho)===&lt;br /&gt;
Chris has been a Mozilla user for about 3 years, and started as a developer about a year and a half ago.  His interests have been mostly in the Mozilla frontend.  He is experienced with JS and C++.  While he has not been working with Mozilla as long as the other drivers, he has been very active in organizing the new SeaMonkey group, and putting together various proposals.&lt;br /&gt;
&lt;br /&gt;
==Project Area Owners and Peers==&lt;br /&gt;
&lt;br /&gt;
The SeaMonkey Project can be divided into several areas, which are listed on our [http://www.mozilla.org/projects/seamonkey/project-areas.html project areas list]. Each of those areas should have an owner and possibly several peers (people who know the code well enough to give reviews there), who together care about that area.&lt;br /&gt;
The sum of those areas build a strong group of developers, who can move the SeaMonkey project forward.&lt;br /&gt;
&lt;br /&gt;
[[category:SeaMonkey|p]]&lt;/div&gt;</summary>
		<author><name>Nikai</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Language_agnostic_event_handling&amp;diff=21438</id>
		<title>Language agnostic event handling</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Language_agnostic_event_handling&amp;diff=21438"/>
		<updated>2006-03-08T12:56:04Z</updated>

		<summary type="html">&lt;p&gt;Nikai: sp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Language Agnostic Event Handling=&lt;br /&gt;
&lt;br /&gt;
This document is a place to dissect the current event handling mechanism and make it language agnostic.&lt;br /&gt;
&lt;br /&gt;
This currently contains notes randomly pulled from [[Memory Management for nsIScriptContext]], and will be fleshed out soon.&lt;br /&gt;
&lt;br /&gt;
===Compile the script handler===&lt;br /&gt;
&lt;br /&gt;
Currently nsJSContext::CompileEventHandler does take the &amp;quot;event target&amp;quot; as a param - however, this is only used to setup principals, and does not otherwise &amp;quot;bind&amp;quot; the compiled function to the event target.  (Note: Brendan and I agreed that this param could be dropped from CompileEventHandler() to reinforce this lack of &amp;quot;binding&amp;quot;, and the principals thing is apparently no longer necessary.  Note however that CompileScript *does* still take an nsIPrincipal param - is that still necessary?)&lt;br /&gt;
&lt;br /&gt;
Due to this lack of binding, the &amp;quot;void *&amp;quot; returned by this function is identical to CompileScript above - the callers must ensure these unbound handlers are rooted if they hold on to them - there is no &amp;quot;implied reference&amp;quot; setup.&lt;br /&gt;
&lt;br /&gt;
===Bind the handler===&lt;br /&gt;
&lt;br /&gt;
This process binds the compiled event handler to a specific target.  In effect, this takes a copy of the compiled handler and &amp;quot;magically&amp;quot; associates it with the event target (see below).  After this process, the original compiled event handler is thrown away (and as the caller did not GCRoot the original, it will be disposed of by GC).  Critically however, this binding process has created an &amp;quot;implied reference&amp;quot; to the event target - once bound, other assumptions are then made that the event target will not be destroyed.&lt;br /&gt;
&lt;br /&gt;
===Call the bound handler===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;void *&amp;quot; passed to CallEventHandler is not the &amp;quot;void *&amp;quot; previously returned directly from CompileEventHandler.  Instead, the &amp;quot;magic&amp;quot; association above is reversed, fetching a function object, by name, from the JS wrapper around the original event target.  Thus, currently the &amp;quot;void *&amp;quot; used is not supplied directly by nsIScriptContext, so the interface must be abstracted so it is.&lt;br /&gt;
&lt;br /&gt;
==Notes:==&lt;br /&gt;
Theoretically, the above setup should mean that an event handler for a specific object only requires the original event target and event name to fire the event.  The &amp;quot;magic&amp;quot; association would ensure that when querying for the event name, the previously cloned function object will be located.  However, even though this should be possible, it does not happen for XUL, which stores its XPCWrappedNative pointer in its nsJSEventListener.  Thus, XUL is now storing a weak reference to a different interface, not the event itself, in the assumption neither will go away.  XBL appears to store the original target.&lt;br /&gt;
&lt;br /&gt;
The nsJSEventListener only keeps a borrowed reference to the target.  Even though currently an XPCWrappedNative is stored in place of the original event, it is still a borrowed reference.  This borrowed reference itself relies on the &amp;quot;implied reference&amp;quot; model below - without that implied reference, the weak reference to the object in nsJSEventListener would fail.  Note also that all of this &amp;quot;WrapNative&amp;quot; work happens *outside* nsIScriptContext, so we need to work out how to abstract it behind that interface.&lt;br /&gt;
&lt;br /&gt;
==The &amp;quot;implied reference&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
The above relies on an &amp;quot;implied reference&amp;quot; existing on the event target, via the &amp;quot;long-lived XPCWrappedNative&amp;quot; concept supported by XPConnect.  This mechanism is used by XPConnect tn ensure the same JS wrapper is always returned for a given DOM nsISupports.  While this model makes sense and all other languages would be encouraged to follow something similar, the nsIScriptContext model should not make any such implementation assumptions.  Other languages may be able to perform the same magic using a different technique than XPConnect uses, and any &amp;quot;implied references&amp;quot; may not be true.  For example, other languages may choose to implement this with weak references to make their own ownership model simpler.&lt;br /&gt;
&lt;br /&gt;
== Event Handling Options ==&lt;br /&gt;
&lt;br /&gt;
There are 2 options here - one relies on reusing the mechanism above for unbound functions, and the other relies on explicit xpcom strong references.&lt;br /&gt;
&lt;br /&gt;
NOTE: I&#039;m still looking at the existing code trying to come up with a concrete proposal.&lt;br /&gt;
&lt;br /&gt;
====Have BindCompiledEventHandler() return an out void **====&lt;br /&gt;
&lt;br /&gt;
This may be the simplest - this would return a new void **, which must be passed to CallEventHandler().  This new void * is subject to the same rules as unbound handlers, and must be individually unlocked.&lt;br /&gt;
&lt;br /&gt;
Language implementations are then free to have this &amp;quot;void *&amp;quot; indirectly hold a strong reference to the event target (or in the case of JS, need only ensure that the wrapper persists)&lt;br /&gt;
&lt;br /&gt;
====Formal binding objects====&lt;br /&gt;
&lt;br /&gt;
The process of binding to an event handler can return a new nsISupports object. (As mentioned above, XUL already stores a different nsISupports pointer from the original event target - it just assumes that pointer has the same lifetime).  A strong reference to this returned object must be kept and the &amp;quot;binding&amp;quot; is only guaranteed to remain alive as long as the object.  Once the binding has been dropped, a new Binding can be created, but it is not guaranteed the returned nsISupports will be the same.&lt;br /&gt;
&lt;br /&gt;
As this is a strong reference, it will be necessary to ensure these references are manually dropped.  This means that all nsJSEventListener objects must be explicitly dropped.  I believe this already happens now.&lt;/div&gt;</summary>
		<author><name>Nikai</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Memory_Management_for_nsIScriptContext&amp;diff=21437</id>
		<title>Memory Management for nsIScriptContext</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Memory_Management_for_nsIScriptContext&amp;diff=21437"/>
		<updated>2006-03-08T12:51:44Z</updated>

		<summary type="html">&lt;p&gt;Nikai: sp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Script Object Lifetime Management=&lt;br /&gt;
&lt;br /&gt;
The problem:&lt;br /&gt;
&lt;br /&gt;
Certain nsIScriptContext methods return a |void *| tied to the specific language.  For example, |CompileEventHandler| returns a &amp;quot;function&amp;quot; object which is held by the caller and later passed to |CallEventHandler|.  The lifetime of these returned |void *| objects must be managed.&lt;br /&gt;
&lt;br /&gt;
At the high-level, it has been agreed that new methods |DropScriptObject| and |HoldScriptObject| will be added to certain language-specific interfaces.  The affected |nsIScriptContext| methods will return a &#039;held&#039; object; the caller must call |DropScriptObject| when it no longer needs to store it.  |HoldScriptObject| is provided so that copies of the objects can be made.  This is identical to a reference counting scheme, but named to avoid confusion with XPCOMs reference counting.&lt;br /&gt;
&lt;br /&gt;
We need to turn this into an actual implementation, with the following restrictions:&lt;br /&gt;
&lt;br /&gt;
* We want to avoid additional memory allocation or virtual method calls.  The only overhead the Drop/Hold scheme requires is one additional virtual-method call for the memory management function itself.&lt;br /&gt;
&lt;br /&gt;
* We can not have the memory management functions exclusively on nsIScriptContext.  There is code that currently stores a |void *| script object, but has no nsIScriptContext available.  One example is nsJSEventListener, which stores the |void *|, but has the |nsIScriptContext| provided as part of invoking the event.  nsJSEventListener would not want to store an nsIScriptContext just to free the script object.  Another example is the XUL cache which will be extended to cache all languages, but will not want to store an nsIScriptContext just to handle cache shutdown.&lt;br /&gt;
&lt;br /&gt;
* Linkage issues mean that &amp;quot;helper functions&amp;quot; are unsuitable for use here.  As the DOM implementation and each language implementation are individual components, public static functions are not globally reachable.  Either xpcom interfaces or fully inline C++ classes can be used to assist with these tasks.&lt;br /&gt;
&lt;br /&gt;
== Implementation idea #1 ==&lt;br /&gt;
&lt;br /&gt;
Add DropScriptObect/HoldScriptObject to nsILanguageRuntime (a new class - a &#039;singleton&#039; for each language - it creates nsIScriptContext objects amongst other things).  Code then only needs an integer language ID to be able to free the script object.&lt;br /&gt;
&lt;br /&gt;
A downside of this approach is that all memory management functions take an extra penalty.  Each function involves:&lt;br /&gt;
* Fetching the nsDOMScriptObjectFactory service.&lt;br /&gt;
* Fetching the nsILanguageRuntime from the nsDOMScriptObjectFactory passing the int langID.&lt;br /&gt;
* Calling the nsILanguageRuntime::Drop/HoldScriptObject function.&lt;br /&gt;
&lt;br /&gt;
This problem could be solved by either:&lt;br /&gt;
* Duplicating these functions on nsIScriptContext, so code that does have a context available can do so without the additional overhead.&lt;br /&gt;
* Having performance critical code keep a reference to the nsILanguageRuntime.&lt;br /&gt;
&lt;br /&gt;
Even still, a key problem to this approach remains its fragility.  By explicitly requiring manual Drop/Hold calls, there is a lot of scope for programmer error in the face of error conditions (ie, early returns) to cause difficult to track leaks.  The inevitability of such errors is evidenced by nsCOMPtr and various other tricks already in the code base.&lt;br /&gt;
&lt;br /&gt;
== Implementation idea #2 ==&lt;br /&gt;
&lt;br /&gt;
This implementation builds on #1 as its core framework, and attempts to add a &amp;quot;helper class&amp;quot; (nsScriptObjectHolder) to automate the management of these objects.  All nsIScriptContext methods that return a &amp;quot;new&amp;quot; script object now take a reference to one of these objects.&lt;br /&gt;
&lt;br /&gt;
The public prototype for this class is:&lt;br /&gt;
&lt;br /&gt;
 class nsScriptObjectHolder {&lt;br /&gt;
 public:&lt;br /&gt;
    nsScriptObjectHolder();&lt;br /&gt;
    nsScriptObjectHolder(PRUint32 aLangID, void *aObject);&lt;br /&gt;
    nsScriptObjectHolder(const nsScriptObjectHolder&amp;amp; other);&lt;br /&gt;
    ~nsScriptObjectHolder();&lt;br /&gt;
    nsScriptObjectHolder &amp;amp;operator=(const nsScriptObjectHolder &amp;amp;other);&lt;br /&gt;
    PRBool operator!() const;&lt;br /&gt;
    operator void *() const;&lt;br /&gt;
    nsresult set(PRUint32 langID, void *object);&lt;br /&gt;
    nsresult set(void *object);&lt;br /&gt;
    nsresult set(const nsScriptObjectHolder &amp;amp;other);&lt;br /&gt;
    nsresult clear();&lt;br /&gt;
    PRUint32 mLangID;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
the nsIScriptContext methods changed are CompileScript, CompileEventHandler, GetBoundEventHandler, CompileFunction and Deserialize, with all changes similar to:&lt;br /&gt;
&lt;br /&gt;
    virtual nsresult GetBoundEventHandler(nsISupports* aTarget, void *aScope,&lt;br /&gt;
                                          nsIAtom* aName,&lt;br /&gt;
 -                                        void** aHandler) = 0;&lt;br /&gt;
 +                                        nsScriptObjectHolder &amp;amp;aHandler) = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code calling these methods changes from:&lt;br /&gt;
  void *handler = nsnull;&lt;br /&gt;
  rv = context-&amp;gt;GetBoundEventHandler(..., &amp;amp;handler);&lt;br /&gt;
  if (handler)&lt;br /&gt;
    context-&amp;gt;CallEventHandler(..., handler)&lt;br /&gt;
&lt;br /&gt;
to:&lt;br /&gt;
&lt;br /&gt;
  nsScriptObjectHolder handler;&lt;br /&gt;
  rv = context-&amp;gt;GetBoundEventHandler(..., handler);&lt;br /&gt;
  if (handler)&lt;br /&gt;
    context-&amp;gt;CallEventHandler(..., handler)&lt;br /&gt;
&lt;br /&gt;
The use of &amp;quot;operator void *&amp;quot; and &amp;quot;operator !&amp;quot; means that much existing code that uses |void *| can remain unchanged once the variable has changed to nsScriptObjectHolder.  For example, an nsScriptObjectHolder can be passed to nsIScriptContext::CallEventHandler, even though the prototype remains |void *|.&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
&lt;br /&gt;
* The nsScriptObjectHolder class must have a fully inline implementation.  Any attempt to use methods defined in gklayout.dll mean the class can not be used by external languages (such as Python).&lt;br /&gt;
&lt;br /&gt;
* This does not lend itself to allowing DropScriptObject/HoldScriptObject on both nsIScriptContext and nsILanguageRuntime.  As not all callers can use nsIScriptContext, it must be nsILanguageRuntime.  This means each memory management function is slightly expensive, as detailed above.&lt;br /&gt;
&lt;br /&gt;
== Implementation idea #3 ==&lt;br /&gt;
&lt;br /&gt;
Use a real XPCOM interface.  Something like:&lt;br /&gt;
&lt;br /&gt;
 interface nsIScriptObjectHolder : public nsISupports&lt;br /&gt;
 {&lt;br /&gt;
    virtual void *GetScriptObject();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
and all nsIScriptContext methods return one of these interfaces instead of a |void *|.  The memory management is then implicitly tied up in the lifetime of the interface itself.&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
* Fetching the |void *| language object becomes a virtual method.&lt;br /&gt;
* Each call requires a new allocation for the interface.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Implementation idea #2 has been implemented and works well.  However, concerns exist regarding the performance overhead in terms of speed and bloat.&lt;/div&gt;</summary>
		<author><name>Nikai</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Calendar:Deprecated:Feature_Requirements/Roadmap_Review&amp;diff=3089</id>
		<title>Calendar:Deprecated:Feature Requirements/Roadmap Review</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Calendar:Deprecated:Feature_Requirements/Roadmap_Review&amp;diff=3089"/>
		<updated>2005-01-28T13:37:07Z</updated>

		<summary type="html">&lt;p&gt;Nikai: sp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current [http://www.mozilla.org/projects/calendar/requirements.html Calendar Feature Requirements] and [http://www.mozilla.org/projects/calendar/roadmap.html Roadmap] documents on the website seem to be a bit out of date.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve copied them here so we can edit them&lt;br /&gt;
&lt;br /&gt;
-lilmatt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calendar Feature Requirements (revision 2.0)&lt;br /&gt;
&lt;br /&gt;
This document covers all the requirements, which we want to accomplish in the coming months and years. Please note, that this is not a roadmap. Since we currently lack active developers we have no timeframe for all the uncompleted features.&lt;br /&gt;
&lt;br /&gt;
A lot of the functionalities have already been completed. These are shown as striked-through. The rest is either being worked on or needs developer attention. If you want to contribute to the project these tasks are your best way to get into it. Please see the FAQ and the developer guide for information on how to contribute to the project.&lt;br /&gt;
Table of Contents&lt;br /&gt;
&lt;br /&gt;
   1. Appearance &amp;amp; Performance&lt;br /&gt;
   2. Alarms&lt;br /&gt;
   3. Associating&lt;br /&gt;
   4. Categories&lt;br /&gt;
   5. Exporting&lt;br /&gt;
   6. Events&lt;br /&gt;
   7. Importing&lt;br /&gt;
   8. Integration&lt;br /&gt;
   9. Invitations&lt;br /&gt;
  10. Multiple People&lt;br /&gt;
  11. Printing&lt;br /&gt;
  12. Remote Access&lt;br /&gt;
  13. Search&lt;br /&gt;
  14. Settings&lt;br /&gt;
  15. Synchronization&lt;br /&gt;
  16. To Do List&lt;br /&gt;
  17. Views&lt;br /&gt;
  18. Standalone Build (Sunbird)&lt;br /&gt;
&lt;br /&gt;
1. Appearance &amp;amp; Performance&lt;br /&gt;
&lt;br /&gt;
    * New theme using new toolkit and Winstripe-style icons.&lt;br /&gt;
    * Review of calendar performance especially with large files.&lt;br /&gt;
    * Support for archiving old events and tasks.&lt;br /&gt;
&lt;br /&gt;
2. Alarms - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * The format of the alarm will be to open up a dialog window. The user will be able to dismiss the alarm, or snooze it for X number of minutes, days or hours, where X is an integer.&lt;br /&gt;
    * Alarms give a snooze function (remind me in X minutes, snooze past event start, remember status when Calendar is turned off).&lt;br /&gt;
    * Snoozing alarms should persist. If you snooze an alarm, and then shut Calendar down, it should remember that the alarm was snoozed.&lt;br /&gt;
    * Alarms that have passed when PC has been off will go off on Calendar start-up.&lt;br /&gt;
    * Alarms can be turned off globally.&lt;br /&gt;
    * Alarms can be set X minutes, days or weeks before the event in the form of pop-up or email.&lt;br /&gt;
    * The user should be able to snooze events for a certain time, and for a certain amount of time before the event. [Remind me again [___] (mins / hrs / days) (from now / before event)] PARTIALLY COMPLETE (just regular snooze)&lt;br /&gt;
    * The user should be able to see all the alarms that have not gone off.&lt;br /&gt;
    * The user should be able to have multiple alarms for the same event. You could have one to remind you to prepare for the event, and another that the event is occurring.&lt;br /&gt;
    * Alarms must go off when calendar is not running.&lt;br /&gt;
    * Email that is sent out needs to be configurable (e.g include notes from event, &amp;quot;%user wrote:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
3. Associating - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Events can have locations assigned to them.&lt;br /&gt;
    * Events can have notes or bookmarks attached to them.&lt;br /&gt;
    * Calendar events can have files attached to them.&lt;br /&gt;
    * Events can have attendees (contacts or mailing lists) associated to them (after Server support).&lt;br /&gt;
&lt;br /&gt;
4. Categories - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Categories should be user-definable (add/edit/delete functions).&lt;br /&gt;
    * Field to associate with any event (meeting, Address, Call, etc.) to a category. There could be some default categories (e.g., Family, Friends, Work, Clients, Subcontractor, Restaurants, Computer)&lt;br /&gt;
    * Events can be filtered based on categories.&lt;br /&gt;
    * Events can be associated with multiple categories.&lt;br /&gt;
&lt;br /&gt;
5. Exporting - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Ability to export to another ICS file on file system or WebDAV folder.&lt;br /&gt;
    * Ability to export only selected events.&lt;br /&gt;
    * Export to HTML (pretty much the same as Print).&lt;br /&gt;
&lt;br /&gt;
6. Events - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Events can be added, edited or deleted and (if applicable) re-published via WebDAV.&lt;br /&gt;
    * Events can be all-day events or even span multiple days.&lt;br /&gt;
    * Events can be repeated every X days, weeks, months or years as well as on every X-day or Yth of each month.&lt;br /&gt;
    * Repeating events can have exceptions applied to them.&lt;br /&gt;
&lt;br /&gt;
6.1. Add / Edit / Delete Events&lt;br /&gt;
&lt;br /&gt;
    * The user must be able to add/edit/delete an event regardless of its location (local or remote) if they have enough permissions. PARTIALLY COMPLETE (no remote, requires calendar server)&lt;br /&gt;
&lt;br /&gt;
6.2. Repeating events&lt;br /&gt;
&lt;br /&gt;
    * Events can repeat every X day, week, month or year.&lt;br /&gt;
    * Events can repeat every week on certain days of the week, eg. Monday and Tuesday of every week.&lt;br /&gt;
    * Events can repeat every day of a certain month and a certain date of every month. eg. 19th of every month, or 3rd Monday of every month.&lt;br /&gt;
    * Users should be able to add exceptions to repeating events.&lt;br /&gt;
&lt;br /&gt;
7. Importing - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Import MS Outlook and other popular calendar data.&lt;br /&gt;
    * Import other Mozilla calendar data (see 5 - Exporting).&lt;br /&gt;
&lt;br /&gt;
8. Integration - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Receiving an email invitation should bring the calendar up to prompt to import file.&lt;br /&gt;
    * Finish integration with Thunderbird as an extension.&lt;br /&gt;
    * Accept Outlook invitations.&lt;br /&gt;
&lt;br /&gt;
9. Invitations - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * You should be able to email invitations to people to inform them and invite them to the event. (using WebDAV only)&lt;br /&gt;
    * Guests will be alerted when the event is modified or deleted (Pop-up to offer re-notification). (needs Calendar Server support, see 10. Multiple People)&lt;br /&gt;
    * Responses to invitations that come via email will prompt to import into the calendar.&lt;br /&gt;
&lt;br /&gt;
10. Multiple People - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * The calendar should be able to show other people&#039;s calendars, and let you edit events for other people with the proper permissions. (Completed using WebDAV only)&lt;br /&gt;
    *&lt;br /&gt;
&lt;br /&gt;
      Ability to store multiple calendars on a calendar server, options for the calendar software include:&lt;br /&gt;
          o Sun&#039;s ONE calendar server&lt;br /&gt;
          o phpGroupWare&lt;br /&gt;
          o eGroupWare&lt;br /&gt;
          o OpenGroupWare.org (OSS version of Skylix)&lt;br /&gt;
          o Exchange4Linux (formerly Bill&#039;s WorkGroup Server)&lt;br /&gt;
&lt;br /&gt;
11. Printing - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Printing of day, week, month view with or without his calendar events as displayed on screen.&lt;br /&gt;
    * Printing support for tasks together with categories, percentage complete and due dates.&lt;br /&gt;
    * Print list of events with start and end dates, categories and locations.&lt;br /&gt;
    * Print only what is defined by the drop down &amp;quot;View&amp;quot; menu or the current search.&lt;br /&gt;
    * Option to leave out white space, i.e. Only print when I&#039;m busy.&lt;br /&gt;
&lt;br /&gt;
12. Remote Access - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Users can access and subscribe to remote calendar files, re-publishing them with permission. (using WebDAV only)&lt;br /&gt;
&lt;br /&gt;
13. Search - tracker bug&lt;br /&gt;
&lt;br /&gt;
For saved searches, see the 17. Views which enables the &amp;quot;View&amp;quot; drop down menu&lt;br /&gt;
&lt;br /&gt;
    * The user should be able to do a simple (quick) search for events.&lt;br /&gt;
    * Search facility from toolbar allowing quick search based on title, location and description (notes).&lt;br /&gt;
    * The user should not have to press a search button, it should search automatically after a certain period of time has elapsed since typing.&lt;br /&gt;
    * The user should be able to do an advanced search for events (design done).&lt;br /&gt;
    * Pop-up window to enable advanced search by selection of what fields to search in (including time and date). [Design already done]&lt;br /&gt;
&lt;br /&gt;
14. Settings - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Options to configure start of week, hours in day and alarm defaults (as well as others).&lt;br /&gt;
    * Option to pick colours for each calendar.&lt;br /&gt;
    * You should be able to see the week number.&lt;br /&gt;
    * Ability to set text colour for calendars as well as highlight colour.&lt;br /&gt;
    * Setting dialog needs updating to new style (see Firefox and Thunderbird as examples).&lt;br /&gt;
    * Change all preferences to be stored under MozillaCalendar rather than below Mail or Thunderbird.&lt;br /&gt;
&lt;br /&gt;
15. Synchronization - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Sync data with mobile devices:&lt;br /&gt;
          o Palm Pilot (custom format)&lt;br /&gt;
          o Pocket PC (runs Outlook PocketPC version)&lt;br /&gt;
          o Nokia mobile phones (format?)&lt;br /&gt;
          o Sony Ericsson mobile phones (format?)&lt;br /&gt;
          o Apple iPod (uses ics) [DIGITALgimpus started work]&lt;br /&gt;
&lt;br /&gt;
16. To Do List - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Sidebar for displaying to do task list.&lt;br /&gt;
    * Alarms for to do tasks.&lt;br /&gt;
    * To do list for simple tasks.&lt;br /&gt;
    * To do tasks should be searchable (see 13 - Search)&lt;br /&gt;
    * To do tasks should appear in main view, if global option is set.&lt;br /&gt;
    * To do list should be viewable by category, due date and percentage completed.&lt;br /&gt;
&lt;br /&gt;
17. Views - tracker bug&lt;br /&gt;
&lt;br /&gt;
    * Day, week, multi-week and month views, supporting resizing and multiple events at one time.&lt;br /&gt;
    * List of all events, configured by View or Search options.&lt;br /&gt;
    * The month view should show the trailing/following days of the previous/next month, not just the days of the current month.&lt;br /&gt;
    * Show a work week view which shows a user specified amount of days (some people work Mon - Fri, others work Tue - Sat).&lt;br /&gt;
    * In-line editing for events in both list view and calendar view.&lt;br /&gt;
    * Drop down &amp;quot;View&amp;quot; menu should be configurable (as in Thunderbird/Mail) and provide Save option.&lt;br /&gt;
&lt;br /&gt;
17.1. Day View / Week View&lt;br /&gt;
&lt;br /&gt;
    * When switching to day view, it should scroll until a certain time is at the top (like 8 AM).&lt;br /&gt;
    * Events that occur at the same time as each other should still be shown (ie. be squished side by side).&lt;br /&gt;
    * You should be able to double click on an hour and then have the new event dialog pop up for that time.&lt;br /&gt;
    * Day view - Configurable hours in day.&lt;br /&gt;
    * Week view - Monday to Friday support for Week view.&lt;br /&gt;
    * You should be able to delay double click on an hour and then have an inline edit box pop up for easy and quick calendar adding.&lt;br /&gt;
&lt;br /&gt;
17.2. Month View&lt;br /&gt;
&lt;br /&gt;
    * It should be able to be resized to any width and height.&lt;br /&gt;
&lt;br /&gt;
17.3. MultiWeek View&lt;br /&gt;
&lt;br /&gt;
    * Multiweek view should display a grid of days (similar to month view).&lt;br /&gt;
    * Multiweek view should display weeks relative to current week (not current month).&lt;br /&gt;
    * Multiweek view should display T weeks total, where T is a user settable preference.&lt;br /&gt;
    * Multiweek view should display P previous weeks, where P is a user settable preference.&lt;br /&gt;
&lt;br /&gt;
18. Standalone Build (Sunbird)&lt;br /&gt;
&lt;br /&gt;
    * Make standalone build compile from the mozilla trunk.&lt;br /&gt;
    * Make standalone build really standalone (resolve the dependency on building it on top of Mozilla Firefox.&lt;br /&gt;
    * Complete the artwork/theme in standalone build.&lt;br /&gt;
    * Resolve integration issues (mail and browser integration)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mozilla Calendar Roadmap&lt;br /&gt;
&lt;br /&gt;
This page documents our goals and feature requirements for our upcoming releases. Since we currently lack active developers, no timeframe for upcoming releases can be given.&lt;br /&gt;
&lt;br /&gt;
For a more thorough overview of our completed and uncomplete features, please visit our Feature Requirements page.&lt;br /&gt;
Calendar 0.9 - &amp;quot;Almost there...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Items to resolve:&lt;br /&gt;
&lt;br /&gt;
    * 1. Appearance &amp;amp; Performance - New theme; Ability to archive old events and tasks.&lt;br /&gt;
    * 3. Associating - Events can have files attached to them.&lt;br /&gt;
    * 4. Categories - Events can have multiple categories.&lt;br /&gt;
    * 5. Exporting - Export to HTML&lt;br /&gt;
    * 8. Integration - Complete integration with Thunderbird.&lt;br /&gt;
    * 11. Printing - Support for printing To do tasks; Support for printing list of events.&lt;br /&gt;
    * 14. Settings - Option to set text colour for calendars; New independent preference folder.&lt;br /&gt;
    * 16. To do - Tasks to appear in main view (if option set); Filter views by category, date due...&lt;br /&gt;
&lt;br /&gt;
Calendar 1.0 - &amp;quot;Finally!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Items to resolve:&lt;br /&gt;
&lt;br /&gt;
    * 1. Appearance &amp;amp; Performance - Performance increase especially when dealing with large files.&lt;br /&gt;
    * 2. Alarms - Configurable email; Alarms triggered when Thunderbird/Mail only is running.&lt;br /&gt;
    * 8. Integration - Accept Outlook invitations.&lt;br /&gt;
    * 11. Printing - Option to leave out white-space; Print only results from search or &amp;quot;View&amp;quot; filter.&lt;br /&gt;
    * 13. Search - Pop-up window for advanced search.&lt;br /&gt;
    * 14. Settings - Change settings dialog to new style and theme.&lt;br /&gt;
    * 16. To do - Search facility.&lt;br /&gt;
    * 17. Views Drop down &amp;quot;View&amp;quot; filter menu should be configurable.&lt;br /&gt;
&lt;br /&gt;
Plans for the time after 1.0&lt;br /&gt;
&lt;br /&gt;
We will branch into 1.0 and 2.0 trees which are developed concurrently&lt;br /&gt;
&lt;br /&gt;
Branch 1.0 will probably follow this release plan:&lt;br /&gt;
1.1: Bug Fixes&lt;br /&gt;
1.2 - 1.4: Beta Releases of Stand alone build, Sunbird&lt;br /&gt;
1.5 - 1.1: Build re-release as stand alone build, Sunbird&lt;br /&gt;
&lt;br /&gt;
Branch 2.0 will probably follow this release plan:&lt;br /&gt;
1.6 - 1.7: Alpha Releases of next generation release&lt;br /&gt;
1.8 - 1.9: Beta Releases of next generation release&lt;br /&gt;
2.0: Release of next generation calendar, both as extension and stand-alone build&lt;br /&gt;
Calendar 2.0&lt;br /&gt;
&lt;br /&gt;
Items to resolve before a 2.0 release:&lt;br /&gt;
&lt;br /&gt;
    * 9. Invitations - Guests will be alerted when events changed; responses automatically imported.&lt;br /&gt;
    * 10. Multiple People - Support for various calendar servers.&lt;br /&gt;
    * 15. Synchronization - Support for sync with mobile devices.&lt;br /&gt;
    * 17. Views - In-line editing for events in both list view and calendar view.&lt;br /&gt;
    * 18. Standalone Build - Full support; as feature complete and as stable as Calendar&lt;/div&gt;</summary>
		<author><name>Nikai</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Calendar:Lightning&amp;diff=2837</id>
		<title>Calendar:Lightning</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Calendar:Lightning&amp;diff=2837"/>
		<updated>2005-01-28T13:16:38Z</updated>

		<summary type="html">&lt;p&gt;Nikai: /* Lightning Q &amp;amp; A */ sp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Lightning =&lt;br /&gt;
&#039;&#039;&#039;Lightning&#039;&#039;&#039; is the working project name for an extension to tightly integrate calendar functionality (scheduling, tasks, etc.) into [[Thunderbird:Home Page|Thunderbird]].&lt;br /&gt;
&lt;br /&gt;
This page was last updated on January 24th, incorporating edits to this page and the discussion area (though not by any means completely).&lt;br /&gt;
&lt;br /&gt;
= Other Lightning Pages =&lt;br /&gt;
* [[Calendar:Lightning:Search]]&lt;br /&gt;
* [[Calendar:Lightning:Invitations and inbox]]&lt;br /&gt;
* [[Calendar:Lightning:Calendar views]]&lt;br /&gt;
* [[Calendar:Lightning:Event view]]&lt;br /&gt;
* [[Calendar:Lightning:Task management]]&lt;br /&gt;
&#039;&#039;(some of these don&#039;t exist yet!)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Lightning Q &amp;amp; A =&lt;br /&gt;
A quick question and answer, to get us started:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; &#039;&#039;When will Lightning be available?&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; As Lightning is still early in the design and prototyping stage, there is no firm availability date yet.  The developers of Lightning are currently targeting a first general-user release for the middle of 2005.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; &#039;&#039;Will this be Mozilla Lightning&amp;amp;trade;?  Is this an official Mozilla Foundation product?&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; &amp;quot;Lightning&amp;quot; is simply a project code name to keep from having to type or say &amp;quot;Thunderbird extension for tightly-integrated calendar functionality&amp;quot; all the time.  You can think of it as analogous to &amp;quot;Seamonkey&amp;quot;, which was never used as an official product name.  The Mozilla Foundation has not yet announced any plans to add Lightning to its set of supported products under any name; indeed, such an announcement would be premature, as the exact composition of Lightning is still very much under discussion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; &#039;&#039;So what about the existing Mozilla Calendar extension for Thunderbird?  Does Lightning replace that?&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; The Mozilla Calendar extension for Thunderbird is a separate project and codebase, though all Mozilla Calendar projects (the extensions, Sunbird, Lightning) will share the core calendar components and protocols.  While the Mozilla Calendar extension for Thunderbird acts essentially as an alternate launcher for the Sunbird application window, Lightning is designed to integrate into the main Thunderbird UI and user interaction model as tightly as possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; &#039;&#039;Is Lightning meant as a competitor to Outlook?&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; With Lightning, Mozilla Thunderbird will have a set of user features that is much more competitive with Outlook, especially in enterprise usage.  The primary goal of Lightning is to provide a pleasant and productive user experience for both email and calendaring tasks, largely independent of specific competitors&#039; product plans.  If the result of the Lightning project is an acceleration of users&#039; migration from Outlook to Thunderbird, though, very few tears will be shed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; &#039;&#039;Seriously, though, if you&#039;re not aiming at Outlook users, what are you doing?&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; Given Outlook&#039;s immense share of the email and calendaring market, it would be foolish to ignore its capabilities and characteristics, from both user and administrator perspectives.  While Lightning will certainly incorporate concepts from Outlook -- as from other email/calendar applications, such as Evolution, Remail and Chandler -- it is not designed to be simply an &amp;quot;Outlook knock-off&amp;quot;.  Just as Thunderbird improved the email experience beyond what is provided by Outlook and Outlook Express, Lightning is designed to improve the calendaring experience for Outlook converts and newcomers to calendaring applications alike.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; &#039;&#039;Will Lightning have support for &amp;lt;whatever&amp;gt; servers?&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; Lightning will support the full range of calendar mechanisms and protocols supported by the Mozilla Calendar infrastructure, just as with modern (post-0.2) Sunbird.  More information on protocol support can be found on the [[Calendar:Protocol/Storage Providers]] page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; &#039;&#039;With what devices will Lightning be able to sync?&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; As with protocol/server support, Lightning will inherit all its sync support from the Mozilla Calendar core.  More information on the state and goals of the sync support in Mozilla Calendar can be found on the [[Calendar:Device Sync]] page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; &#039;&#039;Will Lightning have re-mappable shortcut keys/drag-and-drop UI configuration/other app-level features?&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; Lightning strives to be as well-integrated into the Thunderbird application as is possible.  This means supporting the same levels of configuration and user interaction as its host Thunderbird, so the answer to these questions is usually &amp;quot;please ask the Thunderbird guys&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q.&#039;&#039;&#039; &#039;&#039;Where can I learn more? (Or: I have a Great Idea!)&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; This wiki section will collect more documents about Lightning.  Also, the mozilla.calendar newsgroup is a good place to read about Lightning, and ask questions.  &#039;&#039;&#039;Please use the discussion tab above&#039;&#039;&#039; (or in another lightning-related entry!) to add comments and additional questions.  I&#039;ll come back through here as frequently as time permits and incorporate them appropriately.&lt;/div&gt;</summary>
		<author><name>Nikai</name></author>
	</entry>
</feed>